You are on page 1of 26

Clase 4: Modelado dinmico e interactivo

Modelado de Interacciones

Diagramas de interaccin: secuencia y colaboracin Diagramas de Estado Diagramas de Actividades El modelado dinmico en el proceso sw.

Interacciones Interaccin: un conjunto de comunicaciones entre instancias, incluyendo la forma en que las comunicaciones afectan a las instancias, ej. invocacin de operaciones, creacin y destruccin de instancias. Los objetos interactan para realizar colectivamente los servicios ofrecidos por las aplicaciones. Los diagramas de interaccin incluyen:
diagramas de instancias (incluyendo enlaces y mensajes). Instancias ya existentes. Creacin y destruccin de instancias.

Interacciones Tipos de diagramas de interaccin:


Diagramas de secuencia (centrado en orden temporal). Diagramas de comunicacin (colaboracin) (centrado en espacio). Diagramas de tiempo (centrado en la duracin temporal). Diagramas de visin general de interaccin.

Usos:
Para la documentacin de un caso de uso. Para la especificacin de una operacin. Para la documentacin de trazas de prueba.

Interacciones: Elementos

Interacciones: instancias Sintaxis



nombre

Descripcin

Instancia (objeto, instancia
componente, etc.)
Mensaje
Entidad con identidad nica a la que se pueden aplicar un conjunto de operaciones (mensajes), y que tiene un estado que determina los efectos de dichas operaciones
Comunicacin entre dos instancias.
Conexin entre instancias.

Nombre subrayado

tringulo : Polgono

Valores atr.



tringulo : Polgono

centro : Punto = (2,2) vrtices : Punto* = ((0,0), (4, 0), (2,4))
colorLnea : Color = negro
colorRelleno : Color = blanco

tringulo

Enlace

atributos

: Polgono

Diagramas de Interaccin

Diagrama de secuencia
x
a
b
y
z

Diagrama de colaboracin
1.1: a 1.2: c
x
y
1.1.1: b

Diagramas de secuencia

c
z

Hacen explcito el ordenamiento temporal.

Hacen explcito los enlaces entre objetos. (Diagrama de comunicacin 2.0)

Diagramas de Secuencia Un diagrama de secuencia muestra las interacciones entre objetos (mensajes) en un escenario concreto organizados en una secuencia temporal. Muy adecuado para la descripcin de escenarios en un caso de uso (cercano al usuario).

Diagrama de Secuencia

Smbolo de objeto Lnea de vida

objeto1 : Clase

objeto2

Estmulo, Mensaje
nombre ()

Activacin

new () : Clase

destruccin

tiempo

retorno

creacin

Diagrama de secuencia: tipos de mensajes Llamada o Sncrono (flujo anidado) Flujo asncrono

Diagrama de secuencia: tipos de mensajes


Flujo anidado
usuario
: Orden

Flujo asncrono
: Artculo apli
Manej. Err.

alarma

getValor precio

desconocido alarma

confirmar

Retorno (desbloquea un envo sncrono) o creacin de instancias

Diagrama de secuencia: tipos de mensajes Activacin (execution ocurrence):


Una operacin se encuentra en ejecucin cuando algn proceso est ejecutando su cdigo. Una operacin se encuentra suspendida cuando enva un mensaje sncrono y est esperando su retorno. Una operacin est activa mientras se encuentra en ejecucin o suspendida.

Diagrama de secuencia: tipos de mensajes

El perodo en el que un objeto est activo se muestra con un rectngulo sobre la lnea de vida.
Mensajes lost: modelan mensajes enviados que nunca llegan a su destino o cuyo destinatario no aparece en el diagrama. Mensajes found: modelan mensajes de un emisor desconocido o que no aparece en el diagrama.

Diagrama de secuencia: Id. lnea de vida


nombre [ selector ] : tipo nombrenombre o self (opcional). selectorexpresin de la seleccin de un individuo de entre una coleccin (opcional). TipoTipo del individuo (opcional). O bien el nombre o bien el tipo deben aparecer

Diagrama de secuencia: retorno El retorno se considera implcito si el envo es sncrono, sino en caso de existir debe explicitarse:

sd delete( item : ItemIdentifier ) self:Order c:Collection c[item]:LineItem

get(item) remove(item) destroy X

Diagramas de secuencia: mensajes Formato del mensaje


atributo = nombre_seal_mensaje (argumentos) : tipo_retorno

Diagrama de secuencia : recursin y condicin

objeto1

objeto2 [ x > 0] op2 ()

objeto3

donde argumentos es una lista <name>:<class> Atributo, argumentos y retorno son opcionales. La especificacin del mensaje puede ser * (cualquier mensaje) Ejemplos:
doSomething( ) doSomething(number1 : Number, number2 : Number) doSomething( ) : ReturnClass myVar = doSomething( ) : ReturnClass

[ x < 0] op1 () op2 ()

recursin ()

Diagrama de secuencia: iteracin Envo repetido de un mensaje (UML 1.X):

Diagrama de secuencia: tiempo UML 1.X


:PC :ServidorImpresin Print (ps) Print(ps) :Impresora

b
{B-A < 5 s}
* [i:= 1 .. 2] nombre()

A B

{C-B < 1 s}
C

[i := 1 .. 10] [x < 10] [not found]

Diagramas de comunicacin Representa una interaccin con una distribucin de los objetos espacial (no temporal). La estructura esttica viene dada por los enlaces; la dinmica por el envo de mensajes por los enlaces. Menos cercano al usuario, utilizado en la elaboracin del diagrama de clases en fase de diseo, permite descubrir abstracciones. Renombrado a diagramas de comunicacin (UML 2.0)

Diagramas de colaboracin (comunicacin)

Diagramas de Interaccin

Diagramas de comunicacin: mensajes

Diagrama de secuencia
x
a
b
y
z

Diagrama de colaboracin
1.1: a 1.2: c
x
y
1.1.1: b

expresin-secuencia condicin : valor-retorno := nombre-mensaje lista-argumentos

mensaje (5, 7) 3.7.4: mensaje (5, 7) 3.1a [ x < 0 ] : res := mensaje (arg)

c
z
condicin Nmero-secuencia Valor-retorno Nombre-mensaje lista-argumentos

3.7 *[1..5]: mensaje (5, 7) Hacen explcito el ordenamiento temporal. Hacen explcito los enlaces entre objetos. (Diagrama de comunicacin 2.0) 3.7 [ z > 0 ]: mensaje (5, 7)

iteracin condicin

Ejemplo: diagrama de comunicacin

Ejemplo: diagrama de comunicacin


1: Coger libro : Libro

sd Add a new advert to a campaign 5: createNewAdvert 4: selectCampaign 3: selectClient :AddAdvertUI :CampaignManager 1 *[For all clients]: getClient 3.1.1: listCampaigns 3.1.1.1 *[For all clients campaigns]: getCampaignDetails :Campaign 4.1.1.1 *[For all campaigns adverts]: getAdvertDetails :Advert 2: startInterface 5.1: addNewAdvert 4.1: showCampaignAdverts 3.1: showClientCampaigns :AddAdvert 5.1.1: addNewAdvert 4.1.1: listAdverts newAd:Advert

: Socio

2: Solicitar prstamo 3: Verificar situacin socio : Ficha socio

8: Autorizar prstamo

4: Situacin socio ok

5.1.1.1: Advert

6: Situacin libro ok

: Encargado 7: Introducir prstamo : Prstamo

:Client

5: Verificar situacin libro : Ficha libro

Diagrama de comunicacin

Diagramas de comunicacin Contienen la misma informacin que los diagramas de secuencia. Muestran explcitamente los enlaces entre los objetos que participan en la colaboracin de objetos. No existe orden temporal, la secuencia se captura con nmeros de secuencia.

Smbolo de objeto Mensaje


redisplay () : Controller 1: displayPositions (window) 1.1 *[i := 1..n]: drawSegment (i) wire wire :Wire self

Smbolo de enlace
window

: Window

Estereotipo Estndar

Restriccin estndar
{new} : Line

1.1.3.1 add (self)

local line 1.1.2: create (r0, r1) 1.1.3: display (window) 1.1.1b: r1 := position () right : Bead

Estereotipo estndar

1.1.1a: r0 := position () left : Bead

Fragmentos de secuencia Introducidos en UML 2.0


Organizar y estructurar diagramas.

Diagramas secuencia: mejoras UML 2.0

Un interaction frame es una regin del diagrama de secuencia dividida en uno o ms fragmentos:
Cada regin tiene un operador. Cada fragmento (operandos) puede tener una guarda. Permite mostrar ramificacin, bucles, ejecucin concurrente, etc.

Fragmentos de secuencia
op (operador): Aplicado a las interacciones en la regin (uno o varios fragmentos) (algunos operadores requieren argumentos como nombres de diagramas, parmetros, constantes, guardas) [guarda]: Expresin booleana La interaccin se ejecuta de acuerdo al valor de la guarda

Fragmentos de secuencia

op

[guard_1] interaction_1

op [:arguments]

[ [guard] ]

[guard_n] interaction_n

diagram name | interaction

interaction: Uno o varios fragmentos de diagrama de secuencia

diagram name: Si queremos referirnos a un diagrama definido en otra parte

Notacin con ms de una interaccin. Cada interaccin se ejecuta si la guarda evala a true.

Fragmentos de secuencia Operadores:


ref: interaccin definida en otro modelo. assert: interaccin que debe producirse con xito. loop: bucle.
Mnimo y mximo nmero de ocurrencias guarda

Diagramas de secuencia: operador sd

break: rompe ejecucin, normalmente un bucle alt: comportamientos alternativos con guardas
Guardas de cada uno de los comportamiento

opt: comportamiento opcional con guarda


Guarda del comportamiento opcional

neg: comportamiento prohibido par: comportamientos paralelos region: regin crtica

sd: <diagram name> (parameters)


Parmetros opcionales: Comportamiento distinto en diferentes referencias desde otro diagrama

Diagramas de secuencia: operador sd

Fragmentos de secuencia: operador ref

El diagrama de secuencia exhibe diferente comportamiento en funcin del valor de f

ref: hace referencia a un diagrama definido en un operador sd

Fragmentos de secuencia: operador loop

Fragmentos de secuencia: operador break

loop minint, maxint [guarda]


minint: mnimo nmero de iteraciones del bucle maxint (opcional): mximo nmero de iteraciones del bucle [guarda] (opcional): Se comprueba una vez superado el mnimo break: sustituye el comportamiento restante (orden temporal).
Si ocurre la interaccin break se abandona el bucle

Fragmentos de secuencia: operador alt

Fragmentos de secuencia: operador opt

alt: selecciona una interaccin de un conjunto en funcin de los valores de la guarda. [else] si no se cumple. Guardas mutuamente exclusivas. Equivalente a instruccin switch/case.

opt: la interaccin ocurre slo si [guarda] es true. Equivalente a instruccin condicional.

Fragmentos de secuencia: operadores La norma no es clara sobre el significado y uso de:


assert
La interaccin debe ocurrir exactamente en la forma indicada, si no, tenemos una interaccin invlida

Construccin del diagrama de secuencia Poner el origen del primer mensaje a la izquierda. Poner cercanos aquellos individuos con fuerte interaccin En general, intentar que los arcos de mensaje sean lo ms cortos posible y, en su mayora, de izquierda a derecha. Dar nombre a los individuos slo si son utilizados como argumentos de mensajes o en expresiones Omitir mensajes recursivos a no ser que generen mensajes a otros individuos. Omitir el retorno si se utiliza representacin de activaciones. Seleccionar un nivel de abstraccin.

critical
La interaccin es una regin crtica. No se pueden entrelazar con otros mensajes (atmica) Uso tpico: recursos compartidos

neg
La interaccin no puede ocurrir (trazas invlidas).

par
Ocurrencia concurrente de un conjunto de interacciones

ignore:
Designa un conjunto de mensajes sin relevancia.

consider:
Opuesto a ignore. Ignorar todos los mensajes no incluidos.

Secuencia vs colaboracin

Secuencia vs colaboracin (comunicacin)

Secuencia vs colaboracin

Secuencia vs colaboracin

Secuencia vs colaboracin Muestra claramente los participantes


Colaboracin (ligeramente)

Muestra claramente los enlaces


Colaboracin

Muestra signaturas de mensajes


Igual

Resumen

Soporta mensajes paralelos


Igual

Soporta mensajes asncronos


Secuencia

Sencillo leer el orden de mensajes


Secuencia

Fcil de crear y mantener


Opinable (comunicacin)

Resumen: diagramas de interaccin


Instancias, enlaces y mensajes expresan la dinmica en un modelo. El diagrama de secuencia se centra en la ordenacin temporal y es ms claro para el usuario. El diagrama de colaboracin resalta la estructura siendo ms cercano al diseo. Utilizar diagramas de secuencia:
Para mostrar el orden explcito entre los estmulos.

El modelado dinmico en el proceso sw

Utilizar diagramas de colaboracin:


Cuando la estructura es importante. Para recalcar los efectos en las instancias.

Utilizar diagramas de tiempo


Cuando duracin temporal es importante

Utilizar diagramas de visin general


Colaboracin entre interacciones en una funcionalidad mayor

Modelado estructural en el proceso sw

Ejemplo: sistema de matrcula

Modelo de requisitos

Lista objetos de dominio

Modelo de casos de uso


PedirListaAlumnos MantenerCurrculo

Modelo de anlisis

Diagrama de clases (inicial) Diagrama de clases (refinado)

Modelo de casos de uso

Alumno

Profesor

MantenerOferta

PAS

Modelo de diseo

DIAGRAMA DE CLASES

Diagramas de interaccin Diagramas de estados

GestionarCobros

Sistema contable

Ejemplo: clases

Ejemplo: atributos Los atributos se pueden identificar examinando las definiciones de las clase, los requisitos del problema, y en general aplicando el conocimiento que se posee del dominio

FormularioMatricula GestorMatricula

AlgoritmoAsig

Curso Alumno

Profesor OfertaCursos

cada oferta de un curso Tiene un nmero, lugar y fechas

OfertaCurso numero lugar fechas

Ejemplo: operaciones Las operaciones se pueden identificar examinando los diagramas de interaccin (casos de uso).

Ejemplo: relaciones Las relaciones se pueden identificar examinando los diagramas de interaccin (casos de uso).
Si dos objetos tienen que hablar debe haber un camino para la comunicacin.

Formulario Matricula

Gestor Matricula

GestorMatricula
AadirAlumno(pepe, I. S. 01)

GestorMatricula

I. S. 101: Curso

GestorMatricula

AadirAlumno(pepe)

AadirAlumno(Alumno,Curso)
Curso

Ejemplo: operaciones y relaciones

Ejemplo: multiplicidad y navegacin

FormularioMatricula GestorMatricula
AadirAlumno(Curso, AlumnoInfo)

AlgoritmoAsig

FormularioMatricula 0..* 1 GestorMatricula


AadirAlumno(Curso, AlumnoInfo)

AlgoritmoAsig

Curso
nombre numeroCreditos

1 0..* Alumno
nombre especialidad

Curso
nombre numeroCreditos

Alumno
nombre especialidad AadirAlumno(AlumnoInfo)

AadirAlumno(AlumnoInfo)

1 3..10 Profesor
nombre departamento

Profesor OfertaCursos
numero lugar fechas AadirAlumno(AlumnoInfo) nombre departamento

4 1 0..4

1..* OfertaCursos
numero lugar fechas AadirAlumno(AlumnoInfo)

Diagramas de estados Los diagramas de estados son mquinas de estados finitas (estados y transiciones). Basados en los Statecharts (Harel). La descripcin del comportamiento de un objeto mediante un diagrama de estados es adecuada para aquellos objetos con dinmica significativa. El resto de objetos se puede considerar que tienen un nico estado. La transicin entre estados es instantnea y se debe a la ocurrencia de eventos (dirigido por eventos).

Diagramas de estados

10

Diagrama de estados
Estado Inicial Calculando Transicin Estado Evento

Diagrama de estados Modelo de ejecucin:


La mquina siempre tiene un estado actual. Comienza la ejecucin en su nico estado inicial. Ante la ocurrencia de un evento:
Si el evento coincide con la signatura de evento en alguna transicin de salida del estado actual (y no existe guarda o se cumple), se toma la transicin hacia el estado destino. Si no coincide con la signatura de evento o la guarda no se cumple, no hay cambio de estado.

stop/ fin := true


Estado Final

Hecho stop
Accin

Si la computacin en el estado actual finaliza y existe una transicin de salida sin evento asociado:
Se produce el cambio de estado si no hay guarda o se cumple.

Si la transicin tiene accin asociada, esta ocurre cuando se atraviesa la transicin. Si se alcanza el estado final, la mquina finaliza.

Diagrama de estados Se utilizan para modelar el ciclo de vida de un objeto


Variacin de comportamiento del objeto en funcin del estado Llamada a las que responde el objeto. Qu es un estado en un objeto?

Diagrama de estados

contratar en el paro perder empleo en activo

aprobar

aprobado

jubilarse
completar

jubilarse jubilado

pendiente
rechazar

finalizado
completar

rechazado

Diagrama de estados
Destruccin de un 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 super-estado asociado, no el fin del objeto.

Formato de transiciones signatura-de-evento [guarda] / expresin-de-accin


signatura-de-eventoVaco o un nombre de evento seguido por sus parmetros (opcional).
(nombre-parmetro: tipo, ) El tipo puede ser omitido

En vuelo

chocar

guarda expresin booleana


Formato no especificado en UML

expresin-de-accindescripcin de la computacin realizada cuando ocurre la transicin.


despegar Crear (matrcula) aterrizar
Opcional Formato no especificado en UML

En tierra

11

Formato de transiciones

Formato de transiciones buttonPress buttonPress( modifiers : Modifer[*] ) buttonPress / closeWindow buttonPress [enabled] buttonPress [enabled] / closeWindow [mode = active] / closeWindow buttonPress[enabled], mouseClick

Formato de transiciones Las guardas permiten condicionar la transicin:


Los estados estn a un cierto nivel de abstraccin
oferta [valor < 100] /rechazar

Bifurcacin condicional

oferta [valor < 100] /rechazar

Vendiendo

Contento
oferta [valor >= 200] /vender

Vendiendo

Contento
oferta [valor >= 200] /vender

oferta [(valor >= 100) & (valor < 200)] /vender oferta [(valor >= 100) & (valor < 200)] /vender

Descontento

Descontento

Bifurcacin condicional esttica Abreviatura grfica. Equivalente a transiciones guardadas. Vendiendo


oferta

Bifurcacin condicional dinmica Es un pseudoestado de eleccin: las guardas se evalan en el instante en el que alcanza el punto de eleccin. Vendiendo
oferta /ganancia := calcular(valor)

Contento

Contento

[valor >= 200] /vender [valor < 100] /rechazar [ganancia< 100] /rechazar [(valor >= 100) & (valor < 200)] /vender [(ganancia >= 100) & (ganancia< 200)] /vender [ganancia >= 200] /vender

Descontento

Descontento

12

Acciones internas a un estado


Formato: etiqueta-de-accin/expresin-de-accin Donde la expresin de accin indica la descripcin de la computacin realizada en formato no especificado en la norma.

Acciones internas a un estado buttonPress / beep keyPress( SPACE ) / count++ timeout [mode = alert] / displayAlertMsg entry / count := 0; sum := 0 exit / ring bell do / display flashing light include / OrderProcessing

Etiqueta entry exit do

Significado Se produce en la entrada al estado Se produce en la salida del estado Se produce tras la entrada al estado y contina hasta su salida o hasta la finalizacin de la accin asociada. Permite especificar un diagrama de estados anidado en el estado (diagramas de estados jerrquicos).

include

Acciones internas a un estado: Do Accin mientras estamos en un estado, se ejecuta hasta que:
La accin (normalmente un diagrama de estados) finaliza. El estado se abandona debido a una transicin de salida.

Acciones internas a un estado: Entry y Exit Acciones exit prefijo acciones en transiciones. Acciones entry sufijo acciones en transiciones. On
entry/dispositivo.on(); exit/printf(saliendo);

off/printf(a off);

Off
entry/dispositivo.off(); exit/printf(saliendo);

Accin do Error
entry/printf(error!) do/while (true) alarma.on();

Secuencia de acciones: printf(saliendo); printf(a off); dispositivo.off();

off/printf(innecesario); printf(saliendo); printf(innecesario); dispositivo.off();

Transiciones internas a un estado Transiciones internas al propio estado: no incluyen entry, ni exit. Transicin interna disparada por el evento off

Diagramas jerrquicos
Permiten refinar y visualizar comportamientos complejos. Los estados se descomponen en mquinas de estados.
off/!

OffLine

transicin de grupo

Off
entry/dispositivo.off(); exit/printf(saliendo); off/null;

Transicin de defecto OnLine

on/!

Preparado
peticin/atender()

hecho/

Ocupado

Estado compuesto

13

Diagramas jerrquicos
transiciones de entrada a un estado especfico o sino de defecto al pseudo-estado inicial

Diagramas jerrquicos: terminacin


transicin (de defecto) al Pseudo-estado inicial Disparadas por el evento de terminacin: se genera automticamente cuando una mquina de estado anidada termina.

Off
entry/luz.off()

interm/

Intermitente
IntOn
entry/luz.on()

Computando
Fase1

Transicin de terminacin

off/ on/
On
entry/luz.on()

1sec/ on/
Transicin de grupo IntOff

1sec/
Fase2

Hecho

entry/luz.off()

Diagramas jerrquicos: orden de acciones

Diagramas jerrquicos: orden de acciones

AA

S1 exit/exS1

S2 entry/enS2 /initS2

entry / enterAA exit / exitAA A entry / enterA exit / exitA

y / yAction BBB entry / enterBBB exit / exitBBB BB entry / enterBB exit / exitBB

x / xAction

S11 exit/exS11

E/actE

S21 entry/enS21

Secuencia de acciones: exS11 exS1 actE enS2 initS2 enS21

B entry / enterB exit / exitB

Estados compuestos En los diagramas jerrquicos podemos encontrar dos tipos de estados compuestos:
Secuenciales y ortogonales.

Estados compuestos (secuenciales)


Off onBtnClick On Idle entry / speed := undefined setBtnClick Cruising SetSpeed entry / speed := currentSpeed resumeBtnRelease cancelBtnClick offBtnClick

Estados compuestos secuenciales


El estado anidado contienen una nica regin con subestados y transiciones.
setBtnClick

Estados compuestos concurrentes (ortogonales)


El estado anidado se compone de dos o ms regiones separadas, cada una con subestados y transiciones.

MaintainSpeed do / maintain(speed)

setBtnRelease

resumeBtnPress Accelerate do / accelerate resumeBtnClick

setBtnPress Decelerate do / decelerate brake clutch

Suspended entry / releaseControl

14

Estados compuestos (concurrentes/ortogonales)

Estados concurrentes : fork y join

La estancia en el estado finaliza en cuanto se recibe un evento de salida del estado compuesto. Si no es as, la estancia finaliza cuando todas las regiones hayan alcanzado su estado final.

Estados concurrentes: entrada y salida Una transicin al estado concurrente


Pasa el control al estado inicial de cada regin.

Estados concurrentes: entrada y salida

Transiciones a estados individuales de las distintas regiones


La transicin principal se enlaza a una barra de fork. Las transiciones a estados individuales proceden de la barra de fork. Una regin sin transicin de entrada comienza en sus estado inicial.
Source State
transitionString

Concurrent Composite State S1

...

S2

...

S3

...

S4

...

Estados concurrentes: entrada y salida Una transicin desde el estado concurrente.


Ante un transicin saliente no de final, se sale de todos los subestados concurrentes inmediatamente. Ante una transicin de estado final, el estado actual en todas las regiones debe haber alcanzado su estado final.

Estados concurrentes: entrada y salida

Concurrent Composite State

...

S1

Transiciones desde uno o ms de los subestados concurrentes.


Las transiciones que se desee coordinar van a una barra de join. Todos los dems subestados salen inmediatamente.

...

S2

...
transitionString

Target State

...

S3

...

...

S4

15

Pseudo-estados de historia Un estado de historia (history state) es un pseudoestado que indica que se debera reentrar en el ltimo subestado activo del estado compuesto
Aquel subestado que caus la salida en la anterior visita el estado compuesto.

Pseudo-estados de historia

On setToA Preset A

El objetivo es permitir el modelado de estados persistentes, lo que es habitual en muchos dispositivos y sistemas.

setToB turnOff setToB

Preset B

Preset C

Off

turnOn

Diagrama de estados: resumen UML utiliza una variante orientada a objetos de statecharts (Harel). Se utiliza para el modelado de comportamiento (reactivo) dirigido por eventos (apropiado para la visin objetos servidores inherente a OO). Caractersticas avanzadas:
Acciones entry, exit, do. Bifurcacin condicional esttica y dinmica.

Diagrama de estados: uso Un diagrama estado transicin muestra.


El comportamiento dinmico de de una clase. Los eventos que causan una transicin de un estado a otro. Las acciones que se producen en un cambio de estado.

Permite el modelado jerrquico para sistemas complejos:


Estados jerrquicos. Transiciones jerrquicas.

En general modelan la vida de instancias. Los diagramas estado transicin se crean para aquellos objetos con un comportamiento dinmico significativo (ya sean instancias de clases, casos de usos o el sistema global).

Diagrama de actividades Caso especial de diagrama de estados donde:


Todos (o la mayora de) los estados son estados de accin. Todas (o la mayora de) las transiciones son disparadas como consecuencia de la finalizacin de la la accin.

Diagrama de actividades

Destinado a modelos de flujo de control y flujo de datos (objetos), , en vez de modelos dirigidos por eventos (diagramas de estados). Mientras los diagramas de interaccin destacan flujo de control entre objetos, los de actividades destacan flujo de control entre actividades. Inicialmente los diagramas de actividades eran un tipo de diagramas de estados. Son independientes de las mquinas de estados en UML 2.0.

16

Diagrama de actividades: elementos accin


Accin Invocacin de actividad Envo de una seal Aceptacin de evento Aceptacin de un evento de temporizacin Paso simple dentro de una actividad Subactividad invocada dentro de una actividad Se enva una seal (evento) a una actividad que lo acepta Accin que representa la espera por la ocurrencia de un evento Accin que representa el vencimiento de una temporizacin Accin Invocacin de actividad Envo de seal Aceptacin de evento

Diagrama de actividades: elementos de flujo


Arco Nodo de decisin Nodo de unin Divisin Concurrente (fork) Unin concurrente (join) Flujo de control Punto de ramificacin condicional Punto de unin no sincronizada Divisin en dos o ms flujos paralelos Unin de dos o ms flujos paralelos

[condicin]

[else]
[condicin]

Fin de temporizacin

Diagrama de actividades: otros


Nodo inicial Nodo final Punto de inicio de la actividad Punto fin de actividad

Tipos de Nodos Tipos de nodos:


Nodos accin: nodos de actividad ejecutable donde la ejecucin de la accin representa una transformacin o proceso en el sistema modelado.

Nodo final de flujo Particin (swimlane)

Punto de fin de flujo individual Divisin de la actividad segn algn criterio

Nodos de control: coordinan flujos entre otros nodos en un diagrama de actividades.

Nodos objeto: denotan una instancia de un objeto que est disponible en algn punto de la actividad (ej, Pins).

Acciones Unidad fundamental de funcionalidad ejecutable en una actividad. La ejecucin de una accin representa cierto tipo de transformacin o proceso en el sistema modelado (creacin de objetos, invocacin de comportamiento, asignar valores a atributos, etc.).

Pins Especificacin de entradas y salidas de las acciones. El nombre del pin generalmente resalta el tipo de objetos o datos que fluye a travs del pin.

Pins de salida

Pins de entrada

Descripcin del comportamiento de la accin

Notacin integrada: el pin de entrada y de salida tienen el mismo nombre y el mismo tipo

17

Actividades Una actividad es la especificacin de un comportamiento parametrizado como una secuencia coordinada de elementos que son acciones. Se utilizan parmetros para recibir y proveen datos.

Tipos de arcos Conexiones dirigidas con un origen y un destino, pueden conllevar el paso de testigos.

Parmetro de entrada

Parameter name Parameter name

Parameter name

Parmetro de salida

Cualquier nmero de testigos puede circular por el arco conjuntamente o en momentos diferentes. Weight: El peso determina el mnimo nmero de testigos que debe atravesar el arco al mismo tiempo.

Una accin puede invocar una actividad para describir la accin de forma ms detallada.

Tipos de arco Dos tipos de arco:


Arco de flujo de control: este arco inicia un nodo actividad despus de la finalizacin del anterior mediante el paso de un testigo de control.

Nodos de decisin y combinacin Se utilizan conjuntamente para expresar comportamiento opcional


Guardas completas y mutualmente exclusivas

Arco de flujo de objeto: modela el flujo de valores hacia o desde un nodo mediante el paso de objetos o datos

Nodos de decisin y combinacin Los nodos de decisin dirigen el flujo a uno de sus arcos de salida (los testigos no se duplican). Las guardas se especifican sobre los arcos de salida o con el estereotipo decisionInput. Existe la guarda predefinida [else], se selecciona si el testigo no es aceptado en ninguno de los otros arcos. Si todas las guardas fallan, el testigo contina en el nodo fuente hasta que una de las guardas lo acepte.

Nodos de decisin y combinacin Los nodos de combinacin aglutinan un conjunto de flujos alternativos. Todos los controles y datos que lleguen al punto de combinacin se pasan de forma inmediata al arco de salida. No existe sincronizacin de flujos ni unin de testigos.

18

Nodos de decisin y combinacin


Evitar guardas incompletas o no mutuamente exclusivas
Ejemplo: item in stock && rush order Ejemplo: not rush order

Nodos de decisin y combinacin


Evitar guardas incompletas o no mutuamente exclusivas
Ejemplo: item in stock && rush order Ejemplo: not rush order

Unin y divisin concurrente Se utilizan conjuntamente para expresar comportamiento paralelo/concurrente.


Fork: Divisin concurrente. Join: Unin concurrente (sincronizacin).

Unin y divisin concurrente Los nodos fork dividen flujos en mltiples flujos concurrentes (se duplican los testigos).

En UML 2.0 el paralelismo no est restringido, las ramas en paralelo son totalmente independientes.

Unin y divisin concurrente Los nodos join sincronizan mltiples flujos.

Diagrama de actividades: elementos bsicos


Estado inicial Bifurcacin condicional

Buscar Bebida
Accin

[no hay caf]

[no zumo] [hay zumo]

[hay caf] Aadir agua al depsito Coger taza

Poner caf en filtro

Generalmente, el control o los datos deben estar disponibles en todos los arcos de entrada, pero tambin se pueden especificar condiciones para la aceptacin del join mediante el uso de joinSpec

Divisin concurrente

Poner filtro en mquina

Unin concurrente

Coger zumo

Encender mquina Caf en preparacin Servir caf


Estado final

Beber

19

Diagramas de actividades: seales Representan interaccin con participantes externos.


Mensajes enviados o recibidos Receive: Desencadena una accin en el diagrama de actividades. Send: La accin que desencadena la seal en un participante externo normalmente no se modela.

Diagramas de actividades: send Crea una seal a partir de la entrada y la transmite al objeto destino (local o remoto). Se trata de un estmulo asncrono que dispara una reaccin en el receptor de forma asncrona y sin respuesta. Cualquier mensaje de respuesta es ignorado.

Diagramas de actividades: receive Espera la ocurrencia de un evento que cumpla las condiciones especificadas. Dos tipos:
Aceptacin de una seal send. Espera de tiempo (acepta eventos de tiempo)

Diagramas de actividades: temporizacin Eventos de temporizacin


Tipo especial de seal que modela paso del tiempo

Los objetos en el almacn de datos slo se recuperan cuando el join tiene xito (una vez al ao).

Puede ser usada para inicio de actividad La especificacin del tiempo puede ser absoluta o relativa

Inicio y fin de actividad En una actividad el flujo se inicia en sus nodos iniciales, que pasan el control inmediatamente al nodo siguiente.

Inicio y fin de actividad Inicio de actividad:


Normalmente, un nodo inicial Alternativamente:
Recepcin de una seal. Respuesta a un evento de temporizacin. Recepcin de datos de entrada

Si hay ms de un nodo inicial, se sita un testigo de control en cada nodo inicial cuando se inicia la actividad, se inicia mltiples flujos. Si un nodo inicial tiene ms de un arco de salida, slo uno de ellos recibir el control.
AoB?

20

Inicio y fin de actividad Fin de actividad:


Normalmente, un nodo final Alternativamente:
Regin de actividad interrumpible Slo interrupcin en la regin

Inicio y fin de actividad Final de flujo:


Destruye el testigo que llega al nodo. Se finaliza la actividad cuando todos los testigos en el grafo se hayan destruido.

Nodo final:
La actividad termina cuando llega el primer testigo.
Competencia intencionada entre flujos

Inicio y fin de actividad Final de un flujo sin finalizar la actividad

Uso avanzado diagrama de actividades Conectores Regiones de expansin Flujo de objetos Calles Pre y pos condiciones

Cuidado con el uso de fin de actividad sin join

Flujo de objetos
Visualizado Muestreador

Flujo de objetos Los estados del flujo de objetos pueden ser estados de sincronizacin:
A11 A12 Obj [S2] A21 A22 A23 A13

Iniciar

Actualizar display

ValorMedido

Medir

21

Particiones (swimlanes) Un diagrama de actividades puede involucrar participantes diferentes.


Usar particiones para delimitar responsabilidades.

Particiones (swimlanes)

Las particiones dividen los nodos y arcos con el objetivo de identificar acciones que comparten ciertas caractersticas.
A menudo se refieren a organizaciones en el modelo de negocio.

Las particiones pueden ser jerrquicas y multidimensionales.

Particiones (swimlanes)

Particiones (swimlanes)
Objetos, actores, casos de uso
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

Particiones (swimlanes)

Particiones (swimlanes)

22

Particiones (swimlanes)

Particiones (swimlanes)

Viaje a Gnova
local precondition Have a license Car crash Turn on the car [else] Fill up with fuel

Go to Heaven/ Hell ;)

[on car]

To motorway tollgate

Catch the ticket

Ejemplos

[the tank is full] Get luggage ready [on train] Go to the station with a friend Go home with the car Pay the ticket Exit to Genova tollgate

Buy the ticket

Obliterate the ticket

Catch the train

Go to Heaven/ Hell ;)

The train derail

The friend goes home When the train arrives to Genova Go home with bus Get off the train [else] Study for 5 minutes [Genova is a long way]

182

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

23

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

24

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Procesar pedido
Process Order Requested Order: Order
[order rejected]

Procesar pedido
<pre> Order complete <post> Order closed Process Order Requested Order: Order
[order rejected]

<pre> Order complete <post> Order closed

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Requested Order

Receive Order

Fill
[order Order accepted]

Ship Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

Send Invoice Invoice

Make Payment

Accept Payment

Close Order

25

Resumen: Diagramas de actividades Utilizar diagramas de actividades cuando el comportamiento modelado


No tiene gran dependencia de eventos externos. La mayora de las transiciones son debidas a finalizacin y no a la interrupcin de un evento. Se requiere flujo de datos/objetos en las transiciones.

El modelado dinmico en el proceso sw

El diagrama puede estar asociado a una clase, la implementacin de una operacin, un caso de uso.
Implementacin de operaciones complejas (diagramas de flujo) Modelado de organizaciones Modelado de actividades de dominio Relacin temporal entre casos de uso

Modelado estructural en el proceso sw

Diagrama de clases (anlisis) Objetivo: proporcionar un modelo lgico del sistema. Entradas: modelo de casos de uso, lista de objetos de dominio.
Elaborar diagrama de clases inicial (basado en objetos de dominio), clases, generalizacin y asociaciones estticas. Utilizar clases y casos de uso:
Escribir descripcin de clases, roles y responsabilidades. Distribuir el comportamiento en los casos de uso. Asegurarse de que hay una clase responsable de cada comportamiento.

Modelo de requisitos

Lista objetos de dominio

Modelo de casos de uso

Modelo de anlisis

Diagrama de clases (inicial) Diagrama de clases (refinado)

Modelo de casos de uso

Modelo de diseo

DIAGRAMA DE CLASES

Diagramas de interaccin Diagramas de estados

Refinar clases en el diagrama (operaciones, multiplicidad, ...). Chequear: descripcin textual de casos de uso en trminos de clases. Agrupar clases en paquetes.

Diagrama de clases (diseo) Objetivo: proporcionar un modelo reflejando la forma en que el sistema final ser construido. Entradas: especificacin de requisitos, modelo de anlisis (diagrama de clases), descripcin de los casos de uso:
Identificar el entorno de implementacin. Modelar diagrama de clases de diseo inicial (casos de uso + diagramas de interaccin). Disear flujo de control y flujo de objetos (diagrama de actividades). Definir interfaces. Modelar comportamiento significativo de los objetos (diagramas de estados).

26

You might also like