diferencia entre enfoque incremental e iterativo [cerrado]

13

El Enfoque incremental es un método de desarrollo de software donde el modelo se diseña, implementa y prueba de forma incremental (un poco más se agrega cada vez) hasta que el producto esté terminado. Se trata tanto de desarrollo como de mantenimiento. El producto se define como terminado cuando satisface todos sus requisitos

El Iterative Design es una metodología de diseño basada en un proceso cíclico de creación de prototipos, pruebas, análisis y refinamiento de un producto. o proceso. Sobre la base de los resultados de las pruebas de la iteración más reciente de un diseño, se realizan cambios y mejoras. Este proceso está destinado a mejorar en última instancia la calidad y la funcionalidad de un diseño. En el diseño iterativo, la interacción con el sistema diseñado se utiliza como una forma de investigación para informar y evolucionar un proyecto, a medida que se implementan versiones sucesivas o iteraciones de un diseño.

Parece que ambos métodos tratan de crear una parte del sistema, refinarlo para pasar todos los casos de prueba, agregar otro componente del sistema y refinarlo nuevamente, estos se repiten hasta que el sistema finaliza.

¿Cuál es la diferencia real entre estas dos formas de diseñar software?

¿Cómo es posible combinar estos dos métodos para formar enfoque de diseño iterativo e incremental

    
pregunta Computernerd 09.03.2014 - 04:46

1 respuesta

10

El Enfoque incremental utiliza un número determinado de pasos y el desarrollo va de principio a fin en una trayectoria lineal de progresión.

El desarrollo incremental se realiza en pasos del diseño, implementación, prueba / verificación, mantenimiento. Estos se pueden dividir en sub-pasos, pero la mayoría de los modelos incrementales siguen ese mismo patrón. El Waterfall Model es un enfoque tradicional de desarrollo incremental.

El Enfoque iterativo no tiene un número determinado de pasos, más bien el desarrollo se realiza en ciclos.

El desarrollo iterativo está menos relacionado con el seguimiento del progreso de las funciones individuales. En su lugar, se enfoca en crear un prototipo de trabajo primero y agregar funciones en los ciclos de desarrollo donde se realizan los pasos de Incrementar el Desarrollo para cada ciclo. Modelado ágil es un enfoque iterativo típico.

El modelo incremental se desarrolló originalmente para seguir el modelo de línea de ensamblaje tradicional utilizado en las fábricas. Desafortunadamente, el diseño y desarrollo de software tiene poco en común con la fabricación de bienes físicos. El código es el modelo, no el producto final del desarrollo. Las buenas elecciones de diseño a menudo se 'descubren' durante el proceso de desarrollo. Bloquear a los desarrolladores en un conjunto de suposiciones sin el contexto adecuado puede conducir a diseños deficientes en el mejor de los casos o a un completo descarrilamiento del desarrollo en el peor.

El enfoque iterativo se está convirtiendo en una práctica común porque se adapta mejor al camino natural de la progresión en el desarrollo de software. En lugar de invertir mucho tiempo / esfuerzo en perseguir el "diseño perfecto" basado en suposiciones, el enfoque iterativo consiste en crear algo que sea "lo suficientemente bueno" para comenzar y evolucionar para adaptarse a las necesidades del usuario.

tl; dr: si estuvieras escribiendo un ensayo bajo el Modelo incremental, intentarías escribirlo perfectamente desde el principio hasta el final de una oración a la vez. Si lo escribiera bajo el Modelo iterativo, sacaría un borrador rápido y trabajaría para mejorarlo a través de un conjunto de fases de revisión.

Actualizar:

He modificado mi definición de "Enfoque incremental" para que se ajuste a un ejemplo más práctico.

Si alguna vez ha tenido que lidiar con la contratación, el enfoque incremental es la forma en que se llevan a cabo la mayoría de los contratos (especialmente para los militares). A pesar de las muchas variaciones sutiles del típico "Modelo de cascada", la mayoría de ellas se aplican de la misma manera en la práctica.

Los pasos son los siguientes:

  • Adjudicación del contrato
  • Revisión de diseño preliminar
  • Revisión de diseño crítico
  • congelación de especificaciones
  • Desarrollo
  • Fielding / Integration
  • Verificación
  • Pruebas de confiabilidad

El PDR y el CDR son donde se crea y revisa la especificación. Una vez que se completa la especificación, debería estar congelada para evitar la invasión del alcance. La integración se produce si el software se utiliza para ampliar un sistema preexistente. La verificación es para verificar que la aplicación coincida con la especificación. La confiabilidad es una prueba para probar que la aplicación será confiable a largo plazo, esto se puede especificar de manera muy similar a un SLA (Acuerdo de nivel de servicio) donde se requiere que el sistema mantenga un cierto porcentaje de tiempo de actividad (ex 99% de tiempo de actividad por 3 meses ).

Este modelo funciona muy bien para sistemas que son fáciles de especificar en papel pero difíciles de producir. El software es muy difícil de especificar en papel con un grado apreciable de detalle (ex UML). La mayoría de los 'tipos de negocios' a cargo de la administración / contratación no se dan cuenta de que, cuando se trata del desarrollo de software, el código en sí mismo es la especificación. Las especificaciones en papel a menudo toman tanto o más tiempo / esfuerzo para escribir que el código en sí, y en general resultan ser incompletos / inferiores en la práctica.

Los enfoques incrementales intentan la pérdida de tiempo / recursos al tratar el código como la especificación. En lugar de ejecutar la especificación en papel a través de varios pasos de revisión, el código mismo pasa por varios ciclos de revisión.

    
respondido por el Evan Plaice 09.03.2014 - 07:10

Lea otras preguntas en las etiquetas