Está en la página 1de 26

Diagrama de Secuencia

Universidad Mariano Gálvez


Facultad de Ingeniería en Sistemas
Vista Dinámica
• Tiende a analizarse como pequeñas piezas del
sistema, esto es, como escenarios individuales o
operaciones.
• La vista dinámica representa las interacciones de
los objetos en un sistema.
• Puede representar como el sistema responderá a
las acciones de los usuarios, como los datos son
movidos del almacenamiento a la vista del
usuario y como los objetos son creados y
manipulados.
• Los diagramas de Clases y los de la vista dinámica
son los más usados en proyectos ya que son los
que revelan más directamente características
específicas requeridas en el código final.
• Hay tres diagramas en la vista dinámica: el de
Secuencias, el de Colaboración y el de Estados
Diagrama de Secuencia

• Los diagramas de secuencia ilustran la


interacción entre objetos y el orden secuencial
en el que ocurren dichas interacciones, es decir
como se comunican los objetos entre sí.
• Los objetos se comunican mediante interfases,
para poder invocar a un operación.
• En los Casos de Uso se modelan las
características del sistema y se desarrollan
escenarios.
• El diagrama de secuencias proporciona un
camino a partir de los escenarios para describir
las operaciones en una forma más detallada
INTERACCIONES Y OBJETOS
• En un sistema orientado a objetos son estos
últimos los que deben controlar a los datos,
moverlos, responder preguntas, etc. Estos
trabajan juntos comunicándose y/o
interactuando con otros.
• Los diagramas de secuencias se modelan a nivel
de objetos y utilizan tres elementos
fundamentales: objetos, mensajes/estímulos y
líneas de vida de los objetos.
MENSAJES
• El primer mensaje de un diagrama de secuencia
siempre inicia hasta arriba del lado izquierdo del
diagrama. Los demás se van aumentando
ligeramente más abajo.
• Para mostrar un objeto (línea de vida) que
manda un mensaje a otro objeto, se usa una
línea con una punta de flecha sólida (operación
síncrona). El mensaje (nombre del método) se
coloca arriba de la flecha. El mensaje que se
envía representa una operación/método que la
clase objeto receptora va a implementar.
Usuario:Profesor Sistema :Registro

1:Pide NRC registro( ):int

2: return NRC

3: [para c/alumno]:add(calif)

4: alumnoExiste(expediente)

5: return yes

6: [alumnoExiste=si]:addAlumno(calificacion):boleean

7:return true

8. return
Notación figura anterior
1. Línea de vida del objeto: línea vertical punteada debajo de
cada objeto
2. Mensaje/estímulo: es una llamada, una señal o una
respuesta. Un mensaje se representa por una flecha, una
línea y la punta de flecha sólidas representan un mensaje
que requiere de una respuesta. Las líneas punteadas son
las respuestas. Se colocan horizontales entre las líneas de
vida, en una posición relativa vertical con las otras para
representar el orden en el que suceden.
3. Los números de secuencia son útiles para aclaraciones y
cambios.
4. Cada mensaje (flecha) describe una interfase/operación
con el objeto al que está apuntando, por lo que el mensaje
contiene el nombre, argumentos y en su caso el valor de
retorno, por ejemplo: addItem(product):bolean.
5. Las flechas de regreso (2 y 5) solo contienen la respuesta a
un mensaje.
Notación figura anterior
6. Iteración: Indica que una operación debe llevarse a cabos
repetidamente. Se usan [ ] para indicar el número de
veces o la condición que controla las repeticiones, por
ejemplo [para cada producto].
Diagrama de Secuencia, Caso de Uso
SurtirOrden
• Se dibuja 1 diagrama de secuencia para cada
escenario.
• Primero identificar todos los objetos
participantes, y se colocan hasta arriba del
diagrama. No importa el orden pero puede ser
que se vayan moviendo para mejorar la
comprensión del diagrama.
• Este caso incluye: el dependiente que surte las
órdenes, el sistema en sí mismo, la base de dato
de las órdenes, la orden principal y la backorder
y el inventario.
Diagrama de secuencia: objetos y
líneas de tiempo
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario
• El primer diagrama de Secuencia modela el escenario 1.
Este escenario es el camino exitoso, el más
comprensible. Los otros escenarios se van derivando del
camino principal.
• Cada paso del diagrama de flujo se convierte en un
mensaje o en un return en el diagrama de Secuencia.
• El primer paso es: El sistema pide número de orden, en
el diagrama de secuencia aparece como un
procedimiento llamado paso 1 y la respuesta del
dependiente del número de orden es el paso 2.
• El formato de un mensaje es:
▫ Un número de secuencia (opcional)
▫ Dos puntos
▫ Condición (opcional), entre corchetes cuadrados [ ].
▫ Identificación de la operación: Visibilidad (+pública, -privada,
#protegida). Nombre de la operación. Argumentos, se ponen
entre paréntesis (). Dos puntos. Tipo de dato de retorno.
Pasos 1 y 2;
obtener el número de orden
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario

1:getOrderNbr():int

2:return 12345
• El siguiente paso es la consulta a la base de
datos, en el Caso de Uso corresponde a “¿Se
encontró la orden?, en el diagrama de secuencias
se detalla el mensaje y la respuesta, que en la
siguiente figura corresponden a los pasos 3 y 4.
• El valor de regreso es simplemente él número de
orden. El diagrama de secuencias modela un
caso de prueba, por lo que el return debe ser un
valor. Si se está modelando una regla, el retorno
será el tipo de dato más que un valor.
Pasos 3 y 4;
obtener la orden usando el número de orden
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario

1:getOrderNbr():int

2:return 12345

3:getOrder(ordernbr:int):Order

4:return Order 12345


• El siguiente paso es “Desplegar Orden”, (mostrar
la orden correspondiente). Ya que este mensaje
no requiere respuesta, la figura muestra el uso
de una comunicación asíncrona usando una
flecha con punta tipo
• En este caso no hay flecha de retorno
correspondiente. No hay valor de retorno y por
lo tanto el tipo de retorno es “void”.
Poner un mensaje asíncrono
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario

1:getOrderNbr():int

2:return 12345

3:getOrder(ordernbr:int):Order

4:return Order 12345

5:displayOrder(Order):void
• Una vez que se desplegó la orden en el paso 5, el sistema
le pide al usuario que seleccione el primer ítem para
buscarlo, es el paso 6: getItem( ):int.
• El sistema espera obtener un entero que represente el
número de ítem en la Orden para buscarlo, obtiene la
respuesta en el paso 7: item #1.
• El sistema en el paso 8 busca el item en el inventario:
▫ 8:[item found] getProduct(itemnbr:int):boolean
• En el paso 9 responde true, significa que si lo encontró,
recordemos que estamos en el camino más sencillo.
• En el paso 10 el sistema pide la cantidad de producto y el
dependiente se la da en el paso 11.
• En los pasos 12 y 13 se actualiza el inventario y responde
que se llevó a cabo la operación, (return verdadero)
Continuación…
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario
[para c/ítem]:Finalizar()
6:getItem():int
7:return item#1

8:[item found] getProduct(itemnbr:int):boolean

9:return true

10:getQty( 9:int

11: return 25kg

12:reduceinv(prod:Product):boolean

13:return true
Observaciones
• En la figura se pueden ver las activaciones de los
objetos: los rectángulos verticales angostos en
las líneas de tiempo. Las activaciones indican
cuando está ocupado cada objeto. La activación
inicia cuando un mensaje toca la línea de tiempo
y termina cuando la respuesta es enviada de
regreso.
• En el caso del objeto system, su activación está
en todo el diagrama mostrando que el sistema
está vigilando todo el juego de interacciones.
También se conoce como el foco.
Escenario 2
• Se repiten los pasos 1, 2 y 3 del escenario 1.
• El siguiente paso debe desplegar el mensaje de
que la orden no se encontró.
Escenario 2
:Dependiente :System :OrdersDB 12345:Order 2345:Order :Inventario

Repetir pasos 1 al 3 del escenario 1 y después:

1:displayMsg(chars):void
Escenario 3
• Son los mismos primeros 7 pasos del escenario 1.
• Si el ítem no se encuentra, hay que crear una
backorder.
Escenario 3
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario

Repetir pasos 1 al 7 del escenario 1 y entonces:


Si [item not found] crear una backorder

1:[items no
surtidos>0]backorder(item:int):Order

2: return Order 23456


Escenario 4
:Dependiente :System :OrdersDB 12345:Order 23456:Order :Inventario
[para c/ítem]:Finalizar()
6:getItem():int
7:return item#1

8:[item found] getProduct(itemnbr:int):boolean

9:return true

10:getQty( 9:int

11: return 25kg

12:reduceinv(prod:Product):boolean

13:return true

Repetir todos los pasos del 1 pero incluir el ciclo para repetir para todos los
items
Objetivo Diagrama de Secuencias
• Descubrir las interfases requeridas para cada
objeto y validar que cada interfase se usa
realmente.
• El diagrama de Secuencias modela interacciones
entre objetos. Ya que estas interacciones pueden
ser muy complejas, se modelan un pequeño
juego de interacciones como un solo escenario.
Resumen: para construir el diagrama
• Identificar a los objetos participantes
• Dibujar una línea vertical bajo cada objeto, que
representa la línea de tiempo
• Cada mensaje se convierte en una línea
horizontal del objeto que manda al que recibe.
• Para un mensaje síncrono o procedimiento de
llamada se requiere una respuesta.
• Los asíncronos no necesitan respuesta.

También podría gustarte