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

Diagramas de Interacción

n Los diagramas de interacción son modelos que


describen como grupos de objetos colaboran para
Diagramas de Interacción conseguir algún fin.
n Estos diagramas muestran objetos, así como los
mensajes que se pasan entre ellos dentro del caso de uso
5.1. Diagramas de interacción entre objetos
n Los diagramas de interacción capturan el
5.2. Diagramas de secuencia
comportamiento de un caso de uso.
5.3. Objetos y sus relaciones: Colaboración entre objetos.
n Los diagramas de interacción se expresan de dos
5.4. Aplicaciones de las técnicas. La fase de análisis.
maneras:
n diagramas de secuencia
n diagramas de colaboración
Ingeniería del Software II – 3º Gestión
1 2

Diagramas de secuencia
Diagramas de Secuencia
y colaboración
Cada uno de ellos resalta ciertos aspectos en particular:
: Libro : Ficha socio : Ficha libro : Préstamo
: Encargado
• Los diagramas de colaboración muestran las relaciones
entre los objetos y los mensajes que intercambian

• Un diagrama de secuencias muestra las interacciones


expresadas en función de secuencias temporales. Verificar situación socio

Situación socio ok

n muestra los objetos participantes en la interacción por Verificar situación libro

sus líneas de vida, y los mensajes que intercambian Situación libro ok

entre ellos al correr del tiempo. Introducir préstamo

n Sin embargo, no muestra los enlaces entre los objetos.

3 4

1
Diagramas de Colaboración Diagramas de secuencia
: Ficha s n Un diagrama de secuencias muestra las interacciones expresadas
ocio
3: Verificar situación socio en función del tiempo.
4: Situación socio ok
n En concreto muestra los objetos participantes y los mensajes que
intercambian entre ellos a lo largo del tiempo.
6: Situación libro ok : Encargado
: Présta
7: Introducir préstamo mo n Los diagramas de secuencias son más apropiados para
especificar restricciones de interacción en tiempo real.
5: Verificar situación libro

: Ficha li
bro n Un diagrama de secuencias tiene dos dimensiones,
• la vertical que representa el tiempo, y
• la horizontal que representa los distintos objetos.
5 6

Diagramas de secuencia Diagramas de secuencia, Formatos:


n El tiempo avanza desde el comienzo hasta el final de la
página, aunque se puede tomar el sentido contrario.
• En forma genérica: que describirá todas las
n La exactitud temporal solo toma importancia en las posibles secuencias.
aplicaciones de tiempo real, por lo que los ejes de tiempo
suelen tener marcas temporales. • En forma instancia: que describe una
secuencia en concreto pero de forma
n El orden horizontal de aparición de los objetos no tiene
ninguna importancia. consistente a lo especificado en la forma
genérica.
n La notación está tomada, en gran parte, del diagrama de
secuencias de mensajes entre objetos de Buschmann
(POSA diagrams).

7 8

2
Ejemplo de diagrama de secuencia Notación: Línea de vida (lifeline)
Ventana de Línea de Elemento
Orden
entrada de orden Orden de stock n La línea vertical representa la existencia de un objeto a lo largo de
prepar() un determinado tiempo y recibe el nombre de línea de vida del
* prepar()
condición
objeto.
comprobar()
objeto [comprobar=TRUE]
mensaje eliminar() • Si el objeto es creado o destruido, entonces su lifeline debe de
iteración necesita_reordenar()
comenzar y acabar en la línea de tiempo:
[necesita_reordenar=TRUE]
retorno nuevo n El mensaje que lo crea apuntará al objeto creado.
Elemento
ordenado n Si el objeto fuera destruido durante el diagrama, se
marcaría este evento con una gran “X”.
[comprobar=TRUE]
Elemento
nuevo
ordenado • En caso contrario la línea irá de la parte inferior a la superior
del diagrama.

n Una línea de vida se puede ramificar en varias para representar


9 condiciones. 10

Diagramas de secuencia: Notación Notación: activación

n Una activación muestra el periodo durante el cual un objeto


realiza una acción.
• Una activación se representa como un rectángulo
alineado con los momentos en que se inicia y en que
finaliza.
• La acción que realiza aparece opcionalmente descrita en
una etiqueta próxima al símbolo de activación o en el
margen izquierdo.

11 12

3
Notación: activación Notación: activación concurrente

Quien llama Línea telefónica Llamado • En objetos concurrentes, la activación muestra el intervalo en el
que un objeto está realizando una operación.
§ Ejemplo descuelga

tono sensor : controlador : alarma :


Sensor Controlador Alarma
marcar

Las bandas temp()


temp_alta()
rectangulares
indicación de llamada timbre

listo()
representan los descuelga

periodos de
actividad de los diga?

objetos

13 14

Notación: mensaje
Notación: activación procedural (común con diagramas de colaboración)
• En código procedural (o concurrente sincrónizado) la activación
muestra el intervalo de tiempo durante el cual un procedimiento o n Un mensaje es una comunicación entre objetos que
un procedimiento subordinado está activo. contiene información y que espera la realización de una
diálogo : controlador : factura1 : acción.

n El receptor de un mensaje normalmente lo considera un


pagar()
evento.

n El orden en que ocurren los mensajes se muestra de arriba


a abajo en el diagrama.

n Se contempla la posibilidad de que un objeto se envíe


mensajes a sí mismo.

15 16

4
Notación: mensaje Notación: mensaje
n Cada mensaje se representa por una flecha entre las líneas de vida
de los objetos. n El mensaje puede incluir los argumentos e información de
control.
n La flecha se etiqueta con el nombre del mensaje, (operación o
señal) y opcionalmente con un número secuencia. n La información de control se puede expresar mediante una
condición, una marca de iteración o la forma de las flechas
n Normalmente las flechas son horizontales, pero si hubiera un de los mensajes:
tiempo de propagación la línea se suele representar oblicua.
• punta de flecha abierta: flujo de control genérico
n Existe la posibilidad de reflejar el retorno de un mensaje. (habitualmente asíncrono)
• punta de flecha sólida: Se usa con llamadas a
• Se representa por una flecha cuya cabeza son dos líneas (esto procedimiento anidadas. También cuando un objeto
es punta de flecha no rellena). concurrente espera hasta que se complete la llamada.
• Se suele omitir la flecha de retorno en los flujos procedurales
(el retorno está implícito) • media punta de flecha: flujo de control asíncrono, de
forma explícita
17 18

Tipos de mensajes Tipos de Control


a b
§ El Diagrama de Secuencia refleja de manera
indirecta las opciones de control

§ Un control centralizado tiene una forma como


a : aa b : aa
esta:
El retorno se
considera implícito
cuando el envío es
síncrono

El retorno, si lo hay
debe ser explícito
cuando el envío es
asíncrono

19 20

5
Tipos de Control Notación: mensaje

§ Un control descentralizado tiene una forma como esta: n Tiempos de Transición


• Una transición, (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 transmisión no sea
instantánea, si la transición es A, su llegada a
destino es A’.

21 22

Ejemplo de diagrama de secuencia Etiqueta del mensaje

La etiqueta (en diagramas de secuencia y de colaboración) tiene


la sintaxis siguiente:

Predecesor ‘/’ condición-guarda expresión-secuencia ‘:’


signatura

n Predecesor: lista de números de secuencia (mensajes que


deben ocurrir previamente), terminada con ‘/’. Si es obvio, se
omite.
A3,B4/ C3.1*: actualizar ()

23 24

6
Etiqueta del mensaje: secuencia Etiqueta del mensaje: secuencia

n La secuencia en diagramas de secuencia (procedurales) se


suele omitir. La secuencia se expresa con números enteros
o números enteros anidados, si se trata de mensajes 1: a()
encadenados: 1.1: b()

1.2: b()
• 1, 2: c()
n 1.1, 2.1: d()
2.1.1: e()
• 1.1.1
• 2
n 2.1
n 2.2

n Pero si hay concurrencia se emplean letras:


• 1,
n 1.1, 1.1a, 1.1b
25 26

Etiqueta del mensaje: secuencia Estructuras de control


• Además se puede indicar una condición:
§ Las bifurcaciones condicionales pueden
[x < 0] 4.1: mensaje (como condición de guarda) representarse de esta forma:
4.1[x < 0] : mensaje (como iteración única?)

If condición [cond a]: f()


• Puede incluir una cláusula de iteración:
else [cond b]: g()
4 *[i:=1..n]:mensaje
end if

27 28

7
… Estructuras de control … Estructuras de control
§ Podemos representar iteraciones en el envío de § La iteración, como comentario al margen:
mensajes, p.e., mientras se cumpla una condición.
§ La iteración puede expresarse como parte del
mensaje:
While X
Loop

end Loop
*[condición] Mensaje

Sólo tiene sentido si queremos un diagrama de


secuencia general, no una instancia concreta
29 30

Object2: Object3: lnkBillete:


Vuelo Reserva Billete

Object1
Etiqueta del mensaje: signatura
Precio():double

calcular_precio():double Predecesor ‘/’ condición-guarda expresión-secuencia ‘:’ signatura

tiene_billete:= y a su vez signatura es:


billete_comprado():boolean
valor-retorno ‘:= ’ nombre-mensaje lista-argumentos

[tiene_billete]:
n valor-retorno: omitido si el mensaje no tiene un
coste:=calcular_precio():double
resultado.
if(tiene_billete)

Together:
else n nombre-mensaje: el nombre de la operación en el
objeto receptor.

n lista-argumentos entre paréntesis


31 32

8
Notación: etiqueta del mensaje Diagramas de colaboración

n El diagrama de colaboración muestra cómo las


Ejemplos de etiquetas de mensajes: instancias específicas de las clases trabajan juntas para
conseguir un objetivo común.
2: display (x, y) mensaje simple
n Implementa las asociaciones del diagrama de clases
1.3.1: p:= encontrar(espec) llamada anidada con mediante el paso de mensajes de un objeto a otro.
valor de retorno
n muestra las relaciones sobre los objetos sin mostrar la
[x < 0] 4: invertir (x, color) mensaje condicional dimensión temporal de dichas relaciones
A3,B4/ C3.1*: actualizar () sincronización n la secuencia de los mensajes vendrá dada por números
de secuencia.
33 34

Diagramas de colaboración Diagramas de colaboración: Notación


n contexto de la colaboración
SensorTempInterno SensorTemperatura::SensorTempExterno n interacción

1: TempInterna() 1: maximo_alcanzado ( )
1.1: TempExterna() : Usuario

Controlador::ControladorTemp
: bibliotecario 2: ejemplares disponibles ( )

1.3: Velocidad()
1.2: Voltaje()
: Libro

VentiladorInterno Calentador::CalentadorInterno : Ejemplar


2.1: prestado ( )

35 36

9
Diagramas de colaboración Diagramas de colaboración

n Una colaboración incluye dos tipos de constructores: n Una colaboración puede estar asociada a un tipo, una
operación o un caso de uso para describir sus efectos
• una descripción de la estructura estática de los objetos externos:
afectados, incluyendo sus relaciones
• una descripción de la secuencia de mensajes Se trata de una especificación que describe los cambios
intercambiados sobre los objetos para realizar el trabajo. producidos en un entorno externo
n Una colaboración puede estar asociada a una clase, a un
n El primer aspecto es el contexto de la colaboración mientras método, (implementación de una operación), o a la
que el segundo es la interacción soportada por la realización de un caso de uso:
colaboración. n Se está describiendo una implementación estos elementos
internamente.
n Ambos son necesarios para una especificación completa, y
acostumbran a describirse en conjunto.
37 38

Diagramas de colaboración Diagramas de colaboración: Notación

n Los objetos se representan mediante rectángulos y los nombre se


subrayan. 1: maximo_alcanzado ( )
: Usuario
n Se representan también los enlaces estáticos, instancias de
asociaciones y elementos transitorios, como un argumento de una
operación.
: bibliotecario
2: ejemplares disponibles ( )
n También pueden aparecer actores provenientes de los casos de uso,
representando una interacción simplificada con el sistema
: Libro

n Cuando la interacción afecta a varios objetos se utiliza un símbolo


que representa objetos múltiples. : Ejemplar
2.1: prestado ( )

39 40

10
Diagramas de colaboración: Notación Diagramas de colaboración
n En sistemas concurrentes, un objeto activo es aquel que tiene el flujo
de control y se denota con bordes más gruesos.

41 42

Aplicaciones de la técnica Documentar casos de uso. Opción 1


n Para documentar los casos de uso n Se describen los mensajes que el actor envía al sistema (Pero muchos libros,
n En ese caso sólo hay dos tipos de objetos: el actor (o actores) y el utilizan mensajes en sentido contrario—¿peligro?)
sistema (como caja negra)
sistema :
n Para REALIZAR los casos de uso y ENCONTRAR LAS : Bibliotecario
Sistema

OPERACIONES DE CADA CLASE comenzar el proceso de préstamo


n Al nivel de análisis
Se realiza el caso de uso:
n Aparecen los actores y los objetos del dominio Identificación de socio
n Al nivel de diseño
n Se sustituyen los actores por objetos de interfaz (diálogos, o incluso comprueba la situación del socio
ventanas, botones, etc...)
identifica el libro

En cualquiera de los casos, es preferible utilizar escenarios, empezando por la identifica un ejemplar y solicita al sistema que registre el préstamo
secuencia normal (es la más completa)

43 44

11
Documentar casos de uso. Opción 2? Realización de un caso de uso
sistema :
Sistema n Precondición:
: Bibliotecario
1: comenzar el proceso de préstamo
n Diagrama de clases
n Casos de uso
Se realiza el caso de uso Identificación de socio
n Cada paso del actor à mensaje al sistema
2: comprueba la situación del socio sistema :
Sistema
: Bibliotecario

¿Mensaje 3: identifique el libro comenzar el proceso de préstamo

/respuesta Se realiza el caso de uso:


recibido 4: identifica el libro Identificación de socio

por un comprueba la situación del socio


actor? 5: ejemplares disponibles

identifica el libro

6: identifica un ejemplar y solicita al sistema que registre el préstamo


identifica un ejemplar y solicita al sistema que registre el préstamo

7: proceso de registro ha terminado

45 46

Realización de un caso de uso ... Pero necesito el modelo de dominio:


Préstamo
n Se aplica la filosofía CRC Libro fecha de inicio
Ejemplar duración
titulo
n En los casos de uso, cada paso supone un mensaje disp
1
numero
1
*
* 1
*
al que debe responder el sistema:
*
n ¿Quién es el objeto responsable? à operación en su
clase: ejemplares_disponibles(): INTEGER Usuario
nombre 1
n ¿Con que otros objetos colabora (mensajes anidados)? * apellidos 0..1
à operaciones en las clases responsables secundarias: Autor direccion Devolución
nombre retraso
prestado(): BOOLEAN apellidos 1 fecha devolución
fecha nac

1
* Multa
0..1
fecha multa
dias multa

47 48

12
Realización de un caso de uso Realización de un caso de uso
4: crear(fecha, alumno, ejemplar)

: Préstamo
: Libro : Préstamo : Libro : Ejemplar : Ejemplar
: Bibliotecario
5: set prestado ( )
: Bibliotecario

buscar_libro (string)
2: ejemplares disponibles ( )
: Ejemplar
ejemplares disponibles ( ) prestado ( )

: Libro
1: buscar_libro (string)
crear(fecha, alumno, ejemplar)

set prestado ( )
3: prestado ( )
: Libro * : Ejemplar

49 50

Escenarios Conexión de casos de uso


alternativos y excepcionales (incluye o extiende).
n Se parte de un escenario “normal”
n Los escenarios alternativos representan n Se pueden utilizar notas para indicar un caso de
pequeñas variantes uso incluido (o un punto de extensión)
n Las excepciones,
n O bien vuelven al recorrido normal n Se pueden plantear diagramas de interacción
n O bien cancelan el escenario... para un escenario que recorra varios casos de
uso (más claro pero más largo)
No hay que perder de vista la utilidad de la técnica:
Encontrar los mensajes y las operaciones asociadas

51 52

13
Larman, “Patrones”: Experto “Patrones”: Creación
Sale
n buscar la clase que n asignar a B la responsabilidad de crear instancias de A si:
date
tiene la información time n B es una agregación/comp. de A

necesaria para una 1


n B registra los objetos A
Contains
responsabilidad 1..*
n B conoce la información necesaria para crear/inicializar A

Product
Sales Specification
1
LineItem * Described-by
description
quantity price
itemID todas las películas película ZZ :
: Empleado : Película Película

t := getTotal() Sale
:Sale 2: crear_cinta (Integer)
3: crear (Película)
: Cinta
date
time

New method getTotal()

53 54

Detalles de diseño.... “Patrones”: Controlador


n 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)

Pulsa botón
n el trabajo de ese actor (controlador de tareas)

:Cajero

actionPerformed ( actionEvent)

Añade_producto ()
:Registradora
Interfaz
:SaleJFrame
Evento del sistema
Añade_producto()

Dominio Que objeto recibe el mensaje...? Añade_producto ()


: ??? :Gestor de ventas

55 56

14
“Patrones”, en resumen... “Patrones”, en resumen...
n bajo acoplamiento y alta cohesión: n Ejemplo correcto

: Register : Sale : Register : Sale

makePayment()

makePayment()

create() makePayment()

p : Payment
create()

: Payment

addPayment( p )

mal ejemplo...

57 58

Más ejemplos: videoclub Casos de uso:


<<abstract>>
ArtistaCine

<<extend>>
Alta de película
Productora
nombre : String
Director
Actor
0..* 0..*
Empleado
0..* 0..*
Película Alta de cinta
título : String (p.extensión:
año : Integer Cinta
contiene película nueva)
duración : Time número : Integer
tema : String 1 0..*

untitled () 0..*

1 alquiladas
{subset}
Baja de cinta

59 Consulta de película 60

15
Alta de película Alta de película, mensajes
• 1 El empleado del vídeo–club solicita al sistema comenzar el proceso de alta de
película sistema
: Empleado

• 2 El sistema solicita los siguientes datos de la nueva película:


1: comenzar el proceso de alta
duración, actores principales, director, productora y año de producción
• 3 El empleado del vídeo–club proporciona los datos requeridos y solicita al sistema 2:
que los almacene
3: proporciona los datos: título, tipo de película, duración, actores principales, director,
• 4 El sistema almacena los datos proporcionados
4:
• 5 El sistema informa al empleado del vídeo –club que el proceso ha terminado con
éxito 5:

Postcondición
• El sistema ha almacenado la información correspondiente a la nueva película
Excepciones
El sistema ha almacenado la información correspondiente a la
• 4 Si el sistema detecta que la película ya está registrada, el s istema, informa de la
situación al empleado del vídeo –club permitiéndole modificar los datos
proporcionados, a continuación este caso de uso continúa 61 62

Alta de cinta Alta de cinta


1 El empleado del vídeo–club solicita al sistema comenzar el proceso de alta de sistema
: Empleado
cinta
2 El sistema solicita que se identifique la película que contien e la cinta 1: comenzar el proceso de alta de cinta

2:
3 El empleado del vídeo–club identifica la película
4 Si la película no está registrada, se realiza el caso de uso U 3: [película ya existe] identifica la película Si la película no está
registrada, se realiza el
caso de uso UC–04 (Alta
5 El sistema solicita el número de cintas de la película a dar d e alta 4: [no existe] caso de uso UC–04 de película)
5:
6 El empleado del vídeo–club proporciona el número de cintas y solicita al sistema
que almacene la información
7 El sistema almacena los datos proporcionados e imprime las etiquetas de
identificación de cintas autoadhesivas
6: número de cintas y confirma
8 El sistema informa al empleado del vídeo –club que el proceso ha terminado con
éxito 7:
8:
9 El empleado del vídeo–club pega las etiquetas en las cintas y las coloca en las
estanterías Postcondición:
63 cintas registradas 64

16
Alta de cintas, realización Alta de cintas, realización
todas las películas : Película

todas las películas película ZZ : : Cinta 4: imprime_etiqueta ( )


: Empleado : Película Película 1: buscar_título (String)

Si la película no está registrada,


1: buscar_título (String) se realiza el caso de uso UC–04
(Alta de película)

: Cinta
3: crear (Película)
: Empleado2: crear_cinta (Integer)
2: crear_cinta (Integer)

* 3: crear (Película) 5: get_título ( )


4: imprime_etiqueta ( ) película ZZ : Película
el sistema asigna un
5: get_título ( ) código
automáticamente a
cada cinta

65 66

17

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