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
(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

Tabla 1 - Vistas en los marcos de referencia

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

Vista de gestin del


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
Tubera y filtros

Estilos Centrados en Datos


Arquitecturas de Pizarra o
Repositorio

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 de Cdigo Mvil


Arquitectura de Mquinas
Virtuales

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 eventos


Arquitectura de pizarra
Arquitecturas orientadas a servicios
Presentacin separada en esta serie

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

Modelado del dominio,


completitud, integracin y
equilibrio de objetivos mltiples,
planeamiento para capacidades
adicionales comunes

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

Armado de equipo, ciclo


de vida del software,
asignacin de roles,
prescripciones de
comunicacin

Planeamiento

Estndares de codificacin
y proyecto

Operaciones comunes bien


conocidas en un nuevo ambiente,
o a travs de un grupo.
Legibilidad, predictibilidad.

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

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:
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

Terry, Hayes-Roth, Erman


(Teknowledge, DSSA)
Monroe (CMU)
Taylor/Medvidovic (UCI)
Berry / Boudol
Magee, Dulay, Eisenbach, Kramer
Kicillof , Yankelevich (Universidad de
Buenos Aires)
Tracz (Loral Federal)
Binns, Englehart (Honeywell)
Luckham (Stanford)
Moriconi, Riemenschneider (SRI)

UML

1995

Rumbaugh, Jacobson, Booch (Rational)

UniCon

1995

Shaw (CMU)

Wright

1994

Garlan (CMU)

xADL

2000

Medvidovic, Taylor (UCI, UCLA)

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

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
Modelo estructural no ligado a OO

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
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

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