sábado, 31 de marzo de 2012

Algunas Metodologías de Desarrollo de Software

Dentro del campo de la ingeniería de software es necesario planificar las fases o periodos que va a tener un determinado proyecto (aplicativo, software o como deseen llamarlo) dentro de su ciclo de vida. Para ello, las buenas prácticas siempre apuntan al uso de una metodología de desarrollo.

¿Por qué?... Bueno, imaginemos el siguiente caso: Necesito construir una casa.

Si no tenemos claro lo que vamos a construir, el estudio previo antes de la construcción, las personas involucradas, los planos detallados y el proceso exacto a seguir. La casa se nos viene abajo.

Imaginemos que la casa se construirá sobre un árbol. ¿Será necesario realizar un trabajo exhaustivo de medidas y planos? La verdad es que no...

Por otro lado, imaginemos que la casa que se construirá es una mansión o tiene varios pisos. ¿Será necesario un estudio previo más extenso para tener éxito?

Con este ejemplo y con la experiencia que tengo podría mencionar lo siguiente: Si necesito desarrollar un proyecto pequeño (como la casa del árbol) recurriré a metodologías de desarrollo ágiles. Por el contrario, si necesito desarrollar un proyecto que contiene diversos módulos interrelacionados recurriré a metodologías que usen una documentación más extensa.

Ojo: no quiero decir que el tamaño del proyecto sea el único criterio para seleccionar una metodología, depende mucho del tiempo, de las personas disponibles para el proyecto y de la experiencia de los involucrados. Seguramente se me escapan algunos otros criterios.

Hay varias metodologías de desarrollo, es más, cada quién adecua la metodología de desarrollo a sus capacidades, terminamos creando una metodología nueva y la usamos cada vez que desarrollamos un proyecto nuevo. ¡Señores, la idea es tener un proceso claro, bien definido y que funcione!

En las siguientes entradas mencionaré las siguientes metodologías: RUP y SCRUM.

Antes que Ken Schwaber me patee, mencionaré que Scrum no es una metodología de desarrollo de software, sino es un marco de trabajo (framework).