Sunteți pe pagina 1din 33

Introduccin a la Arquitectura de Software

Carlos Reynoso

UNIVERSIDAD DE BUENOS AIRES

Billyreyno@hotmail.com

Temario
Contexto Estereotipos Antecedentes histricos Definicin Corrientes principales Conceptos fundamentales Estilos arquitectnicos Lenguajes de Descripcin Arquitectnica (ADLs) Mtodos clsicos, arquitectnicos y giles Situacin & Roadmap http://www.microsoft.com/spanish/msdn/arquit Paper ectura

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

Arquitectura de Software Mtodos heterodoxos (eXtreme Programming, Scrum, Evo, FDD, DSDM, RUP, AM, Crystal, LD, ASD)

Otros:
Refactorizacin (Fowler)

Estereotipos
Arquitectura como normativa madura Herramientas de diseo arquitectnico Lenguajes arquitectnicos iguales en la academia y la industria UML como lenguaje formal de modelado Arquitectura vinculada con ingeniera & ciclo de vida Arquitectura vinculada a metodologa (RUP) La AS tiene que ver con modelado OO Hay vnculo natural entre requerimientos (casos de uso) y clases Las herramientas arquitectnicas generan el cdigo de la aplicacin

Antecedentes histricos
Edsger Dijkstra, 1968
Ciencias de la computacin como rama aplicada de las matemticas Niveles de abstraccin

NATO, 1969
P. I. Sharp, Arquitectura de software

Fred Brooks, 1975 MMM


Arquitectura como interfaz usuario

David Parnas
1972: Mdulos Ocultamiento de informacin 1974: Estructuras de software 1976: Familias de programas (rbol de

Antecedentes histricos
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, Bibl as como sealar las nuevas tcnicas que han sido adoptadas.

Escuela de Carnegie Mellon (CMU-SEI)


Mary Shaw, David Garlan, Paul Clements, Robert Allen

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.

Ingeniera - IEEE 610.12.1990:


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

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


Garlan, Shaw, Clements Variantes con modelos de datos (Medvidovic), variantes radicales, formales (Moriconi-SRI), etc

Arquitectura basada en patrones SEI Arquitectura procesual


Kazman, Bass (SEI)

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

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 44 + (Vistas) Lgica Proceso Fsica Desarrollo Casos de uso [BRJ44 ] (Vistas) Diseo Proceso Implementacin Despliegue Casos de uso POSA (Vistas) Lgica Proceso Fsica Desarrollo Microsoft (Vistas) Lgica Conceptual Fsica

Tabla 4 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 Gestin del modelo 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

Vista de gestin del modelo Tabla 4 Vistas y diagramas de UML, basado en [RJB44 ] : 44

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

Estilos Arquitectnicos
Perry & Wolf, 1992 Rumbaugh & al 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

Incluyen:
Componentes Conectores Estructuras (topologas) Restricciones (constraints)

Estilos

Flujo de datos
Secuencial en lotes Red de flujo de datos (tuberas & filtros) Bucle de control cerrado

Llamada y Retorno
Programa principal / subrutinas Ocultamiento de informacin (ADT, objeto, cliente/servidor elemental)

Procesos interactivos
Procesos comunicantes Sistemas de eventos (invocacin implcita, eventos puros)

Repositorio Orientado a Datos


Bases de datos transaccionales (cliente/servidor genuino) Pizarra Compilador moderno

Datos Compartidos
Documentos compuestos Hipertexto Fortran COMMON Procesos LW

Jerrquicos - En capas (intrpretes)

Tubera y filtros
Pizarra

Modelo-Vista-Controlador

Arquitectura en Capas

Mquina virtual

Modelo REST

Estilos
Presentacin especfica el segundo cuatrimestre Documento sobre Estilos Arquitectnicos Billyr@microsoft.com.ar http://www.microsoft.com/spanish/ msdn/arquitectura
Estilos

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

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

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

Lenguajes de Descripcin Arquitectnica (ADLs)


Lenguajes para el modelado, la descripcin y (eventualmente) la prueba de la arquitectura Presentacin especfica el segundo cuatrimestre

ADLs

Mtodos Clsicos, Arquitectnicos y giles


4 Modelos de proceso y diseo . 4. .4 Mtodos tradicionales y de peso completo CMM, UPM 1. .1 Mtodos basados en arquitectura 4 .4 .4 . Mtodos de anlisis y diseo en el ciclo de vida Visin general 4 .4 .4 . Arquitectura basada en escenarios (FAAM, ALMA) 1 .1 .1 . El diseo arquitectnico en el ciclo de vida: ABD 1 .1 .1 . Active Review for Intermediate Design (ARID) 1 .1 .1 . Quality Attribute Workshops (QAW) - QASAR 1 .1 .1 . Attribute-Driven Design (ADD) 1 .1 .1 . Evaluacin: Architecture Tradeoff Analysis Method (ATAM) 1 .1 .1 . Mtodos de evaluacin de opciones arquitectnicas (SACAM) 1 .1 .1 . Derivacin de tcticas arquitectnicas 1 .1. .1 1 Economa de la arquitectura: Cost-Benefits Analysis Method (CBAM) 4 .4. .4 4 Documentacin de la Arquitectura 4. .4 Mtodos heterodoxos y de peso ligero: Mtodos Agiles, Programacin Extrema Concepcin cardica de los sistemas complejos

Metodolo ga Adap tive Software Developmen t Agile Mo deling Crystal Meth ods Agile RUP Dynamic Solu tions Delivery Mo del Evo lution ary Project Managemen t Ex treme Programming Feature-driven d evelopmen t Lean Developmen t Rapid Developmen t Rational Unified Process Scrum

Acrnimo ASD AM CM dX DSDM Evo XP FDD LD RAD RUP Scrum

Creaci n Highsmith 4444 Ambler 4444 Cockb urn 4444 Booch, Martin, Newkirk 44 44 Stapleto n 1111 Gilb 4444 Beck 4444

Tipo de mod elo Prcticas + Ciclo de vid a Metod ologa b asada en la prctica Familia de meto dologas Framework / Discip lin a Framework / Modelo de ciclo d e vid a Framework adaptativo

Disciplina en prcticas de in geniera De Lu ca & Co ad 4444 Meto dologa Palmer & Felsing 4444 Ch arette 4444 y , Mary Forma de pensar Tom Pop pend ieck Mod elo logstico McCon nell 4444 Survey de tcn icas y mod elos Kruchten 4444 Proceso unificad o Sutherland 1111 Sch waber 1111 Proceso (framework de management)

Caracterstica Inspirad o en sistemas ad aptativos complejos Suministra modelado gil a otros mto dos MA con nfasis en mod elo de ciclos XP dado vu elta con artefactos RUP Creado por 11 expertos en RAD Primer mtodo gil ex istente Mtodo gil rad ical Mto do gil de dise o y con strucci n Metod ologa b asado en procesos produ ctivos Seleccin de best pra ctices, n o mtod o Mtod o (gil?) con mo delad o Complemen to de otros mtod os, giles o n o

Manifesto gil (2001)


Estamos poniendo al descubierto formas mejores de desarrollo de software, hacindolo y ayudando a otros a que lo hagan. A travs de este trabajo hemos llegado a valorar: Los individuos y la interaccin por encima de los procesos y herramientas. El software que funciona por encima de la documentacin abarcadora. La colaboracin con el cliente por encima de la negociacin contractual. La respuesta al cambio por encima del seguimiento de un plan. Documento Aunque hay valor en los elementos a la derecha,

Campos de AS
Fundamentos formales de la AS (bases matemticas, caracterizaciones formales de propiedades extra-funcionales tales como mantenibilidad, teoras de la interconexin, etc). Tcnicas de anlisis arquitectnicas Mtodos de desarrollo basados en arquitectura Recuperacin y reutilizacin de arquitectura Codificacin y gua arquitectnica Herramientas y ambientes de diseo arquitectnico Estudios de casos

Situacin
Academia La arquitectura se define explcitamente La arquitectura consiste en componentes y conectores de primera clase Los lenguajes de descripcin de arquitectura (ADLs) describen la arquitectura explcitamente y a veces la generan Los componentes reutilizables son entidades de caja negra Los componentes tienen interfaces con un solo punto de acceso Se otorga prioridad a la funcionalidad y la verificacin formal Industria Prevalece una comprensin conceptual de la arquitectura. Las definiciones explcitas son mnimas, eventualmente mediante notaciones No hay conectores explcitos de primera clase (a veces hay soluciones ad hoc de binding en tiempo de ejecucin) Se utilizan lenguajes de programacin Los componentes son grandes piezas de software de estructuras interna compleja, no necesariamente encapsulados Las interfaces se proporcionan mediante entidades (clases en los componentes). Las entidades de interfaz no tienen diferencias explcitas de entidades que no son de interfaz La funcionalidad y los atributos de calidad (performance, robustez, tamao, reusabilidad, mantenibilidad) tienen igual importancia

Problemas de AS
Falta de criterio unificado Desarrollo en paralelo de conceptos antagnicos o no coordinados
Mtodos giles Metodologas de ciclo de vida Patrones

Poca masa crtica de herramientas y lenguajes de modelado arquitectnico (de alto nivel, con conectores de primera clase)

Beneficios
Decisiones tempranas Anlisis de consistencia Anlisis de tradeoff antes de escribir cdigo
Mary Shaw y David Garlan [1996] comparan una misma solucin de indexacin de palabras claves en cuatro estilos diferentes (datos compartidos, tubera y filtro, tipos abstractos de datos e invocacin implcita). El modelo permite estimar relaciones de dependencia, modularidad, refinamiento, reutilizacin, ventajas y desventajas de cada arquitectura antes de escribir una sola lnea de cdigo; demuestra tambin de qu manera los diferentes estilos definen tcticas especficas de descomposicin funcional y establecen la pauta que habr de seguirse en el desarrollo. Finalmente, SG aplican diversas tablas de comparacin de atributos, en un ejercicio de evaluacin de decisiones estilsticas que se ha convertido en un modelo en su gnero

Re-utilizacin

Oportunidades de carrera
-Programacin .NET -Arquitectura de Software .NET
http://carlosreynoso.com.ar
http://www.microsoft.com/spanish/msdn/arqu itectura

Preguntas?

S-ar putea să vă placă și