Desarrollo iterativo e incremental
Nuestra propuesta de desarrollo de software
Esta entrada forma parte de una serie en la que explicamos todos los aspectos relacionados con nuestra propuesta de desarrollo de sowftware, es decir el mismo contenido que tienen las ofertas de desarrollo de software que hacemos a nuestros.
Si lo deseas puedes ver el resto de entradas de la serie: Nuestra propuesta de desarrollo de software
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.
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
¿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 mini trabajos o mini proyectos. En una iteració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:
- 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.
- 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.
- 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.
- 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.
- 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
Son muchos los beneficios de incorporar este modelo para desarrollar un software de calidad. Según nuestra experiencia estos serían los más destacados:
- No existe un riesgo global como podría existir en el desarrollo Waterfall, sino 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.
- Adaptable a las necesidades siempre cambiantes del proyecto.
- Desarrollo flexible, lo que se traduce en ahorro de costes.
- Control y seguimiento, se puede ir probando el software fácilmente durante las diferentes iteraciones.
- Pruebas continuas testables, 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 perderás 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.
- Ideal para proyectos de largo recorrido.
- 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.