Diseño y Evaluación de Arquitecturas de Software Meta-modelos de diseño César Julio Bustacara Medina Facultad de Ingeniería Pontificia Universidad Javeriana 18/09/2015 1
Arquitectura de Software
Meta-Modelos Se provee un meta-modelo que es una abstracción de varias técnicas de diseño arquitectónico. Este modelo será usado para analizar y comparar las técnicas actuales de diseño.
Meta-Modelos The what The why Architecture Qualities Satisfies System Features Architecture Architecture Representation Constrain S/W Requirements System Quality Attributes The who Produces Technology Defines The how Architect Follows Process Stakeholders Skills Defines role Organization
Sy stem architecture is part of Meta-Modelos Software Architecture is represented by Software Architects are actors in Architecture Design Process has Software Architecture Description produces Logical view relates to has Architectural sty le Architecture Style guide has is made of Architectural view is made of is a constrains Process view Implementation view Deployment view Use case view Architectural Pattern is a Form Component Connection Constraints depicts Requirements satisfies constrains Architectural Blueprint
Meta-Modelos Adaptado de P. Kruchten, B. Selic, W. Kozaczynski. Describing Software Architecture with UML, 2001
Meta-modelos Cliente Conocimiento del Dominio Extraer estructuras de la solución Especificación Requerimientos Abstracción de la solución Capturar Requerimientos Conocimiento del Dominio Artefactos Especificación arquitectura Conocimiento del Dominio Descripción Arquitectura
Dominio Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto
Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto Se refiere al conocimiento sobre el problema desde una perspectiva del cliente. Incluye documentos de especificación de requerimientos, entrevistas con clientes, prototipos sugeridos por los clientes, etc.
Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto Se refiere al conocimiento sobre el problema desde una perspectiva del proceso de negocio. Incluye conocimiento sobre el proceso del negocio y también vista de los clientes y reportes de análisis de mercado
Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto Se refiere al conocimiento que proveen los conceptos del dominio para resolver el problema y el cual esta separado de los requerimientos específicos y el conocimiento sobre como se producen los sistemas de software. Esta clase de conocimiento esta incluido en libros, revistas científicas, y manuales, entre otros.
Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto Se refiere a los antecedentes (background) generales y experiencias del ingeniero de software y también puede incluir reglas generales.
Conocimiento del Dominio es-un Dominio del Problema Dominio del Negocio Dominio de la Solución Conocimiento General Sistema/ Producto Se refiere al conocimiento sobre un sistema, una familia de sistemas o a un producto (J2EE,.NET, )
Métodos de Diseño ABD Quality-driven Artefact-driven Use Case/Scenariodriven --> RUP Pattern-driven Domain-driven Functionality-based ABAS
ABD- Architecture Based Design Diseño Basado en la Arquitectura (Architecture Based Design - ABD) El promotor principal es Bachmann, quien provee una estructura para producir la arquitectura conceptual de un sistema. ABD determina las direcciones arquitecturales para el sistema. Es la combinación de requerimientos del negocio, de calidad y funcionales que influyen en la arquitectura.
ABD (Continue) Elementos: Descomposición funcional usando acoplamiento y cohesión Realización de los requerimientos de calidad y negocio a través de la selección de un estilo arquitectónico Uso de plantillas de software para describir un sistema de software de un tipo particular. Como deben interactuar los elementos...
ABD (Continue) Los pasos del método ABD, luego de haber definido los requerimientos, son los siguientes: 1. Identify architectural drivers. 2. Divide (encapsulate) functionality. 3. Choose architectural style.
ABD (Continue) 4. Allocate functionality to style. 5. Refine templates. 6. Verify functionality. 7. Generate concurrency view. 8. Generate deployment view. 9. Verify quality scenarios.
Quality-driven Esta basado en la utilización de estilos arquitectónicos y patrones como un principio de diseño de arquitecturas de alta calidad. Jan Bosch promueve este método, y considera que el diseño de arquitecturas de software toman ventaja de los requerimientos de calidad desde las etapas tempranas de desarrollo.
Artefact-driven Inicia a partir del texto de los requerimientos Mira tipos de artefactos en el método y trata de identificar artefactos desde la especificación de requerimientos usando reglas heurísticas Agrupa los artefactos relacionados en SUBSISTEMAS, estos son los componentes arquitectónicos Define las relaciones entre los subsistemas
Artefact-driven (Continue) Técnicas que extraen la descripción de la arquitectura a partir del artefacto descripciones del método Ejemplos: Métodos de Análisis y Diseño Orientado a Objetos tales como OMT y OAD
Use Case/Scenario-driven Basado en los casos de uso Extraer los casos de uso Identificar las clases fundamentales a partir de los casos de uso Agrupar las clases en packages, estos son los componentes arquitectónicos Definir las relaciones entre los packages
RUP Esta centrado en las vistas de diferentes modelos del sistema, casos de uso, análisis, diseño, implementación y despliegue Basado en el modelo "4+1" de Krutchen
Pattern-driven Inicia con la especificación de requerimientos Selecciona los patrones apropiados desde una base de patrones Organizar o componer los patrones seleccionados
Functionality-based Jan Bosch propone el método de diseño, verificar el texto 1999
ABAS Estilo Arquitectónico Basado en Atributos (Attribute-Based Architectural Style - ABAS)