sdlc - ventajas - ¿Cuál es la diferencia entre el modelo de proceso de software incremental, el modelo evolutivo y el modelo en espiral?
modelo espiral win win (3)
Estoy estudiando Ingeniería de Software este año y estoy un poco confundido acerca de la pregunta en el título.
Tanto mi profesor como la referencia ("Software Engineering A Practitioner Approach") diferencia los tres títulos como modelos diferentes. Sin embargo, no puedo ver una diferencia obvia ya que sus metodologías son iguales para mí, pero utilizan diferentes afirmaciones para definirlas. Siento que prácticamente todos ellos representan el mismo modelo de proceso.
¿Alguien puede explicar mejor los diferentes modelos?
Esta es la definición de ipsis litteris de ISO 24748-1: 2016 (Gestión de Ciclo de Vida de Ingeniería de Software y Sistemas):
Existen muchas estrategias de desarrollo diferentes que pueden aplicarse a proyectos de sistemas y software. Tres de estas estrategias se resumen a continuación:
a) De una vez a través. La estrategia de "un solo paso", también llamada "cascada", consiste en realizar el proceso de desarrollo una sola vez. De manera simplista: determine las necesidades del usuario, defina los requisitos, diseñe el sistema, implemente el sistema, pruebe, arregle y entregue.
b) Incremental. La estrategia "incremental" determina las necesidades del usuario y define los requisitos del sistema, luego realiza el resto del desarrollo en una secuencia de compilaciones. La primera compilación incorpora parte de las capacidades planificadas, la siguiente compilación agrega más capacidades, y así sucesivamente, hasta que se complete el sistema.
c) Evolutivo. La estrategia "evolutiva" también desarrolla un sistema en versiones, pero difiere de la estrategia incremental en reconocer que la necesidad del usuario no se comprende completamente y que no se pueden definir todos los requisitos por adelantado. En esta estrategia, las necesidades del usuario y los requisitos del sistema se definen parcialmente por adelantado, y luego se refinan en cada compilación exitosa.
Espero que esto ayude. Tati
Estos conceptos suelen estar mal explicados.
Incremental es una propiedad de los productos de trabajo (documentos, modelos, código fuente, etc.), y significa que se crean poco a poco en lugar de hacerlo de una sola vez. Por ejemplo, crea una primera versión de su modelo de clase durante el análisis de requisitos, luego lo aumenta después del modelado de la interfaz de usuario y luego lo amplía más durante el diseño detallado.
Evolutivo es una propiedad de los entregables, es decir, los productos de trabajo que se entregan a los usuarios, y en este sentido es un tipo particular de "incremental". Significa que lo que se entrega se entrega lo antes posible en una forma inicial, no es completamente funcional y luego se vuelve a entregar de vez en cuando, cada vez con más y más funcionalidad. Esto a menudo implica un ciclo de vida iterativo .
[Un ciclo de vida iterativo , pero el camino, se refiere a las tareas que realiza (a diferencia de "incremental", que se refiere a los productos; esta es la vista adoptada por SEMAT ), y significa que realiza tareas de los mismos escriba una y otra vez. Por ejemplo, en un ciclo de vida iterativo usted se encontraría haciendo diseño, luego codificando, luego probando, luego liberando, y luego nuevamente las mismas cosas, una y otra vez. Tenga en cuenta que iterativo e incremental no se implican entre sí; cualquier combinación de ambos es posible.]
El modelo en espiral para ciclos de vida es un modelo propuesto por Barry Boehm que combina aspectos de la cascada con avances innovadores, como el enfoque iterativo y el control de calidad incorporado.
Para los conceptos de "producto de trabajo", "tarea", "ciclo de vida", etc., consulte ISO / IEC 24744 .
Espero que esto ayude.
Craig Larman escribió extensamente sobre este tema y sugiero su famoso artículo Desarrollo iterativo e incremental: una breve historia (PDF) y su libro Desarrollo ágil e iterativo: Guía del gerente .
Así es como resumiría las cosas:
Desarrollo incremental
El desarrollo incremental es una práctica en la que las funcionalidades del sistema se dividen en incrementos (porciones pequeñas). En cada incremento, se entrega una porción vertical de funcionalidad al pasar por todas las actividades del proceso de desarrollo de software, desde los requisitos hasta la implementación.
El desarrollo incremental (agregar) a menudo se usa junto con el desarrollo iterativo (rehacer) en el desarrollo de software. Esto se conoce como desarrollo iterativo e incremental (IID).
Método evolutivo
Los términos evolución y evolución han sido introducidos por Tom Gilb en su libro Software Metrics, publicado en 1976, donde escribió sobre EVO, su práctica de IID (quizás la más antigua). El desarrollo evolutivo se centra en la entrega temprana de alto valor para las partes interesadas y en la obtención y utilización de comentarios de las partes interesadas.
En Desarrollo de software: iterativo y evolutivo , Craig Larman lo expresa así:
El desarrollo iterativo evolutivo implica que los requisitos, el plan, las estimaciones y la solución evolucionan o se refinan a lo largo del curso de las iteraciones , en lugar de definirse completamente y "congelarse" en un importante esfuerzo de especificación inicial antes de que comiencen las iteraciones de desarrollo. Los métodos evolutivos son consistentes con el patrón de descubrimiento impredecible y cambio en el desarrollo de nuevos productos.
Y luego discute requisitos evolutivos adicionales, planificación evolutiva y adaptativa , entrega evolutiva . Revisa el enlace.
Modelo espiral
El modelo en espiral es otro enfoque IID que ha sido formalizado por Barry Boehm a mediados de la década de 1980 como una extensión de Waterfall para respaldar mejor el desarrollo iterativo y pone un énfasis especial en la gestión de riesgos (a través del análisis de riesgos iterativos).
Citando el desarrollo iterativo e incremental: una breve historia :
Un hito de 1985 en las publicaciones de IID fue "Un modelo en espiral de desarrollo y mejora de software" de Barry Boehm (aunque la fecha de cita más frecuente es 1986). Podría decirse que el modelo en espiral no fue el primer caso en el que un equipo priorizó los ciclos de desarrollo por riesgo: por ejemplo, Gilb e IBM FSD habían aplicado o defendido previamente variaciones de esta idea. Sin embargo, el modelo en espiral formalizó y destacó el concepto de iteraciones basadas en el riesgo y la necesidad de utilizar un paso discreto de evaluación de riesgos en cada iteración.
¿Ahora que?
Los métodos ágiles son un subconjunto de IID y métodos evolutivos y se prefieren en la actualidad.
Referencias
- Desarrollo iterativo e incremental: una breve historia - Craig Larman, Victor R. Basili (junio de 2003)
- Desarrollo de software: iterativo y evolutivo - Craig Larman
- Desarrollo incremental versus iterativo - Alistair Cockburn
- Desarrollo iterativo e incremental.
- Proceso de desarrollo de software
- T. Gilb, Software Metrics, Little, Brown, and Co., 1976 (agotado).
- B. Boehm, "Un modelo en espiral de desarrollo y mejora de software", Proc. Taller Internacional de Procesos de Software y Entornos de Software, ACM Press, 1985; también en ACM Software Eng. Notas, agosto de 1986, pp. 22-42.