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
- Identificar los Servicios
- Definir las transacciones de cada servicio
- Especificar las Interacciones entre los servicios
- Definir modelo de Datos
- Especificar el funcionamiento de cada servicio
- 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