¿Cuál es la diferencia entre el modelo de cascada con iteraciones y el modelo de desarrollo de software evolutivo?

7

¿Alguien sabe la diferencia entre esos dos?

Ambos se crean mediante un enfoque iterativo, lo que proporciona una revisión sucesiva después de cada iteración. Ambos tienen las fases iniciales de diseño de la idea- > análisis- > (esquema).

    
pregunta Patryk 10.01.2012 - 02:26

4 respuestas

6

Las definiciones variarán, así que dudo que obtengas una respuesta concluyente a esta pregunta.

Habiendo dicho eso, la diferencia potencial más obvia que veo es cómo se relacionan las iteraciones con su arquitectura / diseño de alto nivel:

  • En un modelo de cascada iterativo, puede usar las iteraciones más para refinamiento / elaboración de elementos del diseño general en varias fases de [diseño detallado / construcción / prueba]. En teoría, podría planificar la mayoría de las iteraciones por adelantado.
  • En un verdadero modelo evolutivo, no tendría un diseño general, simplemente estaría añadiendo a lo que ya ha construido basado en alguna noción de lo que es más valioso hacer a continuación, que generalmente se obtiene a través de comentarios intensivos de los usuarios. No tendría un plan fijo para futuras iteraciones (aunque podría mantener un atraso priorizado o algo similar).
respondido por el mikera 10.01.2012 - 03:09
2

"Diseño evolutivo" es un término general que cubre todos los métodos de diseño que utilizan algún tipo de mecanismo de mutación / selección (es decir, ciclos de cambio - prueba - rechazar / aceptar); "Cascada con iteraciones" describe específicamente un proceso de desarrollo que aplica el modelo de Cascada de manera iterativa.

Un proceso informal de desarrollo único en el que todo el desarrollo ocurre en una máquina, los cambios se hacen ad-hoc según sea necesario y se implementan cuando se consideran "listos", es ciertamente un modelo de diseño evolutivo, pero difícilmente se ajusta a la definición de Waterfall , ni siquiera en su interpretación más relajada.

    
respondido por el tdammers 10.01.2012 - 10:14
1

Por lo que he experimentado, la gente utiliza principalmente "cascada con iteraciones" como un término burlón para implementaciones ágiles pobres o poco entusiastas y no como una metodología práctica.

De todas formas, me topé con este artículo que tiene una explicación decente del término "cascada iterativa".

    
respondido por el DPD 10.01.2012 - 08:43
1

La cascada iterativa también podría significar simplemente descomponer grandes proyectos en hitos y llamar a cada hito una "iteración".

Por supuesto, hacer esto es pecado, ya que elimina toda posibilidad de revisión o retroalimentación de las iteraciones anteriores a la siguiente. ¡Sin embargo, lo he visto aplicado después de lo cual sus transportadores proclamaron alto y alto, ahora eran ágiles por hacerlo!

Otra definición de cascada iterativa es tener cascadas sucesivas donde se alimenta la siguiente de la anterior. Nuevamente, no se permite la retroalimentación durante el propio ciclo desde el diseño hasta la entrega, sino solo entre la entrega y el diseño. Esta definición parece coincidir con el enlace proporcionado por DPD.

Mi definición personal del estilo de "Cascada" y de los procesos del estilo "Ágil" radica en cómo se ve y analiza el proyecto. Ambos cubren las mismas fases y los procesos, pero los abordan de una manera muy diferente. Si ve la producción de un software como una pila con Inception en la parte superior y despliegue y soporte en la parte inferior.

Waterfall dividirá el proceso de creación de software horizontalmente y atravesará cada capa en secuencia. Para un waterfallist (si se puede decir algo así) es imposible avanzar a la siguiente capa sin haber trabajado completamente la capa anterior, es simplemente inconcebible. El argumento típico sería que nunca construyes el techo de una casa antes de los cimientos y dirás cosas similares a "medir dos veces pero cortar una vez".

Agile, por otro lado, desglosará el proceso de creación verticalmente, produciendo segmentos de funcionalidad que se agregan al producto a lo largo del tiempo. con cada rebanada, sin embargo, no avanzan a través de la pila de arriba a abajo, sino que abordan todo de una vez. Pueden hacer esto porque voluntariamente han reducido el alcance del resultado objetivo. Para ellos es inconcebible proceder sin probar primero para ver si la idea tiene sentido. Con cada iteración, agregan varias funcionalidades y la contrastan con la idea y con el resto del sistema.

La cascada se basa en la ingeniería, donde el objetivo es un producto de la vida real tangible y el error no es admisible. Ven el software como piezas rígidas de acero y concreto que deben ensamblarse en una estructura. Por lo tanto, tenderán a ser cautelosos al planear todo, desperdiciando minuciosamente los recursos en el altar de la perfección. Para que Waterfall funcione, necesitas jugadores experimentados muy fuertes y una completa confianza en ellos, debes ser muy meticuloso en cada paso del camino para prever lo que podría ser y anticipar.

Agile se basa en el proceso científico en el que el conocimiento se recopila poco a poco y se prueba continuamente. Entienden perfectamente que el software es maleable y se puede doblar y moldear a voluntad. Tratan las ideas como trataría un investigador de una teoría, es decir, siempre y cuando concuerde con las pruebas. Por lo tanto, tenderán a remodelar continuamente sus recursos desperdiciando el sistema, recreando las mismas cosas una y otra vez con un ligero giro para adaptarse a las nuevas variables. Para que Agile funcione, debe evaluar continuamente su sistema en conjunto y colocarlo en contra de la nueva realidad. Las mediciones y la automatización son esenciales para obtener la imagen más precisa posible del presente, de modo que el siguiente paso pueda tomarse como una medida correctiva hacia el camino ideal. Incluso el camino ideal debe volver a evaluarse para asegurarse de que realmente apunta hacia el objetivo ideal.

El software Waterfall Build para durar como está, estático, establecido en concreto.

El software Agile crece, se preocupa y lo tiende a un mundo en constante cambio.

Es cierto que el software es maleable desde el principio, pero a medida que aumenta su tamaño y antigüedad, también adquiere rigidez y resiste los cambios cada vez más. En mi opinión, no hay una bala de plata y suele haber mucha devoción religiosa en detrimento de la reflexión racional. Dicho esto de los dos extremos, Agile parece ser el que tiene en cuenta el software del software.

    
respondido por el Newtopian 10.01.2012 - 09:42

Lea otras preguntas en las etiquetas