OOAD - Modelado dinámico
El modelo dinámico representa los aspectos dependientes del tiempo de un sistema. Se ocupa de los cambios temporales en los estados de los objetos de un sistema. Los conceptos principales son:
Estado, que es la situación en una condición particular durante la vida de un objeto.
Transición, un cambio de estado
Evento, una ocurrencia que desencadena transiciones
Acción, un cálculo atómico e ininterrumpido que ocurre debido a algún evento, y
Concurrencia de transiciones.
Una máquina de estados modela el comportamiento de un objeto a medida que pasa por una serie de estados durante su vida debido a algunos eventos, así como las acciones que ocurren debido a los eventos. Una máquina de estados se representa gráficamente mediante un diagrama de transición de estados.
Estados y transiciones estatales
Estado
El estado es una abstracción dada por los valores de los atributos que tiene el objeto en un período de tiempo determinado. Es una situación que ocurre durante un período de tiempo finito en la vida de un objeto, en el que cumple ciertas condiciones, realiza ciertas actividades o espera que ocurran ciertos eventos. En los diagramas de transición de estado, un estado se representa mediante rectángulos redondeados.
Partes de un estado
Name- Una cadena diferencia un estado de otro. Un estado puede no tener nombre.
Entry/Exit Actions - Denota las actividades que se realizan al entrar y salir del estado.
Internal Transitions - Los cambios dentro de un estado que no provocan un cambio en el estado.
Sub–states - Estados dentro de los estados.
Estados inicial y final
El estado inicial predeterminado de un objeto se denomina estado inicial. El estado final indica la finalización de la ejecución de la máquina de estados. Los estados inicial y final son pseudo-estados y pueden no tener las partes de un estado regular excepto el nombre. En los diagramas de transición de estado, el estado inicial está representado por un círculo negro relleno. El estado final está representado por un círculo negro relleno rodeado dentro de otro círculo negro sin relleno.
Transición
Una transición denota un cambio en el estado de un objeto. Si un objeto está en cierto estado cuando ocurre un evento, el objeto puede realizar ciertas actividades sujeto a condiciones específicas y cambiar el estado. En este caso, se dice que ha ocurrido una transición de estado. La transición da la relación entre el primer estado y el nuevo estado. Una transición está representada gráficamente por un arco sólido dirigido desde el estado de origen al estado de destino.
Las cinco partes de una transición son:
Source State - El estado afectado por la transición.
Event Trigger - La ocurrencia debido a la cual un objeto en el estado fuente sufre una transición si se satisface la condición de guarda.
Guard Condition - Una expresión booleana que, si es verdadera, provoca una transición al recibir el activador del evento.
Action - Un cálculo atómico e ininterrumpible que ocurre en el objeto fuente debido a algún evento.
Target State - El estado de destino después de completar la transición.
Example
Suponga que una persona está tomando un taxi desde el lugar X al lugar Y. Los estados de la persona pueden ser: Esperando (esperando taxi), Viajando (tiene un taxi y viaja en él) y Llegado (ha llegado a la destino). La siguiente figura muestra la transición de estado.
Eventos
Los eventos son algunas ocurrencias que pueden desencadenar la transición de estado de un objeto o un grupo de objetos. Los eventos tienen una ubicación en el tiempo y el espacio, pero no tienen un período de tiempo asociado. Los eventos generalmente se asocian con algunas acciones.
Ejemplos de eventos son clic del mouse, pulsación de tecla, una interrupción, desbordamiento de pila, etc.
Los eventos que desencadenan transiciones se escriben junto con el arco de transición en los diagramas de estado.
Example
Teniendo en cuenta el ejemplo que se muestra en la figura anterior, la transición del estado de espera al estado de conducción tiene lugar cuando la persona toma un taxi. Asimismo, se alcanza el estado final, cuando llega al destino. Estas dos ocurrencias se pueden denominar eventos Get_Taxi y Reach_Destination. La siguiente figura muestra los eventos en una máquina de estado.
Eventos externos e internos
Los eventos externos son aquellos eventos que pasan de un usuario del sistema a los objetos dentro del sistema. Por ejemplo, el clic del mouse o la pulsación de una tecla por parte del usuario son eventos externos.
Los eventos internos son aquellos que pasan de un objeto a otro dentro de un sistema. Por ejemplo, desbordamiento de pila, error de división, etc.
Eventos diferidos
Los eventos diferidos son aquellos que no son manejados inmediatamente por el objeto en el estado actual sino que están alineados en una cola para que puedan ser manejados por el objeto en algún otro estado en un momento posterior.
Clases de eventos
La clase de evento indica un grupo de eventos con estructura y comportamiento comunes. Como ocurre con las clases de objetos, las clases de eventos también pueden organizarse en una estructura jerárquica. Las clases de eventos pueden tener atributos asociados, siendo el tiempo un atributo implícito. Por ejemplo, podemos considerar los eventos de salida de un vuelo de una aerolínea, que podemos agrupar en la siguiente clase:
Flight_Departs (Flight_No, From_City, To_City, Route)
Comportamiento
Actividad
La actividad es una operación sobre los estados de un objeto que requiere algún período de tiempo. Son las ejecuciones en curso dentro de un sistema que puede interrumpirse. Las actividades se muestran en diagramas de actividades que representan el flujo de una actividad a otra.
Acción
Una acción es una operación atómica que se ejecuta como resultado de ciertos eventos. Por atómico, se entiende que las acciones son ininterrumpibles, es decir, si una acción comienza a ejecutarse, se completa sin ser interrumpida por ningún evento. Una acción puede operar sobre un objeto en el que se ha desencadenado un evento o sobre otros objetos que son visibles para este objeto. Un conjunto de acciones comprenden una actividad.
Acciones de entrada y salida
La acción de entrada es la acción que se ejecuta al entrar en un estado, independientemente de la transición que condujo a él.
Del mismo modo, la acción que se ejecuta al salir de un estado, independientemente de la transición que condujo fuera de él, se denomina acción de salida.
Guión
El escenario es una descripción de una secuencia específica de acciones. Representa el comportamiento de objetos sometidos a una serie de acciones específicas. Los escenarios primarios representan las secuencias esenciales y los escenarios secundarios representan las secuencias alternativas.
Diagramas para modelado dinámico
Hay dos diagramas principales que se utilizan para el modelado dinámico:
Diagramas de interacción
Los diagramas de interacción describen el comportamiento dinámico entre diferentes objetos. Se compone de un conjunto de objetos, sus relaciones y el mensaje que los objetos envían y reciben. Por tanto, una interacción modela el comportamiento de un grupo de objetos interrelacionados. Los dos tipos de diagramas de interacción son:
Sequence Diagram - Representa la ordenación temporal de los mensajes de forma tabular.
Collaboration Diagram - Representa la organización estructural de objetos que envían y reciben mensajes a través de vértices y arcos.
Diagrama de transición de estado
Los diagramas de transición de estados o máquinas de estados describen el comportamiento dinámico de un solo objeto. Ilustra las secuencias de estados que atraviesa un objeto durante su vida, las transiciones de los estados, los eventos y condiciones que causan la transición y las respuestas debidas a los eventos.
Concurrencia de eventos
En un sistema, pueden existir dos tipos de simultaneidad. Ellos son -
Simultaneidad del sistema
Aquí, la simultaneidad se modela a nivel del sistema. El sistema general se modela como la agregación de máquinas de estado, donde cada máquina de estado se ejecuta simultáneamente con otras.
Concurrencia dentro de un objeto
Aquí, un objeto puede emitir eventos concurrentes. Un objeto puede tener estados que se componen de sub-estados, y pueden ocurrir eventos concurrentes en cada uno de los sub-estados.
Los conceptos relacionados con la concurrencia dentro de un objeto son los siguientes:
Estados simples y compuestos
Un estado simple no tiene subestructura. Un estado que tiene estados más simples anidados en su interior se llama estado compuesto. Un subestado es un estado anidado dentro de otro estado. Generalmente se usa para reducir la complejidad de una máquina de estados. Los sub-estados se pueden anidar en cualquier número de niveles.
Los estados compuestos pueden tener subestados secuenciales o subestados concurrentes.
Subestados secuenciales
En subestados secuenciales, el control de ejecución pasa de un subestado a otro subestado uno tras otro de manera secuencial. Hay como máximo un estado inicial y un estado final en estas máquinas de estado.
La siguiente figura ilustra el concepto de subestados secuenciales.
Subestados concurrentes
En sub-estados concurrentes, los sub-estados se ejecutan en paralelo, o en otras palabras, cada estado tiene máquinas de estado que se ejecutan simultáneamente dentro de él. Cada una de las máquinas de estado tiene sus propios estados inicial y final. Si un subestado concurrente alcanza su estado final antes que el otro, el control espera en su estado final. Cuando todas las máquinas de estado anidadas alcanzan sus estados finales, los subestados se vuelven a unir en un solo flujo.
La siguiente figura muestra el concepto de subestados concurrentes.