Ingineria software (din engleză: software engineering) este un domeniu ce implică proiectarea, crearea și întreținerea de software aplicând tehnologii și practici din informatică (știința calculatoarelor), managementul proiectelor, inginerie, proiectarea interfețelor și a altor domenii.
Un program de calculator este format dintr-un șir de instrucțiuni alese dintr-un set predefinit de instrucțiuni (numit limbaj de programare) prin care se comunică unui calculator, în mod detaliat, care anume operații și în ce ordine trebuie să efectueze. Când sunt scrise de oameni, de obicei de către programatori specializați, șirul de instrucțiuni se numește „cod sursă”.
De obicei persoana care scrie programul folosește fie un editor text (pentru un program simplu), fie un mediu integrat de dezvoltare.
Multe limbaje de programare cer ca, după creare, sursa să fie transformată într-un alt format, prelucrabil direct de către calculator, numit de obicei cod obiect, cod mașină sau și cod binar. Acest proces de transformare al codului înțeles de oameni într-unul „înțeles” de calculator poate fi de tip compilare sau de tip interpretare.