Arquitectura de Software: Conceptos Clave y Modelos Fundamentales

Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 8,2 KB

Arquitectura de un Sistema

Define la estructura del mismo identificando componentes principales y cómo se organizan e interconectan. Especifica la comunicación entre componentes. Plantea los requerimientos no funcionales, los que incluyen restricciones. Es una abstracción del sistema y tiene diversas vistas: Lógica, de proceso, Física y de Desarrollo.

3 Pilares Básicos de Cualquier Arquitectura de Software

  • Componentes
  • Relación entre componentes
  • Ambiente

Arquitecto de Software

Sus responsabilidades incluyen:

  • Administración de riesgo
  • Conocimiento de tecnología
  • Excelentes habilidades de diseño
  • Interfaz entre el cliente y el equipo técnico
  • Promoción de buenas prácticas de desarrollo
  • Puente de comunicación entre los equipos de desarrollo

Requerimientos No Funcionales

  • Rendimiento (Performance): Throughput, Tiempo de respuesta, Plazos (Deadlines).
  • Escalabilidad: Carga (TPS, transacciones por segundo), Conexiones simultáneas, Volumen de datos, Despliegue.
  • Mantenibilidad: Modificable, Adaptabilidad a nuevos requerimientos funcionales.
  • Seguridad: Autenticación y Autorización, Encriptación, Integridad y No repudio.
  • Confiabilidad (Reliability) (99,999%): Disponibilidad, Recuperable.
  • Integrabilidad: Interoperabilidad y APIs.
  • Portabilidad: Independencia de plataforma.
  • Verificabilidad: Testeable.
  • Soportabilidad (autochequeo): Diagnóstico y Corrección de incidencias.

Diseño de Software

  • Fase 0: Analizar el contexto
  • Fase 1: Estructuración
  • Fase 2: Modelo de control
  • Fase 3: Descomposición modular

Contexto

  • Requerimientos funcionales
  • Requerimientos no funcionales
  • Ambiente operacional
  • Restricciones

Estructuración

  • Descompone el sistema en un conjunto de subsistemas
  • Utiliza un diagrama de bloques que muestra la estructura del sistema
  • Indica el flujo de datos entre los componentes del sistema
  • Muestra las interfaces que provee el sistema

Modelos de Estructuración

Modelo de Repositorio

Utilizado para grandes cantidades de datos que deben ser compartidos. Gestión centralizada de datos. Modelos pasivo y proactivo (avisa a usuarios modificaciones de datos).

  • Ventajas: Modo eficiente de compartir datos, Administración centralizada de los datos, Seguridad, Escalabilidad, Mantenibilidad.
  • Desventajas: Fuerza un modelo de datos (la más terrible), Difícil cambio del modelo de datos, Política centralizada de administración. Punto único de falla (el más crítico).

Cliente/Servidor

Servidores que ofrecen servicios específicos. Clientes que requieren servicio. Redes de comunicación que conectan ambos. Es un modelo parcialmente distribuido.

  • Ventajas: Procesamiento distribuido, Datos distribuidos, Escalable (definir más instancias de los servidores).
  • Desventajas: Datos no compartidos (cada servidor tiene sus propios datos), Administración de datos en cada servidor, Performance deteriorada (ya que existe un medio de comunicación entre cliente y servidor, el cuello de botella es la red), No hay registro centralizado de servicios (no se sabe qué servicios están operativos y cuáles no, tampoco se sabe dónde están. Todo es en base a prueba y error).

Modelo de Capas

Conjunto de capas de software que ofrecen servicios específicos. Cada capa tiene una interfaz claramente definida. Desarrollo independiente de las capas.

  • Ventajas: Desarrollo incremental, Flexible, Mantenible.
  • Desventajas: Difícil estructuración, Dependencias cruzadas, Baja performance.

Objetos Distribuidos

Cada componente (objeto) define los datos y métodos que pueden ser invocados. Cada objeto puede proveer y recibir servicios. Objetos se comunican a través del sistema ORB (Object Request Broker). Arquitectura compleja.

  • Ventajas: Diseño flexible, Fácil agregar objetos, Configuración dinámica, Escalabilidad, mantenibilidad.
  • Desventajas: Compleja construcción, Bajo rendimiento, Objetos distribuidos.

Arquitectura Orientada a Servicios (SOA)

Evolución del modelo cliente/servidor. Clientes, Bus (Enterprise Service Bus), Servicios independientes, Ambiente de integración basado en estándares (XML, JSON, SOAP, REST). Servicios administrados centralizadamente. Conecta aplicaciones como servicios. Flujo de datos controlado. Provee escalabilidad y seguridad.

  • Ventajas: Reutiliza sistemas existentes, Bajo nivel de acoplamiento, Escalabilidad, mantenibilidad, interoperabilidad, reusabilidad.
  • Desventajas: Dependencia de estándares incompatibles, Complejidad en entornos grandes.

Pasos SOA

  1. Identificar los Servicios
  2. Definir las transacciones de cada servicio
  3. Especificar las Interacciones entre los servicios
  4. Definir modelo de Datos
  5. Especificar el funcionamiento de cada servicio
  6. Definir la interfaz de usuario

Arquitectura Cloud

Externalización de servicios computacionales. Infraestructura - IaaS, Plataforma - PaaS, Aplicación – SaaS. Recursos elásticos (pay what you use).

  • Ventajas: Servicios ubicuos, Reducción de costos (?), Disponibilidad, Escalabilidad, Elasticidad, Flexibilidad, Movilidad.
  • Desventajas: Dependencia de ente externo, Seguridad, Confidencialidad, Conectividad.

Modelos de Control

Control del flujo entre componentes.

Control Centralizado

Un componente controla la ejecución del sistema.

  • Modelo Call-Return: Simple, Predecible, Rígido, Testeable, Bloqueante, Complejo manejo de excepciones.
  • Modelo administrador: No bloqueante, Coordinación de procesos, Lógica centralizada, Posible cuello de botella.

Control Basado en Eventos

Control descentralizado, no bloqueante y maneja eventos generados externamente como broadcast y manejador de instrucciones.

  • Transmisión múltiple: Usan modelo Publicador-Suscriptor, Componentes Distribuidos, Publican servicios, Gatillan eventos, Suscriben eventos.
    • Ventajas: Activación descentralizada de componentes, Distribución de componentes, Evolución simple.
    • Desventajas: Respuesta incierta, Varios manejadores del mismo evento.
  • Manejo de interrupciones: Sistemas en tiempo real, Manejador para cada tipo de interrupción, Respuesta inmediata, No bloqueante, Procesamiento paralelo.

Descomposición Modular

  • Componentes divididos en módulos
  • Posibilita visualizar el modelo de control
  • Modelo de objetos
  • Modelo de flujo de datos

Modelo de Objetos

  • Conjunto de clases débilmente acopladas
  • Interfaces bien definidas
  • Identifica atributos y métodos
  • Objetos creados a partir de las clases
  • Coordinación de operaciones entre objetos

Modelo de Flujo de Datos

  • Descomposición en procesos funcionales
  • Transformación de entradas en salidas
  • Dependencia entre procesos
  • Flujo predeterminado
  • Adecuado para procesos batch

Arquitecturas de Dominio Específico

Modelos específicos para algún dominio.

Arquitecturas Genéricas

  • Generalización de sistemas reales
  • Análisis de sistemas existentes

Arquitecturas de Referencia

  • Idealización de una arquitectura específica
  • Estudios del dominio de una aplicación
  • Estándar de facto en su dominio

Entradas relacionadas: