Is

Evolución de la Ingeniería de Software

  • Nacimiento del concepto de software

    Nacimiento del concepto de software
    John von Neumann escribe el primer programa almacenado en memoria en la computadora ENIAC. Este hito marca el inicio de la programación y el concepto de software como un elemento separado del hardware.
  • Primeros lenguajes de programación

    Primeros lenguajes de programación
    Se desarrollan los primeros lenguajes de programación como el ensamblador y el lenguaje máquina. El código era escrito de manera manual, sin herramientas avanzadas.
  • Creciente complejidad de los proyectos

    Creciente complejidad de los proyectos
    A medida que los sistemas de software se volvían más complejos, los proyectos comenzaban a retrasarse y excedían los presupuestos, lo que llevó a lo que se conoció como la "Crisis del Software".
  • Primera conferencia sobre Ingeniería de Software

    Primera conferencia sobre Ingeniería de Software
    En la Conferencia de la OTAN sobre Ingeniería de Software, se usa por primera vez el término "Ingeniería de Software". En esta conferencia se reconoció la necesidad de un enfoque más estructurado y disciplinado para el desarrollo de software.
  • Modelo de cascada

    Modelo de cascada
    Winston W. Royce propone el "modelo de cascada", un enfoque secuencial en el desarrollo de software, donde cada fase debe completarse antes de comenzar la siguiente. Este modelo fue ampliamente adoptado en la industria.
  • Desarrollo de lenguajes de alto nivel

    Desarrollo de lenguajes de alto nivel
    Lenguajes como C comienzan a ser utilizados, permitiendo una programación más flexible y accesible en comparación con el lenguaje ensamblador.
  • Aparición de Microsoft y el software comercial

    Aparición de Microsoft y el software comercial
    Con la creación de Microsoft y otras empresas, el software comercial comienza a ganar relevancia. Surge el concepto de "producto de software".
  • Programación orientada a objetos

    Programación orientada a objetos
    Con la aparición del lenguaje Smalltalk y el desarrollo de C++, la programación orientada a objetos (OOP) se populariza, promoviendo la reutilización de código y la modularidad.
  • Desarrollo de IDEs (Entornos de Desarrollo Integrado)

    Desarrollo de IDEs (Entornos de Desarrollo Integrado)
    Herramientas como Turbo Pascal y otros IDEs comienzan a facilitar el desarrollo de software mediante la integración de compiladores, editores y depuradores en un solo entorno.
  • Proceso Unificado

    Proceso Unificado
    Surge el Proceso Unificado, una metodología iterativa de desarrollo que enfatiza la importancia de la documentación y las fases de análisis, diseño, implementación y pruebas.
  • Auge de la web y software distribuido

    Auge de la web y software distribuido
    Con la expansión de Internet, se desarrollan nuevas arquitecturas para software distribuido (cliente-servidor) y el desarrollo web comienza a florecer.
  • Java y el software multiplataforma

    Java y el software multiplataforma
    Sun Microsystems lanza Java, un lenguaje de programación que permite desarrollar software que puede ejecutarse en cualquier plataforma. Esto marca el inicio del desarrollo multiplataforma y de aplicaciones web.
  • Manifiesto Ágil

    Manifiesto Ágil
    Surge el Manifiesto por el Desarrollo Ágil de Software, que propone un enfoque flexible e iterativo para el desarrollo de software. Metodologías como Scrum y XP (Extreme Programming) ganan popularidad.
  • SWEBOK (Software Engineering Body of Knowledge)

    SWEBOK (Software Engineering Body of Knowledge)
    El SWEBOK es un estándar que describe el cuerpo de conocimientos necesarios para el ejercicio profesional de la ingeniería de software, su propósito es proporcionar una guía para la formación, certificación y desarrollo profesional en ingeniería de software, además de servir como referencia en la industria y en programas académicos.
  • Modelo DevOps

    Modelo DevOps
    Se empieza a hablar del modelo DevOps, que fomenta la integración continua y la colaboración entre los equipos de desarrollo y operaciones, reduciendo el tiempo de entrega de software y mejorando la calidad.
  • Cloud Computing

    Cloud Computing
    La computación en la nube (Cloud Computing) se establece como un paradigma importante, permitiendo que el software se ejecute y escale en servidores remotos en lugar de depender del hardware local.
  • Microservicios

    Microservicios
    Las arquitecturas de microservicios ganan popularidad, permitiendo dividir grandes aplicaciones en componentes independientes, mejorando la escalabilidad y el mantenimiento del software.
  • Inteligencia Artificial y Machine Learning

    Inteligencia Artificial y Machine Learning
    La inteligencia artificial (IA) y el machine learning (ML) se integran cada vez más en el desarrollo de software, permitiendo aplicaciones más inteligentes y automatizadas.
  • Software low-code/no-code

    Software low-code/no-code
    Las plataformas de desarrollo de software low-code y no-code se popularizan, permitiendo que personas sin habilidades técnicas creen aplicaciones básicas a través de interfaces visuales.
  • Automatización y desarrollo autónomo

    Automatización y desarrollo autónomo
    Se anticipa que el uso de IA en el desarrollo de software siga evolucionando, permitiendo automatizar más tareas de desarrollo, pruebas y despliegue.