Professional Documents
Culture Documents
A
α β
B
α
γ
C
α
β
Figura 1
Una posible solución al problema anterior es utilizar los conceptos propios del
método Statechart(1), el cual constituye un formalismo visual para describir estados
y transiciones de manera modular, permitiendo el agrupamiento y refinamiento de
estados, entre otras. Resumiendo, Statechart es una extensión de los diagramas de
estados convencionales.
Un simple ejemplo
1
D
A β
α
B
α
γ
Figura 2
Dado que el evento β cambia el estado del sistema a B tanto desde A como C,
podemos agrupar estos últimos dentro un nuevo super-estado D y reemplazar las
dos flechas de β por una única. La semántica de D es entonces, la XOR entre A y C,
es decir, estando en el estado D, el sistema también puede estar tanto en el estado
A como el C y no en ambos. Así, D es realmente una abstracción de A y C. El
estado D y sus flechas salientes β distinguen una propiedad común de A y C,
específicamente, que β dirige al sistema desde estos a B. El hecho de que una
transición abandone un super-estado, tal como β en la Figura 2, implica que se
abandonen todos sus sub-estados. Esto último es la principal manera en que el
método Statechart economiza el número de flechas.
D B
α β
α
Figura 3
A β
α
B
α
Figura 4
2
A
Figura 5
La pequeña flecha sobre el estado B indica que este es el estado por defecto entre
D y B, es decir, indica el estado por defecto del diagrama, mientras que la pequeña
flecha en A indica que este es el estado por defecto entre A y C, es decir, indica el
estado por defecto del estado D. Las flechas por defecto son análogas a los estados
de inicio de los autómatas de estados finito. Por lo tanto, el diagrama de estados
debe contener un único estado por defecto, el cual puede ser super-estado o no.
Asimismo, cada super-estado, también denominado estado compuesto, debe
contener un estado por defecto.
Implementación de Statecharts(1)
3
• La representación de una máquina de estados es fácil e intuitiva.
• Refleja el diagrama de estados sin ofuscación.
• Útil en embedded systems.
• La mayor parte de la implementación de RKH es independiente de cualquier
CPU, OS y compilador.
• Las aplicaciones que utilizan RKH son altamente mantenibles.
• Fácil de integrar con cualquier mecanismo de despacho de eventos.
• La generación de código es flexible y configurable por el usuario.
• Muy pequeño footprint en RAM/ROM.
• Soporta estados anidados jerárquicamente (HSM), y máquina de estados
“planas”.
• Soporta pseudo-estados: conditional, junction y shallow/deep history(2).
• Soporta transiciones compuestas con guardas(2).
• Documentación completa y manual de referencia detallado.
Utilizando RKH
4
(5) Crea la tabla de transición de estados de “D”.
(6) Crea el estado “A”. Indica que su estado padre es “D”.
(7) Crea la tabla de transición de estados de “A”.
(8) Crea el estado “C”. Indica que su estado padre es “D”.
(9) Crea la tabla de transición de estados de “C”.
Descarga
http://sourceforge.net/projects/rkh-reactivesys/
Referencias y recursos
Contacto
Leandro G. Francucci