domingo, 1 de noviembre de 2009

Desarrollo Iterativo de Software

Antes se creía que desarrollar software era como construír una casa y consistía en los siguientes pasos:

  • Cliente contrata un arquitecto
  • Arquitecto hace esbozo
  • Cliente aprueba esbozo
  • Arquitecto hace planos
  • Constructor realiza obra
  • Cliente recibe obra
El problema es que cada proyecto de desarrollo de software es distinto. No quiero decir que todas las casas que se construyen son iguales, pero todas las casas son casas.  Los proyectos de desarrollo de software son tan diversos, que en la mayoría de los casos, tanto el cliente como los desarrolladores no tienen experiencias previas en las cuales puedan basar sus decisiones y estimaciones. Además, en el mundo informático, nuevas tecnologías y desafíos aparecen cada día. Todo ello difuculta algunas cosas:
  • Que el cliente pueda especificar en un inicio a cabalidad el producto que desea obtener.
  • Que quienes lo desarrollan puedan estimar cuánto demorarán y qué riesgos se esconden en el camino.
Es por ello que para desarrollar software con éxito es necesario implementar un proceso iterativo que no requiera especificar todo el producto en un inicio y que pueda ir adaptándose a medida que tanto el cliente como quienes lo desarrollan van ganando experiencia con el tema. Un proceso iterativo permite incorporar no sólo nuevas ideas del cliente, sino que además sirve para que el proyecto pueda ir adaptándose a cambios en el entorno, siendo la idea final producir software que sirva para satisfacer las necesidades del cliente.

La idea de desarrollar software de manera iterativa no es nueva, pero en la práctica hay muchas empresas que han sido y son reticentes en aplicar un modelo de este tipo, pues la forma de trabajo se aleja de técnicas tradicionales de producción y pareciera ser menos transparente por la "falta" de planificación inicial.  En realidad, el desarrollar software de manera iterativa ofrece muchísimas ventajas.  Aquí algunas de las más importantes:
  • Permite postergar decisiones. ¿Para qué decidir todo al inicio, siendo que aún no se tiene suficiente información/experiencia? La curva de aprendizaje de todos los participantes no sirve sólo para ver al final todo lo que se hizo mal, sino que para mejorar la dirección durante el transcurso del proyecto.
  • Da transparencia real del avance. En cualquier buen proceso de desarrollo de software iterativo, la meta es producir software funcional (working software) al final de cada iteración.  Esto permite a todos los participantes del proyecto saber exactamente y con gran frecuencia qué ha sido desarrollado y qué problemas han aparecido en el camino, permitiéndo tomar mejores decisiones para el resto del desarrollo.
Si tienes experiencia con desarrollo de software iterativo, escribe un comentario contándonos lo que has hecho y cómo han sido los resultados.  Si no la tienes, cuéntanos por qué no has probado un proceso iterativo hasta ahora.


No hay comentarios:

Publicar un comentario