Software
Van Wikipedia
Software is de Engelse term voor alle computerprogramma's, bibliotheken en bijbehorende data die niet aanwezig is bij het starten van een computer maar achteraf wordt geladen en is daarom een zeer vage term. Programmatuur die wel aanwezig is bij het starten van de computer, bijvoorbeeld in Read Only Memory (ROM), wordt over het algemeen firmware genoemd. Computerhardware, tenslotte, zijn alle onderdelen die aangeraakt kunnen worden. Denk hierbij aan toetsenborden, printers, monitoren en muizen.
Om te kunnen werken, hebben computers tenminste firmware nodig. (Bijvoorbeeld het BIOS van een PC), maar in de regel een grote verscheidenheid aan software. De uitzondering hierop is een ingebed systeem, die over het algemeen uitsluitend op firmware berust.
Het is belangrijk te onderstrepen dat "software" een zeer slecht gedefinieerde term is, die door verschillende mensen wordt gebruikt om verschillende dingen aan te duiden. In het dagelijks taalgebruik worden vaak specifieke toepassingen bedoeld met bijbehorende data, terwijl het woord in professionele kring een veel bredere betekenis heeft. De term "softwareprogramma" is een stijlfout, een pleonasme.
Inhoud |
[bewerk] Lagen
Grosso modo wordt software vaak onderverdeeld in lagen, die conceptueel tussen de gebruiker en de hardware instaan.
[bewerk] Gebruikerslagen
- 0. Communiceert direct met de hardware. typische onderdelen zijn BIOS, device drivers, interrupt service routines. Deze laag wordt ook wel low level software genoemd.
- Kernel, implementeert alle diensten die voor het hele systeem beschikbaar (moeten) zijn zoals multitasking, geheugenbeheer, semaforen
- Programma bibliotheken met specifieke functionaliteit, zoals netwerk abstracties (b.v. TCP/IP), implementaties van specifieke bestandssystemen, grafische routines, en basisbibliotheken voor specifieke computertalen (libc, bijvoorbeeeld).
- daemons, processen die weliswaar niet bij de kernel horen, maar wel noodzakelijk zijn voor het functioneren van het systeem, zoals programma managers, printer-managers, window-managers en cron-achtige programma's. Daemons worden (in de regel) door het systeem zelf gestart en zijn voortdurend actief.
- Systeem software, alle programma's die nodig zijn voor het functioneren van het systeem, maar er geen onderdeel van uitmaken, bijvoorbeeld programma's om bestanden te kopieren (cp of copy), te verwijderen (rm of del), mappen aan te maken en de inhoud van een bestandssysteem zichtbaar te maken (ls of dir).
- Gebruikerssoftware, "toepassingen" of "applicatie software"
[bewerk] Hardware
Deze indeling is echter vrij algemeen en details kunnen bij individuele systemen verschillen. Algemeen geldt echter dat software bestaat uit een aantal lagen met toenemend abstractieniveau met als doel tolk te zijn tussen de gebruiker en de hardware.
[bewerk] Platform specifieke vs. platform onafhankelijke software
De ontwikkeling van software is daarom, 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 abstractie-lagen. Goede voorbeelden hiervan zijn Qt van Trolltech en de POSIX standaard.
[bewerk] Realtime software
Realtime software geldt als een speciaal geval, waarin niet alleen het uiteindelijk resultaat, maar ook scherpe tijdsrestricties gelden. Over het algemeen wordt een onderscheid gemaakt tussen
- Soft real time, waarbij alleen een maximum responstijd geldt, die afhankelijk is van de eisen en
- Hard real time, waarbij het systeem 'deterministisch' moet zijn, d.i. O(n) = c.
Hoewel vele real-time toepassingen eveneens embedded zijn, zijn de twee begrippen geenzins equivalent.
[bewerk] Toepassingen
Enkele bekende toepassingsgebieden zijn:
- Kantoorsoftwarepakketten:
- Bedrijfssoftware:
- CAD-systeem Computer Aided Design
- PDM-systeem Product Data Management
- ERP-systeem Enterprise Resource Planning
- SCM-systeem Supply Chain Management
- CRM/EMM-systeem Customer Relationship Management / Enterprise Marketing Management
- EDM/ECM-systeem Enterprise Document / Content Management
- HRM-systeem Human Resource Management
- EPD-systemen Elektronisch patiënten dossier
- Grafische programmatuur
- Audioprogrammatuur
- Netwerk programmatuur (bijvoorbeeld voor Internet)
- Computerspellen
- Simulaties
- Browsers, FTP, NNTP en IRC servers en clienten.
- Embedded software
- Antiblokkeersysteem, Active Suspension, Navigatie systemen.
- Thermostaten, televisies, camera's en mobiele telefoons
- Dataloggers, GPS clienten, remote sensors, satelieten