Si bien es cierto que el desarrollo de software implica la ejecución de procesos y metodologías acordes a al desarrollo, es necesario la aplicación de procesos ágiles de desarrollo de software o también conocidos como metodologías liviana, con el fin de enfocarse en la gente que participa y en los resultados como mejoramiento de calidad de los productos, proceso, minimización de costos y tiempo. Las metodologías ágiles se centran en las iteraciones que se obtienen en cada una de las etapas del ciclo de vida del proceso de desarrollo: planificación, análisis de requerimientos, diseño, codificación, revisión y documentación; y en la adaptabilidad de procesos para la construcción del software. La idea es que en cada iteración se obtenga un demo funcional, es decir, sin errores.
Por lo general estas metodologías son consideradas indisciplinadas por la falta de documentación técnica, pero las características que esta posee y la facilidad al aplicar las distintas metodologías como Programación extrema (XP), Crystal clear, Adaptived Software Development (ASD), Rational Unified Process (RUP) y otras, hacen que se torne disciplinaria. La disciplina consiste en la ejecución adecuada de dichas metodologías; tecnologías ágiles; integración de modelos como CMMI, Cobit, ISO; procesos adaptables y de mejores prácticas de desarrollo de software que pueden ser utilizadas desde la construcción de pequeñas aplicaciones y componentes de un sistema, hasta el desarrollo y construcción de un sistema empresarial completo. Una de las principales características de las metodologías ágiles es la insistencia en la planificación adaptable a cambios y enfocada a personas. Lo que significa un gran esfuerzo y agilidad de parte del equipo de desarrollo y el mejoramiento continuo de de sus procesos.
Como características de metodologías ágiles se tiene que:
- Dan énfasis en las pruebas la aplicación en construcción y una continua integración de cada uno de sus componentes.
- Mantiene sencillez en la definición, diseño y desarrollo de cada componente que constituye el software o producto.
- Documenta solamente lo necesario, se centra en lo más importante del software o producto, el código fuente.
- Permite validar la habilidad de desarrollar software en un equipo de ingeniería de software o en una organización a través de una evaluación estándar.
- Permite establecer reuniones de avances y recopilación de requerimientos.
- Se adaptan a las necesidades y entorno cambiante de los proyectos.
El hecho de aplicar metodologías ágiles a un determinado proyecto, no quiere decir que no se pueda aplicar otras, de hecho la combinación con metodologías tradicionales resulta muy interesante, se puede involucrar prácticas de ambas metodologías de tal forma que obtendríamos una metodología conjunta por cada proyecto. El único problema que existiría es definir cada una de las prácticas que se deben utilizar y, si es necesario definir parámetros para identificar cuál de ellas aplicar.
¿Pero, qué es ser ágil? La agilidad en el desarrollo de software se describe como un marco de trabajo en que se busca aplicar mejores prácticas para minimizar los riesgos de un proyecto a través de iteraciones muy cortas pero funcionales.
La integración de modelos, metodologías, procesos mejorados y nuevas tendencias, seguramente incrementarán el nivel de éxito de los proyectos y la calidad de los productos. Pero sería importante tomar en cuenta la capacidad de comunicación y trabajo del equipo de desarrollo de software, además, de procesos o modelos de bajo nivel como Personal Software Process (PSP) para complementar los otros modelos y lograr un desarrollo de software eficaz y una respuesta adecuada e inmediata al cambio, principalmente en aquellos proyectos en los que intervienen requisitos inestables.
Lo más importante que toda organización o equipo de software debe tener en cuenta es que, no existe una metodología ideal para un proyecto en la que se aplique. La metodología seleccionada sea esta ágil o tradicional, siempre dependerá directamente del equipo de desarrollo, la organización, lo cambiante del entorno y lo primordial, la aceptación de los usuarios finales.