La ingeniería de software es una disciplina de ingeniería que se interesa por todos los aspectos de la producción de software, desde la especificación del sistema hasta el mantenimiento del sistema después de que se pone en operación (Sommerville, 2011). Una disciplina hace que las cosas funcionen, con la aplicación de teorías, metodologías, métodos y herramientas, de manera adecuada. La producción de software incluye procesos técnicos de desarrollo de software, actividades de administración de proyectos software, desarrollo de herramientas, métodos y teorías para apoyar la producción de software.
El término de Ingeniería de Software fue introducido a finales de los 60 a raíz de la crisis de software (Figura 2.1). Esta crisis fue el resultado de la introducción de la tercera generación del hardware, que se caracterizó por: imprecisión en la planificación de proyectos software, baja calidad de software y difícil mantenimiento de software no estructurado.
El Instituto de Ingeniería Eléctrica y Electrónica define Ingeniería del Software como un enfoque sistemático, disciplinario y cuantificable para el desarrollo, operación y mantenimiento del software de calidad.
El enfoque sistemático que se usa en la ingeniería de software se conoce como el proceso de software, que es una secuencia de actividades que conducen a la elaboración de un producto software (Sommerville, 2011, pg.9), son cuatro las actividades fundamentales en el proceso de software:
a) Especificación del software, donde clientes e ingenieros definen el software que se producirá y las restricciones en su operación.
b) Desarrollo del software, donde se diseña y programa el software “codificación”.
c) Validación del software, donde se verifica el software para asegurar que sea lo que el cliente requiere.
d) Evolución del software, donde se modifica el software para reflejar los requerimientos cambiantes del cliente y del mercado.