Diseño y Evaluación de Arquitecturas de Software Documentación César Julio Bustacara Medina Facultad de Ingeniería Pontificia Universidad Javeriana 11/09/2015 1 Arquitectura de Software Introducción • Representan un aspecto parcial de una Arquitectura de Software mostrando propiedades específicas de un sistema de software ¿Para qué documentar? • Las arquitecturas tiene importancia para sistemas a largo plazo. • Comunicar la arquitectura a los interesados es tan importante como crearla. • Para entender, pues si los interesados no entienden la arquitectura (y la analizan, mantienen y aprenden), se pierde el esfuerzo de haberla hecho. • Analizar arquitecturas alternativas • Planear la migración de sistemas legados a nuevos ¿Para qué documentar? • Para certificar el cumplimiento del sistema con la arquitectura • Como insumo de las otras etapas del desarrollo • Planeación y presupuesto de desarrollo • Especificación de líneas de producto (familias) Interesados e intereses • Interesados (stakeholders) como mínimo: – Usuarios del sistema – Compradores (cliente) – Desarrolladores – Mantenedores Interesados e intereses • Intereses (concerns) como mínimo: – Propósito o misión del sistema – Adecuación del sistema para cumplir su misión – Factibilidad de construir el sistema – Riesgos de desarrollo y operación – Requerimientos no funcionales como mantenibilidad, evolución, despliegue... Vistas • Una vista es una representación de un conjunto de elementos del sistema y sus relaciones. • Es una representación de alguna de las muchas estructuras presentes simultáneamente en un sistema de software. Tipos de vistas Unidades de implementación o áreas de responsabilidad Funcional Unidades de computo y medios de comunicación entre ellas (almacenes, paralelismo...) Relación entre elementos de software y del ambiente de creación o ejecución (procesadores, archivos, roles) Tipos de vistas • Lista 1. Arquitecturas: – “Arquitectura Conceptual: Componentes y conectores”. – “Arquitectura por Módulos: Subsistemas, módulos, exportaciones e importaciones” – “Arquitectura por Código: Archivos, directorios, librerías e inclusiones” – “Arquitectura de Ejecución: Tareas, hilos y procesos” Tipos de vistas • Lista 2. – “Vista lógica: El modelo de objetos de diseño o el modelo correspondiente como un diagrama ER” – “Vista de Procesos: Aspectos de concurrencia y sincronización” – “Vista Física: El mapeado del software al hardware y sus aspectos distribuidos” – “Vista de Desarrollo: La organización estática del software en el ambiente de desarrollo” Tipos de vistas • Lista 3. Estructuras: – “Estructura Modular: Las unidades son asignaciones de trabajo” – “Estructura Conceptual o Lógica: Las unidades son abstracciones de los requerimientos funcionales del sistema”. – “Estructura de Procesos o de Coordinación: Maneja los aspectos dinámicos de un sistema en ejecución. Las unidades son procesos o hilos” – “Estructura Física: Muestra el mapeado del software al hardware” – “Estructura de Usos: Las unidades son procedimientos o módulos. Se conectan mediante relaciones asume-la-presenciacorrecta-de” Tipos de vistas – “Estructura de Llamados: Las unidades son usualmente (sub)procedimientos los cuales se relacionan por las relaciones de llamados o invocaciones” – “Flujo de Datos: Las unidades son programas o módulos y las relaciones se llaman debe-enviar-información-a” – “Flujo de Control: Las unidades son programas, módulos o estados del sistema. La relación es se-convierte-activodespués-de” – “Estructura de Clase: Las unidades son objetos. La relación es hereda-de o es-instancia-de” Elegir vistas 1. Producir lista de vistas candidatas Generar una tabla de interesados vs. intereses, indicando cuánto detalle necesita cada interesado de cada interés (idealmente con un taller) 2. Combinar vistas Identificar aquellas vistas en la tabla que sólo requieren una descripción general o interesan a pocos Identificar aquellas vistas que se pueden combinar Elegir vistas 3. Priorizar vistas Mejor un enfoque de amplitud y no profundidad en principio Algunos intereses son más prioritarios Tiene prioridad lo que ayude a determinar el cumplimiento con la misión Documentar vistas: plantilla 1. 2. (elementos y relaciones) Presentación Catalogo de elementos – – – – 3. 4. 5. Diagrama de contexto (relación de vista con el medio) (como variar la vista) Guía de variabilidad Antecedentes de la arquitectura – – – 6. 7. Elementos y sus propiedades Relaciones Interfaces Comportamiento Razonamiento (rationale) Análisis de resultados Suposiciones (assumptions) Información adicional Vistas relacionadas “4+1 vistas” Logical View End-user Functionality Implementation View Scenarios Process View System integrators Performance Scalability Throughput Conceptual Programmers Software management Deployment View System engineering System topology Delivery, installation Communication Physical Vistas de la arquitectura de un sistema - adaptada a UP Lo primero que se debe hacer para comenzar a desarrollar un proyecto con UML, es seleccionar una metodología de desarrollo que defina la naturaleza concreta del proceso a seguir. El modelo a definir en base al proceso elegido, se divide en Vista de realidad en varios tipos de Vista de diseño implementación modelo o vistas, cada una Vista de centrada en un aspecto o punto de vista del sistema. En casos de general, independientemente uso del proceso que se emplee, se Vista de Vista de puede encontrar las siguientes procesos despliegue vistas Vistas de la arquitectura de un sistema vocabulario, funcionalidad Vista de implementación Vista de casos de uso Vista de Vista de procesos despliegue Vista de diseño comportamiento Funcionamiento, capacidad de crecimiento, rendimiento ensamblado del sistema, gestión de configuraciones topología del sistema, distribución, entrega, instalación Vista lógica (de diseño) • Descomposición orientada a objetos • Estilo: Orientado a objetos • Soporta requerimientos funcionales, descompuestos en abstracciones (objetos). • Puede acompañarse de descripción dinámica con diagramas de estado. Vista lógica (de diseño): notación Vista de procesos • Descomposición en procesos • Considera los requerimientos no-funcionales como desempeño, disponibilidad, concurrencia, integridad, tolerancia a fallos... • Se puede representar como un conjunto de redes de procesos. • Proceso: grupo de tareas • Tareas: hilos separados de control que pueden ser planificados individualmente en un nodo de procesamiento. • Estilo: tubos y filtros, cliente/servidor... Vista de procesos: notación Vista de desarrollo (implementación) • Descomposición en subsistemas • Se enfoca en la organización de los módulos en el ambiente de desarrollo como una jerarquía de niveles • Estilo: por niveles (4 a 6) Vista de desarrollo (implementación): notación Vista física (de despliegue) • Mapear el software al hardware • Se ocupa de requerimientos no-funcionales como disponibilidad, confiabilidad, desempeño y escalabilidad. • El software se ejecuta en nodos de procesamiento • Se deben mapear las redes, procesos, tareas y objetos a dichos nodos. Vista físicas (de despliegue): notación Vista de escenarios (casos de uso) • Unirlo todo • Los escenarios son instancias de los casos de uso, que constituyen guiones (scripts) del sistema • Esta vista es redunante con las otras, sirve para: – Ayudar a descubrir los elementos arquitectónicos – Validar y explicar el diseño arquitectónico Correspondencia entre vistas • Mapeo entre vista lógica y de proceso: – De adentro hacia afuera: definir tareas que multiplexen un solo hilo de control – De afuera hacia adentro: Partiendo de la arquitectura física, definir los procesos que manejen los estímulos externos (peticiones) • Mapeo entre vista lógica y de desarrollo – Una clase usualmente se implementa como un módulo – Otros criterios para definir subsistemas: organización del equipo, tamaño del código, reutilización, capas, políticas de promoción y gestión de configuración • Mapeo entre vista de procesos y física: – Los procesos y grupos de proceso se mapean al hardware tanto para pruebas como para despliegue. Relación entre las vistas Vista lógica Vista de Implementación Vista de Procesos Vista de Despliegue Tipos de resultados • Cada una de las vistas presenta: • Aspectos estáticos: mediante los diagramas estructurales de UML. • Aspectos dinámicos: mediante diagramas dinámicos de UML. • Ejemplo: se puede trabajar con la vista de casos de uso estática y la vista de casos de uso dinámica, la vista de diseño estática y la vista de diseño dinámica, y así sucesivamente. Tipos de resultados Nombre Descripción Aspectos Estáticos Aspectos Dinámicos Vista de casos de uso Proyecta el comportamiento del sistema tal y Diagramas de casos de como es percibido por los: usuarios finales, ana- uso listas y encargados de las pruebas. Especifica las fuerzas que configuran la arquitectura del sistema. Diagramas de interacción Diagramas de estados Vista de diseño Soporta los requisitos funcionales del sistema: Diagramas de clases servicios proporcionados a los usuarios finales. Diagramas de objetos Vocabulario del problema y su solución: clases, interfaces y colaboraciones. Diagramas de interacción Diagramas de estados Diagramas de actividades Vista de procesos Cubre el funcionamiento, capacidad de creci- Diagramas de clases miento y rendimiento del sistema. Mecanismos (activas) de sincronización y concurrencia del sistema: Diagramas de objetos hilos y procesos. Diagramas de interacción Diagramas de estados Diagramas de actividades Vista de implementación Cubre la gestión de configuraciones de las distin- Diagramas de compotas versiones de un sistema a partir de compo- nentes nentes y archivos quasi-independientes. Ensamblado y disponibilidad del sistema: componentes y archivos. Diagramas de interacción Diagramas de estados Diagramas de actividades Vista de despliegue Contiene los nodos que forman la arquitectura Diagramas de desplie(topología) hardware sobre la que se ejecuta el gue sistema a través de sus componentes. Está destinada a representar la distribución, entrega e instalación de las partes que forman el sistema informático físico. Diagramas de interacción Diagramas de estados Diagramas de actividades VISTAS Y DIAGRAMAS EN UML Diagrama de Casos de Uso Vista de Casos Estática de Uso Dinámica Vista de Diseño Estática Dinámica Vista de Procesos Estática Dinámica Vista de Implementación Vista de Despliegue Estática Dinámica Estática Dinámica Diagrama de InteracciónSecuencia Diagrama Diagrade ma de Interacción- Clases Colaboración Diagrama de Objetos Diagrama Diagrama Diagrama de de de CompoEstados Activida- nentes des Diagrama de Despliegue Cuántas vistas pueden existir? • Pueden existir modelos simplificados que se ajusten al contexto • No todos los sistemas requieren todas las vistas: – Simple procesador: Eliminar la vista de despliegue – Simple Proceso: Eliminar la vista de procesos – Programas muy pequeños: eliminar la vista de implementación • Adicionar vistas: – Vista de Datos, Vista de Seguridad, etc. Iteraciones y Arquitectura Use case Model Design Model Implementation Model Content Deployment Model Test Model Diseño Arquitectonico • Identifica, selecciona, y valida elementos “significativos arquitectónicamente” • No todo es una arquitectura – – – – – Main “business” classes Important mechanisms Processors and processes Layers and subsystems Interfaces • Produce un Documento de la Arquitectura de Software Secuencia en el diseño Arquitectónico • Seleccionar escenarios: críticos y de riesgo • Identificar classes principales y su responsabilidad • Distribuir el comportamiento sobre las clases • Estructurar en subsistemas, layers, definir interfaces • • • • Define distribución y concurrencia Implementar un prototipo arquitectónico Derivar pruebas a partir de los casos de uso Evaluar la arquitectura Iterar Use case view Logical view Implementation view Deployment view Process view Proceso iterativo de desarrollo de arquitectura • Empezar – – – – – • Se eligen un pequeño número de escenarios (casos de uso) Se elabora un prototipo arquitectónico Se identifican y representan los elementos según las 4 vistas Se implementa, prueba, mide y analiza la arquitectura Se capturan las lecciones aprendidas Iteración – – – – – – – – – – – Se reevalúan los riesgos Se extiende el grupo de escenarios a considerar Se eligen los escenarios que tengan menor riesgo y mayor cobertura Se hace un guion de los escenarios acorde con la arquitectura existente Se descubren elementos arquitectónicos adicionales Se actualizan las vistas Se actualiza la implementación Se prueba y mide en el ambiente de producción si es posible Se revisan las 5 vistas Se actualizan las guías y racionalidad de la arquitectura Se capturan las lecciones aprendidas [3] Documentar la arquitectura: plantilla • • • • 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. • Página de título Historia de cambios Tabla de contenido Lista de figuras Alcance Referencias Arquitectura de software Metas y restricciones arquitectónicas Arquitectura lógica Arquitectura de procesos Arquitectura de desarrollo Arquitectura física Escenarios Tamaño y desempeño Calidad Apéndices – – – Acrónimos y abreviaciones Glosario Principios de diseño [3] Ejemplo • Se instancia un ejemplo a la plataforma de Enterprise Architect class UML 2.0 Diagrams UML 2.0 Diagram Types Below are some examples of the UML 2.0 diagrams types supported in Enterprise Architect. This section gives examples of all 13 diagram types supported. Structural Diagrams Behavioral Diagrams Package Use Case Class Analysis Object Activity Composite Structure Component State Communication Sequence Deployment Custom Timing Interaction Requerimientos Requerimientos custom Manage Users REQ016 -Add Users REQ017 -Remove User REQ011 - Manage User Accounts REQ025 - Store User Details REQ018 - Report on User Account REQ024 - Secure Access REQ026 - Validate User Stakeholders - Requerimientos custom Stakeholders Interests REQ001 - Relation between orders and email inquires. Process Manager REQ006 - Efficient stock control management. Business Manager REQ002 - Create a secure on-line ordering system. Chief Executiv e Officer REQ003 - High Volume Through-put Modelo del negocio Casos de Uso analysis Login Client LoginAcount Login (from Actors) Account analysis View History Account View History Client (from Actors) Transaction Casos de Uso Trazabilidad Casos de Uso con los Requerimientos Vista de Componentes Vista de Desarrollo Vista de Desarrollo deployment HO Serv ers DMZ Web Serv er :Dell Pow erEdge 2650 Disk Controller = RAID 5 Disks = 4 x 80 GB Processor = 2 x 2.8 GHZ RAM = 2 x 1024 MB 216.239.46.96 : Ethernet Adaptor FRR01 :Intel 19510 Frame Relay Router HOES01 :Ethernet Sw itched Hub WebDataServ er :Dell Pow erEdge 6650 Vista de Despliegue Disk Controller = RAID 5 Disks = 3 x 120 GB Processor = 3.0 GHz RAM = 1024 Mb +Internet +DMZ HOFW : WatchGuard III Firew all 216.239.46.95 : Ethernet Adaptor +LAN LAN 192.168.02 : Ethernet Adaptor Mail Serv er :HP ProLiant DL380 Disk Controller = RAID 5 Disks = 4 Processor = 3.0 Ghz RAM = 2048 Mb HOES02 :Ethernet Sw itched Hub Client Data Serv er :Dell Pow erEdge 1650 192.168.0.3 : Ethernet Adaptor Disk Controller = RAID 5 Disks = 4 x 120 GB RAM = 1024 MB Processor = 3.0 GHZ Vista de Despliegue deployment HO Serv er Images DMZ «pc server» RAM = 2 x 1024 MB Processor = 2 x 2.8 GHZ Disks = 4 x 80 GB Disk Controller = RAID 5 216.239.46.96 : Ethernet Adaptor Web Serv er :Dell Pow erEdge 2650 FRR01 :Intel 19510 Frame Relay Router HOES01 :Ethernet Sw itched Hub +Internet +DMZ HOFW :WatchGuard III Firew all «secure» 216.239.46.95 : Ethernet Adaptor WebDataServ er :Dell Pow erEdge 6650 «pc server» RAM = 1024 Mb Processor = 3.0 GHz Disks = 3 x 120 GB Disk Controller = RAID 5 Vista de Despliegue