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.