Está en la página 1de 16

Diagramas de Estados

§ Los Diagramas de Estados representan autómatas


Diagramas de Estados de estados finitos.
§ Son útiles sólo para los objetos con un
6.1. Diagramas de estados comportamiento significativo
6.2. Estados y subestados
6.3. Eventos y transiciones.
§ El resto de objetos se puede considerar que tienen
6.4. Acciones un único estado
6.5. Diagramas de actividad § El formalismo utilizado proviene de los
6.6. Aplicaciones de los diagramas de estados Statecharts (Harel)

Ingeniería del Software II 3º Gestión

... Diagramas de Estados … Diagramas de Estados


§ Un diagrama de estado muestra la secuencia de estados que § Ejemplo de un Diagrama de Estados para la clase
un objeto o una interacción pueden atravesar durante su Empleado:
existencia en respuesta a los estímulos que vayan
recibiendo, junto con las correspondientes respuestas y contratar
e n a c t i v o
en el paro
acciones.
perder empleo
§ La idea básica es definir una máquina que tiene un número jubilarse
determinado de estados jubilarse

§ La máquina recibe eventos del mundo exterior, y cada jubilado


evento provoca que la máquina cambie de un estado a otro.

1
Diagramas de estados: Estados
… Diagramas de Estados
•Los estados están relacionados con la situación de los
§ Cada objeto está en un estado en cierto instante objetos, en concreto el valor de sus atributos y la presencia de
§ El estado está caracterizado parcialmente por los enlaces con otros objetos:
valores de los atributos del objeto activo en paro

§ El estado en el que se encuentra un objeto


determina su comportamiento
§ Los diagramas de Estados y los escenarios son Luis : Empleado Fasa : Empresa
jubilado
complementarios
Juan : Empleado

Características de los Elementos de un


Diagramas de Estados diagrama de Estados
§ Son autómatas jerárquicos que permiten expresar
concurrencia, sincronización y jerarquías de • Estados
objetos • Subestados
§ Son grafos dirigidos
• Eventos
§ Son deterministas
§ Los estados inicial y final están diferenciados del • Transiciones
resto • Acciones
§ La transición entre estados es instantánea y se
debe a la ocurrencia de un evento

2
Diagramas de estados: Estados Diagramas de estados: Estados

•Un estado se representa mediante de un rectángulo con las


esquinas redondeadas,
Compartimiento de Nombre:
•Puede tener de forma opcional uno o más
compartimientos. • Se coloca el nombre del estado, que será un String.
• Nombre • Los estado sin nombre son anónimos, y son
•Transiciones internas distintos entre sí.
• Cuando se crea un objeto, este se
Introduciendo el encuentra en el estado inicial. •Varios símbolos de estado con nombre no vacío
password idéntico designan el mismo estado, y se pueden
utilizar para evitar sobrecargar de líneas el grafo.
entry / desactivar el eco •Un objeto que llega a su estado
exit / activar el eco final desaparece.
do / mostrar caracteres
help / mostrar ayuda

Diagramas de estados: Estados Diagramas de estados: Estados

Compartimiento de transiciones internas:


Compartimiento de transiciones internas:
•Contiene una lista de acciones internas o de actividades realizadas
mientras los objetos permanecen en un estado. Estas toman el siguiente •Las siguientes acciones especiales tienen el mismo formato
formato: pero utilizan palabras reservadas:
nombre-evento lista-argumentos '/' exp-acción
'entry' '/' expresión de acción a la entrada de un estado.
•Cada nombre de evento puede aparecer más de una vez en un único 'exit' '/' expresión de acción a la salida de un estado.
estado. 'do' '/' expresión de acción mientras está en el estado

•Las expresiones de acción pueden utilizar


•atributos y enlaces del objeto al que pertenecen
•parámetros de transiciones de entrada

3
Diagramas de estados:
Diagramas de estados: Estados
Estados compuestos y Subestados

• Mientras el objeto permanece en un determinado estado se • En adición a los compartimentos de nombre y transiciones internas;
está ejecutando una acción interna, la cual se puede cada estado puede tener un compartimiento que contenga un
interrumpir a causa de eventos externos. diagrama anidado.

•La acción do se inicia cuando se entra en el estado y puede Un estado se puede refinar:
que termine por si misma o externamente por la salida hacia • a través de relaciones and en subestados concurrentes,
otro estado.

• Las acciones do podrían ser a su vez nuevas máquinas de • utilizando la relación or en subestados mutuamente
estados anidadas. excluyentes.

Un estado dado sólo puede ser refinado de estas dos


maneras, así como recursivamente sus subestados.

Diagramas de estados: Diagramas de estados:


Estados compuestos y Subestados Estados compuestos y Subestados

•Una expansión de un estado nos muestra su estructura en


detalle.

Marcado
•Los estados iniciales y finales se consideran pseudoestados,
[número.es_correcto() ] pues son más un artificio notacional que un elemento
Comienzo dígito(n) Marcado parcial
plenamente significativo.
do/ esperar tono entry / número.añadir(n)
^marcar_número(número)

dígito(n)

4
Diagramas de estados:
Diagramas de estados:
Estados compuestos y Subestados
Estados compuestos y Subestados

•La expansión de un estado en subestados


Asignatura en curso
concurrentes se indica a través de un gráfico
dividido en subregiones horizontales con líneas Incompleta
labo hecho labo hecho
discontinuas. labo1 labo2

proyecto proyecto hecho superada


• Cada una de estas subregiones puede tener un Examen superado
nombre opcional y debe de contener un diagrama de Final

estados anidado, con estados disjuntos suspensa


suspensa

Ejemplo de subestados concurrentes

Diagramas de estados: Eventos Diagramas de estados: Eventos


•Señal recibida de forma explícita desde otro objeto.
Un evento es un suceso notable. •El recibimiento de una señal explícita de un objeto a otro
En el ámbito de los diagramas de estado, es un suceso que • Llevan el nombre de los disparadores de transiciones.
puede disparar una transición. •Llamada de operación desde otro objeto.
•Recepción de una llamada de operación por parte de otro objeto.
Los eventos pueden ser de distintos tipos, no necesariamente excluyentes: • Se denotan por el nombre del disparador de la transición.

•Condición que se verifica. •Condición que se verifica.


•Una condición dada que se ha verificado, (normalmente descrita a
una expresión lógica).
• Señal recibida de forma explícita desde otro objeto. •Estos eventos se denotan como condiciones de guarda en las transiciones, y
no se les da nombre.
•Llamada de operación desde otro objeto.
• Transcurso de un período de tiempo
•Transcurso de un periodo de tiempo después de un evento dado,
•Transcurso de un período de tiempo (usualmente por la entrada a el estado en curso), o por la ocurrencia de una
determinada fecha u hora.
•Estas expresiones se denotan también por el disparador de la tra

5
Diagramas de estados: Eventos Diagramas de estados: Eventos

•La declaración de eventos tiene el alcance del paquete en el que aparece, y


puede ser utilizada por clases que tienen visibilidad dentro del paquete.

•Las señales y las llamadas se definen a través del siguiente formato:

nombre de evento '(' lista de parámetros’)’

•Donde el formato de los parámetros es:

nombre de parámetro ':' expresión de tipo


Señales como clasificadores:
•Los parámetros se indican como atributos de la señal
•Se pueden organizar en jerarquías de señales
•Son asíncronas

Diagramas de estados: Eventos Diagramas de estados: Transición simple

Una transición simple es una relación entre dos estados, indicando que
•Un evento por transcurso de un intervalo de tiempo, puede ser expresado
un objeto del primer estado entrará en el segundo estado y reali
como una expresión que evalúa en tiempo de modelado dicho intervalo, como
ciertas operaciones cuando ocurra un evento dado si determinadas
por ejemplo after(5 segundos). Por defecto indica el tiempo transcurrido en
condiciones se cumplen.
el estado en curso.
• El disparador de la transición es la ocurrencia del evento que
•Otros eventos temporales podrían ser especificados como condiciones, como
etiquetando la transición.
por ejemplo when(date=Jan. 1, 2000).
•El evento podría tener parámetros, que se utilizarán en las acciones
•Un evento por verificación de una condición se representa a trav
especificadas en la transición o en las acciones iniciadas en el siguiente
condición sin evento y utilizando when().
estado.

•Los eventos se procesan de forma exclusiva en cada momento, (nunca


concurrentemente).

•Si un evento no disparara ninguna transición, simplemente se ignora.

6
Diagramas de estados: Transición simple
… Diagramas de Estados
Las transiciones se representan por una flecha sólida que va de un estado
a otro, etiquetada por un string de transición con el siguiente formato: § Las guardas permiten condicionar la
signatura del evento ‘[‘ condición guardián ] ‘/’
transición:
expresión de acción Evento[ condición ]
a b
•La signatura del evento describe el evento y sus argumentos:
nombre del evento ‘(‘ parámetro ‘,’ ... ‘)’

•La condición guardián es una expresión lógica escrita en términos de los


parámetros del evento disparado, y de los atributos y enlaces del objeto al
que pertenece la máquina de estados.

Diagramas de estados: Transición simple Diagramas de estados: Transiciones complejas


•La expresión de acción es una expresiónprocedural que se ejecuta cuando la
transición se dispara; esta expresión se escribe en términos de operaciones, •Una transición general puede tener múltiples estados fuente y múltiples
atributos, y enlaces del objeto al que pertenecen, y de parámetros del evento estados destino.
disparado.
•Representa una sincronización de threads concurrentes
•La cláusula de acción debe considerarse como un operador atómico en el sentido
de que no puede interrumpirse, y ha de ejecutarse enteramente an tes de que otras •a través de ramas and/or.
acciones sean consideradas.
•Cada uno de los threads no tendrían a su vez subestados concurrentes.
•A través de delimitadores, una transición podría contener varias
acción.

[La cláusula de envío es un caso particular de cláusula de acción con el formato:


expresión destino ‘.’ nombre de evento destino ‘(‘ argumento ‘.’ ]

right-mouse- down(location) [location in window] /


object:=pick-object(location) ;object.highlight()

7
Diagramas de estados: Transiciones complejas Acciones

§ Podemos especificar la ejecución de una


A1 A2
acción como consecuencia de la transición:
Instalar Limpiar
Evento[ condición ] / acción
a b
B1 B2

Dicha acción también se


Barras de considera instantánea
sincronización

… Acciones … Acciones

§ Podemos especificar el envío de un evento a § Se puede especificar el hacer una acción


otro objeto como consecuencia de la como consecuencia de entrar, salir o estar
transición: a
en un estado:
estado A

entry: acción por entrar


exit: acción por salir
Evento( arg1, arg2 )[ condición ] / otro_objeto.evento(arg2)
do: acción mientras en estado

8
.. Acciones Actividades

§ Se puede especificar el hacer una acción § Las actividades son similares a las acciones
cuando ocurre en dicho estado un evento pero tienen duración y se ejecutan dentro de
que no conlleva salir del estado: un estado del objeto
estado A
§ Las actividades pueden interrumpirse en
on evento_activador( arg1 )[ condición ]: acción por evento todo momento, cuando se desencadena la
operación de salida del estado

Diagramas de Estados y de
… Actividades interacción
§ Cuando una actividad finaliza se produce una
transición automática de salida del estado § La comunicación bidireccional puede
representarse en un Diagrama de Colaboración:
[ not condición ]
a b
do: actividad
1: una pregunta

[ condición ] un otro
objeto objeto

2: la respuesta
b

9
… Diagramas de Estados y de
interacción Generalización de Estados
§ Si la comunicación es síncrona el cliente debe
esperar la respuesta. Con lo cual en el cliente § Podemos reducir la complejidad de estos
tendríamos: diagramas usando la generalización de estados
§ Distinguimos así entre superestado y subestados
a
§ Un estado puede contener varios subestados
disjuntos
plantear pregunta § Los subestados heredan las variables de estado y
las transiciones externas
espera respuesta recibir respuesta c

Generalización de Estados Generalización de Estados

§ Ejemplo: § Quedaría como:


e1
a b a
e1
a b

e2

e2
e2
c

10
… Generalización de Estados … Generalización de Estados
§ Las transiciones de entrada pueden ir a § Es preferible tener estados iniciales de
subestados específicos: entrada a un nivel de manera que desde los
e1 niveles superiores no se sepa a qué
a b
subestado se entra:
e2
e1
a b
e0 c
e2
e0

pero...

… Generalización de Estados … Generalización de Estados

§ Es posible ocultar los detalles de los sub- §


estados: de un estado a partir de varios estados
independientes
c
§
e0
objeto estará en alguno de los estados de
cada uno de los subestados concurrentes

11
… Generalización de Estados Historial
§ Ejemplo:
§ Por defecto, los autómatas no tienen
memoria

§ Es posible memorizar el último subestado


visitado para recuperarlo en una transición
e1
e1 entrante en el superestado que lo engloba

… Historial … Historial
§
§ Ejemplo: a
cualquiera de los subestados anidados (aparece
un * junto a la H) a
d2
d2
cancel
ayuda in
x y h
x y
F1
out
d1 d1

H*

12
… Historial Destrucción del Objeto

§ Ejemplo: § La destrucción de un objeto es efectiva


Enjuague Lavado Secado
cuando el flujo de control del autómata
alcanza un estado final no anidado
H
§ La llegada a un estado final anidado implica
Cerrar
Abrir Puerta CAbrir
errar Puerta
la “subida” al superestado asociado, no el
fin del objeto
Espera

… Destrucción de Objeto Transiciones temporizadas

§ Ejemplo: § Las esperas son actividades que tienen asociada


cierta duración
crash
En vuelo
§ La actividad de espera se interrumpe cuando el
evento esperado tiene lugar
despegar aterrizar

Crear(matricula)
§ Este evento desencadena una transición que
En tierra
permite salir del estado que alberga la actividad de
espera. El flujo de control se transmite entonces a
otro estado

13
… Transiciones temporizadas … Transiciones temporizadas
a
§ Ejemplo: a

/ Abrir ranura
/ Abrir ranura
Si en 30 segundos no se
introduce el dinero se esperar dinero when
termina la actividad esperar dinero (30 segundos)
anular transacción entry: Mostrar mensaje anular transacción
pasando a anular la entry: Mostrar mensaje
exit: cerrar ranura
transacción. En cualquier do: Esperar 30 segundos
exit: cerrar ranura
caso se cierra la ranura.
Depósito efectuado
Depósito efectuado

b
b

Diagrama de Actividades ...Diagrama de Actividades

§ El Diagrama de Actividades es una variante de § Las actividades se enlazan por transiciones


los Diagramas de Estados, organizado respecto de automáticas
las acciones y principalmente destinado a
representar el comportamiento interno de un § Cuando una actividad termina se
método (la realización de una operación), de un desencadena el paso a la siguiente actividad
caso de uso o de un proceso de negocio
(Workflow) § Las actividades no poseen transiciones
§ Una actividad puede considerarse un estereotipo internas ni transiciones desencadenadas por
de estado eventos

14
Ejemplos ...Ejemplos (con calles)
[no hay café] [no zumo] Pasajero Vendedor Airline
Buscar Bebida
[hay café [hay zumo]
Solicitar pasaje
Verificar
existencia vuelo
Poner café en filtro Añadir agua al depósito Coger taza
Dar detalles vuelo

Poner filtro en máquina Coger zumo Informar alternativas


y precios
Seleccionar vuelo
Encender máquina
^cafetera.On
Café en preparación Solicitar pago Reservar plazas

indicador de fin Confirmar


Pagar pasaje plaza reservada
Servir café
Beber
Emitir billete

Ejemplo de cajero automático 1 Ejemplo de cajero automático 2

Sacar dinero:
sacar dinero
1. El usuario inserta tarjeta y el sistema valida la tarjeta y pide la contraseña

2. El usuario teclea 4 dígitos de su c. y el sistema valida la c. y solicita tipo de


operación.

3. El usuario solicita sacar dinero de su c.c. El sistema solici ta cantidad.


Usuario transferir
Sis Banco

4. El usuario pide x pts. y el sistema comunica con el banco emisor para comprobar los
fondos y anotar la transacción. El sistema imprime el recibo, dispensa el dinero y
solicita del usuario que retire el recibo y el dinero

pedir saldo
5. el usuario retira el dinero y el sistema lo detecta y expulsa la tarjeta.

15
Ejemplo de cajero automático 3 Ejemplo de cajero automático 4

: Sistema
: Usuario : Sis Banco

insertar
bienvenida
entry: ^display.mostrar_bienvenida tarjeta retirada

insertada( numero )

introducir contraseña esperando PIN


entry: ^display.pedirPIN entrega dinero
entry: entregardinero
entry: ^lector.expulsar_tarjeta
PINtecleado( PIN )[ [error] ]
seleccionar tipo op
PINtecleado( PIN )[ ok ]

introducir cantidad
Opciones
entry: ^display.mostrar_opciones transaccion[ ok ]

comprobar suficiente saldo


seleccionar "sacar"
retirar tarjeta when[ 30 seg ] ^ display.mensaje(máximo)

Importe conexion banco


entry: ^display.pedir_cantidad entry: conectar(banco)
entry: ^display.mostrar_mensaje("espere...conectando")

importe introducido

Ejemplo de Larman: proceso de venta


bienvenida
entry: ^display.mostrar_bienvenida tarjeta retirada

insertada( numero )
Process Sale
esperando PIN
entry: ^display.pedirPIN entrega dinero
entry: entregardinero
entry: ^lector.expulsar_tarjeta

PINtecleado( PIN )[ [error] ] makeNewSale


PINtecleado( PIN )[ ok ] WatingForSale EnteringItems

transaccion[ ok ] enterItem
endSale
Opciones
entry: ^display.mostrar_opciones

when[ 30 seg ] ^display.mensaje(máximo)


seleccionar "sacar" authorized makeCashPayment
WaitingForPayment

Importe conexion banco


entry: ^display.pedir_cantidad entry: conectar(banco) makeCreditPayment
entry: ^display.mostrar_mensaje("espere...conectando")

AuthorizingPayment makeCheckPayment
importe introducido

16

También podría gustarte