Diagrama de Máquina de Estados UML 2


Diagrama de Máquina de Estados
Un diagrama de maquina de estado modela el comportamiento de un solo objeto, especificando la secuencia de eventos que un objeto atraviesa durante su tiempo de vida en respuesta a los eventos.

Como ejemplo, el siguiente diagrama de maquina de estado muestra los estados que una puerta atraviesa durante su tiempo de vida.

La puerta puede estar en uno de tres estados: “Opened”(Abierta), “Closed” (Cerrada) o “Locked”(Bloqueada). Puede responder a tres estados Abrir, Cerrar, Bloquear y No bloqueado. Tener en cuenta que no todos los eventos son válidos en todos los estados: por ejemplo, si una puerta está abierta, no lo puede bloquear hasta que lo cierre. También tener en cuenta de que como una transición de estado puede tener una condición de guarda adjunta. Si la puerta está abierta, esta solo puede responder al Evento cerrar si la condición doorWay->isEmpty esta completa. La sintaxis y las conexiones usadas en los diagramas de maquina de estados se discutirán por completo en las siguientes secciones.

Estados

Un estado se denota por un rectángulo con las esquinas redondeadas y con el nombre del estado escrito dentro del mismo.

Estados Initial y Final (Iniciales y Finales)
El estado inicial se denota con un círculo negro y se le puede proporcionar un nombre. El estado final se denota con un círculo con un punto negro en el medio y también se lo puede nombrar.

Transiciones
Las transiciones desde un estado al siguiente se denotan por líneas con flechas. Una transición puede tener un disparador, una guarda y un efecto, como a continuación.

“Trigger” (Disparador) es la causa de la transición, la cual podría ser una señal, un evento, un cambio en alguna condición, o el pasaje de tiempo. "Guard" (guarda) es una condición que debe ser verdadera para que el disparador cause la transición. "Effect" (efecto) es una acción que se llamará directamente en el objeto que tiene la maquina de estado como resultado de la transición.

Acciones de Estado
En el ejemplo de transición, un efecto se asoció con la transición. Si el estado de destino tenía muchas transiciones llegando al mismo, y cada transición tenía el mismo efecto asociado con este, sería mejor asociar el efecto con el estado de destino en lugar de con las transiciones. Esto se puede realizar para definir una acción de entrada para el estado. El siguiente diagrama muestra un estado con una acción de entrada y una acción de salida.

También es posible definir las acciones que ocurren en los eventos, o acciones que siempre ocurren. Es posible definir cualquier número de acciones de cada tipo.

Transiciones recursivas
Un estado puede tener una transición que retorna a sí misma, como en el siguiente diagrama. Esto es más útil cuando un efecto se asocia con la transición.

Estados Compuestos
Un diagrama de maquina de estado puede incluir diagramas de sub maquinas, como en el siguiente ejemplo.

La forma alternativa de mostrar la misma información es como el siguiente ejemplo.

La notación en la versión anterior indica que los detalles de la sub maquina Check Pin se muestran en un diagrama separado.

Punto de Entrada
Algunas veces no deseará ingresar una sub maquina en un Estado Inicial normal. Por ejemplo, en la siguiente sub maquina sería normal comenzar en el estado inicial, pero si por alguna razón no fuera necesario realizar la inicialización, sería posible comenzar en el estado Ready realizando una transición al punto de entrada nombrado.

El siguiente diagrama muestra la maquina de estado un nivel hacia arriba:

Punto de Salida
Similar al Punto de Entada, es posible nombrar Puntos de Salida nombrados. El siguiente diagrama provee un ejemplo donde el estado ejecutado después del estado de procesos principal depende de que ruta se use para realizar la transición del estado.

Pseudo estado “Choice” (Elección)
Un pseudo estado se muestra como un diamante con una transición llegando y dos o más transiciones saliendo. El siguiente diagrama muestra que cualquier estado al que se llega después del pseudo estado elección depende del formato del mensaje seleccionado durante la ejecución del estado anterior.

Pseudo estado “Junction” (unión)
Los pseudo estados unión se usan para unir transiciones múltiples. Una sola unión puede tener una o más transiciones de entradas y una o más de salida, y se puede aplicar una guarda a cada transición. Las uniones son libres de semántica; una unión que divide una transición de entrada en transiciones de salida múltiples realiza una rama condicional estática, opuesto a un pseudo estado elección que realiza una rama condicional dinámica.

Pseudo estado “Terminate” (terminar)
Ingresar un pseudo terminar indica que la línea de vida de la maquina de estado ha terminado. Un pseudo estado indica que una línea de vida de la maquina de estado ha terminado. Un pseudo estado terminar se denota como una cruz.

Estado “History” (Historial)
Un estado historial se usa para recordar el estado anterior de una maquina de estado cuando fue interrumpida. El siguiente diagrama ilustra el uso de estados del historial. El ejemplo es una maquina de estado que pertenece a un lavarropas.

En esta maquina de estado, cuando un lavarropas comience, su proceso será desde el lavado y enjuague hasta el secado. Si hay un corte de luz, el lavarropas se detendrá por lo que pasará al estado Power off (apagado). Luego, cuando la energía retorne, el estado Running (ejecutar) ingresa al símbolo de estado Historial, lo que significa que debería seguir con el proceso donde quedó cuando se corto la energía.

Regiones recientes
Un estado se puede dividir en regiones conteniendo sub estados que existen y se ejecutan concurrentemente. El siguiente ejemplo muestra que dentro del estado “Applying Brakes” (Aplicar frenos), los frenos de adelante y atrás estarán operando simultáneamente e independientemente. Tener en cuenta el uso de los pseudo estados en lugar de los pseudo estados elección y combinación. Estos símbolos se usan para sincronizar los hilos concurrentes.