DIAGRAMAS DE
INTERACCION
26 de marzo de 1999
Contenido
-
Modelando flujos de control por orden de tiempo
-
Modelado flujos de control por organización
-
Ingeniería hacia adelante e ingeniería
inversa
Definiciones
Diagramas de interacción
Muestran una interacción, que consiste
de un conjunto de objetos y sus relaciones, incluyendo los
mensajes
que puedan ser realizados entre ellos. Son importantes para modelar los
aspectos dinámicos de un sistema y para construir sistemas ejecutables
a través de ingeniería hacia adelante e ingeniería
inversa.
Comúnmente contienen:
Pueden servir para visualizar, especificar,
construir y documentar los aspectos dinámicos de una sociedad particular
de objetos, o pueden ser usados para modelar un flujo particular de control
de un caso de uso.
Los diagramas de interacción están
conformados por los diagramas de secuencia y los diagramas de colaboración.
Diagramas de secuencia
Enfatiza el orden de tiempo de los mensajes.
Gráficamente, este diagrama es una tabla que muestra objetos
ordenados junto al eje de las X y los mensajes, son ordenados en
incremento de tiempo junto al eje de las Y.
Diagrama de colaboración
Enfatiza la organización estructural
de los objetos que envían y reciben mensajes. Gráficamente,
es una colección de vértices y arcos.
Para hacer un diagrama de secuencia
-
Colocar los objetos que participan en la interacción
en la parte de arriba del diagrama, a través del eje de las X.
-
Colocar los objetos que inician la interacción
a la izquierda y los objetos más subordinados a la derecha.
-
Colocar los mensajes que estos objetos envían
y reciben junto al eje de las Y, en orden de incremento de tiempo de arriba
hacia abajo.
-
Existe la línea de vida del objeto, que representa
la existencia de un objeto en un período de tiempo.
-
Existe el foco de control, que muestra el período
de tiempo en el que el objeto se encuentra representando una acción
Para hacer un diagrama de colaboración
-
Colocar los objetos que participan en la interacción
como los vértices en una gráfica.
-
Interpretar las ligas que conectan a estos objetos como
los arcos de la gráfica.
-
Adornar estas ligas con los mensajes que los objetos
envían y reciben.
-
Establecer una ruta, para indicar como un objeto es
ligado a otro. Podemos unirle un estereotipo al final de una liga.
-
Establecer un número de secuencia, para indicar
el orden de tiempo de un mensaje. Éste debe ser único.
Diferencias entre los diagramas
se secuencia y colaboración
Diagrama de secuencia:
-
Línea de vida de los objetos: representa
la existencia de un objeto sobre un período de tiempo.
-
Foco de control: muestra el período
de tiempo durante el cual un objeto está representando una acción.
Diagrama de colaboración:
-
Ruta: indica como un objeto es ligado a otro.
-
Número secuencial: para indicar el
orden de tiempo de un mensaje.
Usos comunes
Usamos diagramas de interacción para modelar
los aspectos dinámicos de un sistema. Estos aspectos dinámicos
pueden involucrar la interacción de cualquier tipo de instancias
en cualquier vista de una arquitectura del sistema, incluyendo instancias
de clases (incluyendo clases activas), interfaces, componentes y nodos.
Al usar estos diagramas, lo hacemos en el contexto
del sistema como un todo, un subsistema, una operación, o una clase.
Podemos unir diagramas de interacción para casos de uso (para modelar
un escenario) y para colaboraciones (para modelar los aspectos dinámicos
de una sociedad de objetos).
Cuando modelamos los aspectos dinámicos de
un sistema, usamos diagramas de interacción de dos maneras:
1. Para modelar flujos de control por orden de
tiempo
Se usan diagramas de secuencia. Se
hace énfasis en el paso de mensajes, en cómo se desenvuelven
sobre el tiempo, lo cual es una manera útil para visualizar el comportamiento
dinámico en el contexto de un escenario de un caso de uso.
2. Para modelar flujos de control por organización
Se usan diagramas de colaboración.
Se hace énfasis en las relaciones estructurales entre las instancias
dentro de la interacción y junto con los mensajes que pueden ser
pasados.
Los diagramas de colaboración hacen un mejor
trabajo para visualizar iteraciones y bifurcaciones complejas y para visualizar
flujos de concurrencia múltiple de control.
Modelando flujos de control por
orden de tiempo
-
Establecer el contexto para la interacción, ya
sea si es un sistema, subsistema, operación, clase o escenario de
un caso de uso o colaboración.
-
Establecer el escenario para la interacción identificando
cuáles objetos juegan un rol en la interacción. Poniéndolos
en el diagrama de secuencia de izquierda a derecha, colocando los objetos
más importantes y a sus objetos vecinos a la derecha.
-
Establecer la línea de vida para cada objeto.
En muchos casos los objetos persistirán a través de toda
la interacción. Para estos objetos que son creados y destruidos
durante la interacción, establece sus líneas de vida adecuadas
e indicar su nacimiento y su muerte con mensajes estereotipados adecuados.
-
Comenzando con los mensajes que inician esta interacción,
poner cada mensaje subsecuente de arriba hacia abajo entre las líneas
de vida, mostrando cada propiedad del mensaje (tales como sus parámetros),
tan necesario como para explicar la semántica de la interacción.
-
Si se necesita visualizar el anidamiento de mensajes
o los puntos a tiempo cuando la computación actual esta tomando
lugar, adornar cada línea de vida de los objetos con su foco de
control.
-
Si se necesita especificar restricciones de tiempo o
espacio, adornar cada mensaje con una marca de tiempo y unir restricciones
de tiempo o espacio adecuadas.
-
Si se necesita especificar este flujo de control más
formalmente, unir pre- y postcondiciones a cada mensaje.
Modelando flujos de control por
organización
-
Establecer el contexto para la interacción, ya
sea si es un sistema, subsistema, operación, clase o escenario de
un caso de uso o colaboración.
-
Establecer el escenario para la interacción identificando
cuáles objetos juegan un rol en la interacción. Poniéndolos
en el diagrama de colaboración como vértices en una gráfica,
colocando los objetos más importantes en el centro del diagrama
y sus objetos vecinos hacia afuera.
-
Establecer las propiedades iniciales de estos objetos.
Si los valores de los atributos, los valores etiquetados, el estado, o
rol de cualquier objeto cambia de manera significante en la duración
de la interacción, colocar un objeto duplicado sobre el diagrama,
actualizarlo con estos nuevos valores y conectarlos con un mensaje estereotipado
como become o copy (con un número de secuencia adecuado).
-
Especificar las ligas entre estos objetos, junto con
los mensajes que puedan ser pasados.
- 1. Colocar
primero las ligas de asociación; éstas son las más
importantes
porque representan las conexiones estructurales.
- 2.
Colocar después las otras ligas y adornarlas con rutas de estereotipos
adecuados (tales como global y local) para especificar explícitamente
cómo
estos objetos están relacionados unos con otros.
-
Empezando con el mensaje que inicia la interacción,
unir cada mensaje subsecuente a la liga adecuada, estableciendo su número
de secuencia. Mostrar anidamiento usando números decimales.
-
Si se necesitan especificar restricciones de tiempo
o espacio, adornar cada mensaje con una marca de sincronización
y unir restricciones de tiempo o espacio adecuadas.
-
Si se necesita especificar este flujo de control de
una manera más formal, unir pre- y postcondiciones a cada mensaje.

Ingeniería hacia adelante e
inversa
-
Ingeniería hacia delante (creación
de código desde un modelo)
Esto es posible para ambos diagramas de interacción,
especialmente si el contexto del diagrama es una operación.
Ejemplo:
Usando el diagrama de colaboración
anterior, una herramienta de ingeniería hacia adelante podría
generar el siguiente código en Java para la operación register,
unida a la clase Student.
public void register()
{
CourseCollection c = getSchedule();
for (int i = 0; i < c.size(); i ++)
c.item(i).add(this);
this.registered = true;
}
-
Ingeniería inversa (creación
de un modelo desde código)
Es posible también para ambos diagramas
de interacción, especialmente si el contexto del código es
el cuerpo de una operación.
Nota: La ingeniería hacia
adelante es directa, mientras que la ingeniería inversa es más
difícil. Es fácil obtener demasiada información desde
una ingeniería inversa y la parte más difícil está
en qué detalles conservar.
Sugerencias y Tips
Un diagrama de interacción bien estructurado:
-
Esta enfocado en comunicar el aspecto dinámico
de un sistema.
-
Contiene solamente a los elementos que son esenciales
para entender ese aspecto.
-
Provee un detalle coherente con sus niveles de abstracción
y debería revelar solamente los adornos que son esenciales para
su entendimiento.
-
No es tan minimalista
Cuando dibujamos un diagrama de interacción,
debemos:
-
Darle un nombre que comunique su propósito.
-
Usar un diagrama de secuencia si queremos enfatizar
el orden de tiempo de los mensajes. Usar un diagrama de colaboración
si queremos enfatizar la organización de los objetos involucrados
en la interacción.
-
Colocar sus elementos para minimizar las líneas
que cruzan.
-
Usar notas y color como indicaciones visuales para prestar
atención a características importantes de nuestro diagrama.
-
Usar bifurcaciones limitadas; podemos representar mucho
mejor bifurcaciones complejas usando diagramas de actividad.