Las metodologías tradicionales y el desarrollo ágil de software

La Ingeniería de Software, es una disciplina que ha estudiado propuestas diferentes que permiten apoyar el proceso de desarrollo y construcción de software desde hace muchos años. Sin embargo, algunos de los proyectos de desarrollo fracasan o el resultado final no es el esperado, para el cliente o usuario final, inclusive para los propios desarrolladores, debido a la complejidad inherente del programa que impacta en la calidad y retraso del tiempo esperado o peor aún; porque el software entregado no tiene la funcionalidad requerida que apoye en la solución de los problemas de la empresa que lo solicitó.

En los primeros días de la informática, se pensó que el principal motivo por el que los proyectos sufrían retraso y costes excesivos,  era el hecho de que la programación no se llevaba a cabo adecuadamente. La solución a esto, fue la introducción de la Programación Estructurada. Este fue sin duda un salto importante, pero pronto se comprobó que los proyectos seguían experimentando retrasos y altos costos. Sin embargo, en la actualidad se han encontrado varios factores que pueden conllevar al fracaso de un proyecto de desarrollo de software. Actualmente, se distinguen 2 grandes grupos: las metodologías tradicionales y las ágiles.

Generalmente, estas distintas metodologías se han basado en un conjunto de actividades básicamente técnicas, perfectamente diferenciadas  y relacionadas con: análisis, diseño, programación y prueba. Lo que diferencia a las distintas metodologías es el grado de énfasis que ponen en las distintas actividades.

Durante mucho tiempo, se ha utilizado el tradicional modelo de cascada, el cual, ha demostrado que no refleja adecuadamente, la naturaleza compleja del proceso de desarrollo de software. Los problemas que presenta éste modelo nacen de su propia estructura, al ser una secuencia de grandes etapas que requieren como hitos la documentación completa antes de continuar con la siguiente etapa. Esta metodología, es muy práctica para proyectos pequeños y con muy bajos niveles de riesgo, tales como proyectos de nuevas versiones de algún software existente donde haya requerimientos claros y cuya arquitectura e infraestructura de software y hardware no van a cambiar mucho respeto a la versión anterior.

Pero una metodología tan inflexible a cambios, como lo fue el modelo tradicional, rápidamente resultó ser impráctica para el desarrollo de nuevos programas de cómputo, que demandan una alta complejidad en su estructura y funcionalidad. Para solucionar este problema, se definieron posteriormente los métodos iterativos o incrementales, que unidos a otras prácticas claves, como la orientación al manejo de riesgos y la planeación adaptable, permiten de forma natural guiar adecuadamente el proceso de desarrollo de software.

Actualmente se ha adoptado como estándar en algunas empresas de software la estructura metodológica del RUP de IBM, que organiza el desarrollo de un proyecto informático en iteraciones guiadas en etapas y fases para obtener una arquitectura de software más sólida, robusta, clara y ajustable a las necesidades particulares de cada organización.

El proceso Unificado, es un proceso de software genérico que puede ser utilizado para una gran cantidad de tipos de sistemas de software, para diferentes áreas de competencia y diferentes tamaños de proyectos en los que el factor de riesgo tecnológico es muy alto, y los requerimientos son inestables.

Provee un enfoque disciplinado en la asignación de tareas y responsabilidades dentro de una organización de desarrollo. Su meta es asegurar la producción de software de muy alta calidad de los usuarios finales dentro de un calendario y presupuesto predecible.

Sin embargo, el proceso unificado no ha sido aplicado en muchas empresas por su complejidad de administración y el tiempo que requiere ser invertido en la documentación, desaprovechado sus considerables ventajas.

Es así, como aparecen los defensores del desarrollo ágil del software, que resaltan la importancia de los talentos y habilidades de los individuos, más que las metodologías y documentación. Las metodologías ágiles que se centran especialmente en el factor humano o el producto de software, dan mayor valor al individuo, a la colaboración con el cliente y al desarrollo incremental del software con interacciones muy cortas. Este enfoque está mostrando su efectividad en proyectos con requisitos muy cambiantes y cuando se exige reducir drásticamente los tiempos de desarrollo manteniendo una alta calidad.

Las metodologías ágiles, están revolucionando la manera de producir software, y a la vez generan un amplio debate entre  sus seguidores, quienes por escepticismo apoyan las metodologías tradicionales. Su objetivo es esbozar los valores y principios que deberían permitir a los equipos desarrollar software rápidamente y respondiendo a los cambios que puedan surgir a lo largo del proyecto, pretendiendo ofrecer una alternativa a los procesos de desarrollo de software tradicionales, caracterizados por ser rígidos y dirigidos por la documentación que se genera en cada una de las actividades desarrolladas.

Mtra. María de Lourdes Santiago Zaragoza

Programa educativo de Tecnologías de la información y Comunicación

lrivera@utvm.edu.mx