En serio va a cambiar...
Esta debería ser la primera regla en cuanto al diseño de software, la regla sobre
la que se debe sustentar todo el enfoque con respecto al análisis, el diseño y la
codificación de un sistema software.
Todo cambia muy rápido en el proceso de desarrollo de un software, el mismo software
construido, genera nuevos requisitos, la satisfacción de las necesidades de un proyecto,
genera a su vez nuevas necesidades.
Explicado de otra forma la resolución de un problema, genera un entendimiento más
claro de dicho problema, y en esta situación, se abren nuevas posibilidades sobre
las capacidades del software y el negocio que sustenta.
Actualmente es muy difícil encontrar un proyecto que funcione con las fases tradicionales
de la ingeniera de software, y que no requiera regresos continuos a las fases de
análisis y diseño, además de un alargamiento innecesario de las fase de construcción.
Ese el motivo del auge de la metodologías ágiles. Están pensadas desde un principio
para ser validas en un contexto donde el cambio de los requisitos y las necesidades
de los usuarios son constantes.
¿Significa esto que los cambios en mitad de la construcción de un software, es algo
bueno y deseable?, no necesariamente, no es algo que se deba plantear en esos términos,
más bien es algo que se debe aceptar como la realidad el día a día, y preparar nuestros
procesos y enfoques para el cambios, si nos negamos a él, solo repercutirá en inacabables
horas extras de construcción.
Desde un primer momento debemos estar listos y asumir que nuestro proyecto va a
cambiar, y adaptarnos rápidamente a ese cambio, para lo cual necesitamos apoyarnos
(entre otros) en los siguientes puntos:
- Metodologías que estas diseñadas para gestionar los cambios.
- Herramientas para gestionar los cambios en el software (como herramientas de control de versiones).
- Herramientas para gestionar las necesidades y los requisitos.
- Herramientas para probar el software de manera automatizada, para controlar el impacto del cambio en nuestro software de una manera rápida.
- Software diseñado (y construido) desde el puntos de vista del cambio.
- Software generado automáticamente, mediante técnicas de generación automática de código.
- Equipos cuyos integrantes que compartan un "mismo lenguaje", esto es que entienda y apoyen un conjunto de prácticas y estándares de programación, y objetivos comunes para todos.
Profundizare en un futuro en cada uno de estos puntos.