Diagrama de máquina de Estados

Los diagrama de máquina de estados son uno de los cinco tipos de diagramas de UML que se utiliza para modelar los aspectos dinámicos de un sistema. Un diagrama de estados muestra una máquina de estados1. Tanto los diagramas de actividades como los diagramas de estados son útiles para modelar la vida de un objeto. Sin embargo, mientras que un diagrama de actividades muestra el flujo de control entre actividades a través de varios objetos, un diagrama de estados muestra el flujo de control entre estados dentro de un mismo objeto [Booch+2006].
Las máquinas de estados tienden a utilizase para modelar la historia del ciclo de vida de un solo objeto reactivo2 como una máquina de estados finita, una máquina que puede existir en un numero finito de estados. La máquina de estados realiza transiciones entre estos estados en respuesta a eventos de una forma bien definida [Arlow+2006].

Al igual que con los diagramas de actividades, tanto el UP como el RUP no describen un lugar especifico dentro de sus respectivos workflows. Los diagramas de maquinas de estados pueden elaborarse en los flujos de trbajo de análisis y diseño.

Elementos

Estado

La notación de un estado es la de un rectángulo con bordes redondeados. Ejemplo: Estado “EnCredito”, Figura 3-50.
Transición
Una transición es el cambio de un objeto de un Estado (estado origen) a otro (estado objetivo). Se representan con una flecha. La descripción de la transición, descrita sobre la flecha, describen las circunstancias que causan el cambio de estado, cuando éste se produce. Una auto transición es aquella cuyo estado origen y destino es el mismo.
Ejemplo: cerrar(), ver Figura 3-50.

Seudo-estados

Toman la forma básica de un estado, pero no se comportan como tales de forma completa.
Estado inicial: Representa la entrada de la secuencia de estados.
Estado final: Representa la salida de la secuencia de estados.
Opción3: Dirige el flujo de acuerdo a las condiciones de acuerdo a la condición de la opción.
Unión: Conecta más de una transición en un solo flujo.
Eventos: Son los que activan las transiciones en máquinas de estado, existen eventos de llamada, de señal, de cambio y de tiempo.
Estados compuestos: Es un estado que contiene estados anidados.

Eventos

Los eventos son las acciones que determinan el cambio de un estado  a otro de un objeto. UML define un evento como “la especificación de una ocurrencia destacable que tiene ubicación en tiempo y espacio”. Los eventos activan las transiciones en máquinas de estado. Los eventos se pueden mostrar externamente en transiciones, o internamente dentro de estados.

Evento de llamada

A nivel de programación, serian las funciones las que realizan los eventos de llamada. Son peticiones de una operación específica de una instancia de una clase. Recibir un evento de llamada es un activador para que se ejecute la operación. Pueden ser internos o externos (como se muestra la Figura 3-50), eventos internos de llamada como depositar(m) o eventos externos de llamada como retirar(m), un evento interno no hace que el estado cambie, uno externo sí.

Figura 3-50: Diagrama de estados - [Arlow+2006]Figura 3-50: Diagrama de estados – [Arlow+2006]

Eventos de señal

Una señal es un paquete de información que se envía asíncronamente entre objetos. Se debe modelar una señal como una clase estereotipada <<signal>> con la información a comunicarse en sus atributos. Ejemplo: RetiradaRechazada, Figura 3-50.
Dicho en otras palabras, es enviar un dato cundo se cumple cierta condición.

Evento de cambio

La acción asociada con al evento se activa cuando la expresión booleana pasa de falso a verdadero. Para que el evento pueda a activarse debe de pasar de falso a verdadero nuevamente. Ejemplo: saldo >= 5000, Figura 3-50.

Evento de tiempo

Existen de dos tipos: Cuando y después. Cuando, especifica un momento particular en el que se activa el evento; después específica un tiempo después del que se activa el evento. Ejemplo: son cuando (fecha=07/10/2009) y después (3 meses), ejemplo Figura 3-51.

Figura 3-51: Evento de Tiempos - [Arlow+2006]Figura 3-51: Evento de Tiempos – [Arlow+2006]

Estados compuestos

[Hamilton+2006] define una diferencia fundamental entre los diagramas de estado y los otros es que estos últimos permiten estados concurrente, o en varios estados al mismo tiempo. Con los estados compuestos esto se hace posible. Un estado compuesto es un estado que contiene uno o varios diagramas de estado. Cada diagrama corresponde a una región, y las regiones están divididas por líneas punteadas.
Un estado en una región que se conoce como un sub estado del estado compuesto, se los puede representar con su propio estereotipo, ver Figura 3-52.

Figura 3-52: Estereotipo de estado compuesto – (elaboración propia)Figura 3-52: Estereotipo de estado compuesto – (elaboración propia)

A su vez [Arlow+2006], clasifica los estados compuestos en dos:
1.   Estados compuestos: poseen sólo una región.
2.   Estados compuestos ortogonales: poseen dos o más regiones. Ambas sub-máquinas se ejecutan concurrentemente. No existe sincronización entre ambas sub-máquinas. Un ejemplo de ello lo encontramos en la Figura 3-53.

Figura 3-53: Estados compuestos ortogonales – [Eriksson+2004]Figura 3-53: Estados compuestos ortogonales – [Eriksson+2004]


1 Los diagramas de máquina de estados reciben distintos nombres en combinaciones singular/plural, [Kendall2004], [Eriksson+2004] y [Arlow+2006], por ejemplo los denominan maquinas de estado; [Pilone+2005] y [Fowler2004] los denomina maquina de estado; todos haciendo referencia al mismo diagrama.
2 [Booch+2006] definen objeto reactivo como aquel que se puede caracterizar mejor su comportamiento señalando las respuestas a los eventos lanzados sobre él desde fuera de su contexto. Dice además que un objeto reactivo tiene un ciclo de vida bien definido, cuyo comportamiento se ve afectado por su pasado.
3 También conocidos como selección [Kendall2004].

Bibliografía

[Arlow+2006] Arlow, Jim y Neustadt, Ila. 2006. UML2. [ed.] Victor Manuel Ruiz Calderón y Susana Krahe Pérez-Rubín. [trad.] Beatriz Parra Fernández. Madrid : ANAYA MULTIMEDIA, 2006. pág. 609. ISBN: 84-415-2033-X.

[Booch+2006] Booch, Grady, Rumbaugh, James y Jacobson, Ivar. 2006. El Lenguaje Unificado de Modelado: Guía de usuario. [ed.] Martín-Romo Miguel. [trad.] Jesús J. Garcia Molina y José Sáez Martínez. Segunda Edición. Rivera del Loira : PEARSON EDUCACIÓN S.A., 2006. pág. 527. ISBN 10: 84-7829-076-1.

[Debrauwer+2005] Debrauwer, Laurent y Van der Heyde, Fien. 2005. UML 2, Iniciación, ejemplos y ejercicios corregidos. s.l. : Ediciones ENI, 2005. 978-2-7460-4741-9.

[Eriksson+2004] Eriksson, Hans-Erik, y otros. 2004. UML™ 2 Toolkit. [ed.] Kevin Kent. Indianapolis, Indiana, EE.UU. : Wiley Publishing, Inc., 2004. 0-471-46361-2.

[Fowler2004] Fowler, Martin. 2004. UML Distilled: A Brief Guide to the Standard Object Modeling Language. Third Edition. Boston : Addison Wesley, 2004. p. 159. A Brief Guide to the Standard Object Modeling Language. ISBN 0-321-19368-7.

[Hamilton+2006] Hamilton, Kim y Miles, Russell. 2006. Learning UML 2.0. [ed.] Brett McLaughlin McLaughlin y Mary T. O'Brien. California : O'Reilly, 2006. pág. 286. 0-596-00982-8.

[Kendall2004] Kendall, Scott. 2004. Fast Track UML 2.0. Tennessee : Apress TM, 2004. ISBN:1590593200.

[Pilone+2005] Pilone, Dan y Pitman, Neil. 2005. UML 2.0 in a Nutshell. [ed.] Gennick Jonathan. First Edition. s.l. : O'Reilly Media, Inc., 2005. pág. 234. ISBN: 0-596-00795-7.

Acerca de Daniel

Soy ingeniero de sistemas con muchos años de experiencia en el desarrollo de software y gestión de proyectos. El objetivo al desarrollar este sitio web el de brindar información y conocimientos, tanto a nivel académico como profesional sobre diversas tecnologías involucradas en las disciplinas computacionales. Confio en brindar información lo mas didactica y clara en lo referente contenido académico. Así como ejemplos y casos reales de soluciones problemas que se presentan en un entorno de producción.
Esta entrada fue publicada en UML y etiquetada , . Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


Última modificación: 23/09/2012