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.