¿Todavía no conoces el ciclo de vida de tu proyecto de software?
El ciclo de vida de proyecto describe su desarrollo desde su fase inicial hasta la entrega del producto. Representa tanto las actividades como los productos intermedios que se necesitan para desarrollar la aplicación sobre la que se trabaja. Independientemente del tipo de modelo del que tratemos, todos los modelos de ciclo de vida cuentan con estas actividades: requerimientos, diseño, implementación, pruebas y mantenimiento.
Modelo en cascada
Basado en una ejecución secuencial y orientado a las actividades, es el modelo más antiguo, de los años 70.
- Las ventajas de este modelo son su facilidad de entendimiento e implementación. Establece buenos hábitos de trabajo, define antes que diseña y diseña antes que codifica. Identifica entregables e hitos y funciona bien con productos maduros y equipos débiles.
- Inconvenientes. Espera requerimientos definidos al principio del proyecto y no aprovecha la iteración ni el desarrollo exploratorio. Deja de lado la administración del riesgo y es un modelo que admite difícil y costosamente los cambios.
Modelo en V
Busca pruebas de la actividad que sean más efectivas y productivas. Los planes se van elaborando a medida que se avanza en el desarrollo del proyecto. Cuando cada proceso termina sus productos, las especificaciones de prueba para examinar los procesos que están completos.
- Ventajas. La relación entre las etapas de desarrollo y los tipos de pruebas facilitan la localización de fallos. Es un modelo de fácil aprendizaje. Hace explícito el trabajo que hay que revisar. Específica los roles de los distintos tipos de pruebas que hay que realizar. Involucra al usuario en las pruebas.
- Inconvenientes. El cliente tiene que manifestar explícitamente los requisitos y sólo podrá obtener el producto al final del ciclo de vida. Las pruebas pueden resultar caras y poco efectivas. El producto final puede que no refleje todos los requisitos del usuario.
Modelo en espiral
El objetivo es dividir la tarea en mini proyectos en los que los productos de software se crean a través de repeticiones del proceso del ciclo de vida.
- Ventajas. El producto avanza solucionando los riesgos en cada iteración y finaliza con todos los riesgos resueltos. A medida que el costo aumenta, los riesgos se reducen. Se manejan los puntos de control en cada interacción.
- Es un proceso complicado que requiere de una buena administración. Los objetivos y las metas son difíciles de definir lo que puede suponer dificultades para avanzar. Se puede caer en un desarrollo de nunca acabar.
Modelo Incremental
Se desarrolla el sistema para satisfacer un subconjunto de requisitos que se han especificado y que se incrementa con nuevas funcionalidades que cumplan con más requisitos.
- Ventajas. Facilidad al tratar con sistemas pequeños, al desarrollar parte de las funcionalidades es más fácil determinar si los requerimientos son correctos.
- Desventajas. Requiere experiencia para definir los incrementos y distribuirlos en tareas de forma proporcional.
Modelo iterativo-incremental
Unión del modelo incremental más el iterativo. Se libera parte del producto con prototipos periódicamente mediante iteraciones o ciclos de desarrollo. La parte incremental surge para reducir riesgos centrándose en desarrollar partes del producto para integrarlas a posteriori. En el desarrollo iterativo se mejora y revisa el producto ya creado basándose en refactorizaciones. De la unión de ambos se consigue el producto de software con nuevas funciones desarrollado de manera ágil.