050608-Architect Academy Webcast 1

download 050608-Architect Academy Webcast 1

of 40

Transcript of 050608-Architect Academy Webcast 1

Architect Academy: Seminario de Arquitectura de SoftwareBilly ReynosoUNIVERSIDAD DE BUENOS AIRES

[email protected]

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

[email protected]