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 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 ]
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:
- El diseño completo del programa debe realizarse antes de que comience el análisis y la codificación.
- La documentación debe estar actualizada y completa.
- Haz el trabajo dos veces si es posible.
- Las pruebas deben planificarse, controlarse y supervisarse.
- Involucre al cliente
Véase también
- Lista de filosofías de desarrollo de software
- Desarrollo ágil de software
- Gran diseño en la parte delantera
- Modelo de caos
- DevOps
- Desarrollo iterativo e incremental
- Ciclo de vida de seguimiento del mantenimiento
- Análisis y diseño orientado a objetos
- Desarrollo rápido de aplicaciones
- proceso de desarrollo de software
- Modelo espiral
- Método de análisis y diseño de sistemas estructurados (SSADM)
- Metodología de desarrollo de sistemas
- Ingeniería tradicional
- Modelo V
- Wagile
Referencias
- 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.
- ↑ Tom Gilb (1985). "Entrega evolutiva frente al "modelo de cascada""". ACM SIGSOFT Software Engineering Notes . 10 (3): 49– 61. doi : 10.1145/1012483.1012490 .

- ↑ 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.
- ↑ 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 .
- ↑ 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
- ↑ 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 . Bibcode : 1983IAHC....5d.350B . 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 .
- ↑ Larman, Craig; Basili, Victor (junio de 2003). "Desarrollo iterativo e incremental: una breve historia" (PDF) . Computer . 36 (6): 47– 56. Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 .
- 1 2 3 Royce, Winston (1970), "Gestión del desarrollo de grandes sistemas de software" , Actas de IEEE WESCON , 26 ( agosto ): 1–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 .
- ↑ 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.
- ↑ Conrad Weisert, Metodología en cascada: ¡no existe tal cosa!
- ↑ 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.
- ↑ 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.
- 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.
- ↑ "Desarrollo de software para sistemas de defensa estándar militar" (PDF) .
- ↑ Departamento de Justicia de EE. UU. (2003). GESTIÓN DE RECURSOS DE INFORMACIÓN Capítulo 1. Introducción.
- ↑ 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.
- ↑ Kay, Russell (14 de mayo de 2002). "QuickStudy: Ciclo de vida del desarrollo de sistemas" . ComputerWorld .
- ↑ Taylor, GD (2008). Introducción a la ingeniería logística . CRC Press. pp. 12.6 – 12.18 . ISBN 9781420088571.
- ↑ "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.
- ↑ Shah, Kazim. "La fase de mantenimiento del ciclo de vida del desarrollo de software" . primetechnologiesglobal . Kazim Shah . Consultado el 12 de mayo de 2024 .
- ↑ Radack, S. (s.f.). "El ciclo de vida del desarrollo de sistemas (SDLC)" (PDF) . Instituto Nacional de Estándares y Tecnología.
- 1 2 McConnell, Steve (1996). Desarrollo rápido: Cómo controlar los cronogramas de software descontrolados . Microsoft Press. ISBN 1-55615-900-5.
- ↑ "Modelo de desarrollo de software en cascada" . Oxagile . 5 de febrero de 2014. Consultado el 11 de agosto de 2014 .
- ↑ Arcisphere Technologies (2012). "Tutorial: El ciclo de vida del desarrollo de software (SDLC)" (PDF) . Consultado el 13 de noviembre de 2012 .
- ↑ Hughey, Douglas (2009). "Comparación del análisis y diseño de sistemas tradicionales con metodologías ágiles" . Universidad de Missouri – St. Louis . Recuperado el 11 de agosto de 2014 .
- ↑ Parnas, David L.; Clements, Paul C. (1986). "Un proceso de diseño racional: cómo y por qué simularlo" (PDF) . IEEE Transactions on Software Engineering . 12 (2): 251– 257. Bibcode : 1986ITSEn..12..251P . doi : 10.1109/TSE.1986.6312940 . S2CID 5838439. Recuperado el 21 de marzo de 2011 .
- ↑ McConnell, Steve (2004). Code Complete, 2.ª edición . Microsoft Press. ISBN 1-55615-484-4.
- ↑ Ensmenger, Nathan (2010). The Computer Boys Take Over . MIT Press. pág . 42. ISBN 978-0-262-05093-7.
- ↑ Larman, Craig; Basili, Victir (2003). "Desarrollo iterativo e incremental: una breve historia" . IEEE Computer . 36 (6) ( edición de junio): 47–56 . Bibcode : 2003Compr..36f..47L . doi : 10.1109/MC.2003.1204375 . S2CID 9240477 .
- ↑ "Metodología: métodos de diseño" . Archivado del original el 3 de marzo de 2016. Consultado el 16 de mayo de 2018 .
- ↑ Saravanos, Antonios (2026-03-20). «Una breve historia del modelo en cascada: pasado, presente y futuro». Actas de la 18.ª Conferencia Internacional de Ciencias de la Computación y Tecnologías de la Información de 2025. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 138–143 . doi : 10.1145/3783862.3783879 . ISBN 979-8-4007-1858-8.
Enlaces externos
- Comprender las ventajas y desventajas del modelo de cascada para el desarrollo de software.
- Modelos del ciclo de vida del proyecto: en qué se diferencian y cuándo utilizarlos.
- Cruzando la cascada con el RUP por Philippe Kruchten
- CSC e IBM Rational se unen para ofrecer C-RUP y respaldar el rápido cambio empresarial.
- c2:Cascada
- Filosofías de desarrollo de software
- Gestión de proyectos
- Diseño
- Metáforas que hacen referencia al agua