Software Engineering vs Computer Science
I det moderne samfunnet har datamaskiner blitt en integrert og uunngåelig del. Imidlertid fokuserer vi mindre på det indre arbeidet til disse kjente tingene. Informatikk er det teoretiske grunnlaget for datasystemene, mens programvareteknikk er en anvendelse av disse prinsippene i problemer for å utvikle en programvareløsning.
Informatikk
Datavitenskap er den grunnleggende vitenskapen om datamaskinvare og programvare. Det gir innsikt i mekanismen til både programvare- og maskinvarekomponenter og teoretiske grunnlag for beregning for implementering og anvendelse i datasystemer.
Informatikk består av mange store underdisipliner. Beregningsteori, informasjon og kodingsteori, algoritmer og datastruktur, og programmeringsspråkteori tilhører den teoretiske informatikken. Anvendte datavitenskapsdisipliner er kunstig intelligens, dataarkitektur og engineering, datagrafikk og visualisering, kryptografi og datasikkerhet, datanettverk, samtidige, parallelle og distribuerte systemer, databaser og informasjonsinnhenting og programvareteknikk.
Mange av disse underdisiplinene er basert på matematiske teorier. Noen applikasjonsaspekter er knyttet til mekatronikk og annen anvendt vitenskap.
Dessuten strekker disse underdisipliner seg til mindre studieområder. For eksempel inneholder beregningsteorien studieområder som Automata-teori, Computability theory, Complexity theory, Cryptography og Quantum computing theory.
Programvareteknikk
Programvareutvikling kan betraktes som en av de viktigste underdisipliner innen anvendt informatikk. Den fokuserer på å bygge effektive programvaresystemer ved hjelp av en streng teknisk tilnærming. Det kan beskrives som en systematisk, disiplinert, kvantifiserbar tilnærming til design, utvikling, drift og vedlikehold av programvare, og studiet av disse tilnærmingene. Det er ingen akseptert definisjon av programvareteknikk, men en tolkning av formålet.
Fritz Bauer definerte programvareteknikk som “Etablering og bruk av lydtekniske prinsipper for å skaffe seg økonomisk utviklet programvare som er pålitelig og fungerer effektivt på ekte maskiner”.
Programvare er ikke fysisk; det er logiske enheter som arbeider i et datasystem. Derfor må den utformes for optimal ytelse i både maskinvare og driftsaspekter. For å oppnå disse målene bruker programvareingeniører utviklingsmodeller. Disse modellene inneholder hovedtrinn for programvareutvikling, for eksempel design, koding, feilsøking og vedlikehold i et sammenhengende rammeverk som tillater systematisk fremgang av programvaren gjennom livssyklusen.
Hva er forskjellen mellom programvareteknikk og datavitenskap?
• Datavitenskap fokuserer på de teoretiske aspektene ved databehandling, både innen programvare og maskinvare.
• Programvareutvikling fokuserer systematisk på utvikling av programvare. Koding eller programmering er en nøkkelkomponent i programvareteknikk.
• Programvareteknikk kan sees på som en anvendelse av beregningsteorien (for eksempel kan en algoritmes effektivitet måles ved hjelp av kompleksitet, som er beskrevet i datavitenskapsteori, men applikasjonen er innenfor domenet for programvareteknikk hvor det er algoritme velges ved hjelp av kompleksiteten).