Вы находитесь на странице: 1из 40

Tema 6.

Diagramas de Estados

Ingeniera del Software II 3 I.T.I.Gestin


Miguel A. Laguna

Contenidos

6.1. 6.2. 6.3. 6.4. 6.5. 6.6.

Diagramas de estados Estados y subestados Eventos y transiciones. Acciones Diagramas de actividades Aplicaciones de los diagramas

Objetivos del tema

Aprender la notacin UML para representar estados y transiciones Aprender a construir diagramas de estados y diagramas de actividades Aplicar estas tcnicas al diseo de clases y a la descripcin detallada de los casos de uso

6.1. Diagramas de estados

Diagramas de Estados
Son tiles slo para los objetos con un comportamiento significativo
El resto de objetos se puede considerar que tienen un nico estado

Completan la definicin de los casos de uso y sirven de base para el diseo (tcnico) de la interfaz de usuario Los diagramas de Estados y los diagramas de interaccin son complementarios El formalismo utilizado proviene de los Statecharts (Harel)

... 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, y junto con las correspondientes respuestas y acciones.

Define un autmata de estados finitos


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:
c ontratar en el paro perder em pleo jubilars e jubil ars e en ac tivo

jub ilado

Diagramas de Estados
Cada objeto est en un estado en cierto instante El estado est caracterizado por los valores de los atributos y los enlaces del objeto El estado en el que se encuentra un objeto determina su comportamiento

Caracterizacin del estado


activo en paro

jubilado

Luis : Empleado edad=44

Fasa : Empresa

Juan : Empleado edad=72

atributos (edad) y enlaces

Caractersticas
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

Diagramas de Estados y diagramas de interaccin


La comunicacin asncrona/sncrona puede representarse en un Diagrama de Colaboracin:
1: pregunta objeto1 2: respuesta objeto2

1: pregunta objeto1 objeto2

Diagramas de Estados y diagramas de interaccin


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

pregunta Esperando Respuesta Estado B retorno

Estado C

Estados de objeto1

Elementos de un diagrama de Estados


Estados Subestados Eventos Transiciones Acciones

6.2. Estados y subestados

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 Cuando se crea un objeto, este se encuentra en el estado inicial.

Esperando el password
entry / desactivar el eco exit / activar el eco do / mostrar caracteres help / mostrar ayuda

Un objeto que llega a su estado final desaparece.

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 idntico designan el mismo estado

se pueden utilizar para evitar sobrecargar el diagrama

Comp. de transiciones internas

Contiene una lista de acciones internas realizadas mientras los objetos estn en un estado. 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

Transiciones internas predefinidas

Las siguientes acciones utilizan palabras reservadas: 'entry/' expresin de accin

a la entrada de un estado. a la salida de un estado. mientras est en el estado, es especial

'exit/' expresin de accin

'do/' expresin de accin

Transiciones internas: do

Mientras el objeto permanece en un determinado estado puede ejecutarse una accin interna, representada por do La accin do se inicia cuando se entra en el estado y termina:

por si misma o externamente por la llegada de un evento

Las acciones do podran ser a su vez nuevas mquinas de estados anidadas.

Estados compuestos y Subestados

Adems de los compartimentos de nombre y transiciones internas, cada estado puede tener un compartimiento con un diagrama anidado. Un estado se puede refinar:

en subestados concurrentes, a travs de relaciones and. en subestados mutuamente excluyentes, utilizando la relacin or.

Un estado dado as como recursivamente sus subestados, slo puede ser refinado de una de manera

Estados compuestos y Subestados Marcado


Comienzo
do/esperarTono dgito(n)

Marcado parcial

[nmero.es_correcto() ]

entry/nmero.aadir(n) /marcar_nmero(nmero)

dgito(n)

Estados compuestos y Subestados

Una expansin de un estado nos muestra su estructura en detalle. Los estados iniciales y finales se consideran pseudoestados,

son un artificio notacional, no un elemento significativo

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

Estados compuestos y Subestados

La expansin en subestados concurrentes se indica con:

subregiones horizontales con lneas discontinuas.

Cada una de estas subregiones puede tener un nombre opcional y debe contener un diagrama de estados anidado, con estados disjuntos

Estados compuestos y Subestados

Asignatura en curso Incompleta labo1


proyecto Examen Final
labo hecho labo hecho

labo2

proyecto hecho

superada

superado

suspensa

suspensa

Ejemplo de subestados concurrentes

6.3. Eventos y transiciones

Diagramas de estados: Eventos

Un evento es un suceso notable: un suceso que puede disparar una transicin Los eventos pueden ser de distintos tipos, no necesariamente excluyentes:

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

Seales y llamadas

Seal recibida de forma explcita desde otro objeto

Recepcin de una seal explcita de otro objeto

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.

Seales y llamadas

La declaracin de eventos tiene el alcance del paquete en el que aparece (puede ser utilizada por clases que tienen visibilidad) 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:


nombre de parmetro ':' expresin de tipo

Jerarqua de seales

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

Eventos de condicin y temporales


Condicin que se verifica
Una condicin dada que se ha verificado, (normalmente descrita a travs de 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 transicin.

Eventos de condicin y temporales

Un evento por verificacin de una condicin se representa a travs de una condicin sin evento, utilizando:

when(pH>7.0)

Un evento por transcurso de tiempo es una expresin que evala dicho intervalo Por defecto indica el tiempo transcurrido en el estado en curso.

after(5 segundos)

Otros eventos temporales podran ser especificados como condiciones, como por ejemplo

when(fecha=1/01/2000)

Transiciones simples

Definicin:

Una transicin simple es una relacin entre dos estados, indicando que un objeto del primer estado entrar en el segundo estado y realizar ciertas operaciones cuando ocurra un evento dado si determinadas condiciones se cumplen

Transiciones simples

El disparador de la transicin es la ocurrencia del evento que est etiquetando la transicin. El evento podra tener parmetros, que se utilizarn en:

las acciones especificadas en la transicin 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.

Transiciones simples

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 guarda] / expresin de accin

La signatura describe el evento y sus argumentos:

nombre del evento ( parmetro , ... )

Transicin: Condicin de guarda

La condicin es una expresin lgica en trminos de los parmetros del evento disparado, atributos y enlaces del objeto al que pertenece la mquina de estados.

Eve nto[ condicin ]

Transicin: expresin de accin

La expresin de accin es una expresin que se ejecuta cuando la transicin se dispara La clusula de accin es un operador atmico pero una transicin puede contener varias clusulas de accin

right-mouse-down(location) [location in window] / object:=pick-object(location) ; object.highlight()

Transiciones complejas

Una transicin puede tener mltiples estados fuente y mltiples estados destino. Representa una sincronizacin de hilos concurrentes a travs de ramas and/or.

Transiciones complejas

A1 Instalar B1

A2 Limpiar B2

Barras de sincronizacin

6.4. Acciones

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

Evento[ condicin ] / accin

Dicha accin tambin se considera instantnea

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

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

...Acciones

Se escribe en trminos de operaciones, atributos, y enlaces del objeto al que pertenecen, y parmetros del evento disparado Puede tener como receptor el mismo u otro objeto: [destino.]evento_destino(argumento...)

right-mouse-down(location) [location in window] / object:=pick-object(location) ; object.highlight()

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

estado A entry/ accin al entrar do/ accin mientras est en el estado exit/ accin al salir

... Acciones internas


Se puede especificar una accin cuando ocurre en dicho estado un evento que no obliga a salir del estado:

estado A
on evento_activador( arg1 )[ condicin ]/ accin

6.5. Diagramas de actividades

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 [ condicin ] [ not condicin ] b

condicin

a do: actividad c

alternativa

Diagrama de Actividades
Es una variante de los Diagramas de Estados, organizado respecto de las acciones Representa el comportamiento interno de:
un mtodo (la realizacin de una operacin), un caso de uso 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 externos

Ejemplos
Buscar Bebida [no hay caf] [no zumo] [hay zumo] [hay caf Poner caf en filtro Aadir agua al depsito Coger taza Coger zumo

Poner filtro en mquina

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

...Ejemplos (con calles)


Pasajero Vendedor Airline
Solicitar pasaje Verificar existencia vuelo Dar detalles vuelo Informar alternativas y precios Seleccionar vuelo

Solicitar pago Reservar plazas Pagar pasaje Emitir billete Confirmar plaza reservada

6.6. Aplicaciones de los diagramas de estados

Aplicaciones

Sirve para describir la secuencia o secuencias legales de eventos y transiciones Si es un objeto, el orden en que se producen y los cambios de estado. Ej, una instancia de Venta:

create(), crearLineaVenta(), completada( )

Si es un caso de uso, se pueden reprentar todas las combinaciones legales (todos los escenarios) en un mismo diagrama

Generalizacin de Estados

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

Generalizacin de Estados
Ejemplo:
Pantalla inicial ayuda ayuda Pantalla de ayuda ok

Detalle pedido

Generalizacin de Estados
Quedara como:
ok

ayuda

Pantalla de ayuda

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

pero...

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 e2 e0 b c

Generalizacin de Estados
Es posible ocultar los detalles de los sub-estados:

c e0

Generalizacin de Estados
La agregacin de estados es la composicin de un estado a partir de varios estados independientes La composicin es concurrente
el objeto estar en alguno de los estados de cada uno de los subestados concurrentes

Generalizacin de Estados
Ejemplo:

e1 e1

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

Historial
Ejemplo:
a

d2 cancel ayuda F1 d1 x y

Historial
Tambin es posible la memorizacin para cualquiera de los subestados anidados (aparece un * junto a la H)
a d2 in h out d1
H*

Historial
Ejemplo:
Enjuague Lavado Secado

Cerrar Puerta

Abrir Puerta Espera

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

Transiciones temporizadas
Ejemplo:
a

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.

/ Abrir ranura esperar dinero entry: Mostrar mensaje do: Esperar 30 segundos exit: cerrar ranura anular transaccin

Depsito efectuado

Transiciones temporizadas
a

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

Depsito efectuado

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

Destruccin de Objeto
Ejemplo:
c ras h

E n vuelo

des pegar Crear(m atric ula)

aterriz ar

E n t ierra

Ejemplo de Larman: proceso de venta

Disponible

creaNuevaVenta

IntrodArtculos introducirArticulo

finVenta autorizado pagoMetlico

EsperandoPago

pagoTarjeta EspAutorizacin pagoCheque

Ejemplo de cajero automtico 1

sacar dinero

Usuario

transferir

Sis Banco

pedir saldo

Ejemplo de cajero automtico 2

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 solicita cantidad. 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.

Ejemplo de cajero automtico 3


: Usuario insertar : Sistema : Sis Banco

introducir contrasea seleccionar tipo op

introducir cantidad comprobar suficiente saldo retirar tarjeta

Ejemplo de cajero automtico 4


bienvenida
entry/ ^display.mostrar_bienvenida

tarjeta retirada

insertada( numero ) esperando PIN


entry/ ^display.pedirPIN

entrega dinero
entry/ entregardinero entry/ ^lector.expulsar_tarjeta

PINtecleado( PIN )[ error ] PINtecleado( PIN )[ ok ] Opciones


entry/ ^display.mostrar_opciones

transaccion[ ok ]

seleccionar "sacar"

when( 30 seg ) ^display.mensaje(mximo) conexion banco


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

Importe
entry/ ^display.pedir_cantidad

importe introducido

bienvenida insertada( numero ) esperando PIN

tarjeta retirada

entrega dinero

PINtecleado( PIN )[ error ] PINtecleado( PIN )[ ok ] Opciones seleccionar "sacar" when( 30 seg ) ^display.mensaje(mximo) Importe conexion banco transaccion[ ok ]

importe introducido

Bibliografa Recomendada

Booch, G., Jacobson, I., Rumbaugh, J. El Lenguaje Unificado de Modelado. Gua del usuario. Addison-Wesley/Diaz de Santos,1999. Larman, C. UML y Patrones. Introduccin al Anlisis y Diseo Orientado a Objetos y al Proceso Unificado . Prentice Hall, 2002. Cap. 29

Lecturas complementarias

Rumbaugh, J., Jacobson, I., Booch, G. El Lenguaje Unificado de Modelado. Manual de referencia. AddisonWesley,2000. OMG, OMG Unified Modeling Language Specification. Version 1.4. Object Management Group Inc., 2001.

Вам также может понравиться