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:

  1. Satisfacer los atributos de calidad (desempeño, seguridad, modificabilidad)
  2. 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:

  1. Lo más difícil de cambiar
  2. Lo más difícil de tener correcto
  3. Vehículo de comunicación entre los interesados.

B. Es el primer artefacto de diseño:

  1. Se ocupa de performance, modificabilidad, confiabilidad, seguridad.

C. Esencial para la reutilización sistemática:

  1. 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:

  1. Formular el problema
  2. Analizar el problema
  3. Buscar soluciones
  4. Decidir la solución más adecuada
  5. Especificar la solución.

Entradas relacionadas: