Fundamentos de la Arquitectura de Software: Conceptos Clave y Mejores Prácticas
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,6 KB
Introducción a la Arquitectura de Software
Definiciones
- Definición (Clements 1996): La Arquitectura de Software es, a grandes rasgos, una vista del sistema que incluye los componentes principales del mismo, la conducta de esos componentes según se la percibe desde el resto del sistema y las formas en que los componentes interactúan y se coordinan para alcanzar la misión del sistema.
- Definición (IEEE Std 1471): La Arquitectura de Software es la organización fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente, y los principios que orientan su diseño y evolución.
Definición Extendida
Una Arquitectura de Software de un programa o de un sistema de cómputo es la estructura o estructuras de un Sistema. Dicha(s) estructura(s) comprenden:
- Elementos de software
- Las propiedades visibles de dichos elementos
- Las relaciones entre los mismos.
Esta estructuración representa un diseño de alto nivel del sistema que tiene dos propósitos primarios:
- Satisfacer los atributos de calidad (desempeño, seguridad, modificabilidad)
- Servir como guía en el desarrollo.
Una de las múltiples estructuras que la componen se enfoca en partir el sistema en componentes que serán desarrollados por individuos o grupos de individuos. La identificación de esta estructura de asignación de trabajo es esencial para apoyar las tareas de planeación del proyecto.
¿Por qué es importante la Arquitectura?
Representa las decisiones de diseño más tempranas.
A. Es el primer artefacto de diseño:
- Lo más difícil de cambiar
- Lo más difícil de tener correcto
- Vehículo de comunicación entre los interesados.
B. Es el primer artefacto de diseño:
- Se ocupa de performance, modificabilidad, confiabilidad, seguridad.
C. Esencial para la reutilización sistemática:
- Transferible, abstracción reutilizable
Una buena arquitectura sienta las bases para un sistema exitoso. Una mala arquitectura generalmente provoca alguna forma de desastre.
Arquitectura y Atributos de Calidad
Un sistema puede evaluarse de dos formas para comprobar que cumple sus atributos de calidad:
- Atributos observables mediante la ejecución.
- Atributos no observables en la ejecución.
Atributos observables mediante la ejecución:
- ¿Cómo se comporta el sistema durante la ejecución?
- ¿Entrega los resultados esperados?
- ¿Los entrega en un tiempo razonable?
- ¿Tienen los resultados una precisión tolerable?
- ¿Se comporta apropiadamente al interactuar con otros sistemas?
Atributos no observables en la ejecución:
- ¿Cuán fácil es integrar el sistema, probarlo o modificarlo?
- ¿Cuán caro ha sido su desarrollo?
- ¿Cuánto se tardó en tenerlo disponible en el mercado?
Atributos de Calidad Observables durante la Ejecución
Performance, Seguridad, Disponibilidad, Funcionalidad, Usabilidad.
Atributos de Calidad no Visibles durante la Ejecución
Modificabilidad, Portabilidad, Reusabilidad, Integrabilidad, Testabilidad.
Modelado
Los ingenieros de software necesitan:
- Comprender el ambiente de funcionamiento del sistema: construyen modelos del dominio del problema (sistemas de bolsa, control de tráfico aéreo,...)
- Comprender los distintos sistemas que podrían construir para evaluar alternativas: construyen modelos del dominio de la solución
- Técnicas y herramientas para construir los modelos (por ejemplo, diagramas de UML).
Participantes y Papeles
- Participantes: todas las personas involucradas en el proyecto
- Cliente: encarga y paga el sistema
- Desarrolladores: construyen el sistema (analistas, diseñadores, programadores,...)
- Gerente o director del proyecto: planifica y calcula el presupuesto, coordina a los desarrolladores y cliente
- Usuarios finales: los que van a utilizar el sistema
- Papel (rol):
- Conjunto de responsabilidades en el proyecto o en el sistema
- Asociado con un conjunto de tareas y se asigna a un participante
- Un mismo participante puede cumplir varios papeles.
Influencia de los Interesados
Administrador de la organización desarrolladora:
Bajos costos, ocupar personal, aumentar el valor de los activos corporativos
Encargado de marketing:
Elementos atractivos, terminar rápido, comparable a la competencia
Usuario final:
Comportamiento, performance, seguridad, confiabilidad, usabilidad.
Encargado de mantenimiento:
Modificabilidad.
Cliente:
Bajos costos, terminar rápido, sin muchos cambios.
Solución de problemas
Los ingenieros de software buscan una solución adecuada, en varios pasos:
- Formular el problema
- Analizar el problema
- Buscar soluciones
- Decidir la solución más adecuada
- Especificar la solución.