Académique Documents
Professionnel Documents
Culture Documents
Arquitectura de Software
Billy Reynoso
UNIVERSIDAD DE BUENOS AIRES
Billyr@microsoft.com.ar
Objetivos
Suministrar una visin estructurada de la
Arquitectura de Software contempornea
No es pedagoga Arquitectura 101, sino ms bien
un survey de lo que significa AS, una evaluacin
de lo que ha llegado a ser y una puntualizacin
sobre lo que no es
Despejar malos entendidos sobre
arquitectura como diseo de aplicaciones
Vincular perspectivas de la academia y la
industria
Privilegiar elaboraciones de la corriente
terica de CMU/SEI
Describir desarrollos de estado de arte,
problemas pendientes y tendencias
Proporcionar referencias a recursos,
documentacin y herramientas
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)
Mtodos heterodoxos (eXtreme Programming,
Scrum, Evo, FDD, DSDM, RUP, AM, Crystal, LD,
ASD)
Arquitectura de Software
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
Ocurre en algn punto entre la elicitacin de
requerimientos y la especificacin de casos de uso, o
entre stos y el diseo
Arquitectura vinculada a metodologa y proceso
RUP
Conceptos cuestionables
(2/2)
La AS tiene que ver con modelado OO
La AS no admite ni requiere otros
paradigmas
No hay urgencia en considerar otros
paradigmas (Berners-Lee)
Las herramientas arquitectnicas
generan la estructura de la aplicacin
e incluso el cdigo (analoga con
modelos CASE)
El dilema del roundtrip engineering
est resuelto
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
C.R. Spooner, 1971
Una arquitectura de software para los 70s
Referencia accidental
Antecedentes histricos
(2/5)
Niklaus Wirth, 1971
Niveles de abstraccin Stepwise refinement
DeRemer & Kron, 1976
Programming in the large
Fred Brooks, 1975 MMM
Diseador del OS/360, Premio Turing 2000
Arquitectura como interfaz usuario
El arquitecto es un agente del usuario, igual que
quien disea su casa
Importancia de las estructuras de alto nivel y de
decisiones tomadas al principio
Arquitectura: qu hacer - Implementacin: cmo
hacerlo
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.
Escuela de Carnegie Mellon (CMU-SEI)
Sin conexin explcita con CMMI
Mary Shaw, David Garlan, Paul Clements,
Robert Allen, Rick Kazman
Definicin
http://www.sei.cmu.edu/architecture/definitions.h
tml
(1) Proceso dentro del ciclo de vida, (2) Topologa, (3)
Disciplina.
Arquitectura - IEEE 1471-2000:
La Arquitectura de Software es la organizacin
fundamental de un sistema encarnada en sus
componentes, las relaciones entre ellos y el ambiente
y los principios que orientan su diseo y evolucin.
Adoptada por Microsoft en estrategia arquitectnica / MSF
3&4
Ingeniera - IEEE 610.12.1990:
[La Ingeniera de Software es] la aplicacin de una
estrategia sistemtica, disciplinada y cuantificable al
desarrollo, aplicacin y mantenimiento del software;
esto es, la aplicacin de la ingeniera al software.
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
Arquitectura como etapa de la
ingeniera de software orientada a
objetos
James Rumbaugh, Grady Booch, Ivar
Jacobson (los 3 amigos), Craig Larman
Arquitectura estructural SEI
Corriente principal: Garlan, Shaw, Clements
Variantes con modelos de datos
(Medvidovic)
Variantes radicales, formales (Moriconi-SRI)
Arquitectura basada en patrones SEI
Arquitectura procesual (Kazman, Bass)
Vistas
1977, anlisis estructurado (Douglas Ross)
Separacin de incumbencias
Habitualmente 2 (funcional y de datos ninguna
aparece en AS)
La AS clsica no habla de vistas
Se basa en vista nica e implcita, de carcter
estructural
Muchos arquitectos evitan hablar de vistas
Cuando las vistas proliferan, se requieren lenguajes
formales especficos para cada clase de vista
Las vistas son una abstraccin conveniente, pero su
abundancia involucra problemas de sincronizacin
En AS ortodoxa prevalecen 3: CC, concurrencia y
despliegue (Bass, Clements, Kazman)
Lista corta (3 a 6) Lista larga (8 o 9)
Viewpoints96
Conceptos fundamentales
Vistas & frameworks
Patrones de llamadas
Relacionados a la Problemas arquitectnicos, entre objetos (similar a
Patrones de interaccin de objetos adaptabilidad a requerimientos los patrones de diseo),
Diseo inicial
Arquitectura dentro o entre niveles cambiantes, performance, decisiones y criterios
arquitectnicos modularidad, acoplamiento arquitectnicos,
empaquetado de
funcionalidad