Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Documentación Arquitectura
Contenidos
Comunicando la documentación de la arquitectura
Objetivo de la documentación
Personas interesadas
Vistas
Documentación y proyectos ágiles
Directrices
Enfoques de documentación
Vistas 4+1 de Kuchten 4+1
Vistas y más
Modelo C4
Arc42
Arquitectura del Software
Beneficios de documentar la
arquitectura de software
Arquitectura del Software
Objetivo de la documentación
Objetivo principal: Comunicar la estructura
Comprender la visión general del sistema
Crear una vision compartida: equipo y otras
personas interesadas
Vocabulario común
Describir qué software se está contruyendo y cómo
Facilitar conversaciones técnicas sobre características
Proporcionar mapara para navegar el código fuente
Justificar decisions de diseño
Ayudar a desarrolladores nuevos que se unen al
equipo
Arquitectura del Software
Requisitos de documentación
Comprensible por las diferentes personas interesadas
Stakeholders técnicos y no-técnicos
Reflejar la realidad
Cuidado con separación modelo-código (model-code gap)
Adaptarse a cambios
Adaptarse a proyectos ágiles
Arquitectura evolutiva
Arquitectura del Software
Espacio de Espacio de
problema Solución
Stakeholders Bloques de construcción
Contexto Interfaces
Objetivos de calidad Componentes
Restricciones Patrones/estilos
Principios Tácticas
… …
Arquitectura del Software
Documentando vistas
Tratar de conseguir consistencia y simplicidad
Mantener los elementos consistentes
Colores, formas, flechas,…
Si se utiliza un esquema de color, seguirlo consistentemente
Chequear nombres entre vistas
Registrar posibles inconsistencias
Evitar demasiados detalles
Recordar ley de Miller
Persona media puede memorizar 7 ( 2) elementos
Arquitectura del Software
Bocetos
Habitual comenzar con boceto en papel o pizarra
Forma muy buena de colaborar e intercambiar ideas
Normalmente tiene una vida breve
Pero antes o después, deben registrarse
Técnica sencilla hoy en día: Foto
...y posterior conversión a diagramas o modelos
Fuente: https://c4model.com/
Arquitectura del Software
Front
User Backend DB
End
Arquitectura del Software
Herramientas de diagramas
basadas en texto
Normalmente basadas en UML
WebSequenceDiagrams, yUML, nomnoml
PlantUML: http://plantuml.com/
@startuml
Agent -> Agent : init
Agent -> Manager : sendEmail()
Agent <-- Manager : reply X
Agent -> Manager : blabla( X )
User -> Manager : check( X )
User <-- Manager : ok
@enduml
Herramientas de modelado
Permiten crear un modelo del Sistema software
Se generan representaciones visuals del modelo
Numerosas alternativas:
Sparx Enterprise Architect, Visual Paradigm, Archi,
StarUML, ArgoUML, Modelio,…
Habitualmente permiten notaciones diferentes
UML, SysML, BPMN, ArchiMate
Útiles para diseño inicial up-front
Buenas para modificar y renombrar componentes
Arquitectura del Software
Lenguajes de descripción de
arquitecturas (ADLs)
Definen formalmente la arquitectura de un sistema
Crear descripciones textuales en lugar de diagramas
Especificación formal
Describe la estructura y el comportamiento
Principalmente en entornos académicos
No muy populares en entornos industriales
Ejemplos:
xArch/xADL (http://isr.uci.edu/projects/xarchuci/)
ACME (http://www.cs.cmu.edu/~able/)
AADL (http://www.aadl.info/)
Arquitectura del Software
Plantillas de documentación
arquitectura software
Varias posibilidades
Vistas 4+1 de Kruchten
Vistas y más
Modelo C4
Plantillas Arc42
...
Arquitectura del Software
Modelo C4 (https://c4model.com/)
Describir
Contexto: Diagrama de contexto o empresarial
Contenedores: Estructura de alto nivel
Componentes: zoom y descomponer
Código: Diagramas de clases UML, diagramas ER, …
Guía de documentación
Contexto Código
Resumen funcional Datos
Atributos de calidad Infraestructura de la arquitectura
Restricciones Despliegue
Principios Entorno de desarrollo
Operaciones y soporte
Log de decisiones
Arquitectura del Software
Arc42 https://arc42.org/
Estructura para documentar sistemas de software
Objetivo: Claro, simple y efectivo
Plantillas disponibles en varios sistemas
Asciidoc
Word (docx)
Markdown
LaTeX
ReStructuredText
Confluence
...
Arquitectura del Software
Resumen Arc42
1.- Introduction and goals
Problema 2.- Constraints
3.- Context & scope
4.- Solution strategy
5.- Building block view
6.- Runtime view
Solución 7.- Deployment view
8.- Crosscutting concepts
9.- Architectural decisions
10.- Quality requirements
11.- Risks and technical debt
12.-Glossary
Picture source: https://commons.wikimedia.org/wiki/File:Ficherosclasicoscatalogo.JPG
Arquitectura del Software
Ejemplo:
https://biking.michael-simons.eu/docs/index.html#_quality_goals
Arquitectura del Software
Calidad
en-uso
Libre Cobertura
Efectividad Eficacia Satisfacción
de riesgos contexto
Arquitectura del Software
2 - Constraints
Cualquier cosa que restringe las decisiones de
diseño e implementación
Algunas veces es a nivel de la organización
Decisiones ya tomadas
Formato: una table con explicaciones
Pueden dividirse en organizativas, técnicas, etc.
Constraint Explanation
... ...
4 - Solution strategy
Source: https://arc42.org/overview/
Arquitectura del Software
6 - Runtime view
Comportamiento de bloques de construcción
mediante escenarios
Casos de uso o características importantes
Interacciones con interfaces externos críticos
Comportamiento de Error y excepciones
Formato:
Varias notaciones
Lenguaje natural (lista de pasos)
Diagramas de secuancia UML
Diagramas de flujo (flowcharts)
BPMN
… Source: https://arc42.org/overview/
Arquitectura del Software
7 - Deployment view
Infraestructura técnica con el entorno, ordenadores,
procesadores, topologías, etc...
Asocia bloques de construcción (software) a la
infraestructura
Formato:
Normalmente diagramas despliegue UML
Añadir tablas de asociación
Source: https://arc42.org/overview/
Arquitectura del Software
8 - Crosscutting concepts
Enfoques relevantes en multiples partes del
sistema
Se pueden incluir tópicos como:
Modelo de dominio
Estilos y patrines
Reglas específicas
Source: https://arc42.org/overview/
Arquitectura del Software
9 Architectural decisions
Decisiones importantes, de alto coste, críticas, de
gran escala o arriesgadas
Incluir justificación de las decisiones
Formato:
Lista o table ordenada por importancia
Registro de decisión arquitectónica para decisiones
importantes
Source: https://arc42.org/overview/
Arquitectura del Software
10 - Quality requirements
Requisitos de calidad como escenarios
Árbol de calidad para proporcional visión de alto nivel
Los objetivos de calidad más importantes deberían
ser descritos en la sección 1 (quality goals)
Arquitectura del Software
Source: https://arc42.org/overview/
Arquitectura del Software
12 - Glossary
Términos importantes del dominio o técnicos
Términos utilizados por los stakeholders cuando
discuten sobre el sistema
Vocabulario común
Traducción de referencia en entornos multi-idioma
Formato: tabla
Term Definition
... ...
Source: https://arc42.org/overview/
Arquitectura del Software