Metodología de desarrollo de software (II) – Modelo de diseño iterativo

El modelo de diseño iterativo de software es una evolución del modelo en cascada o waterfall a cuyas carencias trata de responder.

 

Hay dos premisas principales en las que se basa:

  • El cliente no suele saber lo que necesita. Démosle por ello la oportunidad de descubrirlo sin mucho riesgo.
  • En el desarrollo de software, los procesos tienden a cambiar con mucha frecuencia. Sigamos una metodología que permita tener cierta flexibilidad y tenga esto en cuenta.

 

Las ideas primordiales en las que se basa este modelo de desarrollo son:

  • Entreguemos algo tangible cuanto antes a nuestro cliente, para que lo pueda validar y podamos pivotar si es necesario.
  • Hagamos pequeñas iteraciones que aporten cierto valor y evolucionemos las funcionalidades en los siguientes ciclos, de forma que nuestro cliente perciba beneficios crecientes progresivamente.
  • Repitamos los mismos pasos durante cada una de las iteraciones.

 

Se han creado diferentes frameworks basados en este modelo, inspirando en esencia a los conocidos como métodos de desarrollo ágil de software, como Scrum, XP, Kanban, etc, pudiendose combinar en la práctica varios de ellos cuando sea necesario. Ya iremos conociendo estos métodos en detalle en próximos artículos.

 

Ventajas del desarrollo iterativo

  • El cliente espera poco hasta ver algo tangible. En cada iteración puede comprobar los avances y el beneficio que le reporta.
  • Con cada entrega, el riesgo que se asume es pequeño, ya que si hay algún impedimento / cambio se puede pivotar / solventar con relativa facilidad en la siguiente iteración.
  • El cliente aporta feedback muy pronto y el gap entre lo planeado y lo ejecutado se minimiza con la sucesión de las pequeñas iteraciones.
  • La complejidad del proyecto se diluye en pequeñas partes menos complejas.
  • El conocimiento adquirido sobre el producto es también creciente y progresivo, sin necesidad de tener una visión detallada de cada parte al principio del desarrollo.

 

Debilidades del desarrollo iterativo

  • Implica tener un cliente involucrado durante el desarrollo y dispuesto a invertir los recursos necesarios en el proceso.
  • La relación con nuestro cliente debe basarse en principios éticos y una colaboración mutua. El cliente debe compartir los valores y la visión de cómo abordar el desarrollo.
  • Infunde responsabilidad en el equipo de desarrollo al trabajar directamente con el cliente, con lo cual no todo profesional puede verse involucrado.
  • Conlleva fuertes penalizaciones en desarrollos en los cuales los requerimientos están previamente definidos y cerrados, porque es muy probable que esas especificaciones cambien notablemente.

 

En ASPgems desarrollamos software siguiendo nuestra propia metodología ScrumGem, que está inspirada en muchos de los principios en los que se basa el modelo iterativo. Por esa razón, no hacemos estimaciones cerradas en las colaboraciones, ya que, al ser algo que va a cambiar durante el proceso de desarrollo, desconocemos de antemano cuánto tiempo vamos a tardar en realizarlo. Es algo que iremos descubriendo de la mano del cliente. También tratamos de entregar valor lo antes posible, desde la primera iteración acordada con el cliente.

Scrumgem

Continúo con este artículo el trabajo de investigación persistente en ASPgems sobre los modelos de desarrollo de software.