Anda di halaman 1dari 16

Diagramas de Estados Diagramas de Estados

6.1. 6.2. 6.3. 6.4. 6.5. 6.6. Diagramas de estados Estados y subestados Eventos y transiciones. Acciones Diagramas de actividad Aplicaciones de los diagramas de estados

Los Diagramas de Estados representan autmatas de estados finitos. Son tiles slo para los objetos con un comportamiento significativo El resto de objetos se puede considerar que tienen un nico estado El formalismo utilizado proviene de los Statecharts (Harel)

Ingeniera del Software II 3 Gestin

... Diagramas de Estados


Un diagrama de estado muestra la secuencia de estados que un objeto o una interaccin pueden atravesar durante su existencia en respuesta a los estmulos que vayan recibiendo, junto con las correspondientes respuestas y acciones. La idea bsica es definir una mquina que tiene un nmero determinado de estados La mquina recibe eventos del mundo exterior, y cada evento provoca que la mquina cambie de un estado a otro.

Diagramas de Estados
Ejemplo de un Diagrama de Estados para la clase Empleado:
contratar en el paro perder empleo jubilarse jubilarse
e n a c t i v o

jubilado

Diagramas de estados: Estados

Diagramas de Estados
Cada objeto est en un estado en cierto instante El estado est caracterizado parcialmente por los valores de los atributos del objeto El estado en el que se encuentra un objeto determina su comportamiento Los diagramas de Estados y los escenarios son complementarios
Los estados estn relacionados con la situacin de los objetos, en concreto el valor de sus atributos y la presencia de enlaces con otros objetos:
activo en paro

jubilado

Luis : Empleado

Fasa : Empresa

Juan : Empleado

Caractersticas de los Diagramas de Estados


Son autmatas jerrquicos que permiten expresar concurrencia, sincronizacin y jerarquas de objetos Son grafos dirigidos Son deterministas Los estados inicial y final estn diferenciados del resto La transicin entre estados es instantnea y se debe a la ocurrencia de un evento

Elementos de un diagrama de Estados


Estados Subestados Eventos Transiciones Acciones

Diagramas de estados: Estados


Un estado se representa mediante de un rectngulo con las esquinas redondeadas, Puede tener de forma opcional uno o ms compartimientos. Nombre Transiciones internas Introduciendo el password
entry / desactivar el eco exit / activar el eco do / mostrar caracteres help / mostrar ayuda

Diagramas de estados: Estados

Compartimiento de Nombre: Se coloca el nombre del estado, que ser un String. Los estado sin nombre son annimos, y son distintos entre s. Varios smbolos de estado con nombre no vaco idntico designan el mismo estado, y se pueden utilizar para evitar sobrecargar de lneas el grafo.

Cuando se crea un objeto, este se encuentra en el estado inicial.

Un objeto que llega a su estado final desaparece.

Diagramas de estados: Estados


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 formato: nombre-evento lista-argumentos '/' exp-accin Cada nombre de evento puede aparecer ms de una vez en un nico estado. Las expresiones de accin pueden utilizar atributos y enlaces del objeto al que pertenecen parmetros de transiciones de entrada

Diagramas de estados: Estados

Compartimiento de transiciones internas: Las siguientes acciones especiales tienen el mismo formato pero utilizan palabras reservadas: 'entry' '/' expresin de accin 'exit' '/' expresin de accin 'do' '/' expresin de accin a la entrada de un estado. a la salida de un estado. mientras est en el estado

Diagramas de estados: Estados

Diagramas de estados: Estados compuestos y Subestados


En adicin a los compartimentos de nombre y transiciones internas; cada estado puede tener un compartimiento que contenga un diagrama anidado.

Mientras el objeto permanece en un determinado estado se est ejecutando una accin interna, la cual se puede interrumpir a causa de eventos externos. La accin do se inicia cuando se entra en el estado y puede que termine por si misma o externamente por la salida hacia otro estado. Las acciones do podran ser a su vez nuevas mquinas de estados anidadas.

Un estado se puede refinar: a travs de relaciones and en subestados concurrentes, utilizando la relacin or en subestados mutuamente excluyentes. Un estado dado slo puede ser refinado de estas dos maneras, as como recursivamente sus subestados.

Diagramas de estados: Estados compuestos y Subestados

Diagramas de estados: Estados compuestos y Subestados


Una expansin de un estado nos muestra su estructura en detalle.

Marcado
Comienzo
do/ esperar tono
dgito(n) Marcado parcial [nmero.es_correcto() ] ^marcar_nmero(nmero)

entry / nmero.aadir(n)

Los estados iniciales y finales se consideran pseudoestados, pues son ms un artificio notacional que un elemento plenamente significativo.

dgito(n)

Diagramas de estados: Estados compuestos y Subestados


La expansin de un estado en subestados concurrentes se indica a travs de un grfico dividido en subregiones horizontales con lneas discontinuas. Cada una de estas subregiones puede tener un nombre opcional y debe de contener un diagrama de estados anidado, con estados disjuntos

Diagramas de estados: Estados compuestos y Subestados

Asignatura en curso Incompleta labo1


proyecto Examen Final
labo hecho

labo2

labo hecho

proyecto hecho

superada

superado

suspensa

suspensa

Ejemplo de subestados concurrentes

Diagramas de estados: Eventos


Un evento es un suceso notable. En el mbito de los diagramas de estado, es un suceso que puede disparar una transicin.
Los eventos pueden ser de distintos tipos, no necesariamente excluyentes:

Diagramas de estados: Eventos


Seal recibida de forma explcita desde otro objeto.
El recibimiento de una seal explcita de un objeto a otro Llevan el nombre de los disparadores de transiciones.

Llamada de operacin desde otro objeto.


Recepcin de una llamada de operacin por parte de otro objeto. Se denotan por el nombre del disparador de la transicin.

Condicin que se verifica. Seal recibida de forma explcita desde otro objeto. Llamada de operacin desde otro objeto. Transcurso de un perodo de tiempo

Condicin que se verifica.


Una condicin dada que se ha verificado, (normalmente descrita a una expresin lgica). Estos eventos se denotan como condiciones de guarda en las transiciones, y no se les da nombre.

Transcurso de un perodo de tiempo


Transcurso de un periodo de tiempo despus de un evento dado, (usualmente por la entrada a el estado en curso), o por la ocurrencia de una determinada fecha u hora. Estas expresiones se denotan tambin por el disparador de la tra

Diagramas de estados: Eventos

Diagramas de estados: Eventos


La declaracin de eventos tiene el alcance del paquete en el que aparece, y puede ser utilizada por clases que tienen visibilidad dentro del paquete. Las seales y las llamadas se definen a travs del siguiente formato: nombre de evento '(' lista de parmetros) Donde el formato de los parmetros es:

Seales como clasificadores: Los parmetros se indican como atributos de la seal Se pueden organizar en jerarquas de seales Son asncronas

nombre de parmetro ':' expresin de tipo

Diagramas de estados: Eventos

Diagramas de estados: Transicin simple


Una transicin simple es una relacin entre dos estados, indicando que un objeto del primer estado entrar en el segundo estado y reali ciertas operaciones cuando ocurra un evento dado si determinadas condiciones se cumplen. El disparador de la transicin es la ocurrencia del evento que etiquetando la transicin. El evento podra tener parmetros, que se utilizarn en las acciones especificadas en la transicin o en las acciones iniciadas en el siguiente estado. Los eventos se procesan de forma exclusiva en cada momento, (nunca concurrentemente). Si un evento no disparara ninguna transicin, simplemente se ignora.

Un evento por transcurso de un intervalo de tiempo, puede ser expresado como una expresin que evala en tiempo de modelado dicho intervalo, como por ejemplo after(5 segundos). Por defecto indica el tiempo transcurrido en el estado en curso. Otros eventos temporales podran ser especificados como condiciones, como por ejemplo when(date=Jan. 1, 2000). Un evento por verificacin de una condicin se representa a trav condicin sin evento y utilizando when().

Diagramas de estados: Transicin simple

Diagramas de Estados
Las guardas permiten condicionar la transicin:
a Evento[ condicin ] b

Las transiciones se representan por una flecha slida que va de un estado a otro, etiquetada por un string de transicin con el siguiente formato: signatura del evento [ condicin guardin ] / expresin de accin La signatura del evento describe el evento y sus argumentos: nombre del evento ( parmetro , ... ) La condicin guardin es una expresin lgica escrita en trminos de los parmetros del evento disparado, y de los atributos y enlaces del objeto al que pertenece la mquina de estados.

Diagramas de estados: Transicin simple


La expresin de accin es una expresinprocedural que se ejecuta cuando la transicin se dispara; esta expresin se escribe en trminos de operaciones, atributos, y enlaces del objeto al que pertenecen, y de parmetros del evento disparado. La clusula de accin debe considerarse como un operador atmico en el sentido de que no puede interrumpirse, y ha de ejecutarse enteramente an tes de que otras acciones sean consideradas. A travs de delimitadores, una transicin podra contener varias accin. [La clusula de envo es un caso particular de clusula de accin con el formato: expresin destino . nombre de evento destino ( argumento . ] right-mouse- down(location) [location in window] / object:=pick-object(location) ;object.highlight()

Diagramas de estados: Transiciones complejas


Una transicin general puede tener mltiples estados fuente y mltiples estados destino. Representa una sincronizacin de threads concurrentes a travs de ramas and/or. Cada uno de los threads no tendran a su vez subestados concurrentes.

Diagramas de estados: Transiciones complejas

Acciones
Podemos especificar la ejecucin de una accin como consecuencia de la transicin:

A1 Instalar B1

A2 Limpiar B2

Evento[ condicin ] / accin

Barras de sincronizacin

Dicha accin tambin se considera instantnea

Acciones
Podemos especificar el envo de un evento a otro objeto como consecuencia de la transicin: a

Acciones
Se puede especificar el hacer una accin como consecuencia de entrar, salir o estar en un estado:
estado A entry: accin por entrar

Evento( arg1, arg2 )[ condicin ] / otro_objeto.evento(arg2)

exit: accin por salir do: accin mientras en estado

.. Acciones
Se puede especificar el hacer una accin cuando ocurre en dicho estado un evento que no conlleva salir del estado:
estado A on evento_activador( arg1 )[ condicin ]: accin por evento

Actividades
Las actividades son similares a las acciones pero tienen duracin y se ejecutan dentro de un estado del objeto Las actividades pueden interrumpirse en todo momento, cuando se desencadena la operacin de salida del estado

Actividades
Cuando una actividad finaliza se produce una transicin automtica de salida del estado
a do: actividad [ not condicin ] b

Diagramas de Estados y de interaccin


La comunicacin bidireccional puede representarse en un Diagrama de Colaboracin:

1: una pregunta

[ condicin ]

un objeto 2: la respuesta

otro objeto

Diagramas de Estados y de interaccin


Si la comunicacin es sncrona el cliente debe esperar la respuesta. Con lo cual en el cliente tendramos:
a

Generalizacin de Estados
Podemos reducir la complejidad de estos diagramas usando la generalizacin de estados Distinguimos as entre superestado y subestados Un estado puede contener varios subestados disjuntos Los subestados heredan las variables de estado y las transiciones externas

plantear pregunta

espera respuesta

recibir respuesta

Generalizacin de Estados
Ejemplo:
a e1 b

Generalizacin de Estados
Quedara como:
a

e1

e2 e2 c
e2

10

Generalizacin de Estados
Las transiciones de entrada pueden ir a subestados especficos:
e1 a e2 b

Generalizacin de Estados
Es preferible tener estados iniciales de entrada a un nivel de manera que desde los niveles superiores no se sepa a qu subestado se entra:
e1 a b c e2 e0

e0

pero...

Generalizacin de Estados
Es posible ocultar los detalles de los subestados:
c e0

Generalizacin de Estados
de un estado a partir de varios estados independientes objeto estar en alguno de los estados de cada uno de los subestados concurrentes

11

Generalizacin de Estados
Ejemplo:

Historial
Por defecto, los autmatas no tienen memoria Es posible memorizar el ltimo subestado visitado para recuperarlo en una transicin entrante en el superestado que lo engloba

e1 e1

Historial
Ejemplo:

Historial
cualquiera de los subestados anidados (aparece un * junto a la H) a
d2 in

d2 cancel ayuda F1 d1 x y
h out d1
H*

12

Historial
Ejemplo:
Enjuague Lavado Secado

Destruccin del Objeto


La destruccin de un objeto es efectiva cuando el flujo de control del autmata alcanza un estado final no anidado La llegada a un estado final anidado implica la subida al superestado asociado, no el fin del objeto

Cerrar Puerta Abrir

CAbrirr P u e r t a erra

Espera

Destruccin de Objeto
Ejemplo:
En vuelo crash

Transiciones temporizadas
Las esperas son actividades que tienen asociada cierta duracin La actividad de espera se interrumpe cuando el evento esperado tiene lugar Este evento desencadena una transicin que permite salir del estado que alberga la actividad de espera. El flujo de control se transmite entonces a otro estado

despegar Crear(matricula)

aterrizar

En tierra

13

Transiciones temporizadas
Ejemplo:
Si en 30 segundos no se introduce el dinero se termina la actividad pasando a anular la transaccin. En cualquier caso se cierra la ranura.
a

Transiciones temporizadas
a

/ Abrir ranura esperar dinero entry: Mostrar mensaje do: Esperar 30 segundos exit: cerrar ranura Depsito efectuado b

/ Abrir ranura when esperar dinero (30 segundos) entry: Mostrar mensaje anular transaccin exit: cerrar ranura

anular transaccin

Depsito efectuado b

Diagrama de Actividades
El Diagrama de Actividades es una variante de los Diagramas de Estados, organizado respecto de las acciones y principalmente destinado a representar el comportamiento interno de un mtodo (la realizacin de una operacin), de un caso de uso o de un proceso de negocio (Workflow) Una actividad puede considerarse un estereotipo de estado

...Diagrama de Actividades
Las actividades se enlazan por transiciones automticas Cuando una actividad termina se desencadena el paso a la siguiente actividad Las actividades no poseen transiciones internas ni transiciones desencadenadas por eventos

14

Ejemplos
Buscar Bebida [no hay caf] [no zumo] [hay zumo] [hay caf

...Ejemplos (con calles)


Pasajero Vendedor Airline
Solicitar pasaje Verificar existencia vuelo Dar detalles vuelo

Poner caf en filtro

Aadir agua al depsito

Coger taza Coger zumo


Seleccionar vuelo

Poner filtro en mquina

Informar alternativas y precios

Encender mquina ^cafetera.On Caf en preparacin indicador de fin Servir caf Beber
Pagar pasaje

Solicitar pago Reservar plazas Confirmar plaza reservada Emitir billete

Ejemplo de cajero automtico 1

Ejemplo de cajero automtico 2

Sacar dinero:
sacar dinero

1. El usuario inserta tarjeta y el sistema valida la tarjeta y pide la contrasea 2. El usuario teclea 4 dgitos de su c. y el sistema valida la c. y solicita tipo de operacin. 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 transaccin. El sistema imprime el recibo, dispensa el dinero y solicita del usuario que retire el recibo y el dinero 5. el usuario retira el dinero y el sistema lo detecta y expulsa la tarjeta.

pedir saldo

15

Ejemplo de cajero automtico 3


: Usuario insertar
: Sistema

Ejemplo de cajero automtico 4

: Sis Banco

bienvenida entry: ^display.mostrar_bienvenida insertada( numero )

tarjeta retirada

introducir contrasea

esperando PIN entry: ^display.pedirPIN

entrega dinero entry: entregardinero entry: ^lector.expulsar_tarjeta

seleccionar tipo op
PINtecleado( PIN )[ ok ]

PINtecleado( PIN )[ [error] ]

introducir cantidad

Opciones entry: ^display.mostrar_opciones

transaccion ok ] [

comprobar suficiente saldo


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

Importe entry: ^display.pedir_cantidad

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

importe introducido

Ejemplo de Larman: proceso de venta


bienvenida entry: ^display.mostrar_bienvenida insertada( numero ) tarjeta retirada

Process Sale
esperando PIN entry: ^display.pedirPIN entrega dinero entry: entregardinero entry: ^lector.expulsar_tarjeta

PINtecleado( PIN )[ ok ]

PINtecleado( PIN )[ [error] ]

WatingForSale
transaccion[ ok ]

makeNewSale

EnteringItems

enterItem endSale

Opciones entry: ^display.mostrar_opciones seleccionar "sacar" when[ 30 seg ] ^display.mensaje(mximo)

authorized

makeCashPayment

WaitingForPayment

Importe entry: ^display.pedir_cantidad

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

makeCreditPayment AuthorizingPayment makeCheckPayment

importe introducido

16