L'ingegneria del software è l'applicazione dei principi utilizzati nel campo dell'ingegneria, che solitamente si occupa di sistemi fisici, alla progettazione, sviluppo, test, implementazione e gestione di sistemi software.
Il campo dell'ingegneria del software applica l'approccio disciplinato e strutturato alla programmazione utilizzato nell'ingegneria allo sviluppo del software con l'obiettivo dichiarato di migliorare la qualità, il tempo e l'efficienza del budget, insieme alla garanzia di test strutturati e certificazione ingegnere.
L'ingegneria del software viene generalmente utilizzata per sistemi software complessi e di grandi dimensioni piuttosto che per singole applicazioni o programmi. Lo sviluppo, tuttavia, è solo una fase del processo. Sebbene un ingegnere del software sia tipicamente responsabile della progettazione dei sistemi, i programmatori sono spesso responsabili della codifica della sua implementazione.
L'ingegneria del software coinvolge una serie di campi che coprono il processo di ingegneria del software e certificazione, tra cui: raccolta dei requisiti, progettazione del software, costruzione del software, manutenzione del software, gestione della configurazione del software, gestione dell'ingegneria del software, gestione e creazione del processo di sviluppo del software, modelli e metodi di ingegneria del software , qualità del software, pratiche professionali di ingegneria del software, informatica di base e studio matematico e ingegneristico.
Sebbene l'uso originale del termine sia incerto, la prima conferenza sull'ingegneria del software è stata tenuta e sponsorizzata dalla NATO nel 1968. La conferenza ha affrontato l'incoerenza e l'inaffidabilità nello sviluppo del software, nonché la necessità di una migliore qualità e affidabilità. La conferenza ha riunito esperti internazionali che hanno concordato che l'approccio sistematico dell'ingegneria del mondo fisico dovrebbe essere applicato allo sviluppo del software, poiché è già stato sviluppato con questi obiettivi in mente.
Il Software Engineering Institute (SEI) è un'organizzazione che lavora con ingegneri, imprese, istruzione e istituzioni governative statunitensi per migliorare l'efficienza del lavoro dei progetti e dei processi di ingegneria del software e ospita il Computer Emergency Response Team (CERT).