050608-Architect Academy Webcast 1

40
Architect Academy: Seminario de Arquitectura de Software Billy Reynoso UNIVERSIDAD DE BUENOS AIRES [email protected]

description

Architect Academy Webcast 1

Transcript of 050608-Architect Academy Webcast 1

  • Architect Academy:Seminario de Arquitectura de SoftwareBilly Reynoso UNIVERSIDAD DE BUENOS [email protected]

  • RoadmapWebcast #1: Qu es la Arquitectura de Software?Webcast #2: Drilldown en Estilos de ArquitecturaWebcast #3: Arquitectura para distribucin y agregacin: Services Oriented Architecture (SOA)Webcast #4: Diseando la arquitectura

  • Qu es la Arquitectura de Software?Objetivos del cursoBreve historia y definicinPrincipales conceptos arquitectnicosEstilos de arquitectura: componentes, conectores, restricciones (constraints), configuracionesDisear para calidad de desarrollo: Estilos y PatronesPuntos de vista arquitectnicos: componente, concurrencia, despliegueRequerimientos no funcionales: Tcticas y frameworks de conocimientoMs all de los casos de uso: Escenarios y atributos de calidadLenguajes de Descripcin Arquitectnica (ADLs)Arquitectura, razonamiento de alto nivel y calidad operacional: Ejemplo cannico de prctica arquitectnica (Garlan & Shaw)

  • Objetivos del cursoClarificar el carcter distintivo de la Arquitectura de SoftwareProporcionar lineamientos y recursos para la prctica arquitectnicaVincular visiones de la academia y la industriaEstablecer situacin actual y perspectivas, con nfasis en las herramientas, middleware y sistemas operativos de Microsoft

  • ContextoLos 3 grandes temas de ingeniera de softwarePatrones Design patterns (GoF) - 1995Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides Architectural patterns (POSA) - 1996Frank 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)

  • Surgimiento1969 Conferencia OTANDewayne Perry, Alexander Wolf 1992Foundations for the study of software architectureLa 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 AllenBibl

  • Definicinhttp://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 / MSFIngeniera - 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 esUna normativa maduraIgual en la academia y en la industriaDiseo de software con UMLNaturalmente vinculada con ingeniera & ciclo de vidaOcurre en algn punto entre la elicitacin de requerimientos y la especificacin de casos de uso, o entre stos y el diseoNaturalmente vinculada a metodologa (RUP)Naturalmente relacionada con modelado Orientado a ObjetosHay vnculo natural entre requerimientos (casos de uso) y clasesLas herramientas arquitectnicas generan el cdigo de la aplicacin

  • Arquitectura esVista estructural de alto nivelDefine estilo o combinacin de estilos para una solucinSe concentra en requerimientos no funcionalesLos requerimientos funcionales se satisfacen mediante modelado y diseo de aplicacinEsencial para xito o fracaso de un proyecto

  • Corrientes principalesArquitectura estructural SEI Carnegie MellonGarlan, Shaw, ClementsVariantes con modelos de datos (Medvidovic), radicales, formales (Moriconi-SRI), etcArquitectura como etapa de la ingeniera de software orientada a objetosJames Rumbaugh, Grady Booch, Ivar Jacobson (los 3), Craig LarmanArquitectura basada en patrones SEIRedefinicin de estilos como patrones POSAMicrosoft Patterns & PracticesArquitectura procesual y metodologasKazman, 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 concepcinPerry & Wolf, 1992Componentes (ahora: Elementos)ConectoresConfiguracionesRestricciones (Constraints)Mano mgica (Fielding, 2000)UML?

  • Estilos ArquitectnicosEstilos de Flujo de DatosTubera y filtrosEstilos Centrados en DatosArquitecturas de Pizarra o RepositorioEstilos de Llamada y RetornoModel-View-Controller (MVC)Arquitecturas en CapasArquitecturas Orientadas a ObjetosArquitecturas Basadas en ComponentesEstilos de Cdigo MvilArquitectura de Mquinas VirtualesEstilos heterogneosSistemas de control de procesosArquitecturas Basadas en AtributosEstilos Peer-to-PeerArquitecturas Basadas en EventosArquitecturas Orientadas a ServiciosArquitecturas Basadas en Recursos

  • Estilos derivadosC2GenVocaREST

  • EstilosSirven para sintetizar estructuras de solucionesPocos estilos abstractos encapsulan una enorme variedad de configuraciones concretasDefinen los patrones posibles de las aplicacionesPermiten evaluar arquitecturas alternativas con ventajas y desventajas conocidas ante diferentes conjuntos de requerimientos no funcionales

  • EjemploMala prctica:Aplicaciones clientes que consultan si sucedi algoListener de HTTP, Archivo, ColasBuena prctica:Estilo basado en Eventos

  • EjemploArquitectura basada en eventosModelo de push a veces se vincula con patrn Observador (Observer pattern)

  • Arquitectura basada en eventosVentajasSimplicidadEvolucin: se pueden reemplazar componentes suscriptoresModularidad: una sola modalidad para eventos diversosPuede mejorar eficiencia, eliminando la necesidad de polling por ocurrencia de eventoDesventajasPosibilidad de desbordePotencial imprevisin de escalabilidadPobre comprensibilidad: Puede ser difcil prever qu pasar en respuesta a una accinNo hay garanta del lado del publisher que el suscriptor responder al eventoNo hay mucho soporte de recuperacin en caso de falla parcial

  • Arquitectura basada en eventosDos modelos de arquitectura e implementacinTightly 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 especficasLosely coupled events (LCE, eventos dbilmente acoplados)P. ej. COM+ EventsAlmacenamiento de eventos (COM+ Catalog)Referencia: MSDN Library COM+ Technical Series: Losely coupled events

  • Arquitectura basada en eventosPermiten invocacin implcita de una herramienta cuando otra herramienta produce un eventoTambin se llama Invocacin implcitaUn 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 claseModelo Publish / SubscribeMS: Registracin de Eventos COM+, eventos (listeners) de BizTalk Server, Notification Service de SQL Server

    Demo

  • Arquitectura basada en eventosHerramientas en ambiente COM+/.NETEn muchos casos no se requiere programacin de bajo nivelTambin hay profusin de herramientas programticas y servicios de mano mgicaAdministrative toolsComponent ServicesCOM+ Applications.NET Utilities, Biztalk Server/Interchange

  • Relacin entre Estilos y Patrones (Patterns)

  • PatternsChristopher Alexander, 1977Un patrn es una solucin a un problema en un contextoUn patrn codifica conocimiento especfico acumulado por la experiencia en un dominioUn sistema bien estructurado est lleno de patrones

  • Patterns - AlexanderCada 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 patrnNombreDefine un vocabulario de diseoFacilita abstraccinProblemaDescribe cuando aplicar el patrnConjunto de fuerzas: objetivos y restriccionesPrerrequisitosSolucinElementos que constituyen el diseo (template)Forma cannica para resolver fuerzasConsecuenciasResultados, extensiones y tradeoffsMVC

  • Organizacin de PatronesPropuesta por MS para Enterprise Solution Patterns Using Microsoft .NET (ESP) Propsito:Identificar relaciones entre patronesAgrupar patrones en clustersIdentificar patrones a diversos niveles de abstraccinAplicar patrones a mltiples aspectos de una solucinOrganizar patrones en un frameUsar patrones para describir en forma concisa una solucin

  • Ejemplos de ESPNiveles de abstraccinVistasFrameDocumento

  • Requerimientos no funcionalesEscenarios, tcticas, frameworksPerformanceDisponibilidadModificabilidadSeguridadVerificabilidad (Testability)Gestionabilidad (instrumentacin, management, estado)Usabilidad

  • Atributos de Calidad

  • EscenariosEstmulo, ambiente, respuestaEscenario 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 EscenarioLos escenarios se refinan considerando:1. Estmulo - La condicin que afecta al sistema2. Respuesta - La actividad que resulta del estmulo3. Fuente del estmulo - La entidad que lo genera4. Ambiente - La condicin bajo la cual el estmulo ocurre5. Artefacto estimulado 6. Medida de respuesta - Para evaluar la respuesta del sistemaSe describen los objetivos de negocio/misin afectados por el escenario y las cualidades relevantes asociadas con lEn funcn de los escenarios se pueden evaluar los estilos arquitectnicos que pueden satisfacer los requerimientos

  • Lenguajes de Descripcin Arquitectnica (ADLs)ComponentesConectoresConfiguraciones o sistemasPropiedades no funcionalesRestriccionesEstilosEvolucinHerramientas de verificacin

  • ADL

    Fecha

    Investigador - Organismo

    Observaciones

    Acme

    1995

    Monroe & Garlan (CMU), Wile (USC)

    Lenguaje de intercambio de ADLs

    Aesop

    1994

    Garlan (CMU)

    ADL de propsito general, nfasis en estilos

    ArTek

    1994

    Terry, Hayes-Roth, Erman (Teknowledge, DSSA)

    Lenguaje especfico de dominio - No es ADL

    Armani

    1998

    Monroe (CMU)

    ADL asociado a Acme

    C2 SADL

    1996

    Taylor/Medvidovic (UCI)

    ADL especfico de estilo

    CHAM

    1990

    Berry / Boudol

    Lenguaje de especificacin

    Darwin

    1991

    Magee, Dulay, Eisenbach, Kramer

    ADL con nfasis en dinmica

    Jacal

    1997

    Kicillof , Yankelevich (Universidad de Buenos Aires)

    Adl - Notacin de alto nivel para descripcin y prototipado

    LILEANNA

    1993

    Tracz (Loral Federal)

    Lenguaje de conexin de mdulos

    MetaH

    1993

    Binns, Englehart (Honeywell)

    ADL especfico de dominio

    Rapide

    1990

    Luckham (Stanford)

    ADL & simulacin

    SADL

    1995

    Moriconi, Riemenschneider (SRI)

    ADL con nfasis en mapeo de refinamiento

    UML

    1995

    Rumbaugh, Jacobson, Booch (Rational)

    Lenguaje genrico de modelado No es ADL

    UniCon

    1995

    Shaw (CMU)

    ADL de propsito general, nfasis en conectores y estilos

    Wright

    1994

    Garlan (CMU)

    ADL de propsito general, nfasis en comunicacin

    xADL

    2000

    Medvidovic, Taylor (UCI, UCLA)

    ADL basado en XML

  • Mtodos basados en ArquitecturaArchitecture 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, 1996IEEE98SA-Styles-Patterns.pdfInspirado en trabajo de Parnas, 1972 (On the criteria to be used in decomposing systems into modules) Datos compartidos vs ocultamiento de informacinSistema de indexacin de palabras clavesDatos compartidosTipos abstractos de datosInvocacin implcitaTubera y filtrosComparacin de versatilidad, dependencia, modularidad, reutilizacin, refinamiento, ventajas & desventajasAntes de escribir una lnea de cdigoTablas de comparacin de atributosAsignacin de pesos a prioridadesPaper

  • SntesisArquitectura: Visin de alto nivelEstilo - PatrnPrevio a diseo de aplicacinRequerimientos no funcionalesEscenariosLenguajes de descripcin arquitectnica

  • ReferenciasLen Bass, Paul Clements, Rick Lazman. Software Architecture in Practice, 2a edicin, Addison-Wesley, 2003Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal. Pattern Oriented Software Architecture, vol. 1. Wiley, 1996Documentos en http://www.microsoft.com/spanish/msdn/Arquitectura

    Docs

  • Webcast # 2 Drilldown en estilos de arquitecturaDisear desde arriba: La especificidad de la abstraccin arquitectnicaEstilos: historia, definicin, inventarioEstilos fundamentalesPrctica arquitectnicaImplementando estilos con Windows services, Middleware MS y .NET Framework

  • Preguntas?http://www.microsoft.com/spanish/msdn/[email protected]