MA ST E R E N I NG E NI E RÍ A D E SOF TW A R E UNIVERSIDAD POLITÉCNICA DE CATALUNYA PROYECTO FINAL DE MÁSTER – MRF FRAMEWORK Guía para realizar la Arquitectura de Software Version 1.0 ● 30 SEP 2008 Máster en Ingeniería de Software Proyecto Final de Máster – MRF Framework GUÍA PARA REALIZAR LA ARQUITECTURA DE SOFTWARE Versión 1.0 | 30-SEP -2008 Tabla de Contenidos 1. Introducción .......................................................................................................1 1.1 Qué es la Arquitectura de Software ....................................................1 1.2 Limitaciones ........................................................................................2 2. Análisis Arquitectónico ......................................................................................2 2.1 Síntesis de la Arquitectura ..................................................................2 2.2 Patrones y Frameworks ......................................................................2 3. Mecanismos Arquitectónicos .............................................................................3 3.1 TS-Guía-10AS-1.0 Ejemplos de Mecanismos Arquitectónicos .........................................3 Página i Máster en Ingeniería de Software Proyecto Final de Máster – MRF Framework GUÍA PARA REALIZAR LA ARQUITECTURA DE SOFTWARE Versión 1.0 | 30-SEP -2008 1. Introducción 1.1 Qué es la Arquitectura de Software La Arquitectura del Software es el diseño de más alto nivel de la estructura de un sistema. Esta arquitectura, también denominada Arquitectura Lógica, contempla el conjunto de decisiones acerca de la organización del sistema: - Selección de elementos estructurales e interfaces que componen el sistema. Esta selección se basa en un conjunto de patrones y abstracciones coherentes que proporcionan el marco de referencia necesario para guiar la construcción del software. - Composición de estos elementos estructurales y de comportamiento en subsistemas principales. Esta arquitectura se utiliza para especificar decisiones estratégicas acerca de la estructura y funcionalidad del sistema, las colaboraciones entre sus distintos elementos y su despliegue físico para cumplir unas responsabilidades bien definidas. Figura 1.1: Vista de la Arquitectura1 La Arquitectura del Software establece los fundamentos para que analistas, diseñadores, programadores, etc. trabajen en una línea común que permita alcanzar los objetivos del sistema de información, cubriendo todas las necesidades. Para ello, define de forma abstracta los componentes que llevarán a cabo cada una de las tareas de computación, así como sus interfaces y la comunicación entre todos ellos. Toda arquitectura debe ser implementada en una Arquitectura Física. 1 Fuente: Vilalta Consultores 2001; TRAD Arquitectura 1_esp – Rev. 5.1 – vico.org TS-Guía-10AS-1.0 Página 1 Máster en Ingeniería de Software Proyecto Final de Máster – MRF Framework 1.2 GUÍA PARA REALIZAR LA ARQUITECTURA DE SOFTWARE Versión 1.0 | 30-SEP -2008 Limitaciones - La arquitectura involucra un conjunto de decisiones estratégicas de diseño, reglas o patrones que restringen dicho diseño y su implementación. Por todo ello, los cambios sobre ella tendrán efectos significativos. 2. Análisis Arquitectónico 2.1 Síntesis de la Arquitectura En las primeras iteraciones, se plantea la creación de un documento se Síntesis de la Arquitectura. Este análisis se corresponde con el primer intento de definir las piezas y/o componentes del sistema, así como sus relaciones, organizándolas en capas bien definidas con dependencias específicas, concentrándose únicamente en las capas superiores. Su propósito es: - Definir una arquitectura candidata para el sistema a partir de las experiencias previas en sistemas o problemas similares. 2.2 - Definir patrones arquitectónicos, mecanismos de diseño y convenciones de modelado. - Definir la estrategia de reutilización. Patrones y Frameworks Un patrón proporciona una solución común a un problema específico en un contexto dado; esta solución puede ser total, o parcial (una pieza dentro de un conjunto más amplio). El Patrón Arquitectónico expresa un esquema de organización estructural fundamental para un sistema de software. Provee un conjunto predefinido de subsistemas, especifica sus responsabilidades, e incluye reglas y guías para organizar las relaciones entre sí. Algunos ejemplos de patrones arquitectónicos más utilizados son: - Layers Descomponer la aplicación en diferentes niveles de abstracción. Los layers van desde capas específicas de aplicación (top) hasta capas de implementación propias de la parte tecnológica (bottom). - Model-View-Controler Model (reglas de negocio y datos fundamentales), View (cómo se muestra la información al usuario), Controller (procesa el input del usuario). - Pipes and Filtres Los datos se procesan en flujos que pasan de filtro en filtro, de manera que cada filtro representa un avance en el procesamiento. - Blackboard Aplicación independiente especializada que colabora para derivar la solución, trabajando sobre una estructura de datos común. TS-Guía-10AS-1.0 Página 2 Máster en Ingeniería de Software Proyecto Final de Máster – MRF Framework GUÍA PARA REALIZAR LA ARQUITECTURA DE SOFTWARE Versión 1.0 | 30-SEP -2008 Un Framework define un enfoque general para enfrentar un problema. Provee un esqueleto para la solución, cuyos detalles se encuentran en los patrones de análisis. 3. Mecanismos Arquitectónicos Los mecanismos arquitectónicos pueden clasificarse en las siguientes categorías: Mecanismos de Análisis (Conceptual): Captura los aspectos de la solución de forma independiente de su implementación (ej: mecanismos para manejar la persistencia, la comunicación entre procesos, los errores, notificaciones, mensajes, etc.). Mecanismos de Diseño (Concreta): Asume ciertos detalles del ambiente de implementación, pero no se ata a ninguna implementación en particular. Mecanismos de Implementación (Actual): Especifica la implementación exacta del mecanismo, indica la tecnología, lenguaje, fabricante, versión. 3.1 Ejemplos de Mecanismos Arquitectónicos Algunos ejemplos de mecanismos arquitectónicos son la persistencia, la comunicación (IPC, RPC,…), el enrutamiento de mensajes, la distribución, la gestión de transacciones, el control y la sincronización de procesos, el intercambio de información y la conversión de formatos, la seguridad, la detección/manejo/reporte de errores, la redundancia, las interfaces con sistemas legados, etc. Algunos ejemplos de análisis de las características de los mecanismos son: Mecanismos de Persistencia: - Granularidad (tamaño de los objetos persistentes); - Volumen (número de objetos persistentes); - Duración (durante cuánto se deben mantener persistentes los objetos); - Mecanismo de acceso (cómo se identifican de forma única los objetos y cómo se los recupera); - Frecuencia de acceso (son constantes, o se tienen que actualizar permanentemente); Confiabilidad (deben sobrevivir a una caída de un proceso). Mecanismo de Comunicación entre Procesos: - Latencia (cómo de rápida debe ser la comunicación); - Sincronización (comunicación síncrona/asíncrona); - Tamaño del mensaje; - Protocolo de comunicación. Seguridad: TS-Guía-10AS-1.0 - Granularidad de datos (nivel de paquetes, nivel de clase, nivel de atributo); - Granularidad de usuarios; - Reglas de seguridad (basadas en valor de datos, en algoritmos o ambos); Página 3 Máster en Ingeniería de Software Proyecto Final de Máster – MRF Framework GUÍA PARA REALIZAR LA ARQUITECTURA DE SOFTWARE Versión 1.0 | 30-SEP -2008 Tipos de privilegios (leer, crear, eliminar, escribir, etc.). Mecanismos de interfaz con sistemas legados: TS-Guía-10AS-1.0 - Latencia; - Duración; - Mecanismo de acceso; - Frecuencia de acceso. Página 4