Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol
Diseo de Sistemas Versin: 1.01 [16/07/05]
Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
1 / 7 Captulo 29. Diagramas de Mquinas de Estado UML Aplicando UML y patrones: Una Introduccin al Anlisis y Diseo Orientado a Objetos y el Desarrollo Iterativo, Tercera Edicin Por Craig Larman
Objetivos Introducir la notacin UML de los diagramas de mquinas de estado, con ejemplos, y varias aplicaciones de modelado. Introduccin Cmo con los diagramas de actividad, los diagramas de estado UML muestran una vista dinmica. UML incluye notacin que ilustra los eventos y estados de objetos, casos de uso, personas, etctera. Son mostradas las ms importantes caractersticas de la notacin, pero hay muchos elementos poco frecuentes que no se tratan en esta introduccin. 29.1. Ejemplo Un diagrama de mquina 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 rectngulos con esquinas redondeadas. Es comn incluir un seudo estado inicial, el cul tendr una transicin automtica a otro estado cuando se crea la instancia.
Figure 29.1. Diagrama de mquina de estado de un telfono.
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
2 / 7 Un diagrama de mquina 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 mquina de estado se refiere. Por tanto, podemos crear un diagrama de mquina 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 telfono se descuelga. Un estado es la condicin de un objeto en un instante del tiempo, el tiempo entre eventos. Por ejemplo: Un telfono est en el estado "inactivo o en espera" despus de colgarlo y antes de descolgarlo. Una transicin es una relacin 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 transicin del telfono del estado inactivo a activo. 29.3. Cmo aplicar diagramas de mquina 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 mtodo de respuesta siempre hace la misma cosa. El objeto es independiente del estado con respecto a ese mensaje. Si, para todos los eventos de inters, 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 mquina de estado para los objetos dependientes del estado con comportamiento complejo, no para objetos independientes del estado.
Por ejemplo, un telfono es muy dependiente del estado. La reaccin del telfono al apretar un botn en particular (generando un evento) depende del estado actual del telfono, de si est descolgado, de si hay tono, de la configuracin, etctera. Es para esta clase de problemas complejos dependiente del estado que los diagramas de mquinas de estado le pueden agregar valor para entender o documentar algunas cosas.
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
3 / 7 Pautas En general, los sistemas de informacin de gestin tienen pocas clases complejas y dependientes del estado. No es frecuente aplicar mquina 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 mquinas de estado.
Modelando objetos dependientes del estado En trminos generales, las mquinas 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 lcitas de protocolo de operacin o especificaciones de lenguajes. o Este acercamiento puede ser considerado una especializacin del punto 1, si el objeto es un lenguaje, protocolo, o proceso. Una gramtica formal para un lenguaje libre de contexto es una clase de mquina 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 mquina de estado: Objetos complejos reactivos Dispositivos fsicos controlados por software o Telfono, auto, horno microondas: Estos tiene reacciones complejas y abundantes ante eventos, la forma en que reaccione depende de su estado actual. Objeto de transacciones y relacionado con negocios o Cmo hacer que un objeto de negocio (una venta, orden, pago) reaccione a un evento? Por ejemplo, qu le pasara a una orden si ocurre un evento de cancelacin? Y entendiendo todos los eventos y estados que un paquete puede ir atravesando en el negocio de correo martimo puede ayudar con el diseo, validacin, 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 lcitas Protocolos de comunicacin o TCP, y nuevos protocolos, pueden ser fciles y claramente entendidos con un diagrama de mquina de estado. El diagrama ilustra cuando las operaciones
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
4 / 7 son lcitas. Por ejemplo, una solicitud de cierre de TCP sera ignorado si el manipulador del protocolo ya est en el estado cerrado. Navegacin 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 mquina de estado es una gran herramienta para modelar la navegacin de UI. Controladores de Flujo de UI o Sesiones: Esto est relacionado a modelar la navegacin de UI, pero especficamente enfocado sobre objetos del lado del servidor que controlan el flujo de pginas. Estos son usualmente objetos del lado del servidor que representan una sesin de salida o conversacin con cliente. Por ejemplo, una aplicacin Web que recuerda el estado de la sesin con el cliente Web y controlar las transiciones a una nueva pgina Web, o la modificacin de lo que muestra la actual pgina Web, basndose en el estado de la sesin y la prxima operacin que se reciba. Operaciones del Sistema en Casos de Uso. o Hacer re llamada de las operaciones del sistema para Procesar Venta: hacerNuevaVenta, introducirItem, etctera? Estos arribaran en un orden determinado; por ejemplo, finalizarVenta solo arribara luego de una o ms operaciones introducirItem. Usualmente, el orden es obvio, pero si fuera complejo, una mquina 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 vlidas para una ventana o formulario. Por ejemplo la accin editar-pegar solo es vlida si hay algo en el portapapeles para pegar. Ms notacin UML de Diagrama de Mquina de Estado Acciones y condiciones de guarda de la transicin Una transicin podra provocar que se dispare una accin. En una implementacin de software, esto podra representar la invocacin de un mtodo de la clase del diagrama de mquina de estado. Una transicin podra tener tambin una condicin de guarda (o condicin booleana). La transicin solo ocurre si se cumple la condicin. Ver la Figura 29.2.
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
5 / 7
Figure 29.2. Notacin para una accin y condicin de guarda de una transicin.
Estados anidados Un estado permite el anidamiento para contener sub-estados; un sub-estado hereda la transicin de su superestado (el estado que lo incluye). Ver la Figura 29.3. Esta fue una contribucin clave de la notacin de los diagramas de estados Harel en la que se basa UML, lo que nos lleva a diagramas de mquinas de estados concisos. Los sub-estados se podran mostrar grficamente anidndonos en una caja que representa el supertestado.
Figure 29.3. Estados anidados.
Por ejemplo, cuando ocurre una transicin al estado Activo, ocurre la creacin y transicin al sub-estado ObtenerTonoDeMarcado. No importa en que sub-estado est el objeto, si ocurre el evento colgar relacionado al superestado Activo, ocurre una transicin al estado Inactivo. 29.5. Ejemplo: Modelando La Navegacin de UI (Interfaz de Usuario) con Maquinas de Estado Algunas aplicaciones de UI, especialmente aplicaciones Web de UI, tienen flujo de pgina complejos. Las mquinas de estado son una gran forma de documentar esto, para entenderlo, y una gran forma para modelar flujo de pgina, durante el diseo.
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
6 / 7 Una tcnica comn en modelado gil UI y prototipacin UI es modelar una UI con grandes hojas de papel en una pared. Cada hoja representa una pgina web. Notas adhesivas sobre las hojas para representar elementos; quizs amarillas si es informacin y rosa si es un control, tales como un botn. Cada hoja es etiquetada, por ejemplo, "Pgina de ayuda," "Pgina de Productos," etctera. Resumiendo, modelar el contenido de la pgina con el mtodo "baja tecnologa, alto detalle", esto es til para modelar el flujo entre estas pginas. Adems, sobre una pizarra adyacente a la pared de las pginas web, bosquejar un diagrama de Mquina de Estado. Los estados representan las pginas y los eventos representan los eventos que causan transferencia desde una pgina a otra, tales como hacer clic en un botn. Ver la Figura 29.4 para ver un ejemplo de este modelo de navegacin UI. Por supuesto que este modelo es pequeo y no hace justicia con la real utilidad de la prctica; su valor se hace evidente cuando es grande y tiene estructura de pginas complejas.
Figura 29.4. Aplicando mquina de estado al modelo de navegacin de pginas Web.
29.6. Ejemplo: Diagrama de Mquina de Estado del caso de uso NextGen No hay objetos reactivos complejos realmente interesantes el caso de estudio, as que ilustrar un diagrama de mquina de estado para mostrar la secuencia correcta de operacin del caso de uso. Ver la Figura 29.5 para su aplicacin al caso de uso Procesar Venta.
Diagramas de Mquinas de Estado - UML y Patrones 3ra Ed en espaol Diseo de Sistemas Versin: 1.01 [16/07/05] Autor: Milton Buzey - Enrique Porta Ctedra de Diseo de Sistemas
7 / 7
Figura 29.5. Un ejemplo de mquina de estado para la secuencia correcta del caso de uso.
29.7. Proceso: Diagrama de mquina de estado en el UP No existe en el UP ningn modelo que se llame "modelo de estado". Mas bien, cualquier elemento de cualquier modelo (Modelo de diseo, Modelo de Dominio, Modelo de Objeto de Negocios, y mas) podra tener una mquina de estado para entenderlo mejor o para comunicar su comportamiento dinmico como respuesta a los eventos. Por ejemplo, una mquina de estado asociada a la clase de diseo Venta del Modelo de Diseo, tambin forma parte del Modelo de Diseo.
29.8. Recursos recomendados La aplicacin del modelo de estados al A/DOO est bien abarcada en Designing Object Systems por Cook y Daniels. Real Time UML por Douglass tambin provee una excelente discusin para modelar estados; el contenido enfatiza sistemas de tiempo real, pero es ampliamente aplicable.