Arquitectura de Software: Estructura, Importancia y Modelos

¿Qué es la arquitectura de software?

Es la estructura de datos y componentes que se requieren para el sistema.

Importancia: «No se construye una casa sin planos»

Pasos

  1. Diseño de los datos
  2. Obtener una representación de la arquitectura
  3. Analizar alternativas o patrones arquitectónicos
  4. Tomar la alternativa y elaborar la estructura con un método de diseño

Producto final:

El modelo de arquitectura incluye datos y estructura de software y describe las propiedades e interacciones entre componentes.

Comprobación:

Por cada etapa se revisa el diseño para que los productos sean claros, correctos, completos y consistentes con los requerimientos.

Concepto de arquitectura

Permite:

  • Analizar efectividad del diseño frente a los requerimientos
  • Facilitar cambios en etapas tempranas
  • Reducir riesgos

Importancia

  • Permite la comunicación entre las partes interesadas
  • Resalta primeras decisiones que tendrán un efecto profundo
  • Constituye un modelo pequeño y asequible donde el sistema y componentes trabajan juntos

Objetivos

  • Establecer marco conceptual con vocabulario en arquitectura de software
  • Proporcionar lineamientos que representen una descripción de la arquitectura
  • Estimular mejores prácticas de diseño

Modelos o vistas

Toda arquitectura debe describir los aspectos del software, estos aspectos se describen de manera comprensible. Todas las vistas deben ser coherentes entre sí.

Vistas fundamentales:

  • Visión estática: describe qué componentes tiene la arquitectura
  • Visión funcional: describe qué hace cada componente
  • Visión dinámica: cómo se comportan los componentes a largo plazo

Modelo Estructural

Las arquitecturas de software están compuestas por:

  • Componentes
  • Conexiones
  • Configuración
  • Estilo
  • Restricciones
  • Análisis
  • ETC

Modelo de framework

Similar a la estructural, pero se enfoca en una estructura del sistema en vez de su composición. Se refiere a los dominios o clases de problemas específicos, como CORBA (Common Object Request Broker Architecture).

Modelo Dinámico

Enfatiza la cualidad conductual de los sistemas. Puede referirse a los cambios de configuración o a la dinámica de los valores cambiantes.

Modelo de proceso

Concentrado en la construcción de la arquitectura, en los pasos y procesos involucrados en esta. Es resultado de seguir un argumento (script) de proceso.

Modelo Funcional

La minoría lo considera como un conjunto de componentes funcionales, organizado en capas. Se piensa en una visión como framework «particular».

Modelo 4 + 1

  • Vista lógica: Requerimientos funcionales traducidos en los servicios que debería ofrecer
  • Vista de procesos: Procesos no funcionales y la disponibilidad del sistema, direcciona la distribución íntegra del sistema y fallos, también especifica a los subprocesos o hilos que ejecutan cada operación
  • Vista de desarrollo: Describe la organización estática del software en su ambiente de desarrollo
  • Vista física: Mapeo del software en el hardware y su distribución

EJEMPLO 4+1

  • Vista lógica: Entidad relación/clases
  • Vista Procesos: Diagrama de secuencia
  • Vista Desarrollo: Diagrama de componentes
  • Vista Física: Diagrama de Estado

Decisiones arquitectónicas

Se consideran varias alternativas y se elige en última instancia. Se considera una perspectiva.

Géneros arquitectónicos

Dictan el enfoque específico para la estructura que debe construirse. Especifican categorías del dominio y sus subcategorías.

  • Inteligencias artificiales
    • Sistemas que emulan la inteligencia humana
  • Comerciales y no lucrativos
    • Son fundamentales para la operación
  • Comunicacionales
    • Comunicación
  • Contenido de autor
    • Permite al usuario crear o manipular artefactos de texto o multimedia
  • Dispositivos
    • Sistemas que interactúan con el mundo físico

Atributos de calidad

Los atributos de calidad hablan de características específicas que debe tener el sistema.

Realidades sobre los atributos de calidad

Suelen estar pobremente especificados o directamente no especificados. Los requerimientos funcionales y atributos de calidad deben ser considerados. La flexibilidad (calidad de cambios) es importante en la ingeniería de requerimientos.

Para definir bien una arquitectura:

  • Requerimientos funcionales ‘de negocios’
  • Otros atributos de calidad requeridos
  • Restricciones

Clasificación de los atributos de calidad

  • Adecuación funcional: corrección funcional
  • Eficiencia de desempeño: capacidad
  • Compatibilidad: coexistencia
  • Usabilidad: estética – aprendizaje
  • Fiabilidad: madurez – disponibilidad
  • Seguridad: integridad – autenticidad
  • Mantenibilidad: reusabilidad – analizabilidad
  • Portabilidad: adaptabilidad

Atributos de calidad relacionados con la calidad sistémica

  • Disponibilidad
  • Facilidad de cambios
  • Performance
  • Escalabilidad
  • Seguridad
  • Facilidad de testeo
  • Usabilidad

Atributo de calidad disponible

Relacionado con las fallas en el sistema y sus consecuencias asociadas. Ejemplo: error – defecto – falla. Relativamente fácil de especificar, difícil de verificar.

Atributo de calidad facilidad de cambios

Relacionado con el costo de los cambios. Cuando se especifica un cambio, debe ser diseñado, implementado, probado y liberado.

Atributo de calidad performance

Relacionado con el tiempo que le lleva al sistema responder eventos. Difícil de expresar, depende de los volúmenes del sistema.

Atributo de calidad seguridad

Capacidad de un sistema para resistir usos no autorizados. Incluye integridad (protección de datos o servicios de accesos no autorizados) y disponibilidad (que un sistema esté disponible para su uso legítimo).

Atributo de calidad facilidad de testeo

Facilidad que presenta un sistema para que se ejecuten actividades de testing. «Test harness».

Atributo de calidad usabilidad

Relacionado con la facilidad con la cual un usuario puede cumplir una tarea. Incluye aprender la funcionalidad del sistema, aumentar confianza y satisfacción.

Otros atributos

Escalabilidad: cumple con sus requerimientos al cambiar los volúmenes de los problemas que resuelve.

Portabilidad: emigrar de un sistema a otro.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.