UML - Diagrama de Estados

El Diagrama de Estados, también conocido como Diagrama de Máquina de Estados, es una técnica usada para describir comportamiento, muestra los estados posibles de un objeto durante su ciclo de vida y los eventos que causan los cambios de estado.

Componentes

  1. Estados: Representados por rectángulos con esquinas redondeadas, indican las condiciones o situaciones durante la vida de un objeto.
  2. Transiciones: Flechas que conectan estados, mostrando cómo y cuándo se produce un cambio de estado en respuesta a un evento.
  3. Eventos: Activadores que causan que un objeto cambie de un estado a otro.
  4. Acciones: Se asocian a las transiciones y se consideran como procesos que suceden con rapidez (no son interrumpibles). Ej. “obtiene primer artículo”.
  5. Guardias: Condiciones lógicas que solo devuelven verdadero o falso. Deben ser verdaderas para que ocurra una transición, es escriben entre corchetes. Ej. “[Todos los artículos comprobados]”.

La sintaxis de una etiqueta de transición tiene 3 partes optativas:

Evento [Guardia] / Acción

singleton

Estados Concurrentes

También podemos modelar estados concurrentes mediante la división del superestado.

singleton

Propósito y Uso

  • Comportamiento Dinámico: Son utilizados para modelar el comportamiento dinámico de una entidad que puede existir en uno de varios estados, y cambiar de estado en respuesta a eventos internos o externos.
  • Análisis y Diseño: Son útiles en la fase de análisis y diseño para especificar cómo reacciona una entidad a secuencias de eventos temporales.
  • Sistemas Complejos: Son valiosos en sistemas complejos, donde los objetos pueden tener múltiples estados con transiciones complicadas.

Ventajas

  • Claridad: Proporcionan una visión clara de todos los posibles estados y cómo un objeto puede llegar a ellos.
  • Análisis de Comportamiento: Permiten analizar el comportamiento de un objeto para identificar posibles problemas.
  • Diseño Detallado: Ayudan en el diseño detallado de la lógica de control de un objeto.

Desventajas

  • Complejidad: Pueden volverse muy complejos con la adición de muchos estados y transiciones, especialmente en sistemas a gran escala.
  • Enfoque Limitado: Sólo representan el comportamiento de una entidad a la vez y no la interacción entre múltiples entidades.
  • Mantenimiento: Requieren actualización y mantenimiento regular para reflejar cambios en el comportamiento del objeto.

Uso Práctico

  • Desarrollo de Software: Usado para modelar el comportamiento de clases, especialmente aquellas que tienen una lógica de estado compleja, como controladores o entidades de negocio.
  • Sistemas Embebidos: Ampliamente usado en el diseño de sistemas embebidos y de tiempo real donde el manejo de estados es crítico.
  • Interfaces de Usuario: Útil para diseñar la lógica detrás de las interfaces de usuario que tienen distintos modos o estados.

Ejemplo de Aplicación

En este diagrama vemos los estados de un pedido en un sistema de gestión de pedidos.

singleton

Estados y Transiciones:

  1. Inicio: Representado por un círculo negro sólido, es el punto de partida del ciclo de vida del pedido.

  2. Comprobación:

    • Este es el estado inicial del pedido después de que se crea.
    • Acción al entrar: “obtiene primer artículo”.
    • Durante este estado, el sistema realiza una comprobación o revisión del artículo.
    • Actividad o acción interna: “hace/revisa artículo”.
    • Hay dos posibles transiciones desde este estado:
      • Si no todos los artículos han sido revisados, el sistema obtiene el siguiente artículo y permanece en el estado “Comprobación”.
      • Si todos los artículos han sido comprobados y están disponibles, se transita al estado “Despachando”.
      • Si todos los artículos han sido comprobados, pero algunos no están en inventario, se transita al estado “Espera”.
  3. Espera:

    • Este estado indica que el sistema está esperando que los artículos no disponibles lleguen al inventario.
    • Hay una autotransición, lo que significa que el estado “Espera” se mantiene hasta que la condición de guardia se cumple (algún artículo no en existencia se recibe).
    • Una vez que todos los artículos son recibidos, el sistema puede volver a “Comprobación” para reevaluar la disponibilidad de los artículos.
  4. Despachando:

    • Este estado ocurre después de que todos los artículos del pedido han sido comprobados y están disponibles para ser enviados.
    • Acción al entrar: “hace/inicia entrega”.
    • Desde este estado, el pedido puede ir directamente al estado “Entregado” si la entrega es completada con éxito.
  5. Entregado:

    • Este es un estado final, indicado por un círculo con un borde más grueso, y significa que el pedido ha sido entregado al cliente.

Anotaciones y Guardias en las Transiciones:

  • Las transiciones entre estados tienen condiciones o guardias que deben ser verdaderas para que la transición ocurra. Por ejemplo:
    • [No se revisan todos los artículos]: Esto indica que la transición de “Comprobación” a “Espera” o la autotransición dentro de “Comprobación” solo ocurre si aún hay artículos pendientes de revisión.
    • [Todos los artículos comprobados && algunos artículos no en inventario]: La transición de “Comprobación” a “Espera” ocurre si se cumple esta condición.
    • [Todos los artículos comprobados && todos los artículos disponibles]: Se transita al estado “Despachando” cuando todos los artículos han sido revisados y confirmados como disponibles.

Este ejemplo da una vista clara de cómo un pedido se mueve a través del sistema en respuesta a ciertos eventos y condiciones.

Conclusiones

El diagrama de estados es útil para modelar el comportamiento de los objetos a lo largo del tiempo. Da una comprensión detallada de los estados por los que puede pasar un objeto y cómo responde a eventos específicos.

A pesar de su tendencia a la complejidad en aplicaciones a gran escala, sigue siendo esencial para el análisis y diseño de sistemas que requieren una gestión detallada del estado del objeto.