Wikisage, de vrije encyclopedie van de tweede generatie

Wikisage is op 1 na de grootste internet-encyclopedie in het Nederlands. Iedereen kan de hier verzamelde kennis gratis gebruiken, zonder storende advertenties.

  • Wilt u meehelpen om Wikisage te laten groeien? Maak dan een account aan. U bent van harte welkom. Zie: Portaal:Gebruikers.
  • Bent u blij met Wikisage, of wilt u juist meer? Dan stellen we een bescheiden donatie om de kosten te bestrijden zeer op prijs. Zie: Portaal:Donaties.

Software

Uit Wikisage
Ga naar: navigatie, zoeken

Software is de Engelse term voor alle computerprogramma's, bibliotheken en bijbehorende data die niet aanwezig zijn bij het starten van een computer maar achteraf worden geladen. Het gaat dus om 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. Computer hardware, ten slotte, zijn alle onderdelen die aangeraakt kunnen worden. Denk hierbij aan toetsenborden, printers, monitoren en muizen.

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 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.

Lagen

In het algemeen wordt software vaak onderverdeeld in lagen, die conceptueel tussen de gebruiker en de hardware instaan.

  1. Communiceert direct met de hardware. Typische onderdelen zijn BIOS, device drivers, interrupt service routines. Deze laag wordt ook wel low level software genoemd.
  2. Kernel, implementeert alle diensten die voor het hele systeem beschikbaar (moeten) zijn zoals multitasking, geheugenbeheer, semaforen.
  3. Programmabibliotheken met specifieke functionaliteit, zoals netwerkabstracties (bv. TCP/IP), implementaties van specifieke bestandssystemen, grafische routines en basisbibliotheken voor specifieke computertalen (libc, bijvoorbeeld).
  4. 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.
  5. Systeemsoftware, alle programma's die nodig zijn voor het functioneren van het systeem, maar er geen onderdeel van uitmaken, 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).
  6. Gebruikerssoftware, "toepassingen" of "applicatiesoftware".

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.

Platformspecifieke vs. platformonafhankelijke 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 abstractielagen. Goede voorbeelden hiervan zijn Qt van Trolltech 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.

Toepassingen

Enkele bekende toepassingsgebieden zijn:

Zie ook