Arquitectura de software CODIGO Nombre del profesor seccion [email protected] 2 Arquitectura de software Conociendo el modelo arquitectónico “Antes de comenzar un proyecto de software, asegúrese de que el software tenga un propósito para el negocio y que los usuarios perciben valor en él”. Roger Pressman 3 Experiencia Experiencia Nº 1 Nombre Análisis del modelo arquitectónico Competencia asociada Diseña un modelo arquitectónico para soportar la solución de acuerdo a su factibilidad y a los estándares de la industria. 4 El arquitecto de software Arquitecto de software » ¿Que es el software en la actualidad? Antes de hablar del arquitecto de software, es preciso recordar que el software un elemento clave en la evolución de sistemas y productos basados en computadoras, representando una de las tecnologías mas relevantes a nivel mundial, pasado de ser la solución a un problema especializado a constituirse en una industria en sí misma. 6 Arquitecto de software Garlan y Shaw sugieren que la arquitectura es un nivel de diseño que se centra en aspectos que van más allá de los algoritmos y estructuras de datos de la computación; el diseño y la especificación de la estructura general del sistema emergen como una clase nueva de problema. Los aspectos estructurales incluyen la estructura global de control y la organización general; protocolos de comunicación, sincronización y acceso de datos; asignación de funciones para diseñar elementos; distribución física, composición de elementos de diseño; ajuste y rendimiento; y selección entre otras alternativas de diseño. 7 Arquitecto de software Pero la arquitectura es algo más que una estructura por lo que el IEEE Working Group on Architecture la define como el concepto de más alto nivel de un sistema en su entorno. También incluye el "ajuste" con la integridad del sistema, con las restricciones económicas, con las preocupaciones estéticas y con el estilo. No se limita a un enfoque interior, si no que tiene en cuenta el sistema en su totalidad dentro del entorno de usuario y el entorno de desarrollo, un enfoque exterior. En RUP (proceso de desarrollo de software de IBM), la arquitectura de un sistema de software es la organización o la estructura de los componentes importantes del sistema que interactúan mediante interfaces, con componentes compuestos de interfaces y componentes cada vez más pequeños. 8 Arquitecto de software El arquitecto de software tiene la responsabilidad global de dirigir las principales decisiones técnicas, expresadas como la arquitectura de software. Esto incluye la identificación y la documentación de los aspectos arquitectónicamente significativos del sistema, considerando las "vistas" de requisitos, diseño, implementación y despliegue del sistema. Además, es responsable de proporcionar el fundamento de estas decisiones, equilibrando las preocupaciones de los diferentes interesados, reduciendo los riesgos técnicos, y garantizando que las decisiones se comunican, y validan con eficacia, y que se acatan. 9 Funciones Arquitecto de software • Revisa las necesidades del negocio junto con los requerimientos no funcionales, y los relaciona con la solución que se necesita implementar para cubrirlas. • Se asegura de la calidad de la solución y de su mantenimiento en el tiempo. • Toma decisiones de diseño de alto nivel. • Dicta estándares técnicos, de codificación, herramientas y plataformas. 10 Funciones Arquitecto de software ✔ ✔ ✔ ✔ Elaborar la arquitectura y diseño de software a partir de los requerimientos del usuario: Haciendo uso de patrones de diseño previamente conocidos, por experiencia personal o manteniéndose actualizado con las últimas técnicas y patrones. Crear consenso y entendimiento de la arquitectura: Debe involucrar a cada miembro del equipo, y lograr acuerdos respecto a la arquitectura, la cual debe comunicar y vender. Entender los requerimientos no funcionales: La mayoría de los requerimientos no funcionales son de naturaleza técnica, y suelen tener mucha influencia en la arquitectura. El entendimiento adecuado de estos requerimientos es crucial para desempeñar este rol. No basta con asumir cuales son esos requerimientos, se necesita indagar sobre ellos y determinar las necesidades reales. Definir la Arquitectura: Incluir estructuras, lineamientos, principios y liderazgo sobre los aspectos técnicos del software. Esta responsabilidad varía mucho si se está trabajando con un sistema con arquitectura definida frente a diseñar un nuevo sistema. 11 Funciones Arquitecto de software ✔ Seleccionar Tecnologías: Puede llegar a ser un reto, considerando todos los elementos a considerar: costo, licenciamiento, relaciones con proveedores, estrategia de tecnología, compatibilidad, interoperabilidad, soporte, instalación, políticas de actualización, ambientes de usuario final, etc. Seleccionar tecnologías se trata de evaluar los riesgos, reduciéndolos cuando existe alta complejidad e incertidumbre y aumentarlos cuando existen beneficios (oportunidades). Todos los componentes deben ser evaluados, incluyendo los bloques generales, hasta el detalle de librerías y frameworks. Toda decisión de tecnología debería ser revisada y aprobada. ✔ Evaluar Arquitecturas: Al diseñar el software, el arquitecto debe preguntarse si la arquitectura seleccionada podrá satisfacer los requerimientos funcionales y en especial los no funcionales. Las arquitecturas también se pueden probar, y si hacemos esto al principio, podemos evitar el fracaso del proyecto. 12