La Ingeniería de Software tiene una historia joven pero de cambios constantes. Según Boehm:

1950s

Surge el desarrollo de software como una extensión del hardware y la maquinaria. Se aprende que el software no se trabaja de la misma manera que el hardware.

  • Engineer software like you engineer hardware.
  • Measure twice, cut once.
  • El hardware era mucho más caro que el personal.

1960s

  • Code and fix approach.
  • Mantener software no es lo mismo que mantener hardware.
  • Hacker culture of cowboy programmers.
  • Se declara en 1968 la Crisis del Software.

1970s

Aparecen las metodologías tradicionales de la Teoría Clásica para el desarrollo de software.

  • Structured programming. Coupling and cohesion.
  • The Royce Waterfall Model.
  • Focus on documentation. Se aprende que estos métodos tienen mucho overhead.

1980s

Se comprende la necesidad de escalar los sistemas eficientemente.

  • Énfasis en la productividad y la escalabilidad.
  • No silver bullets.
  • Surge la orientación a objetos, visual programming.
  • Reutilización de componentes gracias al software comercial.

1990s

Se valora cada vez más poder hacer cambios rápidos. Empiezan a aparecer métodos de la Agilidad.

  • Design patterns, UML, WWW, OSS, RUP.
  • Énfasis en Time-to-Market y en controlar la concurrencia del desarrollo.

2000s

  • El entorno volátil generado por la globalización requiere cambios más veloces.
  • Se declara el manifiesto ágil en 2001.
  • Énfasis en métodos ágiles de desarrollo por su adaptabilidad y para aportar valor al negocio.

Futuro

  • “Software Intensive Systems of Systems”
  • Creciente complejidad de los sistemas
  • Herramientas para desarrollar software mucho más poderosas.