Software Engineering vs Computer Science
I det moderna samhället har datorer blivit en integrerad och oundviklig del. Men vi fokuserar mindre på det inre av dessa välbekanta saker. Datavetenskap är den teoretiska grunden för datorsystemen, medan programvaruteknik är en tillämpning av dessa principer i problem för att utveckla en mjukvarulösning.
Datavetenskap
Datavetenskap är den grundläggande vetenskapen om datorhårdvara och mjukvara. Det ger insikt i mekanismen för både mjukvaru- och hårdvarukomponenter och teoretiska grunder för beräkning för implementering och tillämpning i datorsystem.
Datavetenskap består av många stora underdiscipliner. Beräkningsteori, Informations- och kodningsteori, algoritmer och datastruktur samt programmeringsspråksteori hör till den teoretiska datavetenskapen. Tillämpade datavetenskapliga subdiscipliner är artificiell intelligens, datorarkitektur och datorteknik, datorgrafik och visualisering, kryptografi och datorsäkerhet, datornätverk, samtidiga, parallella och distribuerade system, databaser och informationssökning och mjukvaruteknik.
Många av dessa underdiscipliner är baserade på matematiska teorier. Vissa tillämpningsaspekter är kopplade till mekatronik och andra tillämpade vetenskaper.
Dessa underdiscipliner sträcker sig även till mindre studieområden. Till exempel innehåller beräkningsteorin studieområden som automatteori, beräkningsteori, komplexitetsteori, kryptografi och kvantberäkningsteori.
Software Engineering
Programvaruteknik kan betraktas som en av de stora underdisciplinerna inom tillämpad datavetenskap. Den fokuserar på att bygga effektiva programvarusystem med hjälp av en rigorös ingenjörsmetod. Det kan beskrivas som ett systematiskt, disciplinerat, kvantifierbart tillvägagångssätt för design, utveckling, drift och underhåll av programvara, och studiet av dessa tillvägagångssätt. Det finns ingen accepterad definition av mjukvaruteknik, utan en tolkning av dess syfte.
Fritz Bauer definierade mjukvaruteknik som "Införandet och användningen av sunda ingenjörsprinciper för att erhålla ekonomiskt utvecklad programvara som är tillförlitlig och fungerar effektivt på riktiga maskiner".
Programvaran är inte fysisk; det är logiska enheter som arbetar i ett datorsystem. Därför måste den utformas för optimal prestanda både i hårdvaru- och driftsaspekter. För att uppnå dessa mål använder mjukvaruingenjörer utvecklingsmodeller. Dessa modeller införlivar huvudstegen i mjukvaruutveckling som design, kodning, felsökning och underhåll i ett sammanhållet ramverk som möjliggör systematiska framsteg för programvaran genom dess livscykel.
Vad är skillnaden mellan mjukvaruteknik och datavetenskap?
• Datavetenskap fokuserar på de teoretiska aspekterna av beräkningen, både i mjukvara och hårdvara.
• Programvaruutveckling fokuserar på utveckling av mjukvara systematiskt. Kodning eller programmering är en nyckelkomponent i mjukvaruutveckling.
• Mjukvaruteknik kan ses som en tillämpning av beräkningsteorin (till exempel kan en algoritms effektivitet mätas med hjälp av komplexitet, vilket beskrivs i datavetenskapsteorin, men dess tillämpning är inom mjukvaruområdet teknik där den mest lämpliga algoritmen väljs med hjälp av komplexiteten).