Contenido del curso
Atributos de calidad
- 2

Qué son los atributos de calidad en software
01:49 min - 3

Cómo medir idoneidad funcional en software
02:52 min - 4

Qué es eficiencia de ejecución en software
04:14 min - 5

Cómo medir interoperabilidad y coexistencia
03:49 min - 6

Qué es la usabilidad y sus 6 dimensiones
08:14 min - 7

Cómo medir confiabilidad en software
Viendo ahora - 8

Los 5 pilares de seguridad en software
04:01 min - 9

Cómo garantizar mantenibilidad con tests
06:27 min - 10

Adaptabilidad vs capacidad de instalación vs reemplazo
02:48 min - 11

Tensiones entre atributos de calidad de software
04:04 min - 12

Atributos de calidad según fase de empresa
07:00 min
Patrones de arquitectura
- 13

Qué es un patrón de arquitectura
02:50 min - 14

Modelo vista controlador: cómo separar responsabilidades
05:37 min - 15

Arquitectura en capas: controller, servicio y repositorio
03:14 min - 16

Event sourcing vs bases relacionales
06:17 min - 17

Qué es la arquitectura microkernel
01:52 min - 18

Arquitectura Comparte Nada con Map Reduce
02:29 min - 19

Patrón de microservicios: cuándo y cómo
03:57 min - 20

Qué es CQRS y cómo separa lectura de escritura
03:24 min - 21

Arquitectura hexagonal: puertos y adaptadores
04:10 min - 22

Qué son los contextos delimitados en DDD
05:34 min - 23

Cómo combinar patrones de arquitectura
09:22 min - 24

Evolución de patrones desde monolito a microservicios
07:58 min
Diseño de una arquitectura
- 25

Cómo traducir requerimientos en decisiones arquitectónicas
02:18 min - 26

Conectores en arquitectura: tipos y cuándo usarlos
06:18 min - 27

Llamadas asíncronas vs síncronas vs cliente-servidor
03:05 min - 28

Conector enrutador vs difusión: Twitter
01:55 min - 29

Conectores cola, repositorio y pub/sub
03:52 min - 30

Framework de diseño orientado a atributos
01:55 min - 31

Cómo detectar fallas y reparar sistemas
05:59 min - 32

Cómo recuperar y prevenir fallas en sistemas
04:09 min - 33

Tácticas para confinar modificaciones
06:15 min - 34

Cómo prevenir efectos dominó en software
12:17 min - 35

Tácticas para controlar eficiencia de ejecución
09:14 min - 36

Cómo detectar, resistir y recuperarse de ataques
09:02 min - 37

Cómo probar que el software funciona correctamente
05:14 min - 38

Cómo controlar la usabilidad con tácticas
08:20 min - 39

Cómo validar arquitectura con ATAM y métricas
06:34 min - 40

Evolución de arquitectura: startup a gran escala
10:30 min
Modelado y documentación de arquitectura
Cómo medir confiabilidad en software
Resumen
La confiabilidad en software define si un sistema se puede usar con normalidad en el tiempo. Aquí encontrarás cómo evaluar madurez, disponibilidad, tolerancia a fallos o resiliencia y capacidad de recuperación con métricas claras, ejemplos reales y prácticas para garantizar servicio continuo.
¿Qué es la confiabilidad y cuáles son sus subcaracterísticas?
La confiabilidad responde a una pregunta clave: ¿el sistema se mantiene utilizable a lo largo del tiempo?. Para entenderla de forma accionable, se descompone en cuatro atributos medibles.
- Madurez: cuántas veces falla el sistema en uso normal. Menos fallos, mayor madurez.
- Disponibilidad: proporción de tiempo en servicio durante su ciclo normal. Incluye fallos y ventanas de mantenimiento o despliegue.
- Tolerancia a fallos o resiliencia: capacidad de seguir dando servicio pese a errores internos o en sistemas dependientes.
- Capacidad de recuperación: rapidez para volver a operar tras una caída, ya sea por fallo o por una salida planificada.
¿Cómo se miden madurez, disponibilidad, resiliencia y recuperación?
Medir bien es la base para mejorar. Estas métricas permiten comparar y comprometer niveles de servicio.
- Madurez con tiempo medio entre averías: mide cuánto tiempo pasa entre fallos. Cuanto más largo es ese intervalo, más maduro es el sistema.
- Disponibilidad como porcentaje: se calcula el tiempo total disponible sobre el período evaluado. Ejemplo: 95 % en una semana o mes. Algunas organizaciones comprometen “nueves”, como seis nueves (99.9999 %), cuando la continuidad es crítica. Se formaliza en contratos del tipo service level agreement (SLA) o acuerdo de servicio.
- Resiliencia con inyección de fallos: para verificar que el sistema sigue funcionando ante errores, se introducen fallos y se ejecutan pruebas. Netflix popularizó el chaos testing, donde se provocan fallos en distintos puntos para validar el comportamiento esperado bajo estrés.
- Capacidad de recuperación con tiempo medio hasta la recuperación: mide cuánto tarda en volver a dar servicio tras salir de servicio por un fallo o por mantenimiento. Conecta con la mantenibilidad del código: si reparar es difícil, la recuperación se alarga y el servicio sufre.
Habilidades clave que se ejercitan al medir estos atributos:
- Identificar fallos y registrar incidentes con precisión.
- Definir objetivos de MTBF (tiempo medio entre averías) y MTTR (tiempo medio hasta la recuperación).
- Acordar y auditar SLA con porcentajes de disponibilidad exigentes.
- Diseñar pruebas de resiliencia usando técnicas tipo chaos testing.
¿Qué ejemplos aplicados ayudan a fijar estos conceptos?
Los ejemplos aterrizan los criterios y orientan decisiones de arquitectura y operación.
- Madurez en transacciones críticas: banca y pagos con tarjeta. Se espera que el proceso de compra no falle. Un error sin explicación frustra al usuario y daña la confianza.
- Disponibilidad con acuerdos formales: los SLA fijan la disponibilidad en un período (mensual o anual). Los sistemas críticos requieren medición fina para cumplir lo pactado.
- Resiliencia en móviles con conectividad variable: la app debe soportar desconexión, timeouts y errores de comunicación. El objetivo es mantener el servicio pese a fallos intermitentes.
- Capacidad de recuperación en distribuidos: en plataformas como servicio (por ejemplo, la plataforma de Amazon) es común usar escalabilidad automática para crecer ante fallos o picos y mantener el servicio. Con Docker, reiniciar un contenedor descarta el estado temporal defectuoso y permite seguir operando.
Conceptos y keywords que guían la práctica diaria:
- Ciclo de vida y ventanas de mantenimiento o despliegue.
- Errores de comunicación, desconexión y timeout en integraciones.
- Sistemas dependientes y manejo de fallos cruzados.
- Escalabilidad automática y reinicio de containers para recuperar servicio.
¿Tienes métricas objetivo que debas cumplir o un caso desafiante de disponibilidad o resiliencia? Comparte tu experiencia y enfoques en los comentarios.