Diagrama de Interacción
Diagrama de Interacción (DInt) Características del DInt, DCol y DSec DCol vs. DSec Componentes básicos del DInt Componentes de un DCol Componentes de un DSec Grado de centralización de control Sincronismo y asincronismo en el DInt Otras notaciones Construcción del DInt
Características del DInt Describe la interacción entre objetos en términos de mensajes. Requiere del complemento de modelos de comportamiento para todos los objetos o por lo menos para los más complejos.
...Características del DInt Responde a preguntas tales como: cuál es la interacción entre los objetos del sistema? cuál es la cronología de estas interacciones? qué intercambio de eventos se da en el sistema? Existen 2 tipos de DInt: Diagrama de Colaboración (DCol) tiene su origen en R. Wirfs- Brock (1990). Diagrama de Secuencia (DSec) tiene su origen en I. Jacobson (1992).
Características del DCol Muestra un conjunto de interacciones entre objetos, en forma topográfica, para un contexto situacional delimitado. Componentes de un DCol: objeto que interactúa actor mensaje vía de comunicación Ejemplo: identificarcliente iniciarsesión c: Cliente cs: ControlSesión Cliente creartransacción t: Transacción
Características del DSec Muestra un conjunto de interacciones entre objetos, en forma cronológica, para un contexto temporal delimitado. Componentes de un DSec: objeto que interactúa actor mensaje línea de vida y caja de activación Ejemplo: cs: ControlSesión c: Cliente t: Transacción iniciarsesión identificarcliente Cliente creartransacción
DCol vs. DSec DCol: enfatiza colaboración en términos espaciales más flexible ya que crece bidimensionalmente mensajes fluyen por vías de comunicación dificulta ver secuencia de mensajes puede ser convertido en un DSec equivalente (con mensajes numerados) DSec: enfatiza secuencia en términos temporales más rígido ya que crece unidireccionalmente mensajes entre líneas de vida/cajas de activación favorece secuencia visual de mensajes puede ser convertido en un DCol equivalente
Componentes básicos del DInt objeto que interactúa: objeto que tiene comportamiento y por ende, interactúa. Puede requerir un modelo de comportamiento. Ejemplo: p: Producto Actor: Ente o agente externo al sistema que inicia la interacción. Ejemplo: Proveedor
...Componentes básicos del DInt Mensaje: Solicitud que hace un emisor (agente o objeto) a un receptor (objeto) )para que realice una operación. Emisor y receptor no necesariamente son objetos distintos, ni deben pertenecer a clases distintas. Los mensajes pueden ser: sincrónicos: el emisor espera a que el receptor complete la operación. asincrónicos: el emisor no requiere esperar nada del receptor.
...Componentes básicos del DInt Que los mensajes (llamados procedimentales) fluyan en forma sincrónica y bidireccional implica que: sólo un emisor puede enviar de a un mensaje a la vez el emisor espera a que el receptor acepte el mensaje (retorno implícito) sólo un receptor recibe de a un mensaje a la vez Mensajes sincrónicos requieren de un único hilo (thread) de ejecución. Representación: autorizarcrédito actualizarstock consultarcalificación
...Componentes básicos del DInt Existe anidamiento de mensajes cuando, dada la ocurrencia de un mensaje inicial, iiil se emiten uno o más mensajes dependientes di anidados dd y se reciben sus respectivos retornos antes del retorno del mensaje inicial. Gráficamente, si A está anidado a M: emisión mensaje anidado A recepción mensaje anidado A tiempo emisión mensaje M recepción mensaje M
...Componentes básicos del DInt Que los mensajes fluyan en forma asincrónica y unidireccional implica que el emisor emite un mensaje a un objeto receptor y puede continuar ejecutando mientras el receptor procesa el mensaje. Mensajes asincrónicos requieren múltiples hilos (multithreads) de ejecución, permitiendo así la concurrencia en el sistema. Representación: emitiralarma imprimirrecibo
Componentes de un DCol Vía de comunicación: representa un conducto o puente bidireccional a través del cual fluyen los mensajes. Con relación a los mensajes y las vías de comunicación: mensaje no puede fluir sin una vía de comunicación en una vía de comunicación puede fluir más de un mensaje Ejemplos: disminuirstock m: MovimientoInventario s: StockProducto aumentarstock consultarpresupuesto p: Persona e: EquipoTrabajo consultarsalario
...Componentes de un DCol Numeración de mensajes: se definen números en secuencia con la siguiente convención: m1 1: m2 b: ClaseB el primer mensaje no se numera a: ClaseA 2.1: m5 (se asume que es 0) el orden sigue los números Agente naturales (1, 2, 3,...) c: ClaseCC si existen mensajes anidados, se 2: m4 anexa una nueva secuencia según notación decimal (1.1, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.3,...) d: ClaseD 1.1: m3 2.2: m6
Componentes de un DSec Línea de vida: representa la vida del objeto durante la interacción. El tiempo fluye de arriba hacia abajo. Caja de activación: periodo dentro de la línea de vida, durante el cual el objeto se encuentra activo emitiendo/recibiendo mensajes. El anidamiento de los mensajes entre los objetos se visualiza por la relación entre las longitudes de las cajas de activación respectivas.
...Componentes de un DSec a: ClaseA b: ClaseB c: ClaseC d: ClaseD m1 m2 m3 Agente m4 tiempo m5 m6 Existe anidamiento i cuando un receptor tiene una caja de activación ió menor respecto de la caja de activación del emisor. Aceptación de los mensajes se puede anotar con mensajes de retorno explícitos. [1]
Iteración de mensajes en DInt Un mismo mensaje se envía repetidas veces. Iteración se agrega a numeración en el caso del DCol. Ejemplo: consulta todos los productos que ha pedido un cliente solicitaproductos( out listaprodcliente) 1*: consultaproductos( out listaprodpedido) c: Cliente : Pedido Cliente 1.1*: getnombre( out nombre) : Producto
Automensajes en DInt Un objeto puede enviar automensajes, generando así una interacción consigo mismo. Ejemplos: p: Persona consultaredad p: Persona consultaredad
Mensajes excluyentes en DInt Un objeto puede enviar 2 o más mensajes excluyentes entre sí. Ejemplos: Usuario s: ServidorImpresión i: Impresora c: ColaImpresión imprimirdocumento imprimirdocumento almacenardocumento imprimirdocumento 1a: imprimirdocumento s: ServidorImpresión i: Impresora Usuario 1b: almacenardocumento c: ColaImpresión
Ejemplos: DCol vs. DSec solicitarorden o: Orden c: Cuenta t: Ticket verificarcrédito Cliente reservarticket cargarcuenta solicitarorden 2: reservarticket o: Orden t: Ticket 1: verificarcrédito Cliente c: Cuenta 3: cargarcuenta
Grado de centralización del control Modelador debe adoptar el grado de centralización que estime conveniente al usar DInt. Ejemplo centralizado ( por qué?): o: Orden c: Cuenta t: Ticket solicitarorden verificarcrédito Cliente reservarticket cargarcuenta
...Grado de centralización del control Ejemplo descentralizado: o: Orden c: Cuenta t: Ticket solicitarorden verificarcrédito Cliente reservarticket cargarcuenta
Sincronismo y asincronismo en el DInt Mensajes sincrónicos y asincrónicos pueden combinarse en un mismo DInt. Ejemplo: p: PersonaEntrante ps: PuertaSegura r: RegistroPersonal s: SeñalPuerta rm: ReprodMúsica solicitarentrada mantenerabierto(duraciónpuerta) operar(duraciónseñal) Persona operar(duraciónreprod) registrarentrada(idpersona, IdPuerta, fechahora)
...Sincronismo y asincronismo en el DInt Mensajes asíncronos se usan para mecanismos de avisos de retorno (callback): Un objeto suscriptor objsusc indica interés en un evento enviando un mensaje asíncrono a un objeto oyente objoyen. El objeto objsusc continúa con su ejecución mientras objoyen monitorea la ocurrencia del evento indicado. Cuando el evento ocurre, objoyen envía un mensaje (generalmente asincrónico) de vuelta a objsusc para notificarlo de la ocurrencia. Ejemplo: registrareventonuevoemail s: SesiónUsuario m: MonitorEMail nuevoemailrecibido
Otras notaciones Notaciones especiales: Mensajes pueden ser sólo planos ( ), mostrando apenas progresión de pasos en secuencia o cuando no se sepa aún si el mensaje es sincrónico o asincrónico. Mensajes pueden condicionarse indicando la condición entre []. Ejemplo: Calcular promedio [tamañomuestra>0]. Iteración de secuencias de mensajes se puede representar colocando todos los mensajes iterados dentro de una caja. pe: Pedido pr: Producto procesarpedido incluirproducto Empleado rebajarstock * [por cada producto]
Construcción del DInt Se recomienda identificar primero al actor y la activación que da inicio a la situación o secuencia a representar. Si los objetos: ya están identificados, se definen los mensajes entre ellos a medida que se avanza en la colaboración/secuencia, o no están definidos, definirlos sólo como receptores/ emisores de mensajes y nominarlos después.