-
Década de 1950
Surgimiento del Software: En esta época, el software era diseñado junto con el hardware y se limitaba a funciones muy específicas, como cálculos numéricos y operaciones matemáticas en computadoras de gran escala.
Lenguajes de programación tempranos: Surgen los primeros lenguajes como Assembly y Fortran (1957). -
Década de 1960
Primeros conceptos de Ingeniería de Software: Con el aumento de la complejidad del software, se empieza a ver la necesidad de tratarlo como una disciplina independiente.
Lenguajes de alto nivel: Lenguajes como Cobol y ALGOL emergen, facilitando el desarrollo de software más complejo.
Modelo en Cascada (1960s): Aparece como el primer enfoque formal para el desarrollo de software. -
1970
Programación Estructurada (1960s-1970s): Esta técnica se populariza con la obra de Edsger Dijkstra y otros, promoviendo un enfoque más sistemático y disciplinado para el desarrollo de software. Se introducen conceptos como secuencias, condicionales, y bucles controlados, reduciendo la dependencia del "GoTo", lo que facilita la legibilidad y el mantenimiento del código. -
Década de 1970
Modelo en Cascada (formalizado en 1970): Winston Royce lo propone oficialmente como el primer modelo de desarrollo de software lineal.
Desarrollo de Software Modular: Se promueve la idea de dividir grandes proyectos en módulos más pequeños y manejables.
Lenguaje C (1972): Este lenguaje se vuelve popular, permitiendo un desarrollo más eficiente y portátil. -
Década de 1980
Modelo Espiral (1986): Barry Boehm propone el modelo espiral, centrado en la gestión de riesgos, combinando un enfoque iterativo con el ciclo de vida tradicional.
Surgimiento de las metodologías RAD (Rapid Application Development): El enfoque RAD surge para acelerar el desarrollo, mediante prototipos y el uso de herramientas CASE (Computer-Aided Software Engineering).
Introducción de IDEs: Comienzan a aparecer los primeros entornos de desarrollo integrados, que facilitan el desarrollo. -
Década de 1990
Modelo Incremental y Evolutivo: Comienzan a popularizarse los enfoques que permiten iteraciones y entregas incrementales de software.
Metodologías Ágiles (1990s): Comienzan a aparecer prácticas que luego formarán las bases de las metodologías ágiles.
Lenguajes orientados a objetos: Java y C++ se vuelven lenguajes dominantes, basados en la programación orientada a objetos.
Modelo V: Se formaliza como una extensión del modelo en cascada, relacionando las fases de prueba y desarrollo. -
Año 2000
Manifiesto Ágil (2001): Publicado por un grupo de desarrolladores, se centra en la flexibilidad, la entrega rápida y la colaboración con el cliente. Esto da origen a metodologías ágiles populares como Scrum y XP (Extreme Programming).
Adopción de Scrum y Kanban: Estos marcos se adoptan rápidamente, especialmente en entornos de desarrollo de software dinámico.
Crecimiento de DevOps: Se empieza a hablar de la integración entre desarrollo y operaciones. -
Década de 2010
Expansión de DevOps (2010s): Se establece formalmente como un enfoque clave para mejorar la colaboración entre desarrollo y operaciones, con la integración continua (CI) y entrega continua (CD).
Desarrollo en la nube: Herramientas como AWS, Azure, y Google Cloud permiten el despliegue más rápido de software.
Prácticas ágiles maduras: Las metodologías ágiles se consolidan como el estándar en la industria de software. -
2010
Low-Code/No-Code (2010s): Plataformas que permiten a los usuarios crear aplicaciones con mínima codificación o sin necesidad de programar, usando interfaces gráficas y componentes predefinidos. Esto democratiza el desarrollo de software, permitiendo a usuarios sin formación técnica construir aplicaciones básicas. Herramientas como OutSystems, Mendix, y Microsoft PowerApps son ejemplos de este enfoque. -
2020-Presente
Desarrollo de software basado en IA: Se empieza a explorar el uso de inteligencia artificial y aprendizaje automático para automatizar tareas en el desarrollo de software.
DevSecOps: Evolución de DevOps para incluir la seguridad en todo el ciclo de vida de desarrollo.
Microservicios y contenedores: Arquitecturas de microservicios y tecnologías de contenedores como Docker y Kubernetes se convierten en estándar para construir sistemas escalables y modulares.