Šta je to softversko inženjerstvo?
Eksplozivni razvoj računarstva kreirao je nove discipline, a sa njima i nova radna mesta. Jedna od njih je i kontroverzna disciplina poznata pod nazivom softversko inženjerstvo. U ovom trenutku, veliki broj stručnjaka koji razvija softver sebe naziva softverskim inženjerima, a posao koji obavljaju nazivaju softversko inženjerstvo, iako nikada nisu studirali inženjerstvo u bilo kom obliku. Razlog za ovo je istorijski jer su oni potekli iz računarskih nauka, discipline koja se značajno razvijala u poslednjih 30 godina. Iako softversko inženjerstvo i računarske nauke imaju zajedničkih elemenata (posebno u oblasti matematike i programiranja), oni se razlikuju u pristupu ovim elementima. Dodatna zabuna nastaje kada se softversko inženjerstvo pogrešno poistovećuje sa računarskim inženjerstvom i softverskim procesima, uz još veću grešku nazivanjem softverskih inženjera „računarskim stručnjacima softverskog profila“.
Slično važi i za ostale discipline u računarstvu. U kratkim crtama, softversko inženjerstvo nije isto što i računarske nauke, kompjuterske nauke, informatika, računarska tehnika, računarstvo, računarsko inženjerstvo, softverske tehnologije, informacione tehnologije, informacioni sistemi ili programiranje. Softversko inženjerstvo se bavi razvojem efikasnog, pouzdanog i bezbednog softvera kao proizvoda namenjenog tržištu. Ali, za razliku od ostalih inženjerskih disciplina, taj proizvod nije opipiljiv. No, bez obzira na to, softversko inženjerstvo je čvrsto vezano za upravljanje procesima i kvalitetom, za kreativnost i inovacije, za standarde, za individualne veštine pojedinaca, ali i za sposobnost timskog rada i primenu pravila i iskustva iz profesionalne prakse. Softversko inženjersvo pokriva kompletan životni ciklus softvera. To obuhvata proizvodnju kvalitetnog i pouzdanog softvera na jedan sistematičan, kontrolisan i efikasan način koristeći formalne metode za specifikaciju, evaluaciju, analizu i dizajn, implementaciju, testiranje i održavanje.
Softverski proizvodi spadaju u najkompleksnije sisteme koje je napravio čovek. Zbog toga njihov razvoj zahteva upotrebu tehnika i procesa koji uspešno mogu da skaliraju do vrlo velikih aplikacija, uz istovremeno zadovoljavanje zahteva za veličinom, performansama i bezbednošću, a sve u okviru vremenskih i budžetskih ograničenja. Kompleksnost velikih softverskih sistema savladava se upotrebom struktura na višem nivou apstrakcije, kao što je softverska arhitektura. Zbog svega toga, softversko inženjerstvo zahteva upotrebu kako analitičkih, tako i deskriptivnih alatki koje su razvijene u okviru računarskih nauka, zajedno sa rigoroznim pristupom koji donose inženjerske disipline u cilju postizanja odgovarajuće pouzdanosti i bezbednosti, a sve to kroz timski rad softverskih inženjera koji funkcionišu u jednom kohezionom okruženju. Uz sve to, a imajući stalno u vidu da je softver proizvod koji je namenjen tržištu, cena razvoja softvera utiče i na sam tok softverskih procesa. Precizna estimacija troškova, kao i predvidljivost i uspešno upravljanje softverskim projektima itekako doprinose uspehu nekog softvera na tržištu. Na današnjem nivou razvoja softverskog inženjerstva, sposobnost jedne organizaje da se bavi razvojem softvera na navedeni način je egzaktno merljiva i kreće se u granicama od nivoa 1, gde su softverski procesi nepredvidljivi, pa do nivoa 5, gde su softverski procesi optimizovani. U Srbiji je softverska industrija tek u začetku, dok je tržište softvera zanemarljivo.
Srećom, strane kompanije napuštaju klasičan outsourcing, tj. iznajmljivanje proste radne snage (programera/kodera) i polako prebaciju razvoj svojih proizvoda ovde. Tu na scenu stupaju softverski inženjeri i ostali stručnjaci iz oblasti računarstva. Prema tome, očekuje se da pravo softversko inženjerstvo u Srbiji tek doživi ekspanziju. U nekim razvijenim zemljama (Kanada, Australija i pojedine države u SAD) softversko inženjerstvo je regulisana profesija. U drugim zemljama, licenciranje softverskih inženjera je neophodno samo ukoliko se obavljaju specifične delatnosti – slično mašinskim ili građevinskim inženjerima koji kod nas moraju da polože stručni ispit da bi postali odgovorni projektanti. Na Računarskom fakultetu u Beogradu softversko inženjerstvo se izučava na akademskim i osnovnim i master studijama.