Categorieën: Alle - componentes - patrones - arquitectura - funcionalidad

door Omar Villota - Pantoja 1 jaar geleden

329

Modelo de Arquitectura de Software

La arquitectura de software se ocupa de asegurar la calidad del sistema al implementar las funcionalidades requeridas. Los sistemas complejos están compuestos por diversos sub sistemas, que se comunican entre sí a través de interfaces bien definidas.

Modelo de Arquitectura de Software

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