Software of programmatuur is een gangbaar woord voor computerprogramma’s. Naast toepassingen voor de mainframes, pc’s en spelcomputers, bevatten ook apparaten als televisies, telefoons, telefooncentrales, auto’s, machines sinds de jaren zeventig van de vorige eeuw steeds vaker software.
Software kan worden ingedeeld naar toepassingsgebied of gebruikersgroep.
Het begrip “software” komt uit het Engels, en is de tegenhanger van hardware (apparatuur), waarmee alle “tastbare” apparatuur wordt bedoeld.
Het onderscheid tussen hardware en software bestond al voordat de computer bestond, al worden de termen in die zin niet vaak gebruikt. Een radiotoestel is hardware, het radioprogramma is software. Een grammofoon is hardware, de plaat is software. Dit illustreert dat de hardware onbruikbaar is zonder software.
Systeemsoftware
Systeemsoftware wordt ook wel een besturingssysteem genoemd, met als bekende voorbeelden Windows, Macintosh en Unix. Dit zijn alle programma’s die nodig zijn voor het functioneren van het systeem, bijvoorbeeld programma’s om bestanden te kopiëren (cp of copy), te verwijderen (rm of del), mappen aan te maken en de inhoud van een bestandssysteem zichtbaar te maken (ls of dir). Typische onderdelen zijn BIOS, device drivers, interrupt service routines. Deze laag wordt ook wel low level software genoemd.
-
De kernel: deze implementeert alle diensten die voor het hele systeem beschikbaar (moeten) zijn zoals multitasking, geheugenbeheer en semaforen.
-
Programmabibliotheken met specifieke functionaliteit, zoals netwerkabstracties (bv. TCP/IP), implementaties van specifieke bestandssystemen, grafische routines en basisbibliotheken voor specifieke computertalen (libc, bijvoorbeeld).
-
Daemons, processen die weliswaar niet bij de kernel horen, maar wel noodzakelijk zijn voor het functioneren van het systeem zoals programmamanagers, printermanagers, windowmanagers en cronachtige programma’s. Daemons worden (in de regel) door het systeem zelf gestart en zijn voortdurend actief.
-
Netwerkprogrammatuur (bijvoorbeeld voor internet), FTP, NNTP- en IRC-servers en -cliënten.
-
Om te kunnen werken hebben computers ten minste firmware nodig, bijvoorbeeld het BIOS van een pc, maar in de regel bevat een computer een grote verscheidenheid aan software. De uitzondering hierop is een embedded system, dat over het algemeen uitsluitend op firmware berust.
Hardwareplatform
De ontwikkeling van software is naarmate men dichter bij de hardware staat, nauwer verweven met het platform waarop men werkt. Op het allerlaagste niveau dient men op de hoogte te zijn van alle relevante details, terwijl het op het hoogste niveau vaak mogelijk is software zo te schrijven dat zij op een groot aantal verschillende platforms kan worden gebruikt, door handig gebruik te maken van verschillende abstractielagen. Goede voorbeelden hiervan zijn Qt van Nokia en de POSIX-standaard.
Realtimesoftware
Realtimesoftware geldt als een speciaal geval, waarin niet alleen het uiteindelijke resultaat, maar ook scherpe tijdsrestricties gelden. Over het algemeen wordt een onderscheid gemaakt tussen
-
Soft real time, waarbij alleen een maximumresponstijd geldt, die afhankelijk is van de eisen en
-
Hard real time, waarbij het systeem ‘deterministisch’ moet zijn, d.i. O(n) = c.