diumenge, 17 de gener del 2016

Diagramas de interacción

Introducción

Una interacción es la especificación del comportamiento de un caso de uso o de una operación en terminos de secuencia de mensajes entre objetos. Estos mensajes contienen estimulos que pueden ser peticiones de ejecución de operaciones o señales. Se llama hilo de ejecución a una secuencia de imagenes.

Colaboraciones

Una colaboración es un conjunto de papeles, de clasificadores o de instancias, y de papeles de asociaciones entre los objetos que intervienen en una interacción. Las colaboraciones se utilizan por coherencia entre las clases y asociaciones definidas en el modelo estático y las asociaciones y los objetos definidos en el caso de uso. Las colaboraciones se pueden definir a partir de clasificadores o de instancias.
A veces nos interesará representar multiobjetos, que representan un conjunto de objetos de un papel con multiplicidad más grande que 1 dentro de una asociación.
UML ofrece 3 diagramas para representar interacciones y colaboraciones:

  • El diagrama de comunicación, pone énfasis en la descripción de la colaboración.
  • El diagrama de secuencia, que pone énfasis en la sucesión temporal de mensajes en una interacción.
  • El diagrama de actividades, que sirve para describir el estado de una actividad.

Diagrama de comunicación

El diagrama de colaboración es la representación de una interacción.
Parte del diagrama estático, sobre el cual se representan los mensajes de la interacción.
Cada mensaje tiene la siguiente especificación:
PREDECESORES GUARDA EXPRESIONES_SECUENCIA VALORES_RETORNO FIRMA
PREDECESORES: Lista mensajes predecesores '('NUM_SEQ, NUM_SEQ ')'
GUARDA: Condición que se tiene que cumplir para que se envíe el mensaje.
EXPRESIONES_SECUENCIA: Num_seq '['RECURRENCIA''],...,':'
RECURRENCIA: '*' '['CLAUSULA_ITERACIÓN']'
VALORES_RETORNO: Valores de retorno como consecuencia del proceso activado por el mensaje VALORES_RETORNO ',' VALORES_RETORNO ... ':='
FIRMA: Nombre estímulo y lista de argumentos.
Se puede indicar también la creación de objetos (new), destrucción (destroyed) y enlaces (transient).
Mensajes simples: corresponden a una simple ejecución dentro de un hilo de ejecución.
Mensajes asíncronos: estos mensajes se dan cuando el cliente envía un mensaje al subministrador y este acepta el mensaje. La clase que emite se espera a recibir el resultado de la operación asociada al mensaje.
Mensajes asíncronos: en este caso, la clase emisora envía un mensaje al subministrador y se continua ejecutando sin esperar que llegue el resultado de la clase receptora. En estos casos habitualmente la clase receptora pondrá en cola la ejecución de la petición recibida.
Mensaje de respuesta:
<- - - - - - - - - - - - -

Diagramas de secuencia

A diferencia de los diagramas de colaboración, los de secuencia no representan explicitamente el papel de las asociaciones. En cambio, si que representan el paso del tiempo y la durada de los mensajes.
El tiempo se representan hacia abajo, y no esta necesariamente a escala.
El horizontal, y en franges sucesivas, se representan los diferentes papeles de los clasificadores que participan en la interacción.
Los mensajes circulan de izquierda a derecha y las respuestas al revés.
Se llama línea de vida a un elemento que simboliza la existencia del papel en un cierto periodo de tiempo. Se representa por una línea vertical discontinua que va de la creación hasta la destrucción del objeto.
Para representar la destrucción de un objeto se pone una x al final de la línea de vida.
Durante la vida de un objeto pueden haber varios constructores según las condiciones que emite el mensaje.
Una activación es una parte de la línea de vida durante la cual un determinado papel ejecuta una acción o bien otros papeles ejecutan otras acciones como consecuencia de una acción ejecutada por el primero.
Las activaciones coinciden con el envío de un mensaje y la recepción de una respuesta.
Si haces llamadas reflexivas, estas se representan con otro recuadro ligeramente desplazado.
Los mensajes pueden ser del mismo tipo que los diagramas de colaboración, y las flechas se representan igual.
El orden de ejecución se representa de arriba a abajo en el tiempo.
No se identifican los números de secuencia porque están implícitos.
Pueden salir dos flechas de un mismo punto de activación si se envían dos mensajes a la vez.
Los mensajes de retorno se representan con una línea discontinua.

Concreciones y ejemplos:
Los diagramas de casos de uso, se presentan una vista externa del sistema. Los diagramas de interacción, que incluyen los de secuencia, describen como los casos de uso se realizan (se hacen realidad) como interacción entre conjuntos de objetos.
Los diagramas de secuencia muestran el flujo de mensajes (events) entre diversas instancias al largo del tiempo. De hecho, ofrecen una manera formal de especificar un escenario.
Se puede ver inmediatamente la orden en que se envían los mensajes porque el tiempo es una dimensión explícita del diagrama (eje vertical).
Cada instancia se representa mediante un recorrido vertical diferente.
Es una vista gráfica de un escenario (un camino concreto de un diagrama de casos de uso) que ilustra las interacciones entre objetos como secuencia temporal. De hecho, se puede crear a partir del caso de uso que se describe.
Actores y objetos: son los elementos que se comunican. Como tanto los objetos como los actores, son instancias, se hace uso de la nomenclatura del objeto con dos puntos y el nombre subrayado.
Lineas de vida:  son unas lineas que representan la vida de los objetos (o actores) a lo largo del tiempo. El tiempo va de arriba hacia abajo. La línea se hace gorda cuando este objeto esta ejecutando una operación. Decimos que el objeto es activo en ese momento. A menudo, los objetos dejan de existir. Para indicar el punto donde un objeto se destruye, se pone un aspa o cruz al final de la línea.
Mensajes: se representan con flechas que van de emisor a receptor y están etiquetadas con el mensaje que envían. La recepción de un mensaje hace que el objeto inicie su actividad. El retorno de la llamada se indica con una flecha a trozos. Sólo es necesario ponerlo si queremos hacer explicito lo que se devuelve. Si no, se puede suponer que devuelve cuando la zona activa del receptor acaba.
Los diagramas de secuencia permiten hacer uso de algunas estructuras de control, que van muy bien para simplificarlos.
Cuando hacemos uso de estructuras de control no estamos representando sólo un escenario concreto, sino que estamos generalizando.
Ejemplo de mensaje entre dos objetos:
Ejemplo de ejecución condicional del diagrama de secuencia.
El diagrama indica dos maneras de expresar alternativas. Una haciendo una parte de la vida condicional y otra condicionando el envío del mensaje con una guarda.

Si hiciese falta un mensaje a cada uno del conjunto de objetos, podemos simplificar el diagrama representando el conjunto de objetos con un objeto múltiple como se muestra en la figura superior.

A veces un objeto puede crear o eliminar otro objeto.
Esto se puede representar como mensajes especiales.
Un mensaje de creación no apunta a una zona activa de la línea de vida, sino que apunta al objeto mismo (Tiene que estar mas abajo que los otros).
El mensaje de destrucción apunta hacia un aspa al final de la línea de vida que representa el final de la vida del objeto.
Ejemplo de creación, destrucción y llamadas a métodos propios.
Diagramas de secuencia vs colaboración
El diagrama de colaboración es, como el diagrama de secuencia, otra realización de los casos de uso. Son una combinación de los diagramas de objetos y los de secuencia. Muestra el flujo de sucesos entre objetos.
Ejemplo de diagrama de colaboración:
Recordamos que el diagrama de colaboración muestra como los objetos trabajan los unos con los otros enviando mensajes y intercambiando datos. Los diagramas de colaboración y secuencia son dos vistas diferentes de las interacciones entre objetos. Las dos vistas representan exactamente la misma información.
El diagrama de secuencia refuerza la vista temporal, pero es necesario seguir el diagrama para saber quien relaciona con quien.
El diagrama de colaboración refuerza las relaciones que se establecen entre los objetos, pero hace falta seguir el diagrama para saber el orden de los mensajes.


Diagrama de actividades

El diagrama de actividades es una variante del diagrama de estado y del diagrama de interacción porque sirve para describir el estado de una actividad que es el conjunto de acciones secuenciales o concurrentes en la cual pueden intervenir varios clasificadores.
Estos diagramas tienen muchos elementos en común con los diagramas de colaboración y con los estados. Los conceptos de transición, estado, evento, señal, flujo de control y objetos son el mismo.
Los elementos específicos son:

  • Estados de acción.
  • Flujos de objetos.
  • Estados de flujos de objetos.
  • Estados de subactividades.
  • Swimlanes
  • Iconos de control.

Los diagramas de actividades se utilizan para capturar flujos de actividades y secuencias de decisiones. Son ideales para representar el comportamiento interno:

  • de un método (la realización de una operación).
  • de un caso de uso.
  • de un proceso de negocio (workflow).
Se pueden entender como una extensión de los diagramas de estado, donde cada estado se caracteriza por estar ejecutando una actividad y, donde todas las transiciones son automáticas cuando se acaba la actividad. Ahora bien, se enriquece de otros elementos:
  • Puntos de decisión: condiciones que cambian el flujo de las acciones.
  • Caminos de ejecución concurrentes.
  • Señales, con puntos de envío y recepción explícitos.
  • Objetos afectados por las acciones.
En UML 2.0 es posible representar condiciones, sincronizaciones, señales, tokens...

Las actividades se enlazan mediante transiciones automáticas, y a través de estas pasarán de una actividad a otra.
Cuando una actividad acaba, se desencadena el paso a la siguiente actividad, automáticamente.
Las actividades no tienen transiciones internas ni transiciones desencadenadas por eventos. Podríamos decir que las transiciones se disparan de manera automática, cuando finaliza una actividad.
Es una variación de una máquina de estados en la cual los estados representan la ejecución de acciones o subactividades y las transiciones se disparan por la finalización de las accioens o subactividades.
El diagrama de actividades representa la máquina de estados de un procedimiento.

Ramificaciones y fusiones:
Una ramificación (branch) es una división del flujo de actividades en dos hilos alternativos. Cada vez que se ejecute el diagrama, se optará por uno o otro dependiendo de la condición.
La condición esta especificada como guarda a cada una de las conexiones que salen.
Una fusión (merge) es la unión de dos hilos alternativos en un solo hilo.
Las ramificaciones y las fusiones se representan con un rombo vacío.

Divisiones y uniones:
Las barras de sincronización permiten, igual que las ramificaciones y fusiones, dividir el flujo de actividades en varios hilos y después adjuntarlos de nuevo. La diferencia esta en que ahora no son hilos alternativos, sino hilos concurrentes. Eso quiere decir que siempre se ejecutaran los dos hilos y siempre se ejecutaran a la vez.
La barra que separa los hilos la llamamos barra de fork, y la barra que adjunta los hilos la llamamos barra de join. Hace falta decir que la barra de join tiene una consecuencia, si un hilo llega antes que el otro al punto de join, necesitará esperar a que el otro llegue, entonces es un punto de sincronización.
Carriles o swimlanes
Los carriles sirven para separar las actividades que realizan diferentes objetos o actores. Unas lineas gordas a modo de corchea, dividen en carriles el diagrama. A cada carril le pondremos solamente las actividades que hará el actor o objeto al cual pertenece el carril.
Flujo de objetos: Entradas y productos
A menudo, las actividades requieren de la existencia de objetos o generan objetos o cambian su estado. Estos objetos se pueden añadir al diagrama con las convenciones del diagrama de objetos. Podemos relacionar los objetos con las actividades haciendo uso de flechas que indican el flujo del objeto.





1. Partiendo del siguiente diagrama de secuencia, responde a las preguntas:
a) ¿Qué objetos (nombre y clasificador) intervienen en el diagrama?
Objeto: Q1:C1
  • Nombre: Q1
  • Clasificador: C1
Objeto: Q2:C2
  • Nombre: Q2
  • Clasificador: C2
Objeto: Q3:C3
  • Nombre: Q3
  • Clasificador: C3
Objeto: :C4
  • Nombre: / Qualsevol
  • Clasificador: C4
b) ¿Qué objetos son creados y destruidos durante la interacción?
Creados: Q2:C2
Destruidos: Q3:C3

c) Dibuja el diagrama de comunicación equivalente.


2. 
a) Que tipo de diagrama UML es?
Diagrama de actividades.
b) Segun lo que se representa en el diagrama, en el caso que se produzca un error en el procesamiento de una comanda, que puede hacer el usuario? Que le pasa al sistema?
El usuario no puede hacer nada.
c) Dibuja el diagrama de estados de una comanda a partir de la información representada en este.



Cap comentari :

Publica un comentari a l'entrada