¿Qué es la arquitectura de software?
Es la estructura de datos y componentes que se requieren para el sistema.
Importancia: «No se construye una casa sin planos»
Pasos
- Diseño de los datos
- Obtener una representación de la arquitectura
- Analizar alternativas o patrones arquitectónicos
- Tomar la alternativa y elaborar la estructura con un método de diseño
Producto final:
El modelo de arquitectura incluye datos y estructura de software y describe las propiedades e interacciones entre componentes.
Comprobación:
Por cada etapa se revisa el diseño para que los productos sean claros, correctos, completos y consistentes con los requerimientos.
Concepto de arquitectura
Permite:
- Analizar efectividad del diseño frente a los requerimientos
- Facilitar cambios en etapas tempranas
- Reducir riesgos
Importancia
- Permite la comunicación entre las partes interesadas
- Resalta primeras decisiones que tendrán un efecto profundo
- Constituye un modelo pequeño y asequible donde el sistema y componentes trabajan juntos
Objetivos
- Establecer marco conceptual con vocabulario en arquitectura de software
- Proporcionar lineamientos que representen una descripción de la arquitectura
- Estimular mejores prácticas de diseño
Modelos o vistas
Toda arquitectura debe describir los aspectos del software, estos aspectos se describen de manera comprensible. Todas las vistas deben ser coherentes entre sí.
Vistas fundamentales:
- Visión estática: describe qué componentes tiene la arquitectura
- Visión funcional: describe qué hace cada componente
- Visión dinámica: cómo se comportan los componentes a largo plazo
Modelo Estructural
Las arquitecturas de software están compuestas por:
- Componentes
- Conexiones
- Configuración
- Estilo
- Restricciones
- Análisis
- ETC
Modelo de framework
Similar a la estructural, pero se enfoca en una estructura del sistema en vez de su composición. Se refiere a los dominios o clases de problemas específicos, como CORBA (Common Object Request Broker Architecture).
Modelo Dinámico
Enfatiza la cualidad conductual de los sistemas. Puede referirse a los cambios de configuración o a la dinámica de los valores cambiantes.
Modelo de proceso
Concentrado en la construcción de la arquitectura, en los pasos y procesos involucrados en esta. Es resultado de seguir un argumento (script) de proceso.
Modelo Funcional
La minoría lo considera como un conjunto de componentes funcionales, organizado en capas. Se piensa en una visión como framework «particular».
Modelo 4 + 1
- Vista lógica: Requerimientos funcionales traducidos en los servicios que debería ofrecer
- Vista de procesos: Procesos no funcionales y la disponibilidad del sistema, direcciona la distribución íntegra del sistema y fallos, también especifica a los subprocesos o hilos que ejecutan cada operación
- Vista de desarrollo: Describe la organización estática del software en su ambiente de desarrollo
- Vista física: Mapeo del software en el hardware y su distribución
EJEMPLO 4+1
- Vista lógica: Entidad relación/clases
- Vista Procesos: Diagrama de secuencia
- Vista Desarrollo: Diagrama de componentes
- Vista Física: Diagrama de Estado
Decisiones arquitectónicas
Se consideran varias alternativas y se elige en última instancia. Se considera una perspectiva.
Géneros arquitectónicos
Dictan el enfoque específico para la estructura que debe construirse. Especifican categorías del dominio y sus subcategorías.
- Inteligencias artificiales
- Sistemas que emulan la inteligencia humana
- Comerciales y no lucrativos
- Son fundamentales para la operación
- Comunicacionales
- Comunicación
- Contenido de autor
- Permite al usuario crear o manipular artefactos de texto o multimedia
- Dispositivos
- Sistemas que interactúan con el mundo físico
Atributos de calidad
Los atributos de calidad hablan de características específicas que debe tener el sistema.
Realidades sobre los atributos de calidad
Suelen estar pobremente especificados o directamente no especificados. Los requerimientos funcionales y atributos de calidad deben ser considerados. La flexibilidad (calidad de cambios) es importante en la ingeniería de requerimientos.
Para definir bien una arquitectura:
- Requerimientos funcionales ‘de negocios’
- Otros atributos de calidad requeridos
- Restricciones
Clasificación de los atributos de calidad
- Adecuación funcional: corrección funcional
- Eficiencia de desempeño: capacidad
- Compatibilidad: coexistencia
- Usabilidad: estética – aprendizaje
- Fiabilidad: madurez – disponibilidad
- Seguridad: integridad – autenticidad
- Mantenibilidad: reusabilidad – analizabilidad
- Portabilidad: adaptabilidad
Atributos de calidad relacionados con la calidad sistémica
- Disponibilidad
- Facilidad de cambios
- Performance
- Escalabilidad
- Seguridad
- Facilidad de testeo
- Usabilidad
Atributo de calidad disponible
Relacionado con las fallas en el sistema y sus consecuencias asociadas. Ejemplo: error – defecto – falla. Relativamente fácil de especificar, difícil de verificar.
Atributo de calidad facilidad de cambios
Relacionado con el costo de los cambios. Cuando se especifica un cambio, debe ser diseñado, implementado, probado y liberado.
Atributo de calidad performance
Relacionado con el tiempo que le lleva al sistema responder eventos. Difícil de expresar, depende de los volúmenes del sistema.
Atributo de calidad seguridad
Capacidad de un sistema para resistir usos no autorizados. Incluye integridad (protección de datos o servicios de accesos no autorizados) y disponibilidad (que un sistema esté disponible para su uso legítimo).
Atributo de calidad facilidad de testeo
Facilidad que presenta un sistema para que se ejecuten actividades de testing. «Test harness».
Atributo de calidad usabilidad
Relacionado con la facilidad con la cual un usuario puede cumplir una tarea. Incluye aprender la funcionalidad del sistema, aumentar confianza y satisfacción.
Otros atributos
Escalabilidad: cumple con sus requerimientos al cambiar los volúmenes de los problemas que resuelve.
Portabilidad: emigrar de un sistema a otro.