Académique Documents
Professionnel Documents
Culture Documents
Arquitectura de Software
Billy Reynoso
Billyr@microsoft.com.ar
Objetivos
Suministrar una visin estructurada de la
Arquitectura de Software contempornea
Temario
Objetivos
Contexto
Errores de concepto habituales
Antecedentes histricos
Definicin Repositorio de definiciones
Corrientes principales
Conceptos fundamentales (CMU/SEI)
Estilos arquitectnicos
Estilos y patrones
Lenguajes de Descripcin Arquitectnica
(ADLs)
Atributos de calidad, escenarios y tcticas
Mtodos basados en arquitectura
Situacin, conclusiones y referencias
Contexto 1995-2005
Los 3 grandes temas de ingeniera de software
Patrones
Design patterns (GoF) - 1995
Erich Gamma, Richard Helm, Ralph Johnson y John
Vlissides
Architectural patterns (POSA) - 1996
Frank Buschmann, Regine Meunier, Hans Rohnert,
Peter Sommerlad y Michael Stal
Organizational patterns (Coplien)
Otros:
Refactorizacin
AOP, SOA, Grid Computing, Semantic Web...
Conceptos cuestionables
(1/2)
Arquitectura como normativa madura
Abundancia de herramientas de diseo
arquitectnico
Semntica y lenguajes arquitectnicos iguales
en la academia y la industria
UML como lenguaje formal de modelado
arquitectnico
Posicin de la AS bien definida en ingeniera &
ciclo de vida
Conceptos cuestionables
(2/2)
Antecedentes histricos
(1/5)
Edsger Dijkstra, 1968
Ciencias de la computacin como rama aplicada de
las matemticas
Niveles de abstraccin
Stacks, abrazos mortales, semforos, algoritmo
de camino ms corto
NATO, 1968
F. L. Bauer Ingeniera de software
NATO, 1969
P. I. Sharp, Arquitectura de software
Antecedentes histricos
(2/5)
Niklaus Wirth, 1971
Antecedentes histricos
(3/5)
David Parnas
1972: Mdulos Ocultamiento de informacin
1974: Estructuras de software
1976: Familias de programas (rbol de decisin) Descomposicin - Alternativa a diagramas de flujo,
propensin estructural (no funcional)
Una familia de programas es un conjunto de programas (no
todos los cuales han sido construidos o lo sern alguna vez) a
los cuales es provechoso o til considerar como grupo. Esto
evita el uso de conceptos ambiguos tales como similitud
funcional que surgen a veces cuando se describen dominios.
Por ejemplo, los ambientes de ingeniera de software y los
juegos de video no se consideran usualmente en el mismo
dominio, aunque podran considerarse miembros de la misma
familia de programas en una discusin sobre herramientas que
ayuden a construir interfaces grficas, que ambos casualmente
utilizan.
Antecedentes histricos
(4/5)
Lnea de Dijkstra-Parnas-Hoare
Fundamentacin matemtica
Mtodos formales
Programa fuerte
Lnea de Brooks
Ambiente humano
Visin cualitativa
Pensamiento no lineal
Programa crtico y heterodoxo
Antecedentes histricos
(4/5)
Dewayne Perry, Alexander Wolf 1992
Foundations for the study of software
architecture
La dcada de 1990, creemos, ser la dcada de la
arquitectura de software. Usamos el trmino
arquitectura en contraste con diseo, para evocar
nociones de codificacin, de abstraccin, de estndares,
de entrenamiento formal (de los arquitectos de software)
y de estilo. Es tiempo de re-examinar el papel de la
arquitectura de software en el contexto ms amplio del
proceso de software y de su administracin, as como
sealar las nuevas tcnicas que han sido adoptadas.
Definicin
http://www.sei.cmu.edu/architecture/definitions.h
tml
(1) Proceso dentro del ciclo de vida, (2) Topologa, (3)
Disciplina.
Otras definiciones
Paul Clements, 1996:
La AS es, a grandes rasgos, una vista del
sistema que incluye los componentes
principales del mismo, la conducta de esos
componentes segn se la percibe desde el
resto del sistema y las formas en que los
componentes interactan y se coordinan para
alcanzar la misin del sistema. La vista
arquitectnica es una vista abstracta,
aportando el ms alto nivel de comprensin y
la supresin o diferimiento del detalle
inherente a la mayor parte de las
abstracciones.
* Vista - * Componente
Desarrollos paralelos
Dcada de 1990:
Metfora de patrones de C. Alexander
(1977)
La Banda de los Cuatro (GoF), 1995
POSA, 1996
Desarrollo de UML / OOD
Corrientes tericas en
AS
Vistas
1977, anlisis estructurado (Douglas Ross)
Separacin de incumbencias
Habitualmente 2 (funcional y de datos ninguna
aparece en AS)
Conceptos fundamentales
Vistas & frameworks
Zachman
(Niveles)
Alcance
Empresa
Sistema lgico
Tecnologa
Representacin
Funcionamiento
TOGAF
(Arquitecturas)
Negocios
Datos
Aplicacin
Tecnologa
4+1
(Vistas)
Lgica
Proceso
Fsica
Desarrollo
Casos de uso
[BRJ99]
(Vistas)
Diseo
Proceso
Implementacin
Despliegue
Casos de uso
POSA
(Vistas)
Lgica
Proceso
Fsica
Desarrollo
Microsoft
(Vistas)
Lgica
Conceptual
Fsica
Vistas de UML
rea
Estructural
Dinmica
Gestin del
modelo
Vista
Vista esttica
Diagramas
Diagrama de clases
Vista de casos de
uso
Diagramas de casos de
uso
Vista de
implementacin
Vista de despliegue
Diagrama de
componentes
Diagrama de despliegue
Vista de mquinas
de estados
Vista de actividad
Diagrama de estados
Vista de interaccin
Diagrama de secuencia
Diagrama de
colaboracin
Diagrama de clases
Diagrama de actividad
Conceptos principales
Clase, asociacin, generalizacin,
dependencia, realizacin, interfaz
Caso de uso, actor, asociacin,
extensin, inclusin, generalizacin de
casos de uso
Componente, interfaz, dependencia,
realizacin
Nodo, componente, dependencia,
localizacin
Estado, evento, transicin, accin
Estado, actividad, transicin de
terminacin, divisin, unin
Interaccin, objeto, mensaje, activacin
Colaboracin, interaccin, rol de
colaboracin, mensaje
Paquete, subsistema, modelo
Vistas de UML
Vistas y puntos de vista no estn
homogeneizados en textos y autores
Cuando los 3 hablan de AS, las
vistas no se refieren a viewpoints o
concerns, sino a niveles de
abstraccin
Definicin diferente de arquitectura
Interfaces en vez de conectores
Objetos en lugar de componentes
(elementos)
Los conectores no son conectores de
Estilos Arquitectnicos
Rumbaugh-Booch-Jacobson
1991
(1) transformaciones en lote, (2)
transformaciones continuas, (3) interfaz
interactiva, (4) simulacin dinmica de
objetos del mundo real, (5) sistemas de
tiempo real, (6) administrador de
transacciones con almacenamiento y
actualizacin de datos
Pero: estilos arquitectnicos,
arquitecturas comunes, marcos de
referencia arquitectnicos prototpicos,
formas comunes, clases de sistemas
Definicin no exhaustiva
Estilos arquitectnicos
Perry & Wolf, 1992
Incluyen:
Componentes (2003,
elementos)
Conectores
Estructuras (topologas,
configuraciones)
Restricciones (constraints)
Estilos Arquitectnicos
Estilos de Flujo de Datos
Tubera y filtros
Estilos de Llamada y
Retorno
Model-View-Controller
(MVC)
Arquitecturas en Capas
Arquitecturas Orientadas a
Objetos
Arquitecturas Basadas en
Componentes
Estilos Derivados
C2
GenVoca
REST
Estilos heterogneos
Sistemas de control de
procesos
Arquitecturas Basadas en
Atributos
Estilos Peer-to-Peer
Arquitecturas Basadas en
Eventos
Arquitecturas Orientadas
a Servicios (SOA)
Arquitecturas Basadas en
Recursos
Tres ejemplos
significativos
Arquitectura basada en
Impiden incurrir en el modelo de aplicaciones que
eventos
preguntan si sucedi algo.
Generan la ejecucin apenas ocurre el evento o el
usuario se conecta
Modelo de push. A veces se vincula con patrn
Observador (Observer pattern)
Arquitecturas de Pizarra
Arquitectura de Pizarra
H. Penny Nii, 1986 (Blackboard systems)
Cundo se utiliza: Problemas no susceptibles de
tratarse analticamente
Reconocimiento de patrones, aprendizaje de mquina, data
mining
Firmas, huellas digitales, reconocimiento de iris, rostro, etc
Dos formas:
Repositorio
Pizarra pura o tablero de control
Procesamiento de seales
Reconocimiento de habla
Redes neuronales, algoritmo gentico, simulacin de
templado
Agentes autnomos (dbilmente acoplados)
Estilos y patrones
POSA 96, Shaw 96
Patrones: Christopher Alexander 1977
Elementos que se repiten
Como un elemento en el mundo, cada patrn es una
relacin entre cierto contexto, cierto sistema de
fuerzas que ocurre repetidas veces en ese contexto y
cierta configuracin espacial que permite que esas
fuerzas se resuelvan. Como un elemento de lenguaje,
un patrn es una instruccin que muestra la forma en
que esta configuracin espacial puede usarse, una y
otra vez, para resolver ese sistema de fuerzas, donde
quiera que el contexto la torne relevante
El patrn es, en suma, al mismo tiempo una cosa que
pasa en el mundo y la regla que nos dice cmo crear
esa cosa y cundo debemos crearla. Es tanto un
proceso como una cosa; tanto una descripcin de una
cosa que est viva como una descripcin del proceso
que generar esa cosa.
Comentario
Problemas
Soluciones
Patrones de llamadas
entre objetos (similar a
los patrones de diseo),
decisiones y criterios
arquitectnicos,
empaquetado de
funcionalidad
Fase de Desarrollo
Patrones de
Arquitectura
Relacionados a la
interaccin de objetos
dentro o entre niveles
arquitectnicos
Problemas arquitectnicos,
adaptabilidad a requerimientos
cambiantes, performance,
modularidad, acoplamiento
Patrones de
Diseo
Conceptos de ciencia de
computacin en general,
independiente de
aplicacin
Claridad de diseo,
multiplicacin de clases,
adaptabilidad a requerimientos
cambiantes, etc
Comportamiento de
factora, ClaseResponsabilidadContrato (CRC)
Diseo detallado
Patrones de
Anlisis
Usualmente especficos de
aplicacin o industria
Modelos de dominio,
conocimiento sobre lo
que habr de incluirse (p.
ej. logging & reinicio)
Anlisis
Patrones de
Proceso o de
Organizacin
Desarrollo o procesos de
administracin de
proyectos, o tcnicas, o
estructuras de organizacin
Productividad, comunicacin
efectiva y eficiente
Planeamiento
Estndares de codificacin
y proyecto
Sumamente especficos
de un lenguaje,
plataforma o ambiente
Implementacin,
Mantemimiento,
Despliegue
Idiomas
Diseo inicial
Usos de estilos
Mary Shaw, David Garlan, 1996
Inspirado en trabajo de Parnas, 1972 (On the criteria
to be used in decomposing systems into modules)
Datos compartidos vs ocultamiento de informacin
Estilos - Conclusiones
Despus de 13 aos, son menos
conocidos y frecuentados que los
patrones
Son fundamentales para la toma de
decisiones del diseo, ya que se
dispone de mtodos comparativos
que no existen para el caso de los
patterns
Metodologas SACAM, CBAM
Requerimientos no
funcionales
Performance
Disponibilidad
Modificabilidad
Seguridad
Verificabilidad (Testability)
Gestionabilidad (instrumentacin,
management, estado)
Usabilidad
Atributos de Calidad
Escenarios
Equivalente no funcional de los casos de uso
No contemplados en UML / RUP
Cuantificables - No hay diagramas de escenarios
Estmulo, ambiente, respuesta
Escenario de caso de uso:
Un usuario remoto de web requiere un reporte de base de datos
en hora pico y lo recibe dentro de los 5 segundos .
Escenario de crecimiento:
Agregar un nuevo servidor de base de datos para reducir latencia
en escenario 1 a 2.5 segundos dentro de una persona-semana.
Escenario exploratorio:
La mitad de los servidores se bajar durante operacin normal
sin afectar la disponibilidad del sistema .
Lenguajes de Descripcin
Arquitectnica (ADLs)
Lenguajes para el modelado, la
descripcin y (eventualmente) la
prueba de la arquitectura
Representacin de componentes,
conectores, configuraciones y
restricciones
Prueba de consistencia arquitectnica
Soporte de evolucin
Gneros emparentados
Lenguajes de especificacn (LARCH,
Z)
Lenguajes de prototipado
(Modechart, PSDL)
Lenguajes de modelado (UML)
Lenguajes de programacin (CODE,
Ada)
Herramientas para definicin de
ciclo de vida (UNAS/SALE)
ADL
Acme
Aesop
Fecha
1995
1994
Investigador - Organismo
Monroe & Garlan (CMU), Wile (USC)
Garlan (CMU)
ArTek
1994
Armani
C2 SADL
CHAM
Darwin
Jacal
1998
1996
1990
1991
1997
LILEANNA
MetaH
Rapide
SADL
1993
1993
1990
1995
UML
1995
UniCon
1995
Shaw (CMU)
Wright
1994
Garlan (CMU)
xADL
2000
Observaciones
Lenguaje de intercambio de ADLs
ADL de propsito general, nfasis
en estilos
Lenguaje especfico de dominio No es ADL
ADL asociado a Acme
ADL especfico de estilo
Lenguaje de especificacin
ADL con nfasis en dinmica
Adl - Notacin de alto nivel para
descripcin y prototipado
Lenguaje de conexin de mdulos
ADL especfico de dominio
ADL & simulacin
ADL con nfasis en mapeo de
refinamiento
Lenguaje genrico de modelado
No es ADL
ADL de propsito general, nfasis
en conectores y estilos
ADL de propsito general, nfasis
en comunicacin
ADL basado en XML
Acme/Armani
UML 2
Domain Specific Languages
XML
Web Semntica
Metodologas
arquitectnicas
Ventajas y desventajas
Posicionamiento en
ciclo de vida (AS en
RUP)
Atributos de calidad
& escenarios
[Primitivas de
atributo]
Architecture Based
Design (ABD)
Tcticas
Arquitectnicas
Comparacin de
alternativas (SACAM)
Diseo basado en
(ATAM)
Eleccin de arquitectura
Anlisis de arquitectura
(SAAM)
Quality Attribute
Workshop (QAW)
Revisin activa de
diseo parcial (ARID)
Anlisis de
costo/beneficio (CBAM)
Reformulacin: UML &
RUP
Campos de AS
Fundamentos formales de la AS
Bases matemticas
Caracterizaciones formales de propiedades extrafuncionales tales como mantenibilidad
Teoras de la interconexin
Problemas pendientes en
AS
Falta de criterio unificado
No hay un modelo de proceso de punta a punta
Desarrollo en paralelo de conceptos antagnicos o
no coordinados
Mtodos giles
Metodologas de ciclo de vida
Patrones, estilos y tcticas
Beneficios
Decisiones tempranas
Barry Boehm, 1995
Si un proyecto no ha logrado una arquitectura del sistema,
incluyendo su justificacin, el proyecto no debe empezar el
desarrollo en gran escala. Si se especifica la arquitectura
como un elemento a entregar, se la puede usar a lo largo de
los procesos de desarrollo y mantenimiento [Boe95].
Conclusiones generales
Importancia de la Arquitectura de Software
Criticidad de las decisiones tempranas de
arquitectura
Alto nivel de abstraccin
Vinculada con requerimientos no funcionales
Fuerte impulso en la academia y la industria
Herramientas arquitectnicas an en proceso de
definicin y desarrollo
Metodologas arquitectnicas, en proceso de
elaboracin preliminar
Resta elaborar: tcticas arquitectnicas, mtodos
basados en arquitectura, vnculo entre conceptos
de arquitectura, DSLs, factoras, building blocks,
Referencias
Artculos de Arquitectura de Software en
http://www.microsoft.com/spanish/msdn/arqu
itectura
Len Bass, Paul Clements, Rick Kazman.
2003. Software Architecture in Practice, 2
edicin
Documentacin del SEI en Carnegie Mellon
http://www.sei.cmu.edu/publications/publication
s.html
Preguntas?
Billyr@microsoft.com.ar