Software Engineering vs Computer Science
V sodobni družbi so računalniki postali sestavni in neizogiben del. Vendar se manj osredotočamo na notranje delovanje teh poznanih stvari. Računalništvo je teoretični temelj računalniških sistemov, medtem ko je programsko inženiring uporaba teh načel v težavah za razvoj programske rešitve.
Računalništvo
Računalništvo je osnovna znanost računalništva strojne in programske opreme. Omogoča vpogled v mehanizem tako programske in strojne komponente kot tudi teoretične osnove izračuna za implementacijo in uporabo v računalniških sistemih.
Računalništvo je sestavljeno iz mnogih pomembnih pod disciplin. Računalniška teorija, teorija informacij in kodiranja, algoritmi in struktura podatkov ter teorija programskega jezika spada v teoretično računalništvo. Poddiscipline uporabne računalniške znanosti so umetna inteligenca, računalniška arhitektura in inženiring, računalniška grafika in vizualizacija, kriptografija in računalniška varnost, računalniška omrežja, sočasni, vzporedni in porazdeljeni sistemi, baze podatkov in iskanje informacij ter programsko inženirstvo.
Mnoge od teh disciplin temeljijo na matematičnih teorijah. Nekateri vidiki uporabe so povezani z mehatroniko in drugimi uporabnimi znanostmi.
Prav tako se te podiplome širijo v manjša študijska področja. Na primer, teorija računalništva vsebuje študijska področja, kot so teorija avtomatov, teorija računanja, teorija zapletenosti, kriptografija in kvantna računalniška teorija.
Programska oprema
Programsko inženirstvo lahko štejemo za eno od pomembnejših pod disciplin uporabne računalništva. Osredotoča se na gradnjo učinkovitih programskih sistemov z uporabo strogega inženirskega pristopa. Lahko ga opišemo kot sistematičen, discipliniran, merljiv pristop k oblikovanju, razvoju, delovanju in vzdrževanju programske opreme ter preučevanje teh pristopov. Ni sprejeta definicija programskega inženiringa, ampak razlaga njenega namena.
Fritz Bauer je programsko inženirstvo opredelil kot "Vzpostavitev in uporaba trdnih inženirskih načel za pridobitev ekonomsko razvite programske opreme, ki je zanesljiva in deluje na resničnih strojih".
Programska oprema ni fizična; gre za logične entitete, ki delujejo znotraj računalniškega sistema. Zato mora biti zasnovan za optimalno delovanje tako v strojni kot v operativni obliki. Za dosego teh ciljev programski inženirji uporabljajo razvojne modele. Ti modeli vključujejo glavne korake razvoja programske opreme, kot so načrtovanje, kodiranje, odpravljanje težav in vzdrževanje v koheziven okvir, ki omogoča sistematičen napredek programske opreme skozi njen življenjski cikel.
Kakšna je razlika med programskim inženiringom in računalništvom?
• Računalništvo se osredotoča na teoretične vidike računalništva, tako v programski kot strojni opremi.
• Programska oprema se sistematično osredotoča na razvoj programske opreme. Kodiranje ali programiranje je ključna sestavina programske opreme.
• Programsko inženirstvo je mogoče razumeti kot uporabo računalniške teorije (na primer učinkovitost algoritma je mogoče izmeriti s kompleksnostjo, ki je opisana v teoriji računalništva, vendar je uporaba znotraj področja programskega inženiringa, kjer je najprimernejši algoritem izbran s kompleksnostjo).