Architectural Driven Design - ADD Francisco Amadeo 2005
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat Duración 5 min 5 min 5 min 10 min 5 min 15 min 10 min 10 min 5 min 15 min 2
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 3
ADD Overview Método propuesto por el Software Engineering Institute (SEI) El método ADD es un enfoque para definir una arquitectura de software en el cual el proceso de diseño esta basado en los requerimientos de calidad del software. Proporciona una serie de pasos para el diseño de alto nivel de la arquitectura de un sistema (arquitectura conceptual) Las actividades de diseño son organizadas de acuerdo a un proceso recursivo de descomposición - Guiado por los architectural drivers. - Refinamiento progresivo de un diseño inicial, agregando información para hacerlo más consistente y completo. 4
ADD Overview El metodo ADD esencialmente sigue un ciclo del tipo Plan, Do, and Check (Planear, Realizar, Verificar) Plan: Los atributos de calidad y las restricciones de diseño son consideradas para seleccionar que tipo de elementos seran utilizados en la arquitectura. Do: Los elementos son instanciados para satisfacer los requerimientos de calidad asi tambien los requerimientos funcionales. Check: El diseño resultante es analizado con el fin de determinar si los requerimientos fueron alcanzados. Este proceso se repite hasta que los requerimientos significantes para la arquitectura son alcanzados. 5
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 6
Claves del Diseño Arquitectónico El diseño consiste en la toma de decisiones El método ADD es un ejemplo de como el entendimiento de la arquitectura y sus influencias pueden ser utilizados para guiar el proceso de desarrollo. Estilos Arquitectónicos y Tacticas Vistas (estructuras) Funcional Concurrencia Deployment Architectural Drivers 7
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 8
Desarrollo Evolutivo 9
Ejemplo RUP 10
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 11
Nocion de Arquitectura Conceptual 12
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 13
Principales Objetivos del Método ADD Focalizado en la arquitectura de una product-line o long-lived systems El detalle de muchos requerimientos no es conocido de antemano Cuáles son todas las prestadoras que pueden operar un sistema de control telefónico? Formas de tarifar y facturar Utilización de mecanismos arquitectónicos para cumplir con: requerimientos funcionales requerimientos de calidad requerimientos del negocio (Architectural Drivers) 14
Método ADD (SEI, 2000) 15
Método ARCS (Bosch, 1998) 16
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 17
Orden del Proceso La presentación dada por el método es top-down Sin embargo, el proceso general puede ser: bottom-up back and forth feedback loops Factores que influencian este orden Conocimiento del dominio Personal asignado al proyecto Uso de nuevas tecnologias Restricciones de diseño Elementos del negocio 18
Pasos del Método ADD 1. Elegir un modulo 2. Refinar dicho elemento de acuerdo a los siguientes pasos: 1. Seleccionar los architectural drivers 2. Elegir patrones/tácticas y modulos hijos para satisfacer los drivers 3. Instanciar los módulos hijos y asignar funcionalidad de los casos de uso usando multiples views 3. Refinar los casos de uso y los escenarios de calidad como restricciones a los módulos hijos 4. Repetir para el siguiente módulo 19
Arbol de Descomposición 20
Elementos de Diseño y Vistas Elementos de Diseño Se refieren genéricamente al sistema, a los subsistemas y componentes Implementan una colección de responsabilidades Poseen una interface conceptual Vistas Ayudan a los desarrolladores a analizar propiedades de la arquitectura, desde diferentes puntos de vista Lógica Concurrencia Deployment 21
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 22
Vistas Principales Funcional Mantiene las responsabilidades de las estructuras arquitectónicas, y las conexiones entre estas estructuras Concurrencia Considera cuestiones de concurrencia, como si hubiera un solo procesador (threads, puntos de sincronización) Deployment Se ocupa de la asignación a múltiples procesadores (red, distribución de threads) 23
Ejemplo de Vista Logica 24
Ejemplo Vista de Concurrencia 25
Ejemplo Vista de Deployment 26
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 27
Architectural Drivers Combinación de requerimientos funcionales, de calidad y de negocio, que en forma conjunta definen la arquitectura No dependen de los detalles de requerimientos funcionales o de calidad Representan una ABSTRACCION de ellos Guian el análisis de puntos de trade-off 28
Ejemplo de Architectural Drivers The purpose of a flight simulator is to train aircrews and this dictates both high fidelity of the simulation and realtime performance The purpose of an air traffic control system is to perform realtime control of enroute aircraft and this dictates high availability and reasonably stringent performance The purpose of some financial systems is to transfer money or orders from one place to another and this dictates high security and high availability The organization has an investment in prior systems in the domain. This dictates reusing component from prior sytems and, consequently, either reusing the architecture from prior systems or developing an architecture that accomodates the legacy systems 29
El ADD dentro del Ciclo de Desarrollo 30
Casos de Uso y Escenarios de Calidad Casos de uso [Jacobson99] Un caso de uso es una pieza de funcionalidad en el sistema, que da al usuario un resultado de valor Los casos de uso capturan requerimientos funcionales Escenarios de calidad Definen escenarios específicos con respecto a atributos de calidad cambios, performance, confiabilidad, interoperabilidad, etc. El sistema debe ser fácil de modificar Debe ser facil de agregar nuevas capacidades del tipo Z al subsistema X 31
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 32
Agenda # 1 2 3 4 5 6 7 8 9 10 Tema ADD Overview Claves del Diseño Arquitectonico Desarrollo Evolutivo, RUP Nocion de Arquitectura Conceptual Objetivos Pasos del Metodo Vistas Lógica, de Concurrencia y Deployment Architectural Drivers Tradeoffs Caso de estudio: Sistema de Chat 33
Caso de Estudio: Sistema de Chat 34
Requerimientos Funcionales 35
Requerimientos de Calidad (1) 36
Requerimientos de Calidad (2) 37
Eleccion de Opciones Arquitectonicas 38
Chat: Selección de Architectural Drivers 39
Pasos de Diseño a Seguir 40
Consideraciones para la Descomposición 41
Actividades para un Elemento de Diseño 42
Chat: Fase 1 43
Funcionalidad / Estilos Arquitectónicos 44
Asignación de Responsabilidades 45
Chat: Obtención de Responsabilidades 46
Chat: Asignar Funcionalidad al Estilo 47
Chat: Un usuario se logea al sistema 48
Chat: Envio de un mensaje público 49
Generación de la Vista de Concurrencia 50
Concurrencia: 2 Usuarios diferentes 51
Generación de la Vista de Deployment 52
Chat: Esquema de Deployment 53
Verificación de Escenarios 54
Escenarios de Calidad / Restricciones 55
Fase 1: Resultados Verificación 56
Refinamientos Adicionales 57