Software is onderverdeeld in systeem- en applicatiesoftware op basis van hun fundamentele doel en hoe ze omgaan met de computerhardware en gebruikers. De indeling vereenvoudigt het begrip, de ontwikkeling en het onderhoud:
* Systeemsoftware: Deze fungeert als tussenpersoon tussen de gebruiker en de hardware. Het primaire doel is het beheren en controleren van computerhardware en het bieden van een platform waarop applicatiesoftware kan worden uitgevoerd. Het verwerkt taken op laag niveau waarmee gebruikers zelden rechtstreeks communiceren. Dit omvat:
* Besturingssystemen (OS): De kernsysteemsoftware, die bronnen zoals geheugen, CPU, opslag en randapparatuur beheert. Voorbeelden:Windows, macOS, Linux, Android, iOS.
* Apparaatstuurprogramma's: Software waarmee het besturingssysteem kan communiceren met specifieke hardwareapparaten (printers, grafische kaarten, enz.).
* Hulpprogramma's: Hulpprogramma's die helpen bij het beheren en onderhouden van het systeem, zoals schijfdefragmentatieprogramma's, antivirussoftware en systeemmonitors.
* BIOS/UEFI: Firmware die hardwarecomponenten initialiseert wanneer de computer opstart.
* Compilers en tolken: Vertaal programmeertalen naar machinecode.
* Linkers en laders: Combineer en bereid programmacode voor uitvoering voor.
* Applicatiesoftware: Dit is ontworpen om specifieke taken voor gebruikers uit te voeren. Het draait *bovenop* de systeemsoftware en maakt gebruik van de bronnen die door het besturingssysteem worden beheerd. Het is gericht op gebruikersgerichte functionaliteit. Voorbeelden zijn onder meer:
* Tekstverwerkers: Microsoft Word, Google Documenten
* Spreadsheets: Microsoft Excel, Google Spreadsheets
* Webbrowsers: Chrome, Firefox, Safari
* Spellen: Fortnite, Minecraft
* Databases: MySQL, PostgreSQL
* Beeldeditors: Photoshop, GIMP
* E-mailclients: Outlook, Thunderbird
De verdeling is cruciaal omdat:
* Abstractie: Systeemsoftware verbergt de complexiteit van hardware voor applicatiesoftware en gebruikers. Ontwikkelaars van applicaties hoeven zich geen zorgen te maken over de complexiteit van geheugenbeheer of apparaatstuurprogramma's; het besturingssysteem regelt dat.
* Modulariteit: Door systeem- en applicatiesoftware te scheiden, zijn updates en onderhoud eenvoudiger. U kunt het besturingssysteem bijwerken zonder noodzakelijkerwijs de applicatiesoftware te beïnvloeden (idealiter).
* Draagbaarheid: Applicatiesoftware die voor een specifiek besturingssysteem is ontworpen, kan mogelijk op elk systeem met dat besturingssysteem worden uitgevoerd, ongeacht de onderliggende hardwareverschillen. De systeemsoftware verwerkt de hardwarespecifieke details.
* Beveiliging: Systeemsoftware kan beveiligingsfuncties bieden, zoals firewalls en gebruikerstoegangscontroles, waardoor het systeem en de applicaties worden beschermd tegen schadelijke software.
Hoewel de grens soms kan vervagen (sommige applicaties hebben systeemachtige functionaliteiten en sommige systeemsoftware kan door de gebruiker worden geconfigureerd), blijft het onderscheid een waardevol organisatieprincipe in de softwarewereld. |