Sei sulla pagina 1di 17

Diagramas de Interaccin

Diagramas de Interaccin
n

5.1. 5.2. 5.3. 5.4.

Diagramas de interaccin entre objetos Diagramas de secuencia Objetos y sus relaciones: Colaboracin entre objetos. Aplicaciones de las tcnicas. La fase de anlisis.

Los diagramas de interaccin son modelos que describen como grupos de objetos colaboran para conseguir algn fin. Estos diagramas muestran objetos, as como los mensajes que se pasan entre ellos dentro del caso de uso Los diagramas de interaccin capturan el comportamiento de un caso de uso. Los diagramas de interaccin se expresan de dos maneras:
n n

diagramas de secuencia diagramas de colaboracin


2

Ingeniera del Software II 3 Gestin


1

Diagramas de secuencia y colaboracin


Cada uno de ellos resalta ciertos aspectos en particular:

Diagramas de Secuencia
: Encargado : Libro : Ficha socio : Ficha libro : Prstamo

Los diagramas de colaboracin muestran las relaciones entre los objetos y los mensajes que intercambian Un diagrama de secuencias muestra las interacciones expresadas en funcin de secuencias temporales.
n

Verificar situacin socio Situacin socio ok

muestra los objetos participantes en la interaccin por sus lneas de vida, y los mensajes que intercambian entre ellos al correr del tiempo. Sin embargo, no muestra los enlaces entre los objetos.
3

Verificar situacin libro Situacin libro ok Introducir prstamo

Diagramas de Colaboracin
3: Verificar situacin socio : Ficha s ocio
n

Diagramas de secuencia
Un diagrama de secuencias muestra las interacciones expresadas en funcin del tiempo. En concreto muestra los objetos participantes y los mensajes que intercambian entre ellos a lo largo del tiempo. Los diagramas de secuencias son ms apropiados para especificar restricciones de interaccin en tiempo real. Un diagrama de secuencias tiene dos dimensiones, la vertical que representa el tiempo, y la horizontal que representa los distintos objetos.
6

4: Situacin socio ok
n

6: Situacin libro ok

: Encargado 7: Introducir prstamo : Prsta mo


n

5: Verificar situacin libro : Ficha li bro


n

Diagramas de secuencia
n

Diagramas de secuencia, Formatos:


En forma genrica: que describir todas las posibles secuencias. En forma instancia: que describe una secuencia en concreto pero de forma consistente a lo especificado en la forma genrica.

El tiempo avanza desde el comienzo hasta el final de la pgina, aunque se puede tomar el sentido contrario. La exactitud temporal solo toma importancia en las aplicaciones de tiempo real, por lo que los ejes de tiempo suelen tener marcas temporales. El orden horizontal de aparicin de los objetos no tiene ninguna importancia. La notacin est tomada, en gran parte, del diagrama de secuencias de mensajes entre objetos de Buschmann (POSA diagrams).
7

Ejemplo de diagrama de secuencia


Ventana de entrada de orden Orden Lnea de Orden Elemento de stock
n

Notacin: Lnea de vida (lifeline)


La lnea vertical representa la existencia de un objeto a lo largo de un determinado tiempo y recibe el nombre de lnea de vida del objeto.

prepar() * prepar() objeto comprobar() mensaje


[comprobar=TRUE] eliminar()

condicin

iteracin

necesita_reordenar()

Si el objeto es creado o destruido, entonces su lifeline debe de comenzar y acabar en la lnea de tiempo:
n n

retorno

[necesita_reordenar=TRUE] nuevo

Elemento ordenado Elemento ordenado

El mensaje que lo crea apuntar al objeto creado. Si el objeto fuera destruido durante el diagrama, se marcara este evento con una gran X.

[comprobar=TRUE] nuevo

En caso contrario la lnea ir de la parte inferior a la superior del diagrama.

n 9

Una lnea de vida se puede ramificar en varias para representar condiciones.

10

Diagramas de secuencia: Notacin


n

Notacin: activacin
Una activacin muestra el periodo durante el cual un objeto realiza una accin.

Una activacin se representa como un rectngulo alineado con los momentos en que se inicia y en que finaliza. La accin que realiza aparece opcionalmente descrita en una etiqueta prxima al smbolo de activacin o en el margen izquierdo.

11

12

Notacin: activacin
Quien llama Lnea telefnica Llamado

Notacin: activacin concurrente

Ejemplo
Las bandas rectangulares representan los periodos de actividad de los objetos

En objetos concurrentes, la activacin muestra el intervalo en el que un objeto est realizando una operacin.
sensor : Sensor controlador : Controlador temp() alarma : Alarma

descuelga

tono

marcar

indicacin de llamada

timbre

temp_alta() listo()

descuelga

diga?

13

14

Notacin: mensaje
Notacin: activacin procedural

(comn con diagramas de colaboracin)


n

En cdigo procedural (o concurrente sincrnizado) la activacin muestra el intervalo de tiempo durante el cual un procedimiento o un procedimiento subordinado est activo.
dilogo : controlador : factura1 :

Un mensaje es una comunicacin entre objetos que contiene informacin y que espera la realizacin de una accin. El receptor de un mensaje normalmente lo considera un evento. El orden en que ocurren los mensajes se muestra de arriba a abajo en el diagrama. Se contempla la posibilidad de que un objeto se enve mensajes a s mismo.

n pagar()

15

16

Notacin: mensaje
n

Notacin: mensaje
n

Cada mensaje se representa por una flecha entre las lneas de vida de los objetos. La flecha se etiqueta con el nombre del mensaje, (operacin o seal) y opcionalmente con un nmero secuencia. Normalmente las flechas son horizontales, pero si hubiera un tiempo de propagacin la lnea se suele representar oblicua. Existe la posibilidad de reflejar el retorno de un mensaje.

El mensaje puede incluir los argumentos e informacin de control. La informacin de control se puede expresar mediante una condicin, una marca de iteracin o la forma de las flechas de los mensajes:

Se representa por una flecha cuya cabeza son dos lneas (esto es punta de flecha no rellena). Se suele omitir la flecha de retorno en los flujos procedurales (el retorno est implcito)
17

punta de flecha abierta: flujo de control genrico (habitualmente asncrono) punta de flecha slida: Se usa con llamadas a procedimiento anidadas. Tambin cuando un objeto concurrente espera hasta que se complete la llamada. media punta de flecha: flujo de control asncrono, de forma explcita
18

Tipos de mensajes
a b

Tipos de Control
El Diagrama de Secuencia refleja de manera indirecta las opciones de control

a : aa

b : aa

Un control centralizado tiene una forma como esta:

El retorno se considera implcito cuando el envo es sncrono

El retorno, si lo hay debe ser explcito cuando el envo es asncrono


19 20

Tipos de Control
Un control descentralizado tiene una forma como esta:
n

Notacin: mensaje

Tiempos de Transicin

Una transicin, (un mensaje en un diagrama de secuencias), puede tener un nombre. El nombre representa el momento en el que el mensaje es enviado. En el caso de que la transmisin no sea instantnea, si la transicin es A, su llegada a destino es A.
22

21

Ejemplo de diagrama de secuencia

Etiqueta del mensaje


La etiqueta (en diagramas de secuencia y de colaboracin) tiene la sintaxis siguiente: Predecesor / condicin-guarda expresin-secuencia : signatura
n

Predecesor: lista de nmeros de secuencia (mensajes que deben ocurrir previamente), terminada con /. Si es obvio, se omite.

A3,B4/ C3.1*: actualizar ()


23 24

Etiqueta del mensaje: secuencia


n

Etiqueta del mensaje: secuencia

La secuencia en diagramas de secuencia (procedurales) se suele omitir. La secuencia se expresa con nmeros enteros o nmeros enteros anidados, si se trata de mensajes encadenados:

1: a() 1.1: b() 2: c() 1.2: b() 2.1.1: e() 2.1: d()

1,
n

1.1,

1.1.1

2
n n

2.1 2.2

Pero si hay concurrencia se emplean letras: 1, n 1.1, 1.1a, 1.1b

25

26

Etiqueta del mensaje: secuencia

Estructuras de control
Las bifurcaciones condicionales pueden representarse de esta forma:
[cond a]: [cond b]:

Adems se puede indicar una condicin: [x < 0] 4.1: mensaje (como condicin de guarda)

4.1[x < 0] : mensaje (como iteracin nica?)

Puede incluir una clusula de iteracin: 4 *[i:=1..n]:mensaje

If condicin else end if

f() g()

27

28

Estructuras de control
Podemos representar iteraciones en el envo de mensajes, p.e., mientras se cumpla una condicin. La iteracin puede expresarse como parte del mensaje:

Estructuras de control
La iteracin, como comentario al margen:

While X Loop end Loop


*[condicin] Mensaje

Slo tiene sentido si queremos un diagrama de secuencia general, no una instancia concreta
29 30

Object2: Vuelo Object1

Object3: Reserva

lnkBillete: Billete

Etiqueta del mensaje: signatura


calcular_precio():double tiene_billete:= billete_comprado():boolean

Precio():double

Predecesor / condicin-guarda expresin-secuencia : signatura

y a su vez signatura es:


valor-retorno := nombre-mensaje lista-argumentos

[tiene_billete]:
coste:=calcular_precio():double if(tiene_billete) Together: else

valor-retorno: omitido si el mensaje no tiene un resultado. nombre-mensaje: el nombre de la operacin en el objeto receptor. lista-argumentos entre parntesis
32

n 31

Notacin: etiqueta del mensaje


Ejemplos de etiquetas de mensajes: 2: display (x, y) 1.3.1: p:= encontrar(espec) [x < 0] 4: invertir (x, color) A3,B4/ C3.1*: actualizar () mensaje simple llamada anidada con valor de retorno mensaje condicional sincronizacin
33

Diagramas de colaboracin
n

El diagrama de colaboracin muestra cmo las instancias especficas de las clases trabajan juntas para conseguir un objetivo comn. Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un objeto a otro. muestra las relaciones sobre los objetos sin mostrar la dimensin temporal de dichas relaciones la secuencia de los mensajes vendr dada por nmeros de secuencia.
34

Diagramas de colaboracin
SensorTempInterno SensorTemperatura::SensorTempExterno

Diagramas de colaboracin: Notacin


n n

contexto de la colaboracin interaccin


1: maximo_alcanzado ( ) : Usuario

1: TempInterna() 1.1: TempExterna()

Controlador::ControladorTemp

: bibliotecario
1.3: Velocidad() 1.2: Voltaje()

2: ejemplares disponibles ( )

: Libro : Ejemplar

VentiladorInterno

Calentador::CalentadorInterno

2.1: prestado ( )

35

36

Diagramas de colaboracin
n

Diagramas de colaboracin
n

Una colaboracin incluye dos tipos de constructores:

una descripcin de la estructura esttica de los objetos afectados, incluyendo sus relaciones una descripcin de la secuencia de mensajes intercambiados sobre los objetos para realizar el trabajo.
n

Una colaboracin puede estar asociada a un tipo, una operacin o un caso de uso para describir sus efectos externos: Se trata de una especificacin que describe los cambios producidos en un entorno externo Una colaboracin puede estar asociada a una clase, a un mtodo, (implementacin de una operacin), o a la realizacin de un caso de uso: Se est describiendo una implementacin estos elementos internamente.
38

El primer aspecto es el contexto de la colaboracin mientras que el segundo es la interaccin soportada por la colaboracin. Ambos son necesarios para una especificacin completa, y acostumbran a describirse en conjunto.
37

Diagramas de colaboracin
n

Diagramas de colaboracin: Notacin


1: maximo_alcanzado ( ) : Usuario

Los objetos se representan mediante rectngulos y los nombre se subrayan. Se representan tambin los enlaces estticos, instancias de asociaciones y elementos transitorios, como un argumento de una operacin. Tambin pueden aparecer actores provenientes de los casos de uso, representando una interaccin simplificada con el sistema Cuando la interaccin afecta a varios objetos se utiliza un smbolo que representa objetos mltiples.

: bibliotecario 2: ejemplares disponibles ( )

: Libro
n

: Ejemplar

2.1: prestado ( )

39

40

10

Diagramas de colaboracin: Notacin


n

Diagramas de colaboracin
En sistemas concurrentes, un objeto activo es aquel que tiene el flujo de control y se denota con bordes ms gruesos.

41

42

Aplicaciones de la tcnica
n

Documentar casos de uso. Opcin 1


n

Para documentar los casos de uso


n

En ese caso slo hay dos tipos de objetos: el actor (o actores) y el sistema (como caja negra)

Se describen los mensajes que el actor enva al sistema (Pero muchos libros, utilizan mensajes en sentido contrariopeligro?)
sistema : Sistema : Bibliotecario comenzar el proceso de prstamo Se realiza el caso de uso: Identificacin de socio comprueba la situacin del socio

Para REALIZAR los casos de uso y ENCONTRAR LAS OPERACIONES DE CADA CLASE
n

Al nivel de anlisis
n

Aparecen los actores y los objetos del dominio Se sustituyen los actores por objetos de interfaz (dilogos, o incluso ventanas, botones, etc...)

Al nivel de diseo
n

identifica el libro

En cualquiera de los casos, es preferible utilizar escenarios, empezando por la secuencia normal (es la ms completa)
43

identifica un ejemplar y solicita al sistema que registre el prstamo

44

11

Documentar casos de uso. Opcin 2?


sistema : Sistema : Bibliotecario 1: comenzar el proceso de prstamo

Realizacin de un caso de uso


n

Precondicin:
n n

Diagrama de clases Casos de uso

Se realiza el caso de uso Identificacin de socio

Cada paso del actor mensaje al sistema


sistema : Sistema : Bibliotecario comenzar el proceso de prstamo Se realiza el caso de uso: Identificacin de socio comprueba la situacin del socio

2: comprueba la situacin del socio

Mensaje /respuesta recibido por un actor?

3: identifique el libro 4: identifica el libro

5: ejemplares disponibles
identifica el libro

6: identifica un ejemplar y solicita al sistema que registre el prstamo


identifica un ejemplar y solicita al sistema que registre el prstamo

7: proceso de registro ha terminado

45

46

Realizacin de un caso de uso


n n

... Pero necesito el modelo de dominio:


Prstamo Libro titulo disp Ejemplar numero 1 * Usuario * Autor nombre apellidos fecha nac nombre apellidos direccion 1 1 0..1 Devolucin retraso fecha devolucin * 1 * * 1 fecha de inicio duracin

Se aplica la filosofa CRC En los casos de uso, cada paso supone un mensaje al que debe responder el sistema:
n

Quin es el objeto responsable? operacin en su clase: ejemplares_disponibles(): INTEGER Con que otros objetos colabora (mensajes anidados)? operaciones en las clases responsables secundarias: prestado(): BOOLEAN

1 * Multa fecha multa dias multa 47 0..1

48

12

Realizacin de un caso de uso


: Bibliotecario : Libro : Prstamo : Libro : Ejemplar : Ejemplar

Realizacin de un caso de uso


4: crear(fecha, alumno, ejemplar) : Prstamo : Bibliotecario 5: set prestado ( )

buscar_libro (string)

2: ejemplares disponibles ( )
ejemplares disponibles ( )

: Ejemplar
prestado ( )

1: buscar_libro (string)
crear(fecha, alumno, ejemplar) set prestado ( )

: Libro

: Libro

* : Ejemplar

3: prestado ( )

49

50

Escenarios alternativos y excepcionales


n n

Conexin de casos de uso (incluye o extiende).


n

Se parte de un escenario normal Los escenarios alternativos representan pequeas variantes Las excepciones, n O bien vuelven al recorrido normal n O bien cancelan el escenario...

Se pueden utilizar notas para indicar un caso de uso incluido (o un punto de extensin) Se pueden plantear diagramas de interaccin para un escenario que recorra varios casos de uso (ms claro pero ms largo)

No hay que perder de vista la utilidad de la tcnica: Encontrar los mensajes y las operaciones asociadas
51 52

13

Larman, Patrones: Experto


n

Patrones: Creacin
n

buscar la clase que tiene la informacin necesaria para una responsabilidad

Sale date time 1 Contains 1.. * Product Sales LineItem quantity Specification

asignar a B la responsabilidad de crear instancias de A si: n B es una agregacin/comp. de A n B registra los objetos A n B conoce la informacin necesaria para crear/inicializar A

Described-by

1 description price itemID

: Empleado

todas las pelculas : Pelcula

pelcula ZZ : Pelcula

t := getTotal()

:Sale date time New method

Sale

2: crear_cinta (Integer)

3: crear (Pelcula)

: Cinta

getTotal() 53 54

Detalles de diseo....

Patrones: Controlador
n

Pulsa botn

Asignar el manejo de los eventos de sistema (los que proceden de los actores) a una clase que represente: n el sistema o la empresa (controlador de fachada) n el trabajo de ese actor (controlador de tareas)

:Cajero actionPerformed ( actionEvent)

Aade_producto () Interfaz :SaleJFrame Aade_producto() Evento del sistema

:Registradora

Dominio

Que objeto recibe el mensaje...?


: ???

Aade_producto ()

:Gestor de ventas

55

56

14

Patrones, en resumen...
n

Patrones, en resumen...
n

bajo acoplamiento y alta cohesin:


: Register : Sale

Ejemplo correcto
: Register : Sale

makePayment() makePayment()

create()

p : Payment

makePayment()

create()

: Payment

addPayment( p )

mal ejemplo...

57

58

Ms ejemplos: videoclub
<<abstract>> ArtistaCine

Casos de uso:
Alta de pelcula <<extend>>

Actor 0..* 0..* Pelcula ttulo : String ao : Integer duracin : Time tema : String untitled () 1

Director 0..*

Productora nombre : String

Empleado
0..*

contiene 1 0..*

Cinta nmero : Integer 0..* alquiladas {subset}

Alta de cinta (p.extensin: pelcula nueva)

Baja de cinta

59

Consulta de pelcula

60

15

Alta de pelcula
1 El empleado del vdeoclub solicita al sistema comenzar el proceso de alta de pelcula 2 El sistema solicita los siguientes datos de la nueva pelcula: duracin, actores principales, director, productora y ao de produccin 3 El empleado del vdeoclub proporciona los datos requeridos y solicita al sistema que los almacene 4 El sistema almacena los datos proporcionados 5 El sistema informa al empleado del vdeo club que el proceso ha terminado con xito

Alta de pelcula, mensajes


: Empleado 1: comenzar el proceso de alta sistema

2: 3: proporciona los datos: ttulo, tipo de pelcula, duracin, actores principales, director, 4: 5:

Postcondicin El sistema ha almacenado la informacin correspondiente a la nueva pelcula

Excepciones 4 Si el sistema detecta que la pelcula ya est registrada, el s istema, informa de la situacin al empleado del vdeo club permitindole modificar los datos proporcionados, a continuacin este caso de uso contina
El sistema ha almacenado la informacin correspondiente a la

61

62

Alta de cinta
1 El empleado del vdeoclub solicita al sistema comenzar el proceso de alta de cinta 2 El sistema solicita que se identifique la pelcula que contien e la cinta 3 El empleado del vdeoclub identifica la pelcula 4 Si la pelcula no est registrada, se realiza el caso de uso U 5 El sistema solicita el nmero de cintas de la pelcula a dar d e alta 6 El empleado del vdeoclub proporciona el nmero de cintas y solicita al sistema que almacene la informacin 7 El sistema almacena los datos proporcionados e imprime las etiquetas de identificacin de cintas autoadhesivas 8 El sistema informa al empleado del vdeo club que el proceso ha terminado con xito 9 El empleado del vdeoclub pega las etiquetas en las cintas y las coloca en las estanteras
63

Alta de cinta
: Empleado 1: comenzar el proceso de alta de cinta 2: 3: [pelcula ya existe] identifica la pelcula 4: [no existe] caso de uso UC04 5: Si la pelcula no est registrada, se realiza el caso de uso UC04 (Alta de pelcula) sistema

6: nmero de cintas y confirma 7: 8: Postcondicin: cintas registradas

64

16

Alta de cintas, realizacin


: Empleado todas las pelculas : Pelcula pelcula ZZ : Pelcula : Cinta

Alta de cintas, realizacin


todas las pelculas : Pelcula 4: imprime_etiqueta ( ) 1: buscar_ttulo (String)

1: buscar_ttulo (String)

Si la pelcula no est registrada, se realiza el caso de uso UC04 (Alta de pelcula) : Cinta : Empleado2: crear_cinta (Integer) 3: crear (Pelcula)

2: crear_cinta (Integer) * 3: crear (Pelcula) 4: imprime_etiqueta ( ) 5: get_ttulo ( ) pelcula ZZ : Pelcula el sistema asigna un cdigo automticamente a cada cinta 5: get_ttulo ( )

65

66

17

Potrebbero piacerti anche