Evolución de la Ingeniería del Software

  • Period: to

    Décadas de los 40 y 50

    En esa epoca el costo del hardware era significativamente mayor que el del software, lo que hacía que el software tuviera una importancia relativa menor. En ese momento, se creía que el software podía desarrollarse de manera similar al hardware, y los ingenieros que trabajaban en software solían ser los mismos que trabajaban en hardware.
  • Década de los 60

    Se reconoció que el software era notablemente diferente al hardware y requería un enfoque distinto. Surgieron problemas como la complejidad del código ("códigos espagueti") y la dependencia de "héroes" que trabajaban intensamente para resolver problemas de software de última hora.
  • "Crisis del Software"

    fue discutida en eventos como el NASA/IEEE Software Engineering Workshop de 1966 y conferencias de la OTAN en 1968 y 1969, donde se introdujeron conceptos como "reutilización" y "arquitectura de software".
  • Go To Statement Considered Harmful

    En 1968, Edsger Dijkstra promovió la programación estructurada con su artículo "Go To Statement Considered Harmful", y se mencionó por primera vez la idea de una "factoría o fábrica de software" en un congreso IFIP. A pesar de estos avances, la formación de profesionales seguía siendo informal y se centraba más en sistemas y programación que en la verdadera Ingeniería del Software.
  • Década de los 70

    Se introdujeron conceptos clave como la descomposición modular y el ocultamiento de información (information hiding) propuestos por Parnas, el modelo E/R de Chen, y el modelo de ciclo de vida en cascada de Royce. La formación de profesionales en Ingeniería del Software se enfocó en metodologías estructuradas como Warnier, Jackson, Myers, Yourdon y Constantine, Gane y Sarson, Demarco, SSADM, MERISE, entre otros y representó un avance significativo en el análisis y diseño de software.
  • Década de los 80

    Leo Osterweil dio una charla llamativa en la ICSE que marcó el comienzo de una nueva aproximación a los procesos de software. Le encargó a la Universidad Carnegie Mellon desarrollar un modelo de madurez de capacidad de software para mejorar la calidad de sistemas y proveedores, se automatizó parte del ciclo de vida del software con la primera generación de herramientas CASE y surgieron lenguajes de programación orientados a objetos como C++, Objective-C y Eiffel en la década de los ochenta.
  • Década de los 90

    Se desarrollaron modelos de mejora de procesos de software y estándares de calidad, como ISO 9126 y ISO 12207. La orientación a objetos se consolidó con la aparición de UML y el Proceso Unificado. Los problemas de los 2000 y la transición al euro impulsaron la externalización del mantenimiento de software. Esto llevó a la creación de unidades especializadas en outsourcing, lo que requirió habilidades específicas de los Ingenieros de Software.
  • Década de los 2000

    Desde la adopción del enfoque ágil hasta la difusión de prácticas como el Desarrollo Software Dirigido por Modelos y el Desarrollo Global de Software, los ingenieros de software han tenido que adaptarse a un entorno en constante evolución. La experimentación y la rigurosidad también se han convertido en parte integral de la disciplina, lo que ha llevado a una toma de decisiones más informada y objetiva en el desarrollo de software.
  • • Década de los 2010

    Esta década ha estado marcada por una mayor integración entre la Ingeniería del Software y la Ingeniería de Sistemas, un enfoque interdisciplinario en la Ingeniería de Servicios, la adaptación de los métodos de desarrollo de software a entornos abiertos, la gestión de SISOS, la adopción de la Ingeniería del Software Continua y DevOps, y la necesidad de un cambio cultural y la adquisición de nuevas habilidades por parte de los desarrolladores.