Software of
programmatuur zijn
computerprogramma's, maar ook programma's voor
spelletjes,
televisies,
telefoons,
telefooncentrales,
auto's,
machine's etc. In steeds meer apparaten komt slimme besturing in de vorm van software. "software" is een term die door verschillende mensen wordt gebruikt om verschillende dingen aan te duiden. Software kan worden ingedeeld naar toepassingsgebied of gebruikersgroep. Software komt uit het Engels, en is de tegenhanger van
hardware, waarmee alle "tastbare" apparatuur wordt bedoeld. == Privésoftware == Thuis op de
pc of
spelcomputer *
Browsers *
Computerspellen *
Educatieve software *
Audioprogrammatuur == Kantoorsoftware ==
Kantoorsoftwarepakketten bestaan vaak uit *
Tekstverwerker *
Spreadsheet *
Database *
Presentatiesoftware *
Projectplanning *
CAD-systeem Computer Aided Design Kantoorsoftware draait meestal op de
pc. Een bekende toepassing is
MS-Office. == Bedrijfssoftware ==
Bedrijfssoftware zijn grotere softwarepakketten, vaak voor meerdere gebruikers. Voorbeelden zijn: *
ERP-systeem Enterprise Resource Planning *
SCM-systeem Supply Chain Management *
CRM/EMM-systeem Customer Relationship Management / Enterprise Marketing Management *
HRM-systeem Human Resource Management *
Propriëtaire software , dit is vaak maatwerk, zoals het
Elektronisch patiëntendossier, of de software van de
belastingdienst, grote banken, industrie etc., software gemaakt voor een bedrijf. *
PDM-systeem Product Data Management *
EDM/ECM-systeem Enterprise Document / Content Management *
Praktijkmanagementsysteem voor artsen, tandartsen, apothekers, en overige zorgverleners. == Systeemsoftware == Systeemsoftware wordt ook wel een
Besturingssysteem genoemd, met als bekende voorbeelden
Windows,
Unix of
BASIC. 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. Hoewel vele realtimetoepassingen eveneens
embedded zijn, zijn de twee begrippen geenszins equivalent. == Ingebouwde software ==
Embedded software is software die is ingebouwd in apparaten, zoals auto's, (
Antiblokkeersysteem)
Thermostaten,
televisies,
camera's,
mobiele telefoons,
Active Suspension, navigatiesystemen, Dataloggers, GPS-cliënten, remote sensors, satellieten. == Overig == De term "softwareprogramma" is een stijlfout, een
pleonasme.