Arquitectura de Proyectos de IT
Architectural Driven Design - ADD
Francisco Amadeo
© 2005
Agenda
# Tema Duración
1 ADD Overview 5 min
2 Claves del Diseño Arquitectonico 5 min
3 Desarrollo Evolutivo, RUP 5 min
4 Nocion de Arquitectura Conceptual 10 min
5 Objetivos 5 min
6 Pasos del Metodo 15 min
7 Vistas Lógica, de Concurrencia y Deployment 10 min
8 Architectural Drivers 10 min
9 Tradeoffs 5 min
10 Caso de estudio: Sistema de Chat 15 min
2
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
3
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
6
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
8
Arquitectura de Proyectos de IT
Desarrollo Evolutivo
9
Arquitectura de Proyectos de IT
Ejemplo RUP
10
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
11
Arquitectura de Proyectos de IT
Nocion de Arquitectura Conceptual
12
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
13
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Método ADD (SEI, 2000)
15
Arquitectura de Proyectos de IT
Método ARCS (Bosch, 1998)
16
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
17
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Arbol de Descomposición
20
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
22
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Ejemplo de Vista Logica
24
Arquitectura de Proyectos de IT
Ejemplo Vista de Concurrencia
25
Arquitectura de Proyectos de IT
Ejemplo Vista de Deployment
26
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
27
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
El ADD dentro del Ciclo de Desarrollo
30
Arquitectura de Proyectos de IT
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
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
32
Arquitectura de Proyectos de IT
Agenda
# Tema
1 ADD Overview
2 Claves del Diseño Arquitectonico
3 Desarrollo Evolutivo, RUP
4 Nocion de Arquitectura Conceptual
5 Objetivos
6 Pasos del Metodo
7 Vistas Lógica, de Concurrencia y Deployment
8 Architectural Drivers
9 Tradeoffs
10 Caso de estudio: Sistema de Chat
33
Arquitectura de Proyectos de IT
Caso de Estudio: Sistema de Chat
34
Arquitectura de Proyectos de IT
Requerimientos Funcionales
35
Arquitectura de Proyectos de IT
Requerimientos de Calidad (1)
36
Arquitectura de Proyectos de IT
Requerimientos de Calidad (2)
37
Arquitectura de Proyectos de IT
Eleccion de Opciones Arquitectonicas
38
Arquitectura de Proyectos de IT
Chat: Selección de “Architectural Drivers”
39
Arquitectura de Proyectos de IT
Pasos de Diseño a Seguir
40
Arquitectura de Proyectos de IT
Consideraciones para la Descomposición
41
Arquitectura de Proyectos de IT
Actividades para un Elemento de Diseño
42
Arquitectura de Proyectos de IT
Chat: Fase 1
43
Arquitectura de Proyectos de IT
Funcionalidad / Estilos Arquitectónicos
44
Arquitectura de Proyectos de IT
Asignación de Responsabilidades
45
Arquitectura de Proyectos de IT
Chat: Obtención de Responsabilidades
46
Arquitectura de Proyectos de IT
Chat: Asignar Funcionalidad al Estilo
47
Arquitectura de Proyectos de IT
Chat: Un usuario se logea al sistema
48
Arquitectura de Proyectos de IT
Chat: Envio de un mensaje público
49
Arquitectura de Proyectos de IT
Generación de la Vista de Concurrencia
50
Arquitectura de Proyectos de IT
Concurrencia: 2 Usuarios diferentes
51
Arquitectura de Proyectos de IT
Generación de la Vista de Deployment
52
Arquitectura de Proyectos de IT
Chat: Esquema de Deployment
53
Arquitectura de Proyectos de IT
Verificación de Escenarios
54
Arquitectura de Proyectos de IT
Escenarios de Calidad / Restricciones
55
Arquitectura de Proyectos de IT
Fase 1: Resultados Verificación
56
Arquitectura de Proyectos de IT
Refinamientos Adicionales
57
Arquitectura de Proyectos de IT