Desarrollo iterativo e incremental

Desarrollo iterativo e incremental

La transparencia, como ya hemos demostrado en artículos publicados anteriormente, es una de nuestras máximas. Explicar cuál es nuestra metodología de trabajo a la hora de encarar un proyecto es fundamental para transmitirte la confianza que buscamos en cada una de nuestras acciones. Así, si un cliente potencial que está pensando en contar con nuestros servicios, sabrás a la perfección qué es lo que te vas a encontrar y cómo va a fluir nuestra relación profesional.

En un artículo anterior te explicamos qué es un desarrollo Waterfall y por qué su uso estaba algo obsoleto en cuanto al desarrollo software. Pero, ¿cuál es entonces el método de desarrollo ideal? La respuesta es clara: el iterativo e incremental. En DEVTIA trabajamos siguiendo esta metodología, que genera numerosos beneficios a la hora de desarrollar software. Esta metodología, también llamada Agile, nos lleva aportando valor desde que empezamos a usarla, sabemos de primera mano cómo funciona.

Esquema metodología

En el gráfico anterior se puede observar las fases de un proyecto para un periodo de 23 días. En este artículo queremos enseñarte cómo trabajamos a través de la metodología iterativa incremental en la fase de desarrollo. Para completar, también te explicamos en otros artículos las semanas previas a nuestro desarrollo y cómo funciona nuestra garantía.

Nuestra metodología: Iterativo incremental

esquema desarrollo iterativo

¿Qué es iterativo incremental?

En DEVTIA, trabajaremos a través de un desarrollo iterativo incremental durante las semanas que dure el proyecto. Este tipo de desarrollos nacen en respuesta a las numerosas debilidades del modelo tradicional Waterfall. Es un modelo muy distinto al modelo en cascada, una de sus principales diferencias reside en que en este modelo se lleva a cabo un proceso cíclico.

Planificamos entregando diversos bloques temporales que suelen recibir el nombre de iteraciones, estas entregas pueden entenderse como minitrabajos o miniproyectos. En una iteracción se repite un determinado proceso de trabajo que brinda un resultado más completo al producto final.

Con cada una de las entregas se tiene una parte más del sistema y se está más cerca de acabar el proyecto. Aunque este no terminará hasta que la última entrega sea realizada, cada una de estas entregas añaden funcionalidades nuevas al proyecto. De esta manera, empiezas a obtener valor de manera creciente de las funcionalidades de la herramienta desde una fase muy temprana del desarrollo llegando incluso a poder utilizar alguna parte del software sin ningún tipo de problema.Las funcionalidades irán aumentando en número y se perfeccionarán incrementalmente.

En cada entrega se presta especial atención al feedback proporcionado para que, en caso de detectar algún error, se haga en fases tempranas. Así, se localizarán los fallos en etapas tempranas del desarrollo, logrando que no vayan a más y acaben por estropear el proyecto.

Etapas del desarrollo iterativo incremental

Las etapas se repiten ciclicamente y cuando uno de estos ciclos termina, mejora gradualmente el software. Las etapas más comunes son las siguientes:

  1. Planificación y requisitos: Como en casi todos los proyectos de desarrollo software, se empieza por planificar el proyecto. Se establecerán los principales requisitos del software y se empezarán a preparar las siguientes fases. Es una fase crucial donde hay que estar atentos a no cometer el más mínimo error. De la correcta puesta en marcha de la planificación dependerá en gran medida el éxito del proyecto.
  2. Análisis y diseño: Se establecerá la lógica a seguir durante todo el proyecto y cuáles van a ser sus puntos claves como, por ejemplo, los modelos de bases de datos utilizados, idiomas, servicios, capas de datos o la lógica comercial.
  3. Implementación: En esta fase el proyecto empezará a funcionar habiendo tenido en cuenta todos los documentos de planificación, especificación y diseño. Aquí, se empieza obtener un valor real del software y a poder utilizarse.
  4. Pruebas: Una vez que la iteración de implementación ha finalizado, se tendrá que hacer pasar al software por una serie de pruebas para poder localizar los posibles errores que puedan haber surgido durante cada una de las fases.
  5. Evaluación: finalizadas con éxito las anteriores etapas, hay que evaluar el desarrollo. Esto permite que tanto la plantilla encargada del desarrollo como el cliente sean conscientes de en qué punto se encuentra el proyecto, hacia dónde debe ir o qué se puede cambiar.

Beneficios

beneficios

Son muchos los beneficios de instaurar este modelo cuando de desarrollar un software se trata. Según nuestra experiencia estos serían los más destacados:

  • Es muchísimo más fácil tratar con el riesgo existente al identificarse de manera concreta en cada una de las iteraciones, no existe un riesgo global como podría existir en el desarrollo Waterfall, si no que está divido entre el número de iteraciones existentes, por lo que se hace menor y más fácil de localizar.
  • Entregamos valor en fases tempranas del desarrollo, es decir, se genera software de trabajo rápidamente y que puede empezar a usarse pronto.
  • Se adapta fácilmente a las necesidades siempre cambiantes del proyecto.
  • Se trata de un desarrollo mucho más flexible, lo que acaba traduciéndose en unos costes menores.
  • Se puede ir probando el software fácilmente durante las diferentes iteraciones.
  • Al entregarse las iteraciones críticas al principio, estas pasan por un mayor número de pruebas, logrando que no se encuentren errores ni fallos en las partes más importantes del software
  • En caso de un fallo grave solo perderas los recursos dedicados a una iteración, no las del proyecto completo. Esto tranquiliza bastante tanto para ti, como para nosotros.
  • A diferencia del Waterfall, en el modelo iterativo se dedica menos tiempo a la documentación y más tiempo al diseño.
  • Es preferible para proyectos largos.
  • Se eliminan tareas innecesarias.

Limitaciones

Aunque los desarrollos Ágile cuentan con muchísimas ventajas, existen también algunas limitaciones que acabarán entorpeciendo el trabajo en caso de que no funcionen correctamente:

  • Si entre cliente y empresa no existe una comunicación constante y efectiva, difícilmente se va a llegar a buen puerto. Es esencial que exista una cooperación continua entre ambas partes para lograr un proyecto exitoso.
  • Nuestro empleados soportan una carga de responsabilidad mayor que en otros proyectos por el hecho de estar trabajando directamente con el cliente.