Professional Documents
Culture Documents
Billy Reynoso
UNIVERSIDAD DE BUENOS AIRES
Billyr@microsoft.com.ar
Roadmap
Qu es la Arquitectura de Software?
Objetivos del curso Breve historia y definicin
Arquitectura, razonamiento de alto nivel y calidad operacional: Ejemplo cannico de prctica arquitectnica (Garlan & Shaw)
Contexto
Los 3 grandes temas de ingeniera de software
Patrones
Design patterns (GoF) - 1995
Erich Gamma, Richard Helm, Ralph Johnson y John Vlissides
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.
Definicin
http://www.sei.cmu.edu/architecture/definitions.html
(1) Proceso dentro del ciclo de vida, (2) Topologa, (3) Disciplina.
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
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
Corrientes principales
Arquitectura estructural SEI Carnegie Mellon
Garlan, Shaw, Clements Variantes con modelos de datos (Medvidovic), radicales, formales (Moriconi-SRI), etc
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
Conectores
Configuraciones Restricciones (Constraints) Mano mgica (Fielding, 2000)
UML?
Estilos Arquitectnicos
Estilos de Flujo de Datos
Tubera y filtros
Estilos heterogneos
Sistemas de control de procesos Arquitecturas Basadas en Atributos
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
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
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
Patterns
Christopher Alexander, 1977
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
Diseo inicial
Patrones de Diseo
Diseo detallado
Patrones de Anlisis
Anlisis
Planeamiento
Idiomas
Operaciones comunes bien conocidas en un nuevo ambiente, o a travs de un grupo. Legibilidad, predictibilidad.
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
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
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
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
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
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
Preguntas?
http://www.microsoft.com/spanish/msdn/arquitectura
Billyr@microsoft.com.ar