Programska oprema in računalniški programerji oba razvijata programsko opremo, ki jo potrebujejo delujoči računalniki. Razlika med obema položajema je v odgovornosti in pristopu k delu. Programski inženirji uporabljajo dobro opredeljene znanstvene principe in postopke za zagotavljanje učinkovitega in zanesljivega programskega izdelka.
Programska oprema
Programsko inženirstvo obravnava pristop k razvoju programske opreme kot formalni postopek, podoben tistemu, ki ga najdemo v tradicionalnem inženiringu. Programski inženirji začnejo z analizo potreb uporabnikov. Načrtujejo programsko opremo, uvajajo, preizkušajo jo za kakovost in jo vzdržujejo. Računalniškim programerjem dajo navodila, kako naj napišejo kodo, ki jo potrebujejo. Programski inženirji lahko ali ne napišite katero koli kodo same, vendar potrebujejo močno programsko znanje za komunikacijo s programerji in pogosto tekoče govorijo v več programskih jezikih.
Programska oprema zasnovati in razvijati računalniške igre, poslovne aplikacije, omrežni nadzorni sistemi in operacijski sistemi programske opreme. So strokovnjaki za teorijo računalniške programske opreme in omejitve strojne opreme, ki jo oblikujejo.
Računalniško podprto programsko inženirstvo
Celoten postopek načrtovanja programske opreme je treba uradno voditi že dolgo, preden je napisana prva vrstica kode. Programski inženirji izdelujejo dolgotrajne oblikovalske dokumente s pomočjo računalniško podprtih orodij za programsko opremo. Programski inženir pretvori oblikovalske dokumente v dokumente s specifikacijo oblikovanja, ki se uporabljajo za oblikovanje kode. Postopek je organiziran in učinkovit. Programiranje brez manšete se ne dogaja.
Papirologija
Ena od značilnosti programskega inženiringa je papirna sled, ki jo proizvaja. Oblikovanje podpišejo vodje in tehnični organi, vloga zagotavljanja kakovosti pa je preverjanje papirne sledi. Številni programski inženirji priznavajo, da je njihovo delo 70-odstotna dokumentacija in 30-odstotna koda. To je drag, a odgovoren način pisanja programske opreme, kar je eden od razlogov, zakaj je avionika v sodobnih letalih tako draga.
Izzivi programskega inženiringa
Proizvajalci ne morejo zgraditi zapletenih življenjsko pomembnih sistemov, kot so letala, krmiljenje jedrskega reaktorja in medicinski sistemi ter pričakujejo, da bo programska oprema združena. Zahtevajo, da celoten postopek temeljito upravljajo programski inženirji, tako da lahko ocenijo proračune, zaposlijo osebje in zmanjšajo tveganje za neuspeh ali drage napake.
Na varnostno pomembnih področjih, kot so letalstvo, vesolje, jedrske elektrarne, medicina, odkrivanje požara Sistemi in vožnja z dirkalnimi letali so stroški odpovedi programske opreme lahko ogromni, saj so življenjske dobe tveganje. Sposobnost programskega inženirja, da predvidi težave in jih odpravi, preden se zgodijo, je kritična.
Certificiranje in izobraževanje
V nekaterih delih sveta in v večini držav ZDA se ne morete imenovati programskega inženirja brez formalne izobrazbe ali certificiranja. Več velikih programskih podjetij, tudi Microsoft, Oracle in Red Hat, nudi tečaje za izdajo certifikatov. Številne šole in univerze ponujajo diplomo iz programskega inženiringa. Prizadevni programski inženirji se lahko ukvarjajo s področja računalništva, programskega inženirstva, matematike ali računalniških informacijskih sistemov.
Računalniški programerji
Programerji napišejo kodo s specifikacijami, ki so jim jih dali inženirji programske opreme. So strokovnjaki v glavnih jezikih programskega programiranja. Čeprav običajno niso vključeni v zgodnje faze načrtovanja, so morda vključeni v preizkušanje, spreminjanje, posodabljanje in popravilo kode. Pišejo kodo v enega ali več programskih jezikov po naročilu, vključno z:
- SQL
- JavaScript
- Java
- C #
- Python
- PHP
- Ruby na tirnicah
- Hitro
- Cilj-C
- PHP
Inženirji vs. Programerji
- Programska oprema je timska dejavnost. Programiranje je predvsem samotna dejavnost.
- V celoten postopek je vključen programski inženir. Programiranje je eden od vidikov razvoja programske opreme.
- Programski inženir sodeluje s komponentami z drugimi inženirji za izgradnjo sistema. Programer napiše celoten program.