Cómo garantizar mantenibilidad con tests
Clase 9 de 43 • Curso Profesional de Arquitectura de Software
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
05:38 min - 8

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

Cómo garantizar mantenibilidad con tests
Viendo ahora - 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
La mantenibilidad es el eje para evolucionar un sistema con confianza. Permite agregar o cambiar funcionalidades y reparar errores con rapidez. Aquí se explican sus cinco subcaracterísticas y las prácticas que las sostienen, desde modularidad y reusabilidad hasta tests automatizados y análisis estático de código.
¿Qué es la mantenibilidad y cómo impulsa el cambio seguro?
La mantenibilidad reúne todo lo necesario para que un sistema pueda cambiar, evolucionar y ser reparado con agilidad. Importa que los cambios no rompan otras partes y que los errores se detecten pronto. Diseñar con independencia entre componentes facilita el trabajo en paralelo y reduce riesgos.
Además, los patrones de arquitectura y las arquitecturas distribuidas ayudan a mejorar la modularidad, favoreciendo que cada parte funcione sin afectar a las demás.
¿Cuáles son las subcaracterísticas clave y cómo se aplican?
Estas cinco subcaracterísticas orientan el diseño para sostener la evolución continua del sistema, reducir el riesgo y acelerar el diagnóstico de impactos.
¿Cómo fortalecen modularidad y reusabilidad la evolución?
- Modularidad: separar el sistema en partes independientes. Cambiar una parte no debe afectar a las otras. Favorece equipos paralelos y funcionalidades independientes.
- Arquitecturas distribuidas y patrones de arquitectura: mejoran la modularidad y la independencia.
- Reusabilidad: aprovechar módulos en otros contextos o con propósitos ligeramente distintos. El open source y las herramientas modernas con package managers facilitan encontrar librerías y frameworks reutilizables.
¿Qué aporta la capacidad de análisis y de modificación?
- Capacidad de análisis: entender el problema y conectar requerimientos con código. Permite estimar qué módulos afecta un cambio y cuánto costará.
- Uso de Gherkin desde la comunidad de Behavior Driven Development o Desarrollo Orientado al Comportamiento: conecta requerimientos y criterios de adaptación con funcionalidad y con testing.
- Capacidad de modificación: facilidad para cambiar el comportamiento sin romper otras partes. La herramienta más fuerte son los tests automatizados con buena cobertura que informan cuándo algo falla.
¿Cómo mejorar la capacidad de prueba con diseño claro?
- Capacidad de prueba: facilidad para crear tests que garanticen que el sistema hace lo esperado, incluso con múltiples caminos y condiciones.
- Estructura del código y operaciones atómicas e independientes: cuanto más claras y separadas, más fácil probar.
- Funciones o métodos puros: sin efectos colaterales. Misma entrada, misma salida, en cualquier momento.
- Cuidado con depender de la fecha actual: la dependencia del reloj cambia con el tiempo y dificulta garantizar el comportamiento correcto.
¿Cómo medir y asegurar la mantenibilidad con tests y análisis estático?
La prioridad es tener tests para cambiar con confianza. No importa si se escriben antes o después, o su tipo específico: lo importante es que estén y cubran lo que el sistema promete.
- Cobertura de código suficiente para lo declarado por el sistema.
- Tests unitarios rápidos para validar piezas pequeñas.
- Tests de integración para conectar múltiples módulos.
- Tests de principio a fin para verificar escenarios completos.
- Análisis estático de código: productos open source y de pago que leen el código sin ejecutarlo, dando alertas y sugerencias para hacerlo más mantenible.
¿Quieres compartir prácticas, herramientas de análisis estático o estrategias de tests que te hayan funcionado? Me encantará leer tus comentarios y dudas.