Software Engineering versus Computer Science
In de moderne maatschappij zijn computers een integraal en onvermijdelijk onderdeel geworden. We richten ons echter minder op de innerlijke werking van deze vertrouwde dingen. Computerwetenschap is de theoretische basis van de computersystemen, terwijl software-engineering een toepassing is van die principes in problemen om een software-oplossing te ontwikkelen.
Computertechnologie
Computerwetenschap is de basiswetenschap van computerhardware en -software. Het biedt inzicht in het mechanisme van zowel software- als hardwarecomponenten en theoretische onderbouwing van de berekening voor implementatie en toepassing in computersystemen.
Computerwetenschap bestaat uit vele grote subdisciplines. Computationele theorie, informatie- en coderingstheorie, algoritmen en datastructuur, en programmeertaaltheorie behoort tot de theoretische informatica. Toegepaste subdisciplines computerwetenschappen zijn kunstmatige intelligentie, computerarchitectuur en -technologie, computergraphics en visualisatie, cryptografie en computerbeveiliging, computernetwerken, gelijktijdige, parallelle en gedistribueerde systemen, databases en het ophalen van informatie en software engineering..
Veel van deze subdisciplines zijn gebaseerd op wiskundige theorieën. Sommige toepassingsaspecten zijn verbonden met mechatronica en andere toegepaste wetenschappen.
Ook deze subdisciplines strekken zich uit tot kleinere studiegebieden. De Computational-theorie bevat bijvoorbeeld studiegebieden zoals Automata-theorie, Computability-theorie, Complexiteitstheorie, Cryptografie en Quantum computingtheorie.
Software Engineering
Software engineering kan worden beschouwd als een van de belangrijkste subdisciplines van de toegepaste informatica. Het richt zich op het bouwen van effectieve softwaresystemen met behulp van een rigoureuze engineeringaanpak. Het kan worden omschreven als een systematische, gedisciplineerde, kwantificeerbare benadering van het ontwerp, de ontwikkeling, de bediening en het onderhoud van software en de studie van deze benaderingen. Er is geen geaccepteerde definitie van software-engineering, maar een interpretatie van het doel ervan.
Fritz Bauer definieerde software-engineering als "Het opstellen en gebruiken van degelijke technische principes om economisch ontwikkelde software te verkrijgen die betrouwbaar is en efficiënt werkt op echte machines".
Software is niet fysiek; het zijn logische entiteiten die werken binnen een computersysteem. Daarom moet het worden ontworpen voor optimale prestaties in zowel hardware- als bedrijfsaspecten. Voor het behalen van deze doelen gebruiken software-engineers ontwikkelingsmodellen. Deze modellen bevatten de belangrijkste stappen van softwareontwikkeling, zoals ontwerpen, coderen, troubleshooting en onderhoud, in een samenhangend raamwerk dat systematische voortgang van de software tijdens zijn levenscyclus mogelijk maakt.
Wat is het verschil tussen Software Engineering en Computer Science?
• De informatica richt zich op de theoretische aspecten van het computergebruik, zowel in software als hardware.
• Software engineering richt zich op systematische ontwikkeling van software. Codering of de programmering is een sleutelcomponent van software engineering.
• Software-engineering kan worden gezien als een toepassing van de computationele theorie (de efficiëntie van een algoritme kan bijvoorbeeld worden gemeten met behulp van complexiteit, wat wordt beschreven in de computerwetenschaptheorie, maar de toepassing ervan valt binnen het domein van software-engineering, waarbij het meest geschikte algoritme geselecteerd door middel van de complexiteit).