Atributos de Calidad y Patrones de Arquitectura de Software: Conceptos Clave

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

Escrito el en español con un tamaño de 7,25 KB

Atributos de Calidad en la Arquitectura de Software

Performance (Rendimiento)

Eficiencia con la que el sistema realiza sus tareas.

  • Throughput (Rendimiento): Unidad con la que medimos la tasa efectiva de transacciones que puede realizar el sistema.
  • Tiempo de respuesta: Tiempo de espera de un sistema.
  • Plazos: Tiempo que tarda un proceso no interactivo.

Escalabilidad

Capacidad de un sistema para adecuarse dinámicamente a la carga.

  • Carga: Se mide en transacciones por segundo (TPS).
  • Conexiones simultáneas: Cantidad de usuarios que soporta en simultáneo.
  • Volumen de datos: Cantidad de información que el sistema maneja (bases de datos).
  • Despliegue: Facilidad para distribuir los procesos del sistema.
  • Escalabilidad vertical: Aumento de recursos hardware en un mismo dispositivo.
  • Escalabilidad horizontal: Aumento de dispositivos y distribución de tareas entre ellos.

Mantenibilidad

Facilidad para modificar una pieza o función del sistema.

  • Modificabilidad: Coste de realizar cambios en el sistema y que este se adapte a los cambios y características existentes.
  • Escalabilidad de requerimientos: Capacidad de admitir nuevos requerimientos funcionales.

Seguridad

Facultad del sistema de resistir ataques.

  • En usuarios:
    • Autenticación: Validar el acceso a una plataforma.
    • Autorización: Permitir el uso de componentes de la plataforma por rol.
  • En los datos:
    • Encriptación: Cifrar información con el fin de protegerla.
    • Integridad: Asegurar la no malversación de datos en una comunicación.
    • No repudio: Asegurar que la comunicación llegó al destinatario correcto.

Confiabilidad

Confianza en que el sistema está operable.

  • Disponibilidad: El sistema debe estar preparado para recibir peticiones y responder a estas.
  • Recuperabilidad: En caso de falla, el sistema debe ser capaz de volver a su estado funcional.
  • Regla 99999: El tiempo ideal esperado de disponibilidad de un sistema.
  • Gasto: Un sistema puede o no fallar, por lo que un gasto de falla es probabilístico; en cambio, un cambio de prevención de falla es seguro.

Integrabilidad

Capacidad del sistema de agregar componentes externos.

  • Agregación: Implementar componentes de terceros a nuestro sistema.
  • Interoperabilidad: Funcionamiento correcto entre distintos sistemas (Docker).
  • API: Interfaz de comunicación estándar con el exterior para proveer sistemas.

Portabilidad

Desarrollar para múltiples entornos simultáneamente. Es imposible desarrollar un sistema 100% portable. Es infactible crear un sistema dedicado para cada entorno, por eso se intenta hacer una independencia del entorno.

Verificabilidad

Capacidad del sistema de autochequearse. Similar a cuando el auto enciende y verifica que haya aceite, bencina, etc.

Soportabilidad

Diagnóstico y corrección de incidencias. Incluir una cierta ayuda al proceso de recorección.

Patrones de Arquitectura de Software

Esquema genérico: Solución abstracta y generalizable.

Especificación: Componentes, responsabilidades y relaciones.

Descripción de un patrón: Nombre del patrón, contexto, requerimiento y solución.

  • Estructura: Componentes y sus interacciones.
  • Comportamiento: Organización y funcionamiento de componentes.

Clasificación de Patrones

Patrones Simples

  • Capas: Estructuración en múltiples capas para escalabilidad y mantenibilidad.
  • Tubos y Filtros: Procesamiento de flujos de datos mediante filtros independientes.
  • Pizarrón: Solución colaborativa para problemas con conocimiento parcial.

Sistemas Interactivos

  • Modelo Vista Controlador (MVC): Separación de datos, interfaz de usuario y control.
  • Presentación Abstracción Control (PAC): Jerarquía de agentes cooperativos para sistemas interactivos.

Ejercicios y Aplicaciones

  • Flujos de Trabajo: Uso de Tubos y Filtros o SOA para implementar flujos de trabajo.
  • Procesamiento de Datos: Tubos y Filtros para cadenas de procesos independientes.
  • Sistemas Electorales: Arquitectura SOA y patrón MVC para manejar datos electorales.
  • Patrones No Funcionales: MVC mejora mantenibilidad, portabilidad y verificabilidad.
  • Patrones Complejos (Pizarrón): Facilita la resolución de problemas complejos mediante colaboración de múltiples módulos.

Patrón de Capas

Ventajas

  • Componentes estandarizados.
  • Los cambios afectan solo el nivel local.
  • Reutilización de capas y componentes.

Desventajas

  • Los cambios pueden afectar en cascada.
  • Ineficiencia.
  • Complejo de definir.

Patrón de Tubos y Filtros

Ventajas

  • Arquitectura flexible.
  • No requiere de archivos intermedios.
  • Filtros reutilizables.
  • Permite procesamiento paralelo.
  • Construcción independiente.

Desventajas

  • Información no compartida.
  • Conversión de datos puede ser ineficiente.
  • Errores pueden afectar el flujo de procesamiento.

Patrón de Pizarrón

Ventajas

  • Flexibilidad para incorporar diversas perspectivas.
  • Facilita la contribución de múltiples expertos.
  • Divide problemas grandes en partes más pequeñas y manejables.
  • Permite integración de soluciones parciales.

Desventajas

  • Coordinación compleja entre sistemas.
  • Riesgo de soluciones parciales que no se integran bien.
  • Requiere gran ancho de banda y recursos.
  • Más orientado a la investigación que a aplicaciones comerciales directas.

Patrón Modelo Vista Controlador (MVC)

Ventajas

  • Soporta múltiples vistas del modelo.
  • Flexible, mantenible y adaptable.
  • Frameworks existentes implementan MVC.

Desventajas

  • Complejidad.
  • La vista no tiene acceso directo a los datos, lo que puede ser ineficiente.
  • Acoplamiento intrínseco entre componentes.

Patrón Presentación Abstracción Control (PAC)

Ventajas

  • Asigna responsabilidades específicas.
  • Funcionamiento independiente de cada agente.
  • Soporta multitarea.

Desventajas

  • Sistema complejo.
  • Baja eficiencia.
  • Complejo mecanismo de control.

Entradas relacionadas: