Evolución de la Ingeniería de Software

Ingeniería de Software: Disciplina que integra métodos, herramientas y procedimientos para el desarrollo de software. Este campo surgió con el objetivo de introducir una técnica disciplinada al desarrollo de software.


1968: Surge la crisis del software pues el proceso de desarrollo de software sobrepasa los costos y el tiempo estimados y tiene demasiadas fallas. Se acuña el nombre de Ingeniería de software.
1969 - 1971: Se establecen los primeros principios como resultado de la investigación en buenas prácticas de programación. Tales como: Diseño descendente (top-down), Refinamiento sucesivo, Modularidad, Surgen los lenguajes estructurados y la noción de desarrolladores de software dirigidos por un líder.
1972 - 1973: Surge la programación estructurada y el concepto de estilo de programación. Aparece el concepto de ciclo de vida en el desarrollo de software. Se proponen ayudas para la administración y de apoyo en el desarrollo.
1974 - 1975: Se inicia el manejo de la noción de confiabilidad y calidad del software. Se inician las pruebas sistemáticas, la noción de corrección formal, modelos de tolerancia a fallas y confiabilidad total. 
1976 - 1977: Se pone atención a las fases anteriores a la codificación como análisis de requerimientos, especificación y diseño. Surgen las técnicas como abstracción y descomposición modular. Se hacen esfuerzos para integrar y validar las fases sucesivas del desarrollo. 
1978 -1980: Incremento en el uso de herramientas automatizadas de desarrollo de software. Se llevan a cabo cursos de ingeniería de software. Los principios desarrollados en 69 a 71 se usan masivamente en la industria del software.1980 - 1985: Se inician las herramientas automatizadas para cada fase del ciclo de vida siguiendo la programación estructurada.
1986 - 1995: Aparece el paradigma orientado a objetos para el desarrollo de software grande. Promueve conceptos como la abstracción, la herencia, entre otros. Se inicia el uso masivo de técnicas automatizadas de desarrollo de software.
1995-2003: La evaluación de los procesos evita especificaciones incompletas o anómalas, la aplicación incorrecta de metodologías, etc. Para ello se utilizan distintos modelos de madurez de procesos que tienen como objetivo apoyar distintas estrategias de desarrollo y evaluación para así lograr una mejora continua en los productos. Cabe resaltar que no se debe aplicar alguno de estos modelos de madurez bajo el supuesto de mejorar en su calidad sin antes establecer y definir los procesos correspondientes. En particular, la calidad de un sistema de software está gobernada por la calidad del proceso utilizado para desarrollarlo y mantenerlo.