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.