Инжењеринг софтвера је поддисциплина рачунарства, настала као потреба за проналажење рјешења све више сложенијих, обимнијих и структурно компликованијих инжењерских задатака, приликом дизајна, имплементације и одржавања софтвера (рачунарских програма), која често захтијевају тимове програмера различитих профила и специјализације, као и вријеме које се све чешће мјери годинама.[1][2][3] Развој сложених софтверских рјешења, као што је на примјер, оперативни систем, се третира као инжењерски подухват са сличним потешкоћама као што је изградња неког архитектонског објекта, али и са сличним пажљивим планирањем израде, али и планирањем одржавања крајњег софтверског производа.
Процес инжењеринга софтвера се обично састоји из више фаза, дефинисаних на различите начине, али у основи уопштено сљедећих:
идентификовање и анализа потреба и захтјева корисника,
анализа, дизајн и развој спецификација система (хардвера и софтвера),
дизајн софтвера (који се обично састоји од више међусобно повезаних задатака, као што је на примјер, дизајн одговарајућих алгоритама, корисничког интерфејса, итд.),
имплементација (писање кода и неопходне документације за софтвер),
тестирање софтверског рјешења у реалном окружење, и на крају
Почевши од 1960-их, софтверски инжењеринг се сматрао сопственим типом инжењеринга. Поред тога, развој софтверског инжењеринга је виђен као мукотрпна делатност. Било је тешко држати корак са хардвером што је стварало многе проблеме софтверским инжењерима. Проблеми су укључивали софтвер чија израда је често прекорачивала буџет и рокове, тај софтвер је захтевао опсежно отклањање грешака и одржавање и био је неуспешан у задовољавању потреба потрошача, или никада није био завршен. Године 1968, NATO је одржао прву конференцију о софтверском инжењерству на којој су обрађена питања везана за софтвер: успостављене су смернице и најбоље праксе за развој софтвера.[4]
Порекло појма „софтверски инжењеринг“ приписује се различитим изворима. Термин „софтверски инжењеринг“ појавио се на листи услуга које су компаније нудиле у издању часописа „Компјутери и аутомамација“ у јуну 1965. године,[5] а формалније је коришћен у издању часописа Communications of the ACM из августа 1966. (том 9, број 8) „писмо упућено ACM чланству” ACM председника Ентонија А. Аутингера,[6][7] такође се повезује са насловом NATO конференције 1968. професора Фридриха Л. Бауера, прве конференције о софтверском инжењерству.[8] Независно, Маргарет Хамилтон је назвала дисциплину „софтверски инжењеринг“ током Аполо мисија да би се оном што су радили дао легитимитет.[9] У то време се сматрало да постоји „криза софтвера“.[10][11][12] Четрдесета Међународна конференција о софтверском инжењерству (ICSE 2018) слави 50 година „софтверског инжењеринга“ са главним излагањима на пленарним сесијама Фредерика Брукса[13] и Маргарет Хамилтон.[13]
Године 1984. основан је Институт за софтверско инжењерство (SEI) као федерално финансиран центар за истраживање и развој са седиштем у кампусу Универзитета Карнеги Мелон у Питсбургу, Пенсилванија, Сједињене Америчке Државе. Ватс Хамфри је основао SEI Софтверски процесни програм, чији је циљ разумевање и управљање процесом софтверског инжењеринга. Уведени нивои зрелости процеса постали би Интеграција модела зрелости за развој (CMMI-DEV), који је дефинисао према процени америчке владе способности тима за развој софтвера.
^Randell, Brian (10. 8. 2001). „The 1968/69 NATO Software Engineering Reports”. Brian Randell's University Homepage. The School of the Computer Sciences, Newcastle University. Приступљено 2008-10-11. „The idea for the first NATO Software Engineering Conference, and in particular that of adopting the then practically unknown term "software engineering" as its (deliberately provocative) title, I believe came originally from Professor Fritz Bauer.”CS1 одржавање: Формат датума (веза)
^ аб2018 International Conference on Software Engineering celebrating its 40th anniversary, and 50 years of Software engineering. „ICSE 2018 – Plenary Sessions – Fred Brooks”. Приступљено 9. 8. 2018.CS1 одржавање: Формат датума (веза)
Abran, Alain; Moore, James W.; Bourque, Pierre; Dupuis, Robert; Tripp, Leonard L. (2004). Guide to the Software Engineering Body of Knowledge. IEEE. ISBN978-0-7695-2330-9.
Oshana, Robert (2019-06-21). Software engineering for embedded systems : methods, practical techniques, and applications (Second изд.). Kidlington, Oxford, United Kingdom. ISBN978-0-12-809433-4.
About Face: The Essentials of User Interface Design by Alan Cooper, about user interface design. ISBN0-7645-2641-3