Embedded software ontwikkeling

Software is software is software, allemaal hetzelfde, toch ? Nee dus. Natuurlijk zijn er overeenkomsten, maar er zijn ook grote verschillen. Belangrijke verschillen waarop we graag onze visie geven.

Software wat is dat ?

Software bestaat uit de verzameling van opeenvolgende instructies die een microprocessor uit kan voeren op een bepaald moment. Een instructie beschrijft exact wat de microprocessor zal doen. Er zijn een aantal soorten instructies. Om een idee te geven:

  • maak een keuze (ALS temperatuur_te_laag DAN schakel_verwarming_aan)
  • ga naar een ander plek in het programma (vergelijk het spel Monopoly: ga direct naar de gevangenis, ga niet langs start)
  • haal gegevens op of sla gegevens op.
  • voer een berekening uit (vermenigvuldig A met B)
  • voer een vergelijking uit (vergelijk A met B)

De software beschrijft dus in detail wat de microprocessor moet doen, stap voor stap. Om te zorgen dat software altijd goed werkt, moet rekening worden gehouden met onverwachte gebeurtenissen.

Daarom moet een software ontwerp worden gemaakt. Daarin staat wat het programma moet gaan doen en hoe moet worden gereageerd op verwachte, maar vooral ook op onverwachte situaties. Ook dat is een essentieel onderdeel van embedded software ontwikkeling.

Een bug, wat is dat ?

Een goede definitie van een bug is: “een coderingsfout die een onverwacht defect, tekortkoming of onjuistheid veroorzaakt in een computer programma. Anders gezegd, als het programma zich niet zo gedraagt als de ontwerper bedoeld had, is de oorzaak waarschijnlijk een bug”. In de praktijk worden niet-gespecificeerde functies of -wijzigingen niet aangemerkt als zijnde een bug.

Embedded software, wat is dat ?

Embedded software is ontworpen om een beperkt aantal functies uit te voeren op inflexibele hardware.

Embedded software kan zitten in een wasmachine, een MP3 speler, een spelcomputer, een regelsysteem, een fototoestel. Apparaten met een beperkt aantal functies. Met een wasmachine maak je geen foto’s en speel je geen MP3’s af, alhoewel ? Niet embedded systemen zijn PC’s, servers, palmtops en wat ons betreft ook mobiele telefoons alhoewel dat een grensgeval is.

In een embedded systeem is schaarste aan alles. De componenten worden zó gekozen dat de functie nèt kan worden uitgevoerd. Geheugen kost geld, rekenkracht ook dus hoe minder hoe beter, genoeg is genoeg.

Dit geeft een heel ander uitgangspunt bij het ontwerpen van software dan PC software. PC’s worden steeds sneller, geheugen en harde schijven steeds goedkoper. Dus als je programma op de PC van vandaag langzaam is, dan gaat het op de PC van volgend jaar een stuk beter. Het embedded systeem verandert echter niet meer. Bij embedded software ontwikkeling moet uiterst efficiënt worden omgesprongen met de rekenkracht van de processor en het beschikbare geheugen.

De kwaliteit van de software moet veel hoger zijn en bestand zijn tegen onverwachte situaties. Dat je PC vastloopt is een bekend gegeven, maar dat je koffieautomaat of je wasmachine vastloopt is onacceptabel. Om maar niet te spreken van de besturing van verkeerslichten of van medische apparaten !

Een goed ontwerp is het halve werk

Eerst denken, dan doen. Daar gaat het om bij het maken van een ontwerp. Bedenken wat de embedded software moet gaan doen. En daarbij rekening houden met onverwachte situaties, hoe ga je daar mee om zodat het systeem correct blijft werken.

De embedded software ontwikkeling kan beginnen zodra de specificaties zijn opgesteld. Gedurende het hardware ontwerp is overleg met de hardware engineer wel noodzakelijk, maar een flink deel kan zonder enige kennis van de hardware worden ontworpen.

Overzicht, onderhoudbaarheid, kwaliteit, allemaal belangrijk voor embedded software. Een goed ontwerp geeft inzicht in de structuur van de software. Een structuur die helder is, als het ontwerp goed is.

De ontwerpen worden altijd gecontroleerd door een collega. Dat houdt je scherp en garandeert dat je ontwerp goed en de structuur helder is.