Programsko inženjerstvo (izradba programske opreme[1]), primjena je sustavnog, discipliniranog i mjerljivog pristupa razvoju, uporabi i održavanju programske opreme.[2] Naziv programsko inženjerstvo (engl. software engineering) popularizirao je tijekom NATO-ove konferencije o programskom inženjerstvu 1968. (održane u Garmischu, Njemačka) njen predsjednik F.L. Bauer, i od tad je u širokoj uporabi. Disciplina programskog inženjerstva obuhvaća znanje, alate i metode za definiranje zahtjeva programske podrške, i obavljanja zadataka dizajna programske podrške, konstrukcije programske podrške, testiranja programske podrške i održavanja programske podrške.[3] Programsko inženjerstvo također vuče znanje iz polja kao što su računalno inženjerstvo, računarstvo, menadžment, matematika, upravljanje projektom, upravljanje kvalitetom, ergonomija programske podrške i sustavsko inženjerstvo.[3] Disciplina koja je dijelom programskog inženjerstva jest inženjerstvo pouzdanosti.[4]
Od 2004., Ured za statistiku rada SAD-a nabraja 760 840 programskih inženjera zaposlenih u SAD-u - za usporedu, navedimo da postoji 1.4 milijuna zaposlenih u svim ostalim inženjerskim disciplinama zajedno.[5] Naziv programski inženjer (engl. software engineer) u korporativnom se svijetu koristi vrlo liberalno. Tek nekolicina prakticirajućih programskih inženjera zaista posjeduje inženjerske titule akreditiranih sveučilišta. Procjenjuje se da postoji oko 1.5 milijuna prakticirajućih programskih inženjera u EU, Aziji i drugdje[nedostaje izvor]. Pioniri programskog inženjerstva su, između ostalih, Barry Boehm, Fred Brooks, C. A. R. Hoare, i David Parnas.