La ingeniería de software es la aplicación de principios utilizados en el campo de la ingeniería, que generalmente se ocupa de sistemas físicos, al diseño, desarrollo, prueba, implementación y gestión de sistemas de software.
El campo de la ingeniería de software aplica el enfoque disciplinado y estructurado a la programación que se utiliza en la ingeniería para el desarrollo de software con el objetivo declarado de mejorar la calidad, el tiempo y la eficiencia presupuestaria, junto con la garantía de las pruebas estructuradas y la certificación de ingenieros.
La ingeniería de software se utiliza normalmente para sistemas de software grandes e intrincados en lugar de aplicaciones o programas individuales. El desarrollo, sin embargo, es simplemente una fase del proceso. Si bien un ingeniero de software suele ser responsable del diseño de sistemas, los programadores suelen ser responsables de codificar su implementación.
La ingeniería de software involucra una serie de campos que cubren el proceso de ingeniería y certificación de software, que incluyen: recopilación de requisitos, diseño de software, construcción de software, mantenimiento de software, gestión de configuración de software, gestión de ingeniería de software, gestión y creación de procesos de desarrollo de software, modelos y métodos de ingeniería de software , calidad de software, prácticas profesionales de ingeniería de software, así como estudios básicos de computación y matemáticas e ingeniería.
Aunque el uso original del término es incierto, la primera conferencia de ingeniería de software fue realizada y patrocinada por la OTAN en 1968. La conferencia abordó la inconsistencia y falta de confiabilidad en el desarrollo de software, así como la necesidad de una mejor calidad y confiabilidad. La conferencia reunió a expertos internacionales que acordaron que el enfoque sistemático de la ingeniería del mundo físico debe aplicarse al desarrollo de software, ya que ya se desarrolló con esos objetivos en mente.
El Instituto de Ingeniería de Software (SEI) es una organización que trabaja con ingenieros, empresas, instituciones educativas y gubernamentales de EE. UU. Para mejorar la eficiencia del trabajo de los proyectos y procesos de ingeniería de software y alberga al Equipo de Respuesta a Emergencias Informáticas (CERT).