Articulo de referencia

Modelo de cascada

El modelo de cascada es el proceso de realizar las fases típicas del ciclo de vida del desarrollo de software (SDLC) en orden secuencial . Cada fase se completa antes de que com...

El modelo de cascada es el proceso de realizar las fases típicas del ciclo de vida del desarrollo de software (SDLC) en orden secuencial . Cada fase se completa antes de que comience la siguiente, y el resultado de cada fase impulsa las fases subsiguientes. [ 1 ] En comparación con metodologías SDLC alternativas como Agile , es una de las menos iterativas y flexibles, [ 1 ] ya que el progreso fluye en gran medida en una dirección (como una cascada ) a través de las fases de concepción, análisis de requisitos , diseño , construcción , pruebas , despliegue y mantenimiento . [ 2 ] El modelo de cascada es la metodología SDLC más antigua. [ 3 ] Cuando se adoptó por primera vez, no había alternativas reconocidas para el trabajo creativo basado en el conocimiento. [ 4 ]

Historia

La primera presentación conocida que describía el uso de dichas fases en la ingeniería de software fue realizada por Herbert D. Benington en el Simposio sobre Métodos Avanzados de Programación para Computadoras Digitales el 29 de junio de 1956. [ 5 ] Esta presentación versó sobre el desarrollo de software para SAGE . En 1983, Benington republicó su artículo con un prólogo en el que explicaba que las fases se habían organizado deliberadamente según la especialización de las tareas, y señalaba que el proceso no se realizaba de forma estrictamente jerárquica, sino que dependía de un prototipo. [ 6 ]

Aunque el término "cascada" no se utiliza en el artículo, el primer diagrama formal y detallado del proceso se cita a menudo [ 7 ] como proveniente de un artículo de 1970 de Winston W. Royce . [ 8 ] [ 9 ] [ 10 ] Sin embargo, comentó que tenía fallas importantes derivadas de cómo las pruebas solo se realizaban al final del proceso, lo que describió como "arriesgado y [propenso a] fallar". [ 8 ] El resto de su artículo introdujo cinco pasos que consideró necesarios para "eliminar la mayoría de los riesgos de desarrollo" asociados con el enfoque de cascada sin modificar. [ 8 ] Los cinco pasos adicionales de Royce (que incluían escribir documentación completa en varias etapas del desarrollo) nunca se generalizaron, pero su diagrama de lo que consideraba un proceso defectuoso se convirtió en el punto de partida al describir un enfoque de "cascada". [ 11 ] [ 12 ]

El primer uso del término "cascada" puede haber sido en un artículo de 1976 de Bell y Thayer. [ 13 ]

En 1985, el Departamento de Defensa de los Estados Unidos adoptó el modelo de cascada en la norma DOD-STD-2167 para trabajar con contratistas de desarrollo de software. Esta norma se refería a las iteraciones de un desarrollo de software [ 14 ] como "las fases secuenciales de un ciclo de desarrollo de software" y establecía que "el contratista deberá implementar un ciclo de desarrollo de software que incluya las siguientes seis fases: Análisis de requisitos de software, Diseño preliminar, Diseño detallado, Codificación y pruebas unitarias, Integración y Pruebas". [ 14 ] [ 15 ]

Fases

El modelo describe una secuencia lineal de pasos. Aunque existen varias versiones diferentes, a continuación se describe su esencia. [ 16 ] [ 17 ] [ 18 ] [ 19 ]

Análisis preliminar

Realizar un análisis preliminar, considerar soluciones alternativas, estimar los costos y beneficios, y presentar un plan preliminar con recomendaciones.

  • Realizar un análisis preliminar: Identificar los objetivos de la organización y definir la naturaleza y el alcance del proyecto. Asegurarse de que el proyecto se ajuste a los objetivos.
  • Considere soluciones alternativas: Las alternativas pueden surgir de entrevistas con empleados, clientes, proveedores y consultores, así como de análisis de la competencia.
  • Análisis costo-beneficio: Analizar los costos y beneficios del proyecto.

Análisis de sistemas, definición de requisitos

Descomponer los objetivos del proyecto en funciones y operaciones definidas. Esto implica recopilar e interpretar datos, diagnosticar problemas y recomendar cambios. Analizar las necesidades de información del usuario final y resolver inconsistencias e información incompleta: [ 20 ]

  • Recopilación de datos: Obtenga los requisitos del usuario final mediante la revisión de documentos, entrevistas con clientes, observación y cuestionarios.
  • Analizar detenidamente los sistemas existentes: identificar ventajas y desventajas.
  • Analizar el sistema propuesto: Encontrar soluciones a los problemas y preparar las especificaciones, incorporando las propuestas de los usuarios que sean pertinentes.

Diseño de sistemas

En esta etapa, se detallan las características y operaciones deseadas, incluyendo el diseño de las pantallas, las reglas de negocio , los diagramas de procesos , el pseudocódigo y otros entregables.

Desarrollo

Escribe el código.

Integración y pruebas

Ensambla los módulos en un entorno de prueba. Verifica si hay errores, fallos y problemas de interoperabilidad.

Aceptación, instalación, despliegue

Poner el sistema en producción. Esto puede implicar capacitar a los usuarios, implementar el hardware y cargar la información del sistema anterior.

Mantenimiento

Supervise el sistema para evaluar su estado actual. Realice cambios y correcciones menores según sea necesario. Esto ayuda a mantener la calidad del sistema. La supervisión y las actualizaciones continuas garantizan que el sistema siga siendo eficaz y de alta calidad. [ 21 ]

Evaluación

Se revisan el sistema y el proceso. Entre las preguntas relevantes se incluyen si el sistema recién implementado cumple con los requisitos y alcanza los objetivos del proyecto, si es utilizable, confiable/disponible, escalable adecuadamente y tolerante a fallos. Las verificaciones del proceso incluyen la revisión de los plazos y los costos, así como la aceptación del usuario.

Desecho

Al final de su vida útil, se elaboran planes para descontinuar el sistema y realizar la transición a su reemplazo. La información y la infraestructura relacionadas deben reutilizarse, archivarse, desecharse o destruirse, protegiendo adecuadamente la seguridad. [ 22 ]

Argumentos de apoyo

El tiempo invertido al inicio del ciclo de producción de software puede reducir los costos en etapas posteriores. Por ejemplo, un problema detectado en las primeras etapas (como la especificación de requisitos) es más barato de corregir que el mismo error detectado más adelante en el proceso (entre 50 y 200 veces más barato). [ 23 ]

En la práctica común, las metodologías en cascada dan como resultado un cronograma de proyecto con un 20-40% del tiempo invertido en las dos primeras fases, un 30-40% en codificación y el resto dedicado a pruebas e implementación. Dado que la organización del proyecto debe ser altamente estructurada, la mayoría de los proyectos medianos y grandes incluirán un conjunto detallado de procedimientos y controles que regulan cada proceso del proyecto. [ 24 ]

Otro argumento a favor del modelo en cascada es que pone énfasis en la documentación (como los documentos de requisitos y los documentos de diseño), así como en el código fuente . En metodologías menos elaboradas y documentadas, se pierde conocimiento si los miembros del equipo se marchan antes de que finalice el proyecto, y puede resultar difícil para el proyecto recuperarse de dicha pérdida. Si se dispone de un documento de diseño completo y funcional (como pretenden el diseño inicial exhaustivo y el modelo en cascada), los nuevos miembros del equipo y los nuevos equipos deberían poder familiarizarse con el proyecto leyendo la documentación. [ 25 ]

El modelo de cascada proporciona un enfoque estructurado; el modelo en sí progresa linealmente a través de fases discretas, fáciles de comprender y explicar, lo que facilita su comprensión. Además, proporciona hitos fácilmente identificables en el proceso de desarrollo, y se utiliza con frecuencia como ejemplo inicial de un modelo de desarrollo en muchos textos y cursos de ingeniería de software. [ 26 ]

Crítica

Es posible que los clientes no conozcan los requisitos exactos antes de ver el software en funcionamiento y, por lo tanto, cambien sus requisitos posteriormente, lo que conlleva rediseño, redesarrollo y nuevas pruebas, y un aumento de los costos. [ 27 ]

Es posible que los diseñadores no sean conscientes de las dificultades futuras al diseñar un nuevo producto o función de software, en cuyo caso revisar el diseño inicialmente puede aumentar la eficiencia en comparación con un diseño que no se haya creado teniendo en cuenta las restricciones, los requisitos o los problemas recién descubiertos. [ 28 ]

Las organizaciones pueden intentar abordar la falta de requisitos concretos por parte de los clientes empleando analistas de sistemas para examinar los sistemas manuales existentes y analizar su funcionamiento y cómo podrían reemplazarse. Sin embargo, en la práctica, es difícil mantener una separación estricta entre el análisis de sistemas y la programación, [ 29 ] ya que la implementación de cualquier sistema no trivial suele revelar problemas y casos límite que el analista de sistemas no había considerado.

Algunas organizaciones, como el Departamento de Defensa de los Estados Unidos, ahora tienen una preferencia declarada en contra de las metodologías de tipo cascada, comenzando con MIL-STD-498 publicado en 1994, que fomenta la adquisición evolutiva y el desarrollo iterativo e incremental . [ 30 ]

Modelos de cascada modificados

En respuesta a los problemas percibidos con el modelo de cascada puro original, se han ideado muchas versiones modificadas para abordar dichos problemas. Estas incluyen los modelos de desarrollo rápido que Steve McConnell llama "cascadas modificadas": [ 23 ] el "modelo sashimi" de Peter DeGrace (cascada con fases superpuestas), cascada con subproyectos y cascada con reducción de riesgos. También existen otras combinaciones de modelos de desarrollo de software, como el "modelo de cascada incremental". [ 31 ]

Modelo final de Royce

El modelo final de Royce ilustró que la retroalimentación podía (debería, y a menudo lo haría) conducir de las pruebas de código al diseño (ya que las pruebas de código revelaban fallas en el diseño) y del diseño de vuelta a la especificación de requisitos (ya que los problemas de diseño pueden requerir la eliminación de requisitos conflictivos o de otro modo insatisfacibles/no diseñables). En el mismo documento, Royce también abogó por grandes cantidades de documentación, hacer el trabajo "dos veces si es posible" [ 32 ] (un sentimiento similar al de Fred Brooks , famoso por escribir El hombre-mes mítico —un libro influyente en la gestión de proyectos de software— que abogaba por planificar para "desecharlo"), e involucrar al cliente tanto como sea posible (un sentimiento similar al de la programación extrema ).

Las observaciones de Royce sobre el modelo final son las siguientes:

  1. El diseño completo del programa debe realizarse antes de que comience el análisis y la codificación.
  2. La documentación debe estar actualizada y completa.
  3. Haz el trabajo dos veces si es posible.
  4. Las pruebas deben planificarse, controlarse y supervisarse.
  5. Involucre al cliente

Véase también

Referencias

  1. 1 2 Petersen, Kai; Wohlin, Claes; Baca, Dejan (2009). "El modelo en cascada en el desarrollo a gran escala" . En Bomarius, Frank; Oivo, Markku; Jaring, Päivi; Abrahamsson, Pekka (eds.). Mejora de procesos de software centrada en el producto . Notas de clase en procesamiento de información empresarial. Vol.  32. Berlín, Heidelberg: Springer . págs. 386–400 . Bibcode : 2009pfsp.book..386P . doi : 10.1007/978-3-642-02152-7_29 . ISBN  978-3-642-02152-7.
  2. Tom Gilb (1985). "Entrega evolutiva frente al "modelo de cascada""". ACM SIGSOFT Software Engineering Notes . 10 (3): 49– 61. doi : 10.1145/1012483.1012490 .Icono de acceso abierto
  3. Linda Sherrell (2013). «Modelo de cascada». En ALC Runehov; L. Oviedo (eds.). Enciclopedia de ciencias y religiones . Dordrecht , Países Bajos: Springer . pp. 2343–2344 . doi : 10.1007/978-1-4020-8265-8_200285 . ISBN  978-1-4020-8264-1.
  4. Andreas P. Schmidt; Christine Kunzmann (16 de septiembre de 2014). Diseño para la maduración del conocimiento: del software basado en el conocimiento al apoyo a la facilitación del desarrollo del conocimiento . i-KNOW '14: Actas de la 14.ª Conferencia Internacional sobre Tecnologías del Conocimiento y Negocios Basados ​​en Datos. ACM . págs. 1–7 . doi : 10.1145/2637748.2638421 . 
  5. Estados Unidos, Panel Asesor de Computación Matemática de la Armada (29 de junio de 1956), Simposio sobre métodos de programación avanzados para computadoras digitales , [Washington, DC]: Oficina de Investigación Naval, Departamento de la Armada, OCLC 10794738 
  6. Benington, Herbert D. (1 de octubre de 1983). "Producción de grandes programas informáticos" (PDF) . IEEE Annals of the History of Computing . 5 (4). Departamento de Actividades Educativas del IEEE: 350–361 . doi : 10.1109/MAHC.1983.10102 . S2CID 8632276. Archivado del original (PDF) el 18 de julio de 2011. Recuperado el 21 de marzo de 2011 . 
  7. Larman, Craig; Basili, Victor (junio de 2003). "Desarrollo iterativo e incremental: una breve historia" (PDF) . Computer . 36 (6): 47– 56. doi : 10.1109/MC.2003.1204375 .
  8. 1 2 3 Royce, Winston (1970), "Gestión del desarrollo de grandes sistemas de software" , Actas de IEEE WESCON , 26 ( agosto ): 1–9
  9. "Cascada" . Universidad de Bremen - Matemáticas e Informática . Archivado del original el 19 de enero de 2022. Consultado el 15 de abril de 2021 .
  10. Abbas, Noura; Gravell, Andrew M.; Wills, Gary B. (2008). "Raíces históricas de los métodos ágiles: ¿De dónde surgió el "pensamiento ágil"?" (PDF) . En Abrahamsson, Pekka; Baskerville, Richard; Conboy, Kieran; Fitzgerald, Brian; Morgan, Lorraine; Wang, Xiaofeng (eds.). Procesos ágiles en ingeniería de software y programación extrema . Notas de clase en procesamiento de información empresarial. Vol. 9. Berlín, Heidelberg: Springer . págs. 94–103 . doi : 10.1007/978-3-540-68255-4_10 . ISBN   978-3-540-68255-4.
  11. Conrad Weisert, Metodología en cascada: ¡no existe tal cosa!
  12. Lineberger, Rob (25 de abril de 2024). Inheriting Agile: The IT Practitioner's Guide to Managing Software Development in a Post-Agile World . Durham, NC: Sandprint Press. pág. 36. ISBN  9798989149605.
  13. Bell, Thomas E., y TA Thayer. Requisitos de software: ¿Son realmente un problema? Actas de la 2.ª conferencia internacional sobre ingeniería de software. IEEE Computer Society Press, 1976.
  14. 1 2 DOD-STD-2167 - Norma militar : Desarrollo de software para sistemas de defensa" . Departamento de Defensa, Estados Unidos de América. 4 de junio de 1985. pág. 11.  
  15. "Desarrollo de software para sistemas de defensa estándar militar" (PDF) .
  16. Departamento de Justicia de EE. UU. (2003). GESTIÓN DE RECURSOS DE INFORMACIÓN Capítulo 1. Introducción.
  17. Everatt, GD; McLeod, R Jr (2007). «Capítulo 2: El ciclo de vida del desarrollo de software» . Pruebas de software: Pruebas a lo largo de todo el ciclo de vida del desarrollo de software . John Wiley & Sons. págs. 29–58 . ISBN  9780470146347.
  18. Kay, Russell (14 de mayo de 2002). "QuickStudy: Ciclo de vida del desarrollo de sistemas" . ComputerWorld .
  19. Taylor, GD (2008). Introducción a la ingeniería logística . CRC Press. pp. 12.6 – 12.18 . ISBN  9781420088571.
  20. "Capítulo 5". Control y auditoría de sistemas de información (PDF) . Instituto de Contadores Públicos de la India. Agosto de 2013. pág. 5.28. 
  21. Shah, Kazim. "La fase de mantenimiento del ciclo de vida del desarrollo de software" . primetechnologiesglobal . Kazim Shah . Consultado el 12 de mayo de 2024 .
  22. Radack, S. (n.d.). "The system development life cycle (SDLC)"(PDF). National Institute of Standards and Technology.
  23. 12McConnell, Steve (1996). Rapid Development: Taming Wild Software Schedules. Microsoft Press. ISBN 1-55615-900-5.
  24. "Waterfall Software Development Model". 5 February 2014. Retrieved 11 August 2014.
  25. Arcisphere technologies (2012). "Tutorial: The Software Development Life Cycle (SDLC)"(PDF). Retrieved 2012-11-13.
  26. Hughey, Douglas (2009). "Comparing Traditional Systems Analysis and Design with Agile Methodologies". University of Missouri – St. Louis. Retrieved 11 August 2014.
  27. Parnas, David L.; Clements, Paul C. (1986). "A rational design process: How and why to fake it"(PDF). IEEE Transactions on Software Engineering (2): 251–257. doi:10.1109/TSE.1986.6312940. S2CID 5838439. Retrieved 2011-03-21.
  28. McConnell, Steve (2004). Code Complete, 2nd edition. Microsoft Press. ISBN 1-55615-484-4.
  29. Ensmenger, Nathan (2010). The Computer Boys Take Over. MIT Press. p. 42. ISBN 978-0-262-05093-7.
  30. Larman, Craig; Basili, Victir (2003). "Iterative and Incremental Development: A Brief History". IEEE Computer. 36 (6) (June ed.): 47–56. doi:10.1109/MC.2003.1204375. S2CID 9240477.
  31. "Methodology:design methods". Archived from the original on 2016-03-03. Retrieved 2018-05-16.
  32. Saravanos, Antonios (2026-03-20). "A Brief History of the Waterfall Model: Past, Present, and Future". Proceedings of the 2025 18th International Conference on Computer Science and Information Technology. ICCSIT '25. New York, NY, USA: Association for Computing Machinery: 138–143. doi:10.1145/3783862.3783879. ISBN 979-8-4007-1858-8.
  • Understanding the pros and cons of the Waterfall Model of software development
  • Project lifecycle models: how they differ and when to use them
  • Going Over the Waterfall with the RUP by Philippe Kruchten
  • CSC and IBM Rational join to deliver C-RUP and support rapid business change
  • c2:WaterFall
Retrieved from "https://en.wikipedia.org/w/index.php?title=Waterfall_model&oldid=1360683447"