El desarrollo de software tradicional de ciclo de vida se originó en los años sesenta para cubrir la demanda cada vez más creciente de desarrollo software en las grandes empresas, que por aquel entonces eran las que tenía acceso al mundo de la computación. Las metodologías de desarrollo son un marco de trabajo que nos ofrecen una serie de herramientas para la gestión de un proyecto software en cada una de sus fases también llamada ciclo de vida.
La creación de un software
La realidad de la creación de software se resume perfectamente en esta imagen:
Este chiste gráfico define perfectamente la realidad de lo que sucede en un gran porcentaje de proyectos software, nos muestra la cantidad de puntos de vistas diferentes que hay y como no estar perfectamente alineados puede producir las típicas desviaciones que acaban por llevar al fracaso un proyecto.
Por tanto la buena elección de la metodología siempre teniendo en cuenta las peculiaridades del proyecto a realizar puede evitar muchos de los problemas que aparecen durante el ciclo de vida del proyecto.
Qué son las metodologías ágiles
Las metodologías ágiles son aquellos métodos de ingeniería software que están fundamentado en el desarrollo incremental e iterativo. Donde las soluciones evolucionan a través del trabajo de grupos multidisciplinares y que se organizan ellos mismos.
La metodología incremental e iterativa
La metodología incremental e iterativa es una metodología de desarrollo de prototipos que son desarrollos incrementales que poco a poco se irán correspondiendo con el aplicativo final. En esta metodologías se hace un gran esfuerzo en involucrar al usuario en un par de fases fundamentales del modelo, la definición del problema que se quiere atacar y en la fase de pruebas.
De esta forma la metodología se asegura que los prototipos que se van realizando se corresponden con la definiciones especificadas por el usuario y gestiona mucho mejor la incertidumbre.
En marzo de 2001, Kent Beck, reunión a críticos de los modelos de mejora basados en procesos. En la reunión se acuñó el termino de “Métodos Ágiles” para definir los métodos que estaban surgiendo como alternativas a las metodologías tradicionales y que se consideraban excesivamente pesadas y nada flexible a causa de su gran burocracia y excesiva planificación. De esta reunión surgió lo que se llamó el “Manifiesto Ágil” formado por los siguiente principio:
- A los individuos y su interacción, por encima de los procesos y las herramientas.
- El software que funciona, por encima de la documentación exhaustiva
- La colaboración con el cliente, por encima de la negociación contractual.
- La respuesta al cambio, por encima del seguimiento de un plan.
El individuo y las herramientas
Tiene más importancia los individuos y su interacción que los procesos y las herramientas. Este es el principio más importante de todos, las herramientas ayudan a mejorar la eficiencia pero los trabajos que requieren conocimiento implícito sin personas con conocimiento técnico y la actitud adecuada no producen resultados.
Durante la época de la reingeniería las empresas tipo consultaras gritaron a los cuatro vientos que gracias a la organización y los procesos se podían conseguir grandes resultados con personas mediocres. Este principio es altamente peligroso sobretodo cuando el trabajo en si necesita de grandes dosis de creatividad e innovación.
Es más importante un software funcionando que una documentación exhaustiva. Esto que pese a parecer algo obvio, no lo es tanto una vez se lleva a la realidad.
Se pueden encontrar en las empresas, documentaciones perfectamente realizadas y con niveles de detalle extraordinario de proyectos que básicamente han quedado para no ser usados porque al final el producto no era lo que se esperaba o porque simplemente sobre el papel se soporta pero en la realidad es imposible de ser llevado a la realidad.
Esto no quita que la documentación sea necesaria, para la transferencia de conocimiento o para que exista un histórico de lo que se ha realizado, pero antes está el producto último de todo el proyecto que es el software. Por eso esta ha de ser reducida a la mínima expresión porque al final no aporta valor al desarrollo. Otro mal que acarrea el exceso de documentación es que al final se convierte en la forma de comunicación entre los departamentos creando muros y haciendo que el contacto personal se diluya.
Tipos de metodologías ágiles
Entre la diferentes metodologías ágiles podemos encontrar:
- Adaptive Software Development.
- Scrum.
- Win Win Spiral.
- Extreme Programming.
- XBreed.
- Pragmatinc programming.
- Lean develomepent.
- Internet Speed Development.
- Agile Modeling.
- Agile Model Drive Development.
- Agile Unified Process.
- Crystal Methods.
En el Master de Sistemas de Información y Tecnología Empresarial en de IMF Business School, hablamos de todos estas metodologías de desarrollo y en especial de la más extendida que es la metodología Scrum en la asignatura de Desarrollo e Integración de Sistemas.
Gustavo López
Últimos posts de Gustavo López (ver todo)
- El CIO del Siglo XXI como motor de la transformación digital - 10/01/2018
- Metodologías ágiles de desarrollo - 02/01/2018
- Machine Learning e Inteligencia Artificial - 16/10/2017