Modelo de Arquitectura de Software
La Importancia de la Calidad
Los atributos de calidad del software impactan en el diseño de la arquitectura
Portabilidad entre otros
Seguridad
Disponibilidad
Inter operabilidad
Impacto de los Interesados
Los interesados impactan en:
Negociación en base a compromisos
Toma de decisiones basados en compromisos
Entender las restricciones reales del sistema
Esto provoca:
Conflictos entre los interesados
Objetivos que no se alcanzan
Los requisitos de calidad que solicita un cliente difícilmente se
documentan
Creación de una Arquitectura
Existen diversos métodos y guías para la definición de una
arquitectura que consideran los requisitos funcionales y
también los atributos de calidad
Consideraciones
Considerar el tamaño de la aplicación objetivo
- Una pequeña puede basarse en un patrón
- Complejas pueden requerir una mezcla
Basarse en patrones o arquitecturas reconocidas
Elegir los estilos y patrones más apropiados que permitan
lograr la calidad esperada
Una vez identificados los requerimientos de la arquitectura y
las restricciones:
- Elegir la Arquitectura de Referencia
- Definir los componentes que formarán parte del diseño
- Generar las vistas que representan el diseño de la arquitectura
- Documentar el diseño de la arquitectura
Restricciones
Pueden ser de negocio de desarrollo, de tiempo, costos, etc.
Por ejemplo:
El almacenamiento usará Oracle ya que es la Base de Datos
institucional
Una restricción es una condición que no es negociable e
impacta en el diseño de la arquitectura
Requerimientos No Funcionales
mas Seguridad, manejo de recursos
Soporte (Support). Adaptabilidad, facilidad de mantenimiento,
internacionalización, facilidad de modificación
Rendimiento (Performance). Tiempo de Respuesta,
productividad, disponibilidad
Fiabilidad (Reliability). Frecuencia de fallos, capacidad de
recuperación de las fallas
Facilidad de Uso (Usabilitu). Factores humanos, ayuda del
sistema, documentación, claridad de las interfaces
Identificación de Requerimientos
La identificación se basa en requerimientos no funcionales
Corresponden a los requerimientos URPS+
Pueden contener restricciones
Como se comporta el software, cómo lo hace, no qué es lo que hace
Validación
Realizar pruebas a la arquitectura validando el diseño contra los requerimientos actuales y los que pudieran existir a futuro.
Diseño de la Arquitectura
Define la estructura y las funciones o responsabilidades de los
componentes que formarán la arquitectura
Definición de Requerimientos
Creación de un modelo a partir de los requerimientos que
serán la base del diseño de la arquitectura basado en atributos de calidad
Patrones
Componentes de un Patrón
Solución
- Elementos que componen el diseño, como se relacionan y que responsabilidades tienen asignadas
Problema
- Especifica cuando aplicar el patrón
Nombre.
- Describe el problema
A través de modificaciones, se adaptan para resolver ciertos
problemas de diseños de un mismo contexto
Es una descripción de clases y objetos y la manera en que se
comunican entre ellos
Arquitectura en Capas
Se tienen varias capas, cada capa se comunica con las capas
inferiores o superiores a través del paso de información y
servicios
Orientación a Objetos
Los componentes de un sistema son datos y operaciones
encapsulados y se comunican a través del paso de mensajes
Arquitectura de Flujo de Datos
Se basa en el concepto de tuberías, los componentes (filtros) se comunican a través de conectores (pipe) o tuberías
Se utiliza cuando hay transformaciones en secuencia sobre
ciertos datos
Centrada en Datos
Se basa en un almacenamiento central y los componentes
tienen acceso a él
Arquitectura del Pizarrón (Blackboard)
Se enfoca en el almacenamiento de datos al que tienen acceso otros componentes
Llamadas y Retorno
Se divide en arquitectura de programa principal y sub
programas y Llamadas a Procedimientos Remotos (basado en el modelo Cliente - Servidor)
Se basa en una comunicación de llamadas y retornos entre
módulos
Tipos de Patrones
Patrones de Bajo Nivel
Ejemplos:
- Convenciones de nombres
- Formatos para código fuente
- Manejo de memoria
Se enfocan en problemas específicos relacionados con la
implementación en un determinado lenguaje
Son los patrones de más bajo nivel
Patrones de Nivel Medio
Patrones de Diseño
Patrones de Alto Nivel
Estilos Arquitectónicos
Tipología
- Arquitectura Centrada en Datos
- Arquitectura de Flujo de Datos
- Arquitecturas de Llamada y Retorno
- Arquitecturas Orientadas a Objetos
- Arquitecturas en Capas
Describen:
- Los componentes (módulos, bases de datos, etc) que tienen una función específica
- Conectores que permiten la colaboración entre componentes
- Restricciones en la integración de componentes
Es común que se combinen varios patrones al momento de
diseñar una arquitectura
Especifica como se organizan las relaciones entre estos
elementos
Proporciona un conjunto de tipos de elementos ya establecidos
Se refieren a una forma de resolver problemas de arquitectura
Coceptualización
De Comportamiento
Indican la forma en que interactúan las
clases u objetos
De estructura
Se refieren a la estructura de clases y objetos
De creación
Definen como se crearán los objetos
Solución a un problema no trivial que es efectiva y reusable
- Ya ha resuelto un problema similar de manera correcta
- Se puede aplicar a problemas de diseño similares
Solución que puede utilizarse de manera repetida a problemas comunes
Componente
Un componente de software puede ser desde un módulo de un programa hasta incluir bases de datos o sistemas de
configuración entre clientes y servidores
Propiedades de los Componentes
No se especifican las propiedades internas de cada componente, por ejemplo, detalles de funcionamiento o algoritmos
Se refieren a las características que hacen posible la interacción entre componentes
Relaciones entre Componentes
Las relaciones pueden ser tan sencillas como una invocación de un módulo a otro hasta el protocolo de conexión con base de datos
Vista de Arquitectura
Una vista se define como la forma de presentar un modelo que describe un sistema de manera completa desde un cierto punto de vista
Las vistas se utilizan para representar la arquitectura del
software en un solo diagrama
Tipos de Vistas
Vista + 1
Identifica los componentes que implementados representan una funcionalidad
Sirve como enlace entre las otras cuatro vistas
También llamada Vista de Escenarios, está representada por el conjunto de los casos de uso
Vista Física
Considera la disponibilidad del sistema, tolerancia a fallos y
escalabilidad
Se representa a partir de los siguientes diagramas:
- Diagrama de Despliegue
Muestra como se reparten los componentes en los equipos que formarán el sistema completo
Vista de Procesos
Considera aspectos como la tolerancia a fallos
Se utilizan tuberías y filtrosm, llamadas y retornos
Se representa con los diagramas:
- Diagramas de Actividad
Representa el flujo del trabajo del sistema en tiempo de
ejecución
Vista de Desarrollo
Es común utilizar un representación en capas
Se representa a través de los diagramas:
- Diagrama de Componentes
- Diagrama de Paquetes
- Diagramas de Estado
Se enfoca en la organización de los módulos que componen el software
También llamada de Despliegue
Vista Lógica.
Utiliza mucho el esquema Orientado a Objetos
Se representa a través de los diagramas:
- Diagramas de Clases
- Diagrama de Secuencia
Representa los requisitos funcionales del sistema y lo que debe hacer
Arquitectura 4 + 1
Describe la arquitectura de un sistema a partir de su
representación en vistas
Gráfico
Arquitectura y Funcionalidad
La arquitectura permite tener calidad en el sistema al momento que implementa la funcionalidad
La funcionalidad indica que el sistema debe hacer
La funcionalidad está relacionada con los requisitos de calidad
Arquitectura y Calidad
La arquitectura impacta en la forma en que un sistema alcanza sus requerimientos de calidad
La arquitectura, permite, pero no garantiza que cualquier requisito
de calidad se alcance
Las cualidades del producto forman parte del diseño de la
arquitectura
Utilidad
Facilita el reuso de componentes
Permitirá tomar decisiones tempranas de diseño
Permite una comunicación entre los interesados en el sistema
Componentes de un Sistema
La arquitectura del Software se encarga de
Las interfaces y las formas en que se comunican entre ellos
Los sub sistemas que componen el sistema
Un sistema complejo estará formado por sub sistemas
¿Qué es Arquitectura de Software?
Es una de las etapas, incluyendo el Diseño Detallado, la
Implementación y la Verificación
Forma parte del diseño del sistema a partir de los
Requerimientos
Una arquitectura de software se entiende como la estructura de un sistema, que contiene componentes, sus propiedades visibles a otros componentes y las relaciones entre ellos