Vous êtes sur la page 1sur 47

Introduccin a la

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

Zachman TOGAF 4+1 [BRJ99] POSA Microsoft


(Niveles) (Arquitecturas) (Vistas) (Vistas) (Vistas) (Vistas)
Alcance Negocios Lgica Diseo Lgica Lgica
Empresa Datos Proceso Proceso Proceso Conceptual
Sistema lgico Aplicacin Fsica Implementacin Fsica Fsica
Tecnologa Tecnologa Desarrollo Despliegue Desarrollo
Representacin Casos de uso Casos de uso
Funcionamiento
Tabla 1 - Vistas en los marcos de referencia
Vistas de UML
rea Vista Diagramas Conceptos principales
Estructural Vista esttica Diagrama de clases Clase, asociacin, generalizacin,
dependencia, realizacin, interfaz
Vista de casos de Diagramas de casos de Caso de uso, actor, asociacin,
uso uso extensin, inclusin, generalizacin de
casos de uso
Vista de Diagrama de Componente, interfaz, dependencia,
implementacin componentes realizacin
Vista de despliegue Diagrama de despliegue Nodo, componente, dependencia,
localizacin
Dinmica Vista de mquinas Diagrama de estados Estado, evento, transicin, accin
de estados
Vista de actividad Diagrama de actividad Estado, actividad, transicin de
terminacin, divisin, unin
Vista de interaccin Diagrama de secuencia Interaccin, objeto, mensaje, activacin
Diagrama de Colaboracin, interaccin, rol de
colaboracin colaboracin, mensaje
Gestin del Vista de gestin del Diagrama de clases Paquete, subsistema, modelo
modelo modelo
Tabla 2 - Vistas y diagramas de UML, basado en [RJB00: 22]

No hay componentes, ni conectores, ni constraints, ni configutraciones


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 Estilos de Cdigo Mvil
Tubera y filtros Arquitectura de Mquinas
Virtuales
Estilos Centrados en Datos
Estilos heterogneos
Arquitecturas de Pizarra o
Repositorio Sistemas de control de
procesos
Estilos de Llamada y Arquitecturas Basadas en
Retorno Atributos
Model-View-Controller Estilos Peer-to-Peer
(MVC) Arquitecturas Basadas en
Arquitecturas en Capas Eventos
Arquitecturas Orientadas Arquitecturas Orientadas
a Servicios (SOA)
a Objetos
Arquitecturas Basadas en
Arquitecturas Basadas en Recursos
Componentes
Estilos Derivados
C2
GenVoca
REST
Tres ejemplos
significativos
Arquitectura basada en eventos
Arquitectura de pizarra
Arquitecturas orientadas a servicios
Presentacin separada en esta serie
Arquitectura basada en
eventos
Impiden incurrir en el modelo de aplicaciones que
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 Fase de Desarrollo

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

Conceptos de ciencia de Claridad de diseo, Comportamiento de


Patrones de computacin en general, multiplicacin de clases, factora, Clase-
Diseo detallado
Diseo independiente de adaptabilidad a requerimientos Responsabilidad-
aplicacin cambiantes, etc Contrato (CRC)

Modelado del dominio, Modelos de dominio,


Patrones de Usualmente especficos de completitud, integracin y conocimiento sobre lo
equilibrio de objetivos mltiples, Anlisis
Anlisis aplicacin o industria que habr de incluirse (p.
planeamiento para capacidades ej. logging & reinicio)
adicionales comunes

Armado de equipo, ciclo


Desarrollo o procesos de
Patrones de de vida del software,
administracin de Productividad, comunicacin
Proceso o de asignacin de roles, Planeamiento
proyectos, o tcnicas, o efectiva y eficiente
Organizacin prescripciones de
estructuras de organizacin
comunicacin

Operaciones comunes bien


Sumamente especficos Implementacin,
Estndares de codificacin conocidas en un nuevo ambiente,
Idiomas de un lenguaje, Mantemimiento,
y proyecto o a travs de un grupo.
plataforma o ambiente Despliegue
Legibilidad, predictibilidad.
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
Sistema de indexacin de palabras claves
Datos compartidos
Tipos abstractos de datos
Invocacin implcita
Tubera y filtros
Comparacin de versatilidad, dependencia,
modularidad, reutilizacin, refinamiento,
ventajas & desventajas
Antes de escribir una lnea de cdigo
Tablas de comparacin de atributos
Asignacin de pesos a prioridades
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
Es esencial que se conserve un
nmero pequeo de estilos
disponibles
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:
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 Fecha Investigador - Organismo Observaciones
Acme 1995 Monroe & Garlan (CMU), Wile (USC) Lenguaje de intercambio de ADLs
Aesop 1994 Garlan (CMU) ADL de propsito general, nfasis
en estilos
ArTek 1994 Terry, Hayes-Roth, Erman Lenguaje especfico de dominio -
(Teknowledge, DSSA) No es ADL
Armani 1998 Monroe (CMU) ADL asociado a Acme
C2 SADL 1996 Taylor/Medvidovic (UCI) ADL especfico de estilo
CHAM 1990 Berry / Boudol Lenguaje de especificacin
Darwin 1991 Magee, Dulay, Eisenbach, Kramer ADL con nfasis en dinmica
Jacal 1997 Kicillof , Yankelevich (Universidad de Adl - Notacin de alto nivel para
Buenos Aires) descripcin y prototipado
LILEANNA 1993 Tracz (Loral Federal) Lenguaje de conexin de mdulos
MetaH 1993 Binns, Englehart (Honeywell) ADL especfico de dominio
Rapide 1990 Luckham (Stanford) ADL & simulacin
SADL 1995 Moriconi, Riemenschneider (SRI) ADL con nfasis en mapeo de
refinamiento
UML 1995 Rumbaugh, Jacobson, Booch (Rational) Lenguaje genrico de modelado
No es ADL
UniCon 1995 Shaw (CMU) ADL de propsito general, nfasis
en conectores y estilos
Wright 1994 Garlan (CMU) ADL de propsito general, nfasis
en comunicacin
xADL 2000 Medvidovic, Taylor (UCI, UCLA) ADL basado en XML
Acme/Armani
ADLs: Sustento formal
Darwin: clculo Pi (Milner-Parrow-Walker)
BizTalk primitivo, Polyphonic C#
Wright: Communicating Sequential
Processes (CSP), lgica de primer orden
LILEANNA: programacin parametrizada
e hiper-programacin
Rapide: Posets
SAM: Redes de Petri de transicin de
predicados, lgica temporal de primer
orden
Jacal: Redes de Petri
Casi todos los ADLs tienen BNF
Situacin actual de los
ADLs
Ninguno se impuso ni en la academia ni en
el mercado
Comps de espera:
UML 2
Domain Specific Languages
XML
Web Semntica
Visin positiva: necesidad de mtodos
formales debido a complejidad de factores
Visin negativa: ADLs obsoletos
La produccin de ADLs se ha desacelerado
Metodologas
arquitectnicas
Posicionamiento en Ventajas y desventajas
ciclo de vida (AS en (ATAM)
RUP) Eleccin de arquitectura
Atributos de calidad Anlisis de arquitectura
& escenarios (SAAM)
[Primitivas de Quality Attribute
atributo] Workshop (QAW)
Architecture Based Revisin activa de
Design (ABD) diseo parcial (ARID)
Tcticas Anlisis de
Arquitectnicas costo/beneficio (CBAM)
Comparacin de Reformulacin: UML &
alternativas (SACAM) RUP
Diseo basado en
Campos de AS
Fundamentos formales de la AS
Bases matemticas
Caracterizaciones formales de propiedades extra-
funcionales tales como mantenibilidad
Teoras de la interconexin
Tcnicas arquitectnicas de anlisis
Mtodos de desarrollo basados en arquitectura
Visual Studio 2005 Team System
Recuperacin y reutilizacin de arquitectura
Codificacin y gua arquitectnica
Herramientas y ambientes de diseo
arquitectnico
Estudios de casos
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
Apropiacin nominal de la AS por estrategias que
no implementan principios arquitectnicos pero se
benefician de su prestigio
Poca masa crtica de herramientas y lenguajes de
modelado arquitectnico (de alto nivel, con
conectores de primera clase)
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].

Anlisis de consistencia antes de


elaborar el diseo (y escribir el cdigo)
Sistematizacin de la experiencia
Homogeneizacin del lenguaje (IEEE
1471)
Herramientas para la evolucin
Re-utilizacin
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
Rick Kazman, Philippe Kruchten et al. 2004.
Integrating Software-Architecture-centric
methods into the Rational Unified Process,
CMU/SEI-2004-TR-011
Recomendaciones IEEE 1471/2000
Preguntas?
Billyr@microsoft.com.ar

Vous aimerez peut-être aussi