Download - 050608-Architect Academy Webcast 1
Architect Academy: Seminario de Arquitectura de SoftwareBilly ReynosoUNIVERSIDAD DE BUENOS AIRES
Roadmap
Webcast #1: Qu es la Arquitectura de Software?
Webcast #2: Drilldown en Estilos de Arquitectura Webcast #3: Arquitectura para distribucin y agregacin: Services Oriented Architecture (SOA) Webcast #4: Diseando la arquitectura
Qu es la Arquitectura de Software? Objetivos del curso Breve historia y definicin
Principales conceptos arquitectnicos Estilos de arquitectura: componentes, conectores, restricciones (constraints), configuraciones Disear para calidad de desarrollo: Estilos y Patrones
Puntos de vista arquitectnicos: componente, concurrencia, despliegue Requerimientos no funcionales: Tcticas y frameworks de conocimiento Ms all de los casos de uso: Escenarios y atributos de calidad Lenguajes de Descripcin Arquitectnica (ADLs)
Arquitectura, razonamiento de alto nivel y calidad operacional: Ejemplo cannico de prctica arquitectnica (Garlan & Shaw)
Objetivos del curso Clarificar el carcter distintivo de la Arquitectura de Software Proporcionar lineamientos y recursos para la prctica arquitectnica Vincular visiones de la academia y la industria Establecer situacin actual y perspectivas, con nfasis en las herramientas, middleware y sistemas operativos de Microsoft
Contexto Los 3 grandes temas de ingeniera de software PatronesDesign 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 (2001)eXtreme Programming, Scrum, Evo, FDD, DSDM, RUP, AM, Crystal, LD, ASD)
Arquitectura de Software (1992)
Surgimiento 1969 Conferencia OTAN 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) Mary Shaw, David Garlan, Paul Clements, Robert Allen Bibl
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
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.
La Arquitectura no es Una normativa madura Igual en la academia y en la industria Diseo de software con UML Naturalmente vinculada con 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
Naturalmente vinculada a metodologa (RUP) Naturalmente relacionada con modelado Orientado a Objetos Hay vnculo natural entre requerimientos (casos de uso) y clases
Las herramientas arquitectnicas generan el cdigo de la aplicacin
Arquitectura es
Vista estructural de alto nivel Define estilo o combinacin de estilos para una solucin Se concentra en requerimientos no funcionales Los requerimientos funcionales se satisfacen mediante modelado y diseo de aplicacin
Esencial para xito o fracaso de un proyecto
Corrientes principales Arquitectura estructural SEI Carnegie Mellon Garlan, Shaw, Clements Variantes con modelos de datos (Medvidovic), radicales, formales (Moriconi-SRI), etc
Arquitectura como etapa de la ingeniera de software orientada a objetos James Rumbaugh, Grady Booch, Ivar Jacobson (los 3), Craig Larman
Arquitectura basada en patrones SEI Redefinicin de estilos como patrones POSA Microsoft Patterns & Practices
Arquitectura procesual y metodologas Kazman, Bass (SEI) Variantes de arquitectura basada en escenarios
Estilos Arquitectnicos 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
Estilos Nueva concepcin Perry & Wolf, 1992 Componentes (ahora: Elementos)
Conectores Configuraciones Restricciones (Constraints) Mano mgica (Fielding, 2000)
UML?
Estilos ArquitectnicosEstilos 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
Arquitecturas Basadas enRecursos
Estilos derivados C2 GenVoca
REST
Estilos Sirven para sintetizar estructuras de soluciones Pocos estilos abstractos encapsulan una enorme variedad de configuraciones concretas Definen los patrones posibles de las aplicaciones Permiten evaluar arquitecturas alternativas con ventajas y desventajas conocidas ante diferentes conjuntos de requerimientos no funcionales
Ejemplo Mala prctica: Aplicaciones clientes que consultan si sucedi algo Listener de HTTP, Archivo, Colas
Buena prctica: Estilo basado en Eventos
Ejemplo Arquitectura basada en eventosModelo de push a veces se vincula con patrn Observador (Observer pattern)
Arquitectura basada en eventos Ventajas Simplicidad
Evolucin: se pueden reemplazar componentes suscriptores Modularidad: una sola modalidad para eventos diversos Puede mejorar eficiencia, eliminando la necesidad de polling por ocurrencia de evento
Desventajas Posibilidad de desborde Potencial imprevisin de escalabilidad Pobre comprensibilidad: Puede ser difcil prever qu pasar en respuesta a una accin No hay garanta del lado del publisher que el suscriptor responder al evento No hay mucho soporte de recuperacin en caso de falla parcial
Arquitectura basada en eventos
Dos modelos de arquitectura e implementacin Tightly coupled events (TCE, eventos fuertemente acoplados) P. ej. COM Connection Points. Requiere que ambos componentes estn corriendo simultneamente. No hay forma de filtrar evento (p. ej. cuando accin alcance cierto valor) Requiere conocer ambas interfaces especficas
Losely coupled events (LCE, eventos dbilmente acoplados) P. ej. COM+ Events
Almacenamiento de eventos (COM+ Catalog) Referencia: MSDN Library COM+ Technical Series: Losely coupled events
Arquitectura basada en eventos Permiten invocacin implcita de una herramienta cuando otra herramienta produce un evento Tambin se llama Invocacin implcita Un componente anuncia un evento. Otros registran inters en ese tipo de evento. Cuando se produce, el sistema (la mano invisible) lo comunica a los suscriptores.
Algunos incluyen a MVC en esta clase Modelo Publish / Subscribe MS: Registracin de Eventos COM+, eventos (listeners) de BizTalk Server, Notification Service de SQL Server
Demo
Arquitectura basada en eventos Herramientas en ambiente COM+/.NET En muchos casos no se requiere programacin de bajo nivel Tambin hay profusin de herramientas programticas y servicios de mano mgica Administrative tools Component ServicesCOM+ Applications .NET Utilities, Biztalk Server/Interchange
Relacin entre Estilos y Patrones (Patterns)
Patterns Christopher Alexander, 1977
Un patrn es una solucin a un problema en un contexto Un patrn codifica conocimiento especfico acumulado por la experiencia en un dominio Un sistema bien estructurado est lleno de patrones
Patterns - Alexander Cada patrn describe un problema que ocurre una y otra vez en nuestro ambiente, y luego describe el ncleo de la solucin a ese problema, de tal manera que puedes usar esa solucin un milln de veces ms, sin hacer jams la misma cosa dos veces. Ejemplos: galera, paseo, patio compartido, columnata, estacionamiento
Elementos de un patrn Nombre Define un vocabulario de diseo
Facilita abstraccin
Problema Describe cuando aplicar el patrn Conjunto de fuerzas: objetivos y restricciones Prerrequisitos
Solucin Elementos que constituyen el diseo (template) Forma cannica para resolver fuerzas
Consecuencias Resultados, extensiones y tradeoffs
MVC
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, etcModelado 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
Organizacin de Patrones Propuesta por MS para Enterprise Solution Patterns Using Microsoft .NET (ESP) Propsito: Identificar relaciones entre patrones Agrupar patrones en clusters Identificar patrones a diversos niveles de abstraccin Aplicar patrones a mltiples aspectos de una solucin
Organizar patrones en un frame Usar patrones para describir en forma concisa una solucin
Ejemplos de ESP
Niveles de abstraccinVistas
Documento
Frame
Requerimientos no funcionalesEscenarios, tcticas, frameworks Performance Disponibilidad Modificabilidad Seguridad Verificabilidad (Testability) Gestionabilidad (instrumentacin, management, estado) Usabilidad
Atributos de Calidad
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.
Ejemplo de metodologaRefinamiento de Escenario
Los escenarios se refinan considerando: 1. Estmulo - La condicin que afecta al sistema 2. Respuesta - La actividad que resulta del estmulo 3. Fuente del estmulo - La entidad que lo genera 4. Ambiente - La condicin bajo la cual el estmulo ocurre 5. Artefacto estimulado 6. Medida de respuesta - Para evaluar la respuesta del sistema
Se describen los objetivos de negocio/misin afectados por el escenario y las cualidades relevantes asociadas con l
En funcn de los escenarios se pueden evaluar los estilos arquitectnicos que pueden satisfacer los requerimientos
Lenguajes de Descripcin Arquitectnica (ADLs) Componentes
Conectores Configuraciones o sistemas Propiedades no funcionales Restricciones Estilos Evolucin Herramientas de verificacin
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
Mtodos basados en Arquitectura Architecture Tradeoff Analysis Method (ATAM) Quality Attribute Workshops (QAW) Attribute-Driven Design (ADD) Active Reviews for Intermediate Designs (ARID) Cost-Benefit Analysis Method (CBAM) Software Architecture Comparison Analysis Method (SACAM) Quality-Attribute-Driven Software Architecture Reconstruction (QADSAR)
Architecture Based Design Method (ABD)Software Architecture Analysis Method (SAAM)
Usos de estilosMary Shaw, David Garlan, 1996 IEEE98SA-Styles-Patterns.pdf Inspirado en trabajo de Parnas, 1972 (On the criteria to be used in decomposing systems into modules) Datos compartidos vs ocultamiento de informacin Datos compartidos Tipos abstractos de datos
Sistema de indexacin de palabras claves
Invocacin implcitaTubera 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
Paper
Sntesis Arquitectura: Visin de alto nivel
Estilo - Patrn Previo a diseo de aplicacin Requerimientos no funcionales Escenarios Lenguajes de descripcin arquitectnica
Referencias
Len Bass, Paul Clements, Rick Lazman. Software Architecture in Practice, 2a edicin, Addison-Wesley, 2003 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal. Pattern Oriented Software Architecture, vol. 1. Wiley, 1996 Documentos en http://www.microsoft.com/spanish/msdn/Arquitectura
Docs
Webcast # 2 Drilldown en estilos de arquitectura Disear desde arriba: La especificidad de la abstraccin arquitectnica Estilos: historia, definicin, inventario Estilos fundamentales Prctica arquitectnica Implementando estilos con Windows services, Middleware MS y .NET Framework
Preguntas?http://www.microsoft.com/spanish/msdn/arquitectura