Un modelo de desarrollo de software (o una metodología) lo componen un conjunto de conceptos y prácticas con una estructuración definida que se usan como base para organizar y desarrollar un proyecto de software. Se le conoce también como ciclo de vida del software. Existen distintos enfoques y metodologías todas con debilidades y fortalezas propias por lo que no existe un modelo universal óptimo que sea aplicable a todo tipo de proyectos. Las características propias de cada proyecto determinan el modelo que se adapta mejor.
Los modelos se clasifican en dos enfoques básicos:
- El modelo en cascada, waterfall o ciclo de vida clásico: Considera cada una de las fases (análisis, especificación, diseño, desarrollo, …) como etapas separadas en el proyecto que se ejecutan de forma secuencial. El sistema sólo está disponible al final del proceso como un todo completo. Requiere que al inicio del proyecto sea conocido en su totalidad y de forma detallada lo que se desea obtener.
- El modelo incremental: El resultado final se construye de forma incremental, aumentado en cada iteración las capacidades y funciones del sistema. Se realizan múltiples entregas de partes y/o funcionalidades que conforman el producto final. No requiere un conocimiento completo al inicio y permite refinar las funcionalidades a medida que el proyecto avanza. Los incrementos pueden realizarse usado un desarrollo iterativo (cada cierto tiempo -fijado y regular- se realiza una entrega incremental) o un desarrollo incremental continuo (mediante un flujo continuo de entrega de nuevas funcionalidades).
Los dos enfoques pueden combinarse entre sí dando lugar a modelos como:
- Modelo espiral: Se fracciona el proyecto en varios ciclos que se repiten en forma de espiral. Simplificando el modelo puede verse como una aplicación del modelo en cascada en cada ciclo aplicando una gestión de riesgos entre cada ciclo y el siguiente.
- Prototipado evolutivo: Se construyen prototipos/maquetas (presuntamente desechables) que se van modificando hasta culminar con la implementación completa de los requerimientos de los usuarios. Usualmente se empieza con los aspectos más visibles del sistema que se presentan al usuario para continuar el desarrollo en función del feed-back recibido.
- RAD (Rapid Application Development): Combina el desarrollo iterativo con la construcción de propotipos enfocando el proceso en el valor o expectativas de negocio (utilidad del usuario).
No comments yet.