Arquitectura evolutiva
Arquitectura evolutiva
Notas originales de SunDiaL · Ver fuente en inglés
Hace unos 20 o 30 años, al diseñar un proyecto se concebía su arquitectura para que durara. Se planificaba para cinco años o más. Pero las cosas cambian, y hoy todavía más.
La arquitectura evolutiva acepta que el cambio es inevitable e intenta orientarlo para evitar la degradación del software. Para ello utiliza un concepto de la programación evolutiva: la función de aptitud. Los ámbitos donde puede producirse esa degradación se llaman aspectos arquitectónicos.
Aspectos arquitectónicos
A partir de cierto punto, una solución no se ocupa únicamente de los requisitos del cliente. Estas cuestiones se llaman aspectos arquitectónicos, aspectos transversales, etc. Tienen muchos nombres, pero se reducen a:
- Auditabilidad.
- Rendimiento.
- Seguridad.
- Requisitos.
- Datos.
- Legalidad.
- Escalabilidad.
Función de aptitud
En arquitectura evolutiva, una función de aptitud es cualquier función o métrica utilizada para medir lo buena que es una solución. Las funciones de aptitud se clasifican según:
Alcance
- Atómicas -> evalúan un solo aspecto.
- Holísticas -> evalúan varios aspectos.
Frecuencia
- Activadas por eventos -> pruebas unitarias, de pipeline o de control de calidad.
- Continuas -> más bien periódicas: comprueban constantemente el sistema a intervalos determinados.
- Temporales -> comprueban que el código se mantiene actualizado, haciendo fallar las comprobaciones cuando se usan versiones antiguas de bibliotecas.