CLASE 7: ARQUITECTURA: DEL ANÁLISIS AL DISEÑO DIAGRAMAS DE SECUENCIA Y CONTRATOS Universidad Simón Bolívar. Ing. de Software. Prof. Ivette Carolina Martínez
Arquitectura: Del Análisis al Diseño OBJETIVOS: Identificar las diferencias básicas entre Análisis y Diseño. Definir la arquitectura de un sistema. Identificar las vistas de la arquitectura de un sistema. Aprender la elaboración del modelo conceptual de un sistema (listo?)
Análisis vs. Diseño Análisis Se enfoca en comprender el problema. Diseño idealizado. Comportamiento. Estructura del Sistema. Requerimientos Funcionales. Un pequeño modelo. Diseño Se enfoca en comprender la solución. Operaciones y atributos Rendimiento. Cercano al código real. Ciclos de vida de los objetos. Requerimientos no funcionales. Un modelo grande.
Bottom Up ó Top Down
Qué es Arquitectura? Arquitectura de software se refiere al conjunto de decisiones significativas respecto a la organización de un sistema de software. Selección de Elementos Estructurales y sus interfaces. Especificación del Comportamiento, logrado como colaboración entre estos elementos. Composición de estos elementos estructurales y de comportamiento en Subsistemas más grandes. Estilo Arquitectónico que guía esta organización.
La arquitectura restrige el diseño y la implementación La Arquitectura se refiere a un conjunto de decisiones estratégicas, reglas o patrones que restringen el diseño y la construcción. Código Implementación Diseño Arquitectura
El Modelo de 4+1 Vistas
Diagramas de Secuencia OBJETIVO: Ser capaz de describir el comportamiento de un sistema, subsistema u operación particular mediante un Diagrama de Secuencia utilizando para ello el concepto y representación de interacción, objeto, mensaje, activación.
Modelos y Diagramas Diagramas de Casos de Uso Diagramas de Clases Diagramas de interacción Un Diagrama de Secuencia describe la interación entre los objetos ordenada en el tiempo Diagramas de Objetos Diagramas de Secuencia
Objetivos: Diagramas de Secuencia Ser capaz de representar: Objetos, diferentes tipos de interacciones y mensajes con el objeto de describir el comportamiento de un sistema, subsistema, operación.
Ejemplo de Diagrama de Secuencia Escenario Principal de Éxito (pago en efectivo solamente): 1. El Cliente llega a la caja con los artículos y servicios a pagar 2. El Cajero inicia una nueva venta 3. El Cajero introduce el código del producto 4. El sistema registra el producto y presenta la descripción del producto, precio y subtotal El cajero repite los pasos 3-4 hasta procesar todos los artículos y servicios 5. El Sistema muestra el total con el impuesto calculado 6. El Cajero indica al Cliente el total y pregunta la forma de pago 7. El Cliente paga y el Sistema maneja el pago 8. El sistema registra la venta 9. El Sistema emite la factura 10. El Cliente se marcha con lo adquirido y la factura :Cajero iniciarventa() introducirproducto(cod,cantidad) descripción, subtotal *[otros productos] terminarventa() total con impuestos pagar(monto) vuelto y factura :Sistema
Ejemplo de Diagramas de Secuencia Límite del Sistema Actor externo al sistema :Cajero iniciarventa() :Sistema Sistema como caja negra Caja que puede encerrar un área de iteración *[...] es un marcador de iteración Valor (es) retornado (s) asociado(s) con el mensaje previo introducirproducto(cod,cantidad) descripción, subtotal *[otros productos] terminarventa() total con impuestos pagar(monto) vuelto y factura Mensajes
Diagrama de Secuencia Muestra: los objetos que participan en una interacción el intercambio de mensajes entre los objetos el ordenamiento en el tiempo de los mensajes Captura el comportamiento dinámico
Notación Básica: objetos, mensajes y valores retornados : C1 : C2 mensaje 1 () Valor (es) retornado (s) asociado(s) con el mensaje previo retorno mensaje 2 (p1,p2) Mensajes
Notación Básica: objetos, mensajes y valores retornados : C1 : C2 mensaje 0 () mensaje 1 () retorno mensaje 2 (p1,p2)
Notación Básica: Cajas de Activación : C1 : C2 mensaje 0 () mensaje 1 () Caja de activación retorno mensaje 2 (p1,p2)
Notación Básica: Cajas de Activación : C1 : C2 mensaje 0 () mensaje 1 () retorno mensaje 2 () mensaje 3 (p1,p2)
Notación Básica: Cajas de Activación : C1 : C2 mensaje 0 () mensaje 1 () retorno mensaje 2 () mensaje 3 (p1,p2)
Notación Básica: Recursión : C1 mensaje 0 () Recursión Mensaje a si mismo ( self, this ) mensaje 1() Caja de activación
Notación Básica: Recursión Ejemplo: :Calculadora factorial (n) factorial (n-1)
Notación Básica creación de objetos : C1 Creación de objetos Mensaje 0 () crear() :C2 mensaje 1()
Notación Básica creación de objetos Ejemplo: : Venta agregarproducto (cod,cant) crear() modificar (cod,cant) :Línea de Producto
Notación Básica destrucción de objetos : C1 Mensaje 0 ( ) crear() :C2 destruir Destrucción del objeto
Notación Básica: Mensajes Condicionales : C1 : C2 mensaje 0 () [condición] mensaje 1 () Mensaje condicional
Notación Básica: Mensajes Condicionales Ejemplo: : Ciudadano : Calculador declaraciónimpuesto () [sueldo>límite] impuesto (sueldo)
Notación Básica: Mensajes Condicionales Excluyentes : C1 : C2 : C3 mensaje 0 () [condición 1] mensaje 1 () [condición 2] mensaje 2 () Mensajes condicionales mútuamente excluyentes
Notación Básica: Mensajes Condicionales Excluyentes Ejemplo: repararcarro () : Taller [falladirección] reparar() : Especialista en Sistemas de Dirección : Especialista en Sistemas de Inyección [fallainyección] reparar()
Notación Básica: Iteración de un mensaje : C1 : C2 mensaje 0 () [i:=1..n]: v i :=mensaje () Iteración de un mensaje
Notación Básica: Iteración de un mensaje Ejemplo: : Simulador :Random simular() [i:=1..n]: num i :=proximo()
Notación Básica: Iteración de varios mensajes : C1 : C2 : C3 mensaje 0 () mensaje 1 () Caja que puede encerrar un área de iteración *[...] es un marcador de iteración mensaje 2 () *[...] FDS
Notación Básica: Iteración de varios mensajes Ejemplo: :Simulador : Random : Programador simular() horas:=próximoentero() trabajar (horas) comer () *[i:=1..n] FDS
Resumen: Diagramas de Secuencia Un Diagrama de Secuencia describe comportamiento de sistemas, subsistemas y operaciones, representando los objetos que intervienen, así como los mensajes que intercambian, ordenados en el tiempo a través de la línea de vida de cada uno de los objetos y sus cajas de activación
Contratos Documentos que indican como cambia el estado de un sistema cuando se efectúa una de sus operaciones. Se redactan contratos para cada operación del sistema con el fin de describir su comportamiento
Contratos Estilo declarativo (Generalmente) Describen lo que sucederá y no como se conseguirá Elementos fundamentales: Precondiciones y postcondiciones
Contratos: Formato Nombre: Referencias cruzadas: Precondiciones: A validar: Supuestas: Postcondiciones: Nombre de la operación y parámetros. Casos de uso, funciones del sistema, Suposiciones antes de la ejecución. Que deben ser verificadas Que no se validarán Efecto de la operación sobre el estado del sistema
Contratos: Ejemplo Nombre: Referencias cruzadas: Precondiciones: Supuestas: Postcondiciones: Introducir producto(cup:entero, cantidad:entero) Casos de uso:comprar productos Se supone que el sistema conoce el CUP Si fue una nueva venta: Fue creada una Venta (instancia) Fue creada una asociación entre la instancia de venta y el TDPV (asociación) Fue creada una instancia de VentasLíneaDeProducto Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y Venta Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y EspecificaciónProducto, basado en la correspondencia del CUP
Contratos: Ejemplo Nombre: Referencias cruzadas: Precondiciones: Supuestas: Postcondiciones: Introducir producto(cup:entero, cantidad:entero) Casos de uso:comprar productos Se supone que el sistema conoce el CUP Si fue una nueva venta: Fue creada una Venta (instancia) Fue creada una asociación entre la instancia de venta y el TDPV (asociación) Fue creada una instancia de VentasLíneaDeProducto Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y Venta Fue creada la asociación entre la instancia creada VentasLíneaDeProducto y EspecificaciónProducto, basado en la correspondencia del CUP
Contratos: Postcondiciones Son declaraciones sobre el estado del sistema una vez concluida la operación Ventaja: permiten describir los efectos de una operación (cambios necesarios para el funcionamiento del sistema). Deben ser expresados en pasado. Qué expresar? Creación y eliminación de instancias Modificación de atributos Formación y cancelación de asociaciones
Contratos: Recomendaciones 1. Identificar las operaciones del sistema a partir de los Diagramas de Secuencia 2. Crear un Contrato para toda operación compleja, sutil en sus resultados o que no queda completamente clara en los casos de uso. 3. Para crear las Postcondiciones, usar las categorías y describirlas en pasado.