Diagramas de Máquinas de Estado

Anuncio
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Capítulo 29. Diagramas de Máquinas de Estado UML
Aplicando UML y patrones: Una Introducción al Análisis y Diseño
Orientado a Objetos y el Desarrollo Iterativo, Tercera Edición
Por Craig Larman
Objetivos

Introducir la notación UML de los diagramas de máquinas de estado, con
ejemplos, y varias aplicaciones de modelado.
Introducción
Cómo con los diagramas de actividad, los diagramas de estado UML muestran una vista
dinámica. UML incluye notación que ilustra los eventos y estados de objetos, casos de uso,
personas, etcétera.
Son mostradas las más importantes características de la notación, pero hay muchos
elementos poco frecuentes que no se tratan en esta introducción.
29.1. Ejemplo
Un diagrama de máquina de estado UML, como el mostrado en la Figura 29.1, ilustra los
eventos y estados de un objeto, y el comportamiento de un objeto al reaccionar a un evento.
Las transiciones son representadas con flechas, etiquetadas con sus eventos. Los estados se
representan con rectángulos con esquinas redondeadas. Es común incluir un seudo estado
inicial, el cuál tendrá una transición automática a otro estado cuando se crea la instancia.
Figure 29.1. Diagrama de máquina de estado de un teléfono.
1/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Un diagrama de máquina de estado muestra el ciclo de vida de un objeto: que evento
experimenta, sus transiciones, y los estados en los que se encuentra entre estos eventos. No
es necesario ilustrar todos los posibles eventos; si surge un evento que no esta representado
en el diagrama, el evento es ignorado en lo que al diagrama de máquina de estado se refiere.
Por tanto, podemos crear un diagrama de máquina de estado que describa el ciclo de vida de
un objeto con niveles de detalles arbitrariamente simples o complejos, dependiendo de
nuestras necesidades.
29.2. Definiciones: Eventos, Estados, y Transiciones
Un evento es una ocurrencia significativa o relevante . Por ejemplo:

Un receptor de teléfono se descuelga.
Un estado es la condición de un objeto en un instante del tiempo, el tiempo entre eventos.
Por ejemplo:

Un teléfono está en el estado "inactivo o en espera" después de colgarlo y antes de
descolgarlo.
Una transición es una relación entre dos estados que indica que cuando un evento ocurre, el
objeto pasa del estado previo al estado siguiente. Por ejemplo:

Cuando el evento "descolgar" ocurre, hay una transición del teléfono del estado
“inactivo” a “activo”.
29.3. ¿Cómo aplicar diagramas de máquina de estado?
Objetos dependientes o independientes del estado
Si un objeto siempre responde de la misma forma ante un evento, entonces se considera
independiente del estado con respecto a ese evento. Por ejemplo, si un objeto recibe un
mensaje, y el método de respuesta siempre hace la misma cosa. El objeto es independiente
del estado con respecto a ese mensaje. Si, para todos los eventos de interés, un objeto
siempre reacciona de la misma forma, es un objeto independiente del estado.
En contraste, un objeto dependiente del estado reacciona diferente a los eventos
dependiendo de su estado.
Pautas
Cree una máquina de estado para los objetos dependientes del estado con
comportamiento complejo, no para objetos independientes del estado.
Por ejemplo, un teléfono es muy dependiente del estado. La reacción del teléfono al apretar
un botón en particular (generando un evento) depende del estado actual del teléfono, de si
está descolgado, de si hay tono, de la configuración, etcétera.
Es para esta clase de problemas complejos dependiente del estado que los diagramas de
máquinas de estado le pueden agregar valor para entender o documentar algunas cosas.
2/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Pautas
En general, los sistemas de información de gestión tienen pocas clases complejas y
dependientes del estado. No es frecuente aplicar máquina de estado.
En cambio los dominios de control de procesos, control de dispositivos,
manipuladores de protocolo, y dominios de telecomunicaciones a menudo tiene
muchos objetos dependientes del estado. Si usted trabaja sobre estos dominios,
definitivamente debe conocer y crear modelos de máquinas de estado.
Modelando objetos dependientes del estado
En términos generales, las máquinas de estados son aplicadas de dos formas:
1. Para modelar el comportamiento reactivo de un objeto complejo en respuesta a un
evento.
2. Para modelar secuencias lícitas de protocolo de operación o especificaciones de
lenguajes.
o
Este acercamiento puede ser considerado una especialización del punto 1, si
el objeto es un lenguaje, protocolo, o proceso. Una gramática formal para un
lenguaje libre de contexto es una clase de máquina de estado.
La siguiente es una lista de objetos comunes los cuales a menudo son dependientes del
estado, y para los cuales puede ser útil crear una máquina de estado:
Objetos complejos reactivos

Dispositivos físicos controlados por software
o

Objeto de transacciones y relacionado con negocios
o

Teléfono, auto, horno microondas: Estos tiene reacciones complejas y
abundantes ante eventos, la forma en que reaccione depende de su estado
actual.
¿Cómo hacer que un objeto de negocio (una venta, orden, pago) reaccione a
un evento? Por ejemplo, ¿qué le pasaría a una orden si ocurre un evento de
cancelación? Y entendiendo todos los eventos y estados que un paquete
puede ir atravesando en el negocio de correo marítimo puede ayudar con el
diseño, validación, y perfeccionamiento de procesos.
Mutadores de rol: Estos son objetos que cambian su rol.
o
Una persona cambia el rol de ser un civil a ser un excombatiente. Cada rol es
representado por un estado.
Protocolos y Secuencias lícitas

Protocolos de comunicación
o
TCP, y nuevos protocolos, pueden ser fáciles y claramente entendidos con un
diagrama de máquina de estado. El diagrama ilustra cuando las operaciones
3/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
son lícitas. Por ejemplo, una solicitud de “cierre” de TCP sería ignorado si el
manipulador del protocolo ya está en el estado “cerrado”.

Navegación de interfaz de usuario (UI) Web o Windows: Cuando se hace un modelo
UI, puede ser útil para entender la secuencia correcta entre paginas web o windows;
esto es a menudo complejo. Una máquina de estado es una gran herramienta para
modelar la navegación de UI.

Controladores de Flujo de UI o Sesiones: Esto está relacionado a modelar la
navegación de UI, pero específicamente enfocado sobre objetos del lado del servidor
que controlan el flujo de páginas. Estos son usualmente objetos del lado del servidor
que representan una sesión de salida o conversación con cliente. Por ejemplo, una
aplicación Web que recuerda el estado de la sesión con el cliente Web y controlar las
transiciones a una nueva página Web, o la modificación de lo que muestra la actual
página Web, basándose en el estado de la sesión y la próxima operación que se
reciba.

Operaciones del Sistema en Casos de Uso.
o

¿Hacer re llamada de las operaciones del sistema para Procesar Venta:
hacerNuevaVenta, introducirItem, etcétera? Estos arribarían en un orden
determinado; por ejemplo, finalizarVenta solo arribaría luego de una o más
operaciones introducirItem. Usualmente, el orden es obvio, pero si fuera
complejo, una máquina de estado puede modelarlo, permitiendo al caso de
uso ser un objeto en si mismo.
Manejo de eventos en UI
o
Entendiendo los eventos y las secuencias válidas para una ventana o
formulario. Por ejemplo la acción editar-pegar solo es válida si hay algo en el
portapapeles para pegar.
Más notación UML de Diagrama de Máquina de Estado
Acciones y condiciones de guarda de la transición
Una transición podría provocar que se dispare una acción. En una implementación de
software, esto podría representar la invocación de un método de la clase del diagrama de
máquina de estado.
Una transición podría tener también una condición de guarda (o condición booleana). La
transición solo ocurre si se cumple la condición. Ver la Figura 29.2.
4/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Figure 29.2. Notación para una acción y condición de guarda de una transición.
Estados anidados
Un estado permite el anidamiento para contener sub-estados; un sub-estado hereda la
transición de su superestado (el estado que lo incluye). Ver la Figura 29.3. Esta fue una
contribución clave de la notación de los diagramas de estados Harel en la que se basa UML,
lo que nos lleva a diagramas de máquinas de estados concisos. Los sub-estados se podrían
mostrar gráficamente anidándonos en una caja que representa el supertestado.
Figure 29.3. Estados anidados.
Por ejemplo, cuando ocurre una transición al estado Activo, ocurre la creación y transición
al sub-estado ObtenerTonoDeMarcado. No importa en que sub-estado está el objeto, si
ocurre el evento colgar relacionado al superestado Activo, ocurre una transición al estado
Inactivo.
29.5. Ejemplo: Modelando La Navegación de UI (Interfaz de Usuario) con
Maquinas de Estado
Algunas aplicaciones de UI, especialmente aplicaciones Web de UI, tienen flujo de página
complejos. Las máquinas de estado son una gran forma de documentar esto, para entenderlo,
y una gran forma para modelar flujo de página, durante el diseño.
5/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Una técnica común en modelado ágil UI y prototipación UI es modelar una UI con grandes
hojas de papel en una pared. Cada hoja representa una página web. Notas adhesivas sobre
las hojas para representar elementos; quizás amarillas si es información y rosa si es un
control, tales como un botón. Cada hoja es etiquetada, por ejemplo, "Página de ayuda,"
"Página de Productos," etcétera.
Resumiendo, modelar el contenido de la página con el método "baja tecnología, alto
detalle", esto es útil para modelar el flujo entre estas páginas. Además, sobre una pizarra
adyacente a la pared de las páginas web, bosquejar un diagrama de Máquina de Estado. Los
estados representan las páginas y los eventos representan los eventos que causan
transferencia desde una página a otra, tales como hacer clic en un botón. Ver la Figura 29.4
para ver un ejemplo de este modelo de navegación UI. Por supuesto que este modelo es
pequeño y no hace justicia con la real utilidad de la práctica; su valor se hace evidente
cuando es grande y tiene estructura de páginas complejas.
Figura 29.4. Aplicando máquina de estado al modelo de navegación de páginas Web.
29.6. Ejemplo: Diagrama de Máquina de Estado del caso de uso NextGen
No hay objetos reactivos complejos realmente interesantes el caso de estudio, así que
ilustraré un diagrama de máquina de estado para mostrar la secuencia correcta de operación
del caso de uso. Ver la Figura 29.5 para su aplicación al caso de uso Procesar Venta.
6/7
Diagramas de Máquinas de Estado - UML y Patrones 3ra Ed en español
Diseño de Sistemas
Versión: 1.01 [16/07/05]
Cátedra de Diseño de Sistemas
Autor: Milton Buzey - Enrique Porta
Figura 29.5. Un ejemplo de máquina de estado para la secuencia correcta del caso de uso.
29.7. Proceso: Diagrama de máquina de estado en el UP
No existe en el UP ningún modelo que se llame "modelo de estado". Mas bien, cualquier
elemento de cualquier modelo (Modelo de diseño, Modelo de Dominio, Modelo de Objeto
de Negocios, y mas) podría tener una máquina de estado para entenderlo mejor o para
comunicar su comportamiento dinámico como respuesta a los eventos. Por ejemplo, una
máquina de estado asociada a la clase de diseño Venta del Modelo de Diseño, también
forma parte del Modelo de Diseño.
29.8. Recursos recomendados
La aplicación del modelo de estados al A/DOO está bien abarcada en Designing Object
Systems por Cook y Daniels. Real Time UML por Douglass también provee una excelente
discusión para modelar estados; el contenido enfatiza sistemas de tiempo real, pero es
ampliamente aplicable.
7/7
Descargar