-
Se acuña el término "crisis del software" en la Conferencia de la OTAN sobre Ingeniería de Software, debido a la creciente complejidad del software y los problemas en su desarrollo: sobrecostos, incumplimientos en los plazos y fallos en la calidad. Se plantea la necesidad de un enfoque más estructurado para su desarrollo.
-
Winston Royce propone el modelo en cascada, considerado el primer enfoque sistemático para el desarrollo de software. Este modelo introduce fases secuenciales bien definidas: requisitos, diseño, implementación, pruebas, despliegue y mantenimiento, aunque más tarde se evidenciarán sus limitaciones en proyectos de gran escala.
-
Frederick P. Brooks publica "The Mythical Man-Month", donde analiza problemas de gestión en proyectos de software y plantea la famosa ley de Brooks: "añadir más programadores a un proyecto retrasado solo lo retrasará más".
-
Surgen metodologías estructuradas como el Modelo en V, que refina el modelo en cascada introduciendo actividades de verificación y validación en cada fase. Además, se populariza la Programación Estructurada gracias a los trabajos de Edsger Dijkstra y el lenguaje Pascal.
-
Empieza a consolidarse el desarrollo de software basado en componentes reutilizables, con lenguajes como Ada y C++ facilitando la modularidad y la reutilización del código.
-
La popularización de C++ y Java impulsa la Programación Orientada a Objetos (POO), lo que permite mejorar la escalabilidad y mantenibilidad del software. En 1997, se introduce UML (Unified Modeling Language) como estándar para la representación visual del diseño de software.
-
Se publica el Manifiesto Ágil, un documento que establece 12 principios fundamentales para el desarrollo de software flexible y adaptativo. Metodologías como Scrum, Kanban y Extreme Programming (XP) comienzan a ser ampliamente adoptadas en la industria.
-
Se populariza la filosofía DevOps, que busca integrar el desarrollo y las operaciones mediante la automatización de pruebas, despliegue continuo y gestión de infraestructura como código. Herramientas como Jenkins y Docker surgen para facilitar estos procesos.
-
Con el crecimiento de plataformas como Amazon Web Services (AWS), Google Cloud y Microsoft Azure, se masifica el uso de la computación en la nube. Modelos de negocio como SaaS (Software as a Service) transforman la forma en que se desarrollan y entregan aplicaciones.
-
Las técnicas de aprendizaje automático y procesamiento del lenguaje natural comienzan a aplicarse en el desarrollo de software. Herramientas como GitHub Copilot, ChatGPT y AutoML automatizan tareas como la generación de código, la detección de errores y la optimización de algoritmos.
-
A medida que avanza la computación cuántica, surgen los primeros lenguajes de programación cuántica como Qiskit y Cirq, planteando nuevos paradigmas en la Ingeniería de Software. Por otro lado, tecnologías como Blockchain redefinen la seguridad y descentralización en aplicaciones financieras y de datos.
-
Con el avance de modelos de inteligencia artificial generativa, herramientas como ChatGPT, Gemini y Code Llama permiten automatizar aún más el desarrollo de software, generando código completo, pruebas unitarias y documentaciones técnicas con alta precisión.