Pregunta

Dado un sistema que contiene dos componentes, A y B, y

El sistema se inicia A y B simultáneamente. Ahora A puede pasar por los estados {A.Starting, A.ready}, y B puede estar en los estados {B.Starting, B.Doingx, B.Doingy}. (Los eventos a la transición entre los estados de A y B se llaman en consecuencia: B.Doingx => B va a B.Doingx, etc ...)

A and B state machine from yuml.me

Quiero modelar eso

  • Mientras que A está en A. Counting, o B está en B.
  • El sistema está en estado "doingx" cuando A está en A. Now y B está en B.Doingx
  • El sistema está en estado "haciendo" cuando A está en A. Now y B está en B.Doingy

System state machine from yuml.me

Si no me equivoco, los pseudo-estados de la bifurcación/unión podrían usarse aquí.

¿Pero estos elementos modelo tienen la semántica declarativa del estado compuesto mencionado anteriormente? ¿Hay otra forma de modelar esto?

(Nota: los diagramas son de http://yuml.me)

¿Fue útil?

Solución

¿Por qué no te separas? Aquí hay otra idea sobre cómo podría modelarlo (suponiendo que lo entendí correctamente):

  • Un estado "que comienza", que contiene los estados a los que se refiere como A. es ingresado)

  • Otro estado "hacer" que contiene una región con su estado "A. Ready" y otra región paralela, que contiene los dos estados "B.Doingx" y "B.Doingy".

Si realmente necesita tener un estado general "doingx", entonces es posible que deba crear dos estados que correspondan a A.Ready.

De todos modos, en una perspectiva más amplia: creo que su punto de vista está un poco apagado aquí, cuando dice que el "sistema está en estado ...". Más bien, el sistema modelado por dicha máquina de estado se encuentra en un conjunto de estados. Entonces, normalmente, estaría perfectamente feliz de decir que "el sistema está actualmente en A.ready y B.Doingx".

Quizás todo lo que necesitas es un cambio de terminología. ¿Qué pasa con esto?

El sistema está en configuración "Doingx" ¿Cuándo los estados de A.ready y B.Doingx están activos?

En respuesta al comentario: Sí, esto es estándar, aquí está la parte correspondiente de la especificación de superestructura (versión 2.4 beta):

En una máquina de estado jerárquica, más de un estado puede estar activo al mismo tiempo. [...] El actual "estado" activo está en realidad representado por un conjunto de árboles de estados que comienzan con los estados más importantes de las regiones raíz hasta el subestado activo más interno. Nos referimos a un árbol de estado como un Configuración de estado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top