Este documento proporciona una introducción a la arquitectura de software. Define la arquitectura de software como la estructura de los elementos de un sistema y sus relaciones externas. Explica que una especificación de arquitectura de software describe elementos como los componentes, sus interacciones y las tecnologías utilizadas. También cubre temas como los requisitos no funcionales, diagramas y el proceso de desarrollo de la arquitectura.
3. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
¿QUÉ ES LA ARQUITECTURA DE SOFTWARE?
De acuerdo al Software Engineering Institute (SEI), la
Arquitectura de Software se refiere a “las estructuras de un
sistema, compuestas de elementos con propiedades visibles
de forma externa y las relaciones que existen entre ellos.”
El término “elementos” dentro de la definición del SEI es vago
a propósito, pues puede referirse a distintas entidades
relacionadas con el sistema.
4. ¿POR QUÉ ES IMPORTANTE
LA ARQUITECTURA DE
SOFTWARE?
5. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
LA PRÁCTICA DE DISEÑO
๏Objetivo: ¿Qué?
• Crear árbol navideño
๏Análisis: ¿Para qué?
• Será parte de una maqueta con motivo navideño
๏Requerimientos no funcionales
• Modular, fácil de ampliar, no tóxico, durable, lavable
๏Restricciones
• Tiempo, recursos (número de piezas), tipo de piezas.
6. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
LA PRÁCTICA DE DISEÑO
๏Diseño
• Propuesta de solución que dice como cubrirá los requerimientos y se ajusta a las
restricciones dadas.
๏¿Qué tan oportuno debe ser el documento de diseño?
A. Tan oportuno como una guía de construcción
B. Como un documento generado después de construir el árbol
7. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
OBJETIVO PRINCIPAL DE LA ARQUITECTURA
๏ Definir la estructura de componentes, sus relaciones que
garanticen la sana operación del sistema hoy y a futuro.
En consecuencia
๏ Reducir los riesgos tecnológicos del proyecto
๏ Diseñar los componentes de software adecuados que
cubran con los requerimientos no funcionales
8. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
CONCEPTOS
๏Principios
๏Requerimientos No Funcionales
๏Riesgos
๏Restricciones
๏Consideraciones
9. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
¿QUÉ CONTIENE UNA ESPECIFICACIÓN DE ARQUITECTURA?
¿Qué resolver? Contenido
¿De qué se trata esto? Contextualización
¿Qué se puede ó no usar? Restricciones
¿Cómo esta estructurado el sistema? Diagramas de Solución
¿Cómo mostrar los detalles a una audiencia especifica? Vistas/Diagramas por audiencia
¿Con qué aplicaciones es necesario interactuar? Listado de sistemas y subsistemas
¿Qué se intercambiará y de que forma con las demás
aplicaciones?
Lista de interfaces
¿Qué características no funcionales se deben cubrir? Requerimientos No Funcionales
10. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
¿QUÉ CONTIENE UNA ESPECIFICACIÓN DE ARQUITECTURA?
¿Qué resolver? Contenido
¿Cómo debo nombrar a mis artefactos? Estándares de codificación, nomenclaturas
¿Qué estrategia seguir para detalles transversales,
logging, auditoria, seguridad, errores?
Especificación de implementación
¿Qué módulos tendrá la aplicación? Diagrama de componentes
¿Qué productos, tecnologías, APIs se usarán? Matriz de Tecnologías, Tiers & Layers
11. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARETEXTO
¿QUÉ CONTIENE UNA ESPECIFICACIÓN DE ARQUITECTURA?
๏ Otros
• Diagramas de infraestructura
• Especificaciones de GUI, Look & Feel
• Diseño Lógico y Físico, de Base de Datos
• Especificaciones por entorno: DEV, QA, PROD
12. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
ANALOGÍA CON ARQUITECTURA
๏ El diseño es funcional, estructural y modesto
๏ La funcionalidad satisface las expectativas del
usuario y del mercado
๏ La ejecución del proyecto es viable y
razonable
๏ El presupuesto es finito
๏ El tiempo necesario para ejecutar el proyecto
corresponde con el diseño
๏ Las habilidades necesarias para construirlo no
son negociables o sustituibles
๏ Se requiere un equipo eficaz para el proyecto
El resultado es eficiente
13. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
ANALOGÍA SIN ARQUITECTURA
๏ El diseño de pensamiento mágico, desafía las
leyes de la física: más con menos
๏ La funcionalidad satisface las expectativas de
ahorro del patrocinador
๏ La ejecución del proyecto es caótica e improvisada
๏ El presupuesto es raquítico
๏ El tiempo necesario para ejecutar el proyecto se
predice por intuición
๏ Las habilidades necesarias para construirlo rotan y
se negocian constantemente
๏ Se prescribe un equipo barato para el proyecto
El resultado es “eficaz”
18. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARETEXTO
¿QUÉ CONTIENE UNA ESPECIFICACIÓN DE ARQUITECTURA?
๏ Otros
• Diagramas de infraestructura
• Especificaciones de GUI, Look & Feel
• Diseño Lógico y Físico, de Base de Datos
• Especificaciones por entorno: DEV, QA, PROD
20. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
VISIÓN Y ALCANCE
MANEJO DE
INFLUENCIAS
SELECCIÓN DE
ESTRATEGIAS DE
ARQUITECTURA
ELABORACIÓN DE
ESPECIFICACIÓN DE
ARQUITECTURA
QA DE LA
ARQUITECTURA
22. ESPECIFICACIÓN DE ARQUITECTURA DE SOFTWARE
RECURSOS
๏Software Architecture For Developers, Simon Brown
• http://www.codingthearchitecture.com/
๏97 Things Every Software Architect Should Know
• https://books.google.com.mx/books/about/
97_Things_Every_Software_Architect_Shoul.html?
id=HDknEjQJkbUC&redir_esc=y&hl=es