Está en la página 1de 7

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.

También podría gustarte