Por: Leonardo Agudelo – @sweepnoise

Las metodologías ágiles de desarrollo de software son, a la fecha, parte importante de la respuesta a los problemas planteados en el fenómeno conocido como la crisis del software.

Estas metodologías proponen dividir cada proyecto en partes más pequeñas, permitiendo hacer entregas de software funcional en periodos cortos de tiempo (inferiores a 1 mes) sin darle tanta importancia a la documentación extensiva, anteponen la flexibilidad al cambio sobre planes rígidos, prefieren la colaboración con el cliente que la negociación contractual y valoran más a las personas que a los procesos.

Es normal que tanto los proveedores de software, como los consumidores de los servicios de desarrollo, acostumbrados a metodologías robustas para el desarrollo de software, tomen precauciones a la hora de emprender un proyecto adoptando metodologías ágiles.

Una de las principales razones para ser cautelosos en la adopción de estas metodologías es la aparente falta de elementos y/o artefactos que apoyen el mantenimiento de las aplicaciones, ya que con las metodologías robustas, el mantenimiento se apoya en gran medida en los artefactos generados en etapas de análisis y diseño, que, como vimos, se hacen menos prioritarios en las nuevas tendencias.

Otros factores importantes que influyen en el proceso de mantenimiento son la complejidad del software, el tamaño del mismo y el conocimiento que tengan de él los desarrolladores. Estos factores son impactados por prácticas de las metodologías ágiles de desarrollo de software, permitiendo reducir el efecto negativo de los mismos en el mantenimiento y conservando la agilidad. En este post presentaré algunas de esas prácticas:

Desarrollo dirigido por pruebas (TDD por sus siglas en inglés): es una técnica de desarrollo en la que no se implementa una funcionalidad hasta que no se haya escrito la prueba para la misma, por lo cual se construyen únicamente funcionalidades que pasen las pruebas escritas. Esta técnica se usa en la metodología ágil eXtreme Programming (XP) y aporta mejorando el mantenimiento preventivo y reduciendo el mantenimiento correctivo del software, ya que cada cambio que se haga en el sistema deberá pasar las pruebas escritas en un comienzo, mejorando la calidad y reduciendo los defectos.

Refactorización: consiste en reorganizar el código para que sea más limpio y por ende más fácil de mantener. Con esta técnica no se pretende cambiar los resultados del código sino la forma en que se obtienen. Esta técnica también es tomada de la metodología XP y aporta a la categoría de mantenimiento perfectivo del software.

Priorización: esta práctica, proveniente de XP y de SCRUM, tiene como objetivo que los stakeholders del negocio decidan cuales son los requisitos que en realidad se deben desarrollar como prioridad. Estadísticas del Standish Group dicen que el 64% de características del software empresarial nunca son usadas y el 16% son usadas algunas veces; esta estadística nos muestra que hacemos software que no se requiere, incrementando el tamaño del software cuando no es realmente necesario. Como vimos anteriormente, el tamaño del software es uno de los factores que afectan el mantenimiento. Con esta práctica se pretende que el software sea tan grande como realmente se requiera, aportando al mantenimiento preventivo del mismo.

Diseño simple: en XP se promueve el diseño simple, en el cual no se tienen en cuenta funcionalidades que podrían requerirse en el futuro, sino únicamente las funcionalidades requeridas en la actualidad. Esta práctica previene el incremento innecesario de la complejidad del software, uno más de los factores que afectan negativamente el mantenimiento del software.

Conocimiento del software: las metodologías ágiles se basan en la interacción cara a cara entre el equipo de desarrollo y los stakeholders del negocio, por lo cual, el conocimiento del proyecto y del software se da de una manera tácita en los miembros del equipo. El conocimiento del software es uno de los más importantes factores que afectan positivamente el mantenimiento. En este punto es importante resaltar que lo ideal es que los miembros del equipo que construyen el software sean los mismos que estén presentes en el proceso de mantenimiento.

Como vemos, las metodologías ágiles de desarrollo de software tienen formas efectivas de mejorar el proceso de mantenimiento del software. El reto más grande es ser lo suficientemente maduros como organización para asumir como propias las prácticas ágiles y evolucionar nuestra forma de trabajo adaptándonos a las exigencias cambiantes del entorno sin descuidar la calidad de nuestra labor.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s