Вы находитесь на странице: 1из 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
http://www.microsoft.com/spanish/msdn/arquitectura

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


La AS est formalmente desarrollada las disciplinas de RUP (cf. Kazman, Kruchten et al 2004)

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
Hay que considerar modelo de DSL

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.html
(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 Microsoft (Vistas) Lgica Conceptual Fsica

Tabla 1 - Vistas en los marcos de referencia

Vistas de UML
rea Estructural Vista Vista esttica Vista de casos de uso Vista de implementacin Vista de despliegue Dinmica Vista de mquinas de estados Vista de actividad Vista de interaccin Diagramas Diagrama de clases Diagramas de casos de uso Diagrama de componentes Diagrama de despliegue Diagrama de estados Diagrama de actividad Diagrama de secuencia Diagrama de colaboracin Diagrama de clases 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

Gestin del 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 primera clase

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 Criterios taxonmicos no homogneos Taxones de distinto nivel de inclusin
Algunos tipos pueden incluir otros (ej. 6 y 3)

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


Arquitectura de Mquinas Virtuales

Estilos Centrados en Datos


Arquitecturas de Pizarra o Repositorio

Estilos heterogneos
Sistemas de control de procesos Arquitecturas Basadas en Atributos

Estilos de Llamada y Retorno


Model-View-Controller (MVC) Arquitecturas en Capas Arquitecturas Orientadas a Objetos Arquitecturas Basadas en Componentes

Estilos Peer-to-Peer
Arquitecturas Basadas en Eventos Arquitecturas Orientadas a Servicios (SOA) Arquitecturas Basadas en Recursos

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

Diseo inicial

Patrones de Diseo

Conceptos de ciencia de computacin en general, independiente de aplicacin

Claridad de diseo, multiplicacin de clases, adaptabilidad a requerimientos cambiantes, etc


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

Comportamiento de factora, ClaseResponsabilidadContrato (CRC)


Modelos de dominio, conocimiento sobre lo que habr de incluirse (p. ej. logging & reinicio) Armado de equipo, ciclo de vida del software, asignacin de roles, prescripciones de comunicacin

Diseo detallado

Patrones de Anlisis

Usualmente especficos de aplicacin o industria

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

Idiomas

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

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 ArTek Armani C2 SADL CHAM Darwin Jacal LILEANNA MetaH Rapide SADL UML UniCon Wright xADL

Fecha 1995 1994 1994 1998 1996 1990 1991 1997 1993 1993 1990 1995 1995 1995 1994 2000

Investigador - Organismo Monroe & Garlan (CMU), Wile (USC) Garlan (CMU) 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) Rumbaugh, Jacobson, Booch (Rational) Shaw (CMU) Garlan (CMU) 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 hiperprogramacin 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
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 atributos (ADD) Ventajas y desventajas (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 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/arquitec tura 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/publications.html

Rick Kazman, Philippe Kruchten et al. 2004. Integrating Software-Architecture-centric methods into the Rational Unified Process, CMU/SEI-2004TR-011 Recomendaciones IEEE 1471/2000

Preguntas?
Billyr@microsoft.com.ar

Вам также может понравиться