Statecharts

Anuncio
,QJHQLHUtDGH6RIWZDUH,
Máquinas de Estados y
Statecharts
2° Cuatrimestre 2000
Máquinas de estados y Statecharts
Máquinas de Estados
1. Introducción
El comportamiento reactivo de los objetos de una clase puede ser descrito formalmente en términos de
estados y eventos, usando una máquina de estados relacionado con la clase bajo consideración.
Los objetos que no presentan un pronunciado comportamiento reactivo pueden ser considerados como si
siempre estuvieran en el mismo estado. En este caso, sus clases no poseen una máquina de estados.
Clas e
M áquina de E s tado
1
0..1
Figura 1. Cada objeto de una clase se relaciona con una máquina de estados
Una máquina de estados es una abstracción de todos los posibles comportamientos, de forma similar que los
diagramas de clase son abstracciones de la estructura estática. Todo objeto sigue el comportamiento
descrito en la máquina de estados asociado a su clase y está, en un momento dado, en un estado que
caracteriza sus evolución interna.
Por ejemplo, un semáforo pasa sucesivamente de verde a amarillo, luego a rojo, entonces vuelve a amarillo
y luego a verde. Esto es durante toda su vida operacional.
Semáforo
Rojo
Amarillo
Verde
Figura 2. Máquina de estados asociada a un objeto semáforo
2. Estados
Todo objeto está en un estado particular en un momento dado. Los estados se representan con rectángulos
de ángulos redondeados. Cada estado tiene un nombre que lo identifica y que debe ser único para evitar
ambigüedad.
Es ta d o A
Es ta d o B
Figura 3. Representación de estados
Los estados están caracterizados por los conceptos de duración y estabilidad. Un objeto no está siempre en
el mismo estado y no puede estar en un estado desconocido o indefinido. Un estado es la imagen de una
Ingeniería de Software I
Pág. 1
Máquinas de estados y Statecharts
combinación instantánea de los valores contenidos en los atributos del objeto y de la presencia o ausencia de
relaciones con otros objetos.
El siguiente diagrama de clase representa personas que trabajan para empresas:
P ers ona
E dad
E m pres a
0..1
1..*
Figura 4. Personas que trabajan para empresas
No todas las personas tienen trabajo (esto se deduce de la cardinalidad de la relación). Asimismo todas las
personas están, en momento dado, en uno de los siguientes estados: {empleado, desempleado, jubilado}.
E m pleado
Jubilado
Des em pleado
Figura 5. Posibles estados de una persona
Para conocer la situación particular de una persona, es necesario estudiar:
•
Edad de la persona.
•
Presencia de una relación a una empresa.
En el siguiente diagrama, no hay ninguna relación entre José, quien tiene 36 años, y una empresa: por lo
tanto, José está desempleado. Pedro, en cambio, está relacionado con una empresa y tiene 44 años: Pedro,
entonces, está empleado. Por último, Juan no tiene ninguna relación con una empresa y tiene 78 años,
siendo Juan un jubilado.
Jos é
E dad = 36
E m pres a
P edro
E dad = 44
Juan
E dad = 78
Figura 6. Relación entre empleados y una empresa
Ingeniería de Software I
Pág. 2
Máquinas de estados y Statecharts
1..1
Construcción de los estados
Las máquinas de estado empleadas en UML son determinísticas y por eso no deben dejar ningún espacio a
construcciones ambiguas. Esto significa en particular que siempre es necesario describir el estado inicial del
sistema. Para un nivel jerárquico dado, siempre hay un y un sólo un estado inicial. En cambio, pueden haber
varios estados finales donde cada uno corresponde a una condición de fin diferente o puede no haber ningún
estado final (por ejemplo, en el caso que el sistema nunca pare). El estado inicial se representa mediante un
punto negro grande. Los estados finales se representan con un punto negro grande rodeado por un círculo.
E s tado Inic ial
E stado Interm edio
E s tado Fin al
Figura 7. Notación para representar estados especiales
Nota: varios de los diagramas de ejemplo que figuran en este apunte no tienen estado inicial. Esto es para
mantener la claridad y resaltar lo que se está explicando. Pero es importante tener siempre en cuenta que
todo diagrama debe tener su estado inicial para mantener su determinismo.
3. Transiciones
Cuando evolucionan las condiciones dinámicas, los objetos cambian de estado siguiendo las reglas descritas
en la máquina de estados asociada a su clase. Los diagramas de máquinas de estado son grafos dirigidos.
Los estados están enlazados mediante conexiones unidireccionales llamadas transiciones. El pasaje de un
estado a otro es realizado cuando una transición es disparada por un evento que ocurre dentro del dominio
del problema. El cambio de un estado a otro es instantáneo, dado que el sistema siempre debe estar en un
estado conocido.
Es ta do A
Es ta do B
Figura 8. Transición entre el estado A y el estado B
Ingeniería de Software I
Pág. 3
Máquinas de estados y Statecharts
Las transiciones no necesariamente enlazan estados distintos. El siguiente ejemplo describe un fragmento de
un analizador léxico. El reconocimiento de unidades léxicas se realiza en el estado ‘Leyendo’. La máquina
de estado se mantiene en ese estado mientras todos los caracteres leídos son no separadores.
No es s eparador
Ley endo
S eparador
Si guiente es ta do
Figura 9. Parte de un analizador léxico
4. Eventos
Un evento corresponde a la ocurrencia de una situación dada dentro del dominio del problema. En contraste
con los estados que tienen duración, un evento es por naturaleza una información instantánea que debe ser
tratada inmediatamente. Un evento es usado para disparar el pasaje de un estado a otro. Las transiciones
especifican los caminos en la máquina de estado. Los eventos determinan qué camino debe ser seguido.
La especificación completa de un evento incluye:
•
El nombre del evento.
•
La lista de parámetros.
•
El objeto que lo envía.
•
El objeto que lo recibe.
•
La descripción y el significado del evento.
Empleado
Cum ple 65
Es contratado
Jubilado
Pierde el empleo
Desempleado
Cumple 65
Figura 10. Transiciones y eventos en el estado laboral de una persona
Ingeniería de Software I
Pág. 4
Máquinas de estados y Statecharts
5. Guardas
Una guarda es una condición booleana que puede validar o invalidar el disparo de la ocurrencia de un
evento.
Estado A
Evento[ Condición ]
Estado B
Figura 11. Ejemplo de condición de disparo
Las guardas hacen posible el mantenimiento del determinismo de una máquina de estado cuando muchas
transiciones pueden ser disparadas por el mismo evento. Cuando el evento toma lugar, las guardas – las
cuales deben ser mutuamente exclusivas – son evaluadas y entonces una transición es validada y disparada.
Supongamos, por ejemplo, que si una persona mayor de 59 años pierde su empleo es automáticamente
jubilada:
Empleado
Es contratado
Cumple 65
Pierde el empleo[ ≥ 60 años ]
Jubilado
Pierde el empleo[< 60 años ]
Desempleado
Cumple 65
Figura 12. Eventos y guardas en el ejemplo de la empresa
Ingeniería de Software I
Pág. 5
Máquinas de estados y Statecharts
6. Operaciones y Acciones
La relación entre las operaciones definidas en la especificación de clases y los eventos que aparecen en los
diagramas de estados es realizada usando acciones y actividades.
Cada transición puede ser etiquetada con el nombre de una acción a ejecutar cuando la transición es
disparada por un evento. Para respetar la semántica general de la transición, la acción es considerada
instantánea y atómica.
Es tado A
Evento / Acción
Es tado B
Figura 13. La acción es instantánea
La acción corresponde a una de las operaciones declaradas en la clase del objeto que va a recibir el evento.
La acción tiene acceso a los parámetros del evento y a los atributos del objeto.
Los estados también pueden contener acciones. Éstas son ejecutadas en la entrada o en la salida del estado o
cuando un evento ocurre mientras el objeto está en el estado.
Estado
entry /
on UnEvento( Argumentos )[Condición] /
exit /
Figura 14. Notación definida para acciones dentro de estados
La acción en la entrada al estado se ejecuta de forma instantánea y atómica justo cuando se entra al estado.
De la misma forma, la acción en la salida del estado se ejecuta cuando dispara una transición que determina
un cambio de estado. La acción ante un evento interno se ejecuta en la ocurrencia de un evento que no lleva
a otro estado. Un evento interno no dispara la ejecución de las acciones de entrada y de salida – entry y exit
– a diferencia de la ejecución de una auto-transición (self-transition).
Evento / Acción
A
entry: Acción de entrada
exit: Acción de salida
on Evento: Acción
≠
B
entry: Acción de entrada
exit: Acción de salida
Figura 15. Diferencia entre una transición implícita y una acción interna
Ingeniería de Software I
Pág. 6
Máquinas de estados y Statecharts
7. Actividades
Las acciones corresponden a operaciones con tiempo de ejecución despreciable. Una operación que toma
tiempo ejecutar corresponde a un estado más que a una acción. La palabra do indica una actividad, o sea,
una operación que lleva un tiempo no despreciable y que es ejecutada mientras el objeto está en una estado
dado.
Es tado C
do: U na operación
Figura 16. La actividad Una Operación transcurre dentro del estado C
En contraste con las acciones, las actividades pueden ser interrumpidas en cualquier momento. Esto se
deduce de la duración de una actividad (que lleva un tiempo no despreciable) en contraste con la calidad de
instantánea de toda acción. Inmediatamente que una transición de salida del estado es disparada. Algunas
actividades son cíclicas y sólo paran cuando es disparada una transición de salida. Otras actividades son
secuenciales y comienzan cuando se entra al estado (inmediatamente luego de la ejecución de las acciones
de entrada). Cuando una actividad secuencial llega a su fin, es posible dejar el estado si alguna de las
transiciones puede ser recorrida. Este tipo de transiciones no son disparadas por un evento y son llamadas
transiciones automáticas. Además pueden estar protegidas por guardas:
Es tado A
Es tado B
do: U na actividad s ecuencial
E s tado A
[ X]
E s tado B
do: Una ac tividad s ecuenc ial
[ not X ]
E s tado C
Figura 17. Actividades incluidas por estados
Ingeniería de Software I
Pág. 7
Máquinas de estados y Statecharts
8. Puntos de Ejecución de Operaciones
Hay seis lugares donde se pueden especificar operaciones (o actividades) que deben ser ejecutadas. Estos
son, en orden de ejecución:
•
•
•
•
•
•
Acción asociada a la transición de entrada al estado (Op1)
Acción de entrada al estado (Op2)
Actividad dentro del estado (Una Actividad)
Acción asociada a eventos internos (Op3)
Acción de salida del estado (Op4)
Acción asociada a la transición de salida del estado (Op5)
/ Op1
Un E s tado
entr y: Op2
do: U na A ct ividad
on Un E vento: Op3
ex it: O p4
/ Op5
Figura 18. Puntos de ejecución de operaciones
9. Generalización de Estados
La lectura de los diagramas de estado puede dificultarse bastante cuando el número de conexiones entre
estados pasa a ser alto. La solución para esta situación es aplicar el principio de generalización de estados:
los estados más generales son llamados superestados y los estados más específicos, subestados. Esto facilita
la representación y hace posible enmascarar detalles.
Las nociones de superestado y subestado se corresponden con el concepto de herencia de objetos. Un estado
puede descomponerse en varios subestados disjuntos donde los subestados heredan las características de su
superestado – en particular transiciones externas. La descomposición entre subestados también es llamada
descomposición disjuntiva (descomposición de tipo ‘or exclusivo’) dado que un objeto debe estar en un y
sólo un subestado en un momento dado. Mas adelante veremos un ejemplo de descomposición conjuntiva.
Los siguientes dos diagramas ilustran la simplificación que resulta de aplicar generalización de estados:
Ingeniería de Software I
Pág. 8
Máquinas de estados y Statecharts
Ag re g a r e s tud ian te [ C an t < 1 0 ] / C a n t = C a n t + 1
Inicia li zació n
Agreg a r es tu dia nte / Ca n t = 1
Ab rir
d o : Inicia lizar cu rs o
C an ce lar cu rs o
C a n ce la d o
d o: En via r avis o s de ca ncela ción
[ Ca n t = 1 0 ] /
C re a r R e p o rte
C a n ce la r cu rs o
C er rar
e n try: Fin a liza r cu rs o
Figura 19. Statechart que no utiliza conceptos de subestado y superestado
Registrac ión
Agregar estudiante[ Cant < 10 ] / Cant = Cant + 1
Inic ializ ac ión
A gregar es tudiante /
Cant = 1
Abrir
do: Inic ializ ar curs o
Canc elado
do: E nviar avis os de c anc elación
Cancelar c urso
[ Cant = 10 ] /
Crear Reporte
Cerrar
entry : Finaliz ar curs o
Figura 20. Statechart que utiliza conceptos de subestado y superestado
Utilizando subestados se simplifica y clarifica sensiblemente la notación y es una manera de evitar la
explosión de estados.
Nótese que el evento cancelar curso parte del estado Registración (independientemente de si el objeto se
encuentra en el subestado Abrir o subestado Cerrar).
Ingeniería de Software I
Pág. 9
Máquinas de estados y Statecharts
Act ivo
Cum ple 65
Empleado
Es contratado
Jubilado
Pierde el empleo
Desempleado
Figura 21. Estado Laboral de una persona utilizando generalización
Las transiciones de entrada no son heredadas por todos los estados. Sólo un estado (el superestado o alguno
de sus subestados) puede ser el destino de esta transición. Supongamos por ejemplo, que el estado B del
siguiente diagrama es dividido en dos subestados, B1 y B2. Los dos diagramas que le siguen son
equivalentes y válidos:
A
B
B
A
B1
B2
B
B1
A
B2
Figura 22. Statecharts equivalentes
Ingeniería de Software I
Pág. 10
Máquinas de estados y Statecharts
A veces, mostrar los subestados exhaustivamente pone demasiada información en los diagramas. El detalle
de los subestados puede ser ocultado para dar una perspectiva de alto nivel. Usando concentradores (stubs)
es posible mostrar que las transiciones de entrada dentro de un estado compuesto se refieren a un subestado
en particular, sin meterse en los detalles de la representación de este subestado. Esta técnica es consistente
con las ideas de information hiding, abstracción y con los conceptos de diseño a trazo grueso y trazo fino ya
vistos en la materia.
B
C
A
Figura 23. Ocultamiento de los estados internos de B
10. Agregación de Estados
Agregación de estados es la composición de un estado mediante varios estados independientes. La
composición es de tipo conjuntivo (composición de tipo ‘and’) lo que implica que el objeto debe estar
simultáneamente en todos los estados que constituyen la agregación. La agregación de estados corresponde
a un tipo de paralelismo entre máquinas de estado.
El siguiente ejemplo ilustra diferentes vistas del concepto de agregación de estados. El estado S es una
agregación compuesta por los estados independientes T y U. T está compuesto por los subestados X, Y y Z,
y U está compuesto por los subestados A y B. El dominio de S es el producto cartesiano de T y U.
S
T
X
U
E1
A
Y
E3
E1
E4[ in Z ]
Z
E2
B
Figura 24. Conjunción entre los estados T y U
Una transición de entrada al estado S implica la activación simultánea de las máquina de estado T y U,
quedando el objeto en el estado compuesto (Z, A). Cuando el evento E3 ocurre, las máquinas de estado T y
U pueden seguir evolucionando simultáneamente. Agregando condiciones a las transiciones, como la guarda
[in Z] en la transición de A a B permite introducir relaciones de dependencia entre los componentes de la
Ingeniería de Software I
Pág. 11
Máquinas de estados y Statecharts
agregación. Cuando el evento E4 ocurre la transición de A a B sólo es válida si el objeto está también en el
estado Z en ese momento.
Es importante notar en el ejemplo anterior que el sincronismo entre estados disjuntos no es obligatorio (a
diferencia, por ejemplo de otros modelos de Maquinas de Estados Finitos como las Redes de Petri).
Mientras en estas últimas se exige una presencia obligatoria en todos los estados que deben sincronizarse
para que se dispare la transición. Siguiendo con el ejemplo anterior. Si nos encontramos en el estado (X, A)
y ocurre el evento E1 el estado instantáneo siguiente será (Y,A) y no debe leerse que la transición E1 deba
estar habilitada en ambos subestados (o sea (X, B)) para poder dispararse.
La agregación de estados, junto con generalización de estados, simplifica la representación de las máquinas
de estados. La generalización simplifica factorizando y la agregación simplifica segmentando el espacio de
estados.
11. Historia
Por omisión, una máquina de estados no tiene ninguna memoria. La notación especial H ofrece un
mecanismo para memorizar el último subestado visitado y volver a éste cuando una transición vuelve a
entrar al superestado que lo contiene. El indicador de historia se aplica al nivel en el cual el símbolo está
declarado.
Lavando
E njuagando
S ecan do
H
A brir puerta
E s perar
Cerrar puerta
Figura 25. Indicador de memora. El statechart recuerda lo último que estaba haciendo al abrir la puerta
También es posible memorizar el último subestado activo, independientemente de su nivel de profundidad.
H*
Esto se indica mediante el símbolo
. Los niveles de memoria intermedios son obtenidos poniendo un
H
en cada nivel jerárquico. En el siguiente ejemplo, el estado A memoriza el último subestado
símbolo
activo, independientemente del anidamiento de los subestados:
A
B
C
C1
C2
H*
Figura 26. Propagación del marcador de historia hacia los estados internos
Ingeniería de Software I
Pág. 12
Máquinas de estados y Statecharts
12. Transiciones temporizadas
Por definición, las demoras son actividades que duran un cierto tiempo. Una demora está, entonces,
naturalmente relacionada con un estado más que con una transición y se representa usando una actividad de
demora. La actividad de demora se interrumpe cuando el evento esperado ocurre. De hecho, este evento
dispara una transición la cual produce que el estado que contiene la actividad de demora sea abandonado. El
siguiente ejemplo ilustra una secuencia de demora de un cajero automático. Cuando el buzón que acepta los
depósitos se abre, el sistema le avisa al usuario que tiene tres minutos para realizar su depósito. Si el
depósito se realiza dentro de los tres minutos, la actividad de demora es interrumpida disparando la
transición hacia el estado B. En cambio, si el depósito no es realizado dentro del tiempo dado, la transición
automática hacia el estado de cancelación es disparada al final de la actividad de demora. En ambos casos,
el buzón se cierra por la acción de salida del estado de demora.
A
/ A b ri r b uzó n
E spe ra r po r e l d e pó si to
e n try: M o strar m e n sa j e
d o : Esp erar 3 m i nu to s
e x i t: C e rrar el b u z ó n
Ca nce l a r tra nsa cci ó n
S e re a l i zó e l de p ósi to
B
Figura 27. Finalización de un estado por una demora
Las temporizaciones pueden ser representadas usando una notación más compacta, la cual está atada
directamente a la transición que se dispara luego de la demora. El evento disparador tiene el nombre
genérico after y su parámetro especifica la duración de la temporización:
after(duración_demora)
El ejemplo anterior podría reescribirse con esta notación de la siguiente forma:
A
/ A b ri r b u zó n
E sp erar p or e l de p ósi to
afte r( 3 m i n u to s )
Ca nce l a r tra nsa cci ó n
en try: M o strar m e n sa j e
exi t: Ce rra r el b uzó n
S e rea l i zó e l de p ósi to
B
Figura 28. Disparo de un evento por una demora
Ingeniería de Software I
Pág. 13
Máquinas de estados y Statecharts
13. Introducción al Metamodelo
Una máquina de estados representa el comportamiento resultante de las operaciones ejecutadas luego de una
secuencia de cambios de estado. Una máquina de estados puede ser mostrada de acuerdo al punto de vista
del estado (mediante diagramas de statecharts) o de la acción (mediante diagramas de actividad). Una
máquina de estado especifica el comportamiento de una colaboración.
M áqui na de estado s
1
1
2ULJHQ
*
1..*
E s tado Vé rt ic e
Trans ic ión
1..*
P s eudo-estado
: {inicial, final, his toria}
*
*
'HVWLQR
*
*
E s tado
0..1
Figura 29. Metamodelo
1..2
Tipos de Evento
La ejecución de una instancia de una máquina de estados no puede ser interrumpida. En cualquier momento,
una máquina de estados debe reaccionar a un evento particular que la mueve de un estado estable a otro
estado estable. La ejecución de una máquina de estado comienza con el pseudo-estado inicial y continúa,
evento por evento, hasta que un pseudo-estado final no anidado es alcanzado.
Los eventos disparan transiciones. El disparo de una transición lleva a la máquina de estados del estado
origen al estado destino.
UML define tres tipos diferentes de eventos:
•
Eventos de Señal, causados por una señal
•
Eventos de Llamada, causados por una operación
•
Eventos de Tiempo, causados por la expiración de la demora de un timer
Ingeniería de Software I
Pág. 14
Máquinas de estados y Statecharts
El siguiente diagrama representa transiciones, sus acciones, y los diferentes eventos que las disparan:
+ E fec to
Trans ic ión
A c c ión
1
0..1
1
+ D is paro
0..1
E vento
E ventoS eñal
*
0..1
S eñal
E ventoLlam ada
E vent oTiempo
*
0..1
*
0..1
O perac ión
E x pres ión
Figura 30. Semántica y descomposición de eventos según el metamodelo
Para mas información acerca del metamodelo de todas las técnicas ver el UML
Ingeniería de Software I
Pág. 15
Máquinas de estados y Statecharts
Preguntas frecuentes
¿Qué representa un estado de un statechart?
Representa una imagen instantánea del sistema
En UML, un estado es la imagen instantánea de la combinación de los valores contenidos en los
atributos del objeto y la presencia o ausencia de relaciones entre dicho objeto y otros objetos.
¿Qué diferencias hay entre una statechart y una máquina de estados finitos?
Un statechart es una máquina de estados finitos (o finite state machine – FSM) jerárquica que soporta
los conceptos de ortogonalidad, agregación y generalización.
Generalización: un estado puede ser descompuesto en diferentes subestados disjuntos, donde los
subestados heredan las características de su superestado, en particular, transiciones externas.
Agregación: es la composición de un estado por medio de varios estados independientes.
Mi sistema no es un sistema reactivo, ¿debo usar igual statecharts?
Para sistemas transformacionales (aquéllos cuyo comportamiento consiste básicamente en transformar y
manipular datos), lo que hay que expresar es la transformación o función que se le aplican a los datos, lo
cual puede reflejarse con una relación entre la entrada y la salida. Igualmente, puede ser interesante el
modelar ciertas partes del sistema con statecharts como ser el comportamiento de la interfaz del usuario
o la forma de encadenar las operaciones sobre los datos.
¿Qué puedo tomar como eventos del sistema?
Los eventos pueden ser cambios de estados en alguno de los componentes del sistema o eventos
generados por entidades que interactúan con el sistema. Dentro del evento no debería considerarse
condiciones sobre otros elementos del sistema pues puede no hacer visibles estados posibles del sistema,
dejando la especificación muy ambigua. Además esto atenta contra la agregación y ortogonalidad de los
statecharts.
Supongamos por ejemplo, una máquina expendedora de boletos con los siguientes eventos: ‘Se inserta
moneda de 1 peso y el chofer presionó botón de boleto de 65 centavos’ y ‘Se inserta moneda de 1 peso y
el chofer presionó botón de boleto de 70 centavos’. ¿Puede pasar que el chofer presione el botón de
boleto de 65 centavos pero no se inserte ninguna moneda? Si pasa, ¿qué hay que hacer? Estas
‘ambigüedades’ se podrían salvar más fácilmente tomando los eventos ‘Se inserta moneda de 1 peso’,
‘Chofer presiona botón de boleto de 65 centavos’ y ‘Chofer presiona botón de boleto de 70 centavos’.
¿Todo objeto tiene que tener asociado un statechart?
Los objetos que no presentan un pronunciado comportamiento reactivo pueden ser considerados como si
siempre estuvieran en el mismo estado. En este caso, sus clases no poseen un statechart.
¿Es obligatorio que un statechart tenga un estado inicial?
Dado que un statechart es determinístico, no debe haber espacio para ninguna ambigüedad. Esto
significa, en particular, que siempre es necesario describir el estado inicial del sistema, el cual es único.
Dado que los statecharts pueden tener varios niveles jerárquicos (ver generalización), cada nivel
jerárquico debe tener un y sólo un estado inicial.
¿Una transición debe unir siempre diferentes estados?
No. Una transición puede reentrar al estado de donde sale.
Ingeniería de Software I
Pág. 16
Máquinas de estados y Statecharts
¿Qué diferencias hay entre un evento externo y uno interno?
La diferencia es que un evento interno no dispara la ejecución de las acciones de entrada y de salida, a
diferencia de una transición externa. Ahora, una transición externa puede reentrar al mismo estado de
donde sale, en cuyo caso sí se disparan las acciones de salida y de entrada.
¿En qué lugares se pueden especificar las operaciones que deben ser ejecutadas?
En total hay seis. En orden de ejecución son:
• Acción asociada a la transición de entrada al estado
• Acción de entrada al estado
• Actividad dentro del estado
• Acción asociada a eventos internos
• Acción de salida del estado
• Acción asociada a la transición de salida del estado
Referencias
•
David Harel. Statecharts: A Visual Formalism for complex systems. Science of Computer
Programming. Volumen 8, Nro. 3, Junio de 1987. Páginas 231 a la 274.
•
UML - Unified Modeling Language
•
Carlo Ghezzi, Mehdi Jazayeri y Dino Mandrioli. Fundamentals of Software Engineering. Prentice Hall.
1992. Páginas 167 a 188.
•
http://cui.unige.ch/Visual/statecharts.html Punteros a varias páginas de interés
Ingeniería de Software I
Pág. 17
Descargar