Fundamentos de Arquitectura de Software: Principios, Estructuras y Estilos
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 9,79 KB
Principios de la Arquitectura de Software
- Abstracción
- Encapsulamiento
- Separación de responsabilidades
- Acoplamiento y Cohesión
- No Duplicación
- Parametrización y Configurabilidad
- Claridad y simplicidad
- Separación de interfaz e implementación
Beneficios de la Arquitectura de Software
La Arquitectura de Software nos permite razonar y planear para:
- Confiabilidad del sistema
- Evolución
- Reusó
- Eficiencia
- Mejorar el mantenimiento
- Etc.
¿Por qué estudiar Arquitectura de Software?
Entender detalles de arquitecturas propicia que se seleccionen mejores alternativas en el diseño.
Problemas por la falta de Arquitectura
- Rendimiento inadecuado
- Mantenimiento costoso
- Diseño inadecuado para evolucionar
- Reusó limitado
- Proyectos ineficientes
Definición de Arquitectura
La arquitectura es…
- Vista estructural de alto nivel
- Define estilo o combinación de estilos para una solución
- Se concentra en requerimientos no funcionales
- Los requerimientos funcionales se satisfacen mediante modelado y diseño de aplicación
- Esencial para éxito o fracaso de un proyecto
La arquitectura de un sistema de software es la estructura o estructuras del sistema, que comprende:
- Elementos de software.
- Propiedades externamente visibles de esos elementos.
- Las relaciones entre ellos.
Tipos de Estructuras para el Arquitecto
Existen dos tipos de estructuras que le interesan a un arquitecto:
- Estructuras Estáticas (organización en tiempo de diseño).
- Estructuras Dinámicas (organización en tiempo de ejecución).
Elementos Estáticos
Tratan sobre lo que comprende el diseño del sistema, qué elementos lo componen y cómo se relacionan.
Esos elementos internos de diseño pueden ser:
Software:
- Módulos.
- Clases
- Paquetes
- Procedimientos almacenados
Elementos Internos de Datos:
- Clases
- Entidades/Tablas relacionales.
- Archivos de datos
- Documentos XML/Html.
- Etc.
Elementos Internos de Hardware:
- CPU
- Componentes de equipo de cómputo (monitor, teclado, etc.)
- Componentes de red
El acomodo estático de estos elementos (software y datos) define (dependiendo el contexto) las asociaciones, relaciones o conectividad entre los elementos.
Estructuras Dinámicas del Sistema
Muestran la forma en la que el sistema opera en tiempo de ejecución.
Propiedades Externamente Visibles
Las propiedades externas se manifiestan en dos diferentes maneras:
- Comportamiento visible al exterior.
- Atributos de Calidad
Comportamiento Visible al Exterior
Estas propiedades están relacionadas con la función que realiza el sistema desde el punto de vista de un observador externo.
Más concretamente se refiere a las iteraciones funcionales entre el sistema y su ambiente.
Atributos de Calidad
Son propiedades externas relacionadas a los requerimientos no funcionales del sistema como Desempeño, seguridad y mantenimiento, entre otros.
Arquitectura Candidata
Una arquitectura candidata para un sistema es una organización particular de estructuras dinámicas y estáticas que tienen un potencial de exhibir el comportamiento y los atributos de calidad requeridos.
Es posible capturar la relación entre las propiedades externamente visibles de un sistema y su composición interna de la siguiente forma:
- El comportamiento externamente visible (Qué Hace) es determinado por el comportamiento combinado de los elementos internos.
- Las propiedades de calidad de un sistema como desempeño, escalabilidad y confiabilidad entre otros (Cómo hace) emergen de las propiedades de calidad de los elementos internos.
Componente (Elemento Arquitectónico)
Un componente o elemento arquitectónico es una pieza fundamental desde la cual un sistema puede ser construido.
Los componentes deben tener definido claramente los siguientes atributos:
- Un conjunto de responsabilidades.
- Un límite o alcance.
- Un conjunto de Interfaces, las cuales definen los servicios que el componente provee a otros componentes.
Stakeholders
Un stakeholder en una arquitectura es una persona, grupo o entidad con un interés en el desarrollo de un sistema.
Estilos Arquitectónicos
Un estilo arquitectónico es un mecanismo descriptivo para diferenciar una construcción de otra.
Generalmente, no es necesario inventar una nueva arquitectura de software para cada sistema de información. Lo habitual es adoptar una arquitectura conocida en función de sus ventajas e inconvenientes para cada caso en concreto. Así, las arquitecturas más universales son:
Cliente-Servidor
Donde el software reparte su carga de cómputo en dos partes independientes pero sin reparto claro de funciones. Consiste básicamente en un cliente que realiza peticiones a otro programa (el servidor) que le da respuesta.
Componentes Cliente-Servidor:
- Lógica de presentación: La parte de la aplicación que interactúa con un dispositivo de un usuario final como una terminal, un lector de código de barras o un computador portátil.
- Lógica del negocio: La parte de una aplicación que utiliza información de usuario y de la base de datos para efectuar transacciones de acuerdo con las restricciones de las reglas de negocio.
- Lógica de bases de datos: La parte de una aplicación que manipula los datos dentro de la aplicación.
- Procesamiento de bases de datos: El verdadero procesamiento de los datos de la base de datos realizado por el SGBD.
Ventajas Cliente-Servidor
- Centralización del control
- Escalabilidad
- Fácil mantenimiento
Desventajas Cliente-Servidor
- La congestión del tráfico
- Aumento de costo
Arquitectura de Capas
Especialización de la arquitectura cliente-servidor donde la carga se divide en tres partes (o capas) con un reparto claro de funciones: una capa para la presentación (interfaz de usuario), otra para el cálculo (donde se encuentra modelado el negocio) y otra para el almacenamiento (persistencia). Una capa solamente tiene relación con la siguiente.
Capas y Niveles
- Capa de presentación: es la que ve el usuario (Interfaz gráfica)
- Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso.
- Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos.
Los términos "capas" y "niveles" no significan lo mismo ni son similares.
El término "capa" hace referencia a la forma en que una solución es segmentada desde el punto de vista lógico:
- Presentación.
- Lógica de Negocio.
- Datos.
En cambio, el término "nivel" corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física.
Pipes and Filters
- Cada componente tiene un conjunto de entradas y un conjunto de salidas.
- La salida puede iniciar antes de terminar de leer la entrada.
- Los componentes transforman los datos (filtros).
- Los conectores transmiten los datos de un sitio a otro (mangueras)
Enfatiza la transformación incremental de los datos a través de las sucesivas componentes.
Ventajas Pipes and Filters
- Fácil de entender. Composición simple de filtros.
- Soportan el reusó. Los filtros pueden usarse en otros sistemas.
- Fácil de mantener y mejorar. Los filtros se pueden reemplazar o agregar nuevos filtros.
- Soportan ejecución concurrente.
Estilos Arquitectónicos: Pizarra
Consiste en un repositorio central de datos y un conjunto de componentes activos que rodea al repositorio de datos.
- El comportamiento básico de cualquier componente consiste en examinar la pizarra, realizar su tarea y escribir sus conclusiones en la misma pizarra.
- De esta manera, otro componente puede trabajar sobre los resultados generados por otro.
- La computación termina cuando se alcanza alguna condición deseada entre los resultados escritos en la pizarra.
El componente de control puede activar los componentes de procesamiento de acuerdo a una programación predefinida o inspeccionando la pizarra y así determinar que componente de procesamiento es el más adecuado para activar a continuación.
El efecto de usar el estilo de pizarra sobre los atributos de calidad:
Desempeño. No es uno de los puntos fuertes de este estilo por dos razones.
Mantenibilidad. Este si es un aspecto fuerte del estilo de pizarra, debido a que los componentes de procesamiento son independientes unos de otros pueden ser agregados o removidos sin cambiar otros componentes.
Fiabilidad. Dos aspectos a considerar
Estilos Arquitectónicos: Sistemas Orientados a Objetos
- El estilo OO organiza el sistema en términos de la comunicación entre objetos.
- Los objetos son entidades que contienen estado y operaciones para acceder y cambiar su estado.
Un objeto generalmente necesita enviar mensajes a otros objetos, por lo que se requiere que cada objeto mantenga referencias a los objetos con los que se relaciona.