You are on page 1of 40

Architect Academy: Seminario de Arquitectura de Software

Billy Reynoso
UNIVERSIDAD DE BUENOS AIRES

Billyr@microsoft.com.ar

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

Arquitecturas Basadas en
Recursos

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 eventos


Modelo 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 Services
COM+ 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, 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

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

Documento

Frame

Requerimientos no funcionales
Escenarios, 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 metodologa
Refinamiento 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 estilos
Mary 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 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

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

Billyr@microsoft.com.ar

You might also like