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.