Wat is
(Embedded) Software?

Software is vergelijkbaar met het karakter of gedrag van mensen. Het is wat een computer een computer maakt. Zoals het verschil tussen Mac en Windows heb je ook verschillen in karakter.

Er zijn veel gebieden in software, en software op zichzelf is ook best een groot begrip.
De vier grootste gebieden van software zijn: computer programma’s maken zoals
shotoshop of games, websites schrijven en software voor embedded systemen. De
meeste software engineers hebben kennis van alle gebieden, maar hebben een
specialisatie op 1 of 2 gebieden.


Wat alle gebieden met elkaar gemeen hebben is dat ze allemaal in een taal
geschreven zijn. Net zoals ‘menselijke talen’ hebben computer talen ook grammatica
(syntax). Er zijn zelf verschillende talen, waarbij elke taal voor meerder toepassingen
gebruikt kan worden. Zo wordt JavaScript voornamelijk voor websites gebruikt en
C/C++ vooral voor embedded systemen. En er zijn nog veel meer talen!


Bij ontwikkeling wordt er altijd getest of het werkt. Dit gebeurt ook bij software, maar
bij software wordt er zoveel mogelijk geautomatiseerd. Als er software wordt
geschreven wordt er zoveel mogelijk geprobeerd om een mini-programma te maken
die een klein stukje van je code test. Door op èèn knop te drukken, worden alle tests
(alle mini-programmas) uitgevoerd en kunnen programmeurs in een opslag zien of er
fouten in zitten.

"Software is het karakter
wat het gedrag bepaalt van een computer"
- Mr. Vander

Welke stappen heb je bij een software project?

De exacte stappen hangen natuurlijk af van het project en wat voor software er
wordt gemaakt (game, website, embedded), maar sommige stappen zijn altijd
hetzelfde. Zo wordt er altijd eerst begonnen met het definiëren van het project, wat
het doel is en hoe we dat kunnen bereiken. Vervolgens moet er een taal gekozen
worden die het beste aansluit op de eisen van het project.


Het doel is bekend, de taal is bekend, programmeren maar! Helaas, er moet eerst
nog een programmeer omgeving worden opgezet. Deze zorgt ervoor dat het
makkelijk is voor de programmeur om de code te starten, testen en fouten op te
zoeken (debuggen). Meestal moet er ook nog een pipeline worden opgezet, die
automatisch taken uitgevoerd zoals het testen en het live zetten van de website
wanneer er een aanpassing wordt gemaakt door een programmeur. Pas nu kan er
worden geprogrammeerd. Tijdens het programmeren wordt er constant meer over
de details van het programma nagedacht: waar moet deze afbeelding, hoe snel
moet een speler kunnen lopen, wat betekent deze 0 en die 1, noem maar op.


Weetje: Vroegen waren computers heel groot en kwamen er vliegen/insecten
(bugs in het engels) in vast die fouten veroorzaakte in het programma.
Programmeurs moesten regelmatig de vliegen eruit halen: debuggen (ontvliegen)

Geniet van de meest gelezen posts

Wat is (embedded) software?

Dat er software is voor websites, apps en computer programma’s is vrij logisch voor de meeste mensen, maar bij sommige producten hebben mensen niet eens door dat er ook software is zit.

 

Denk aan beeldschermen, airco’s en auto’s, zelfs sommige fietslampjes bevatten
software. De software communiceert dan vooral met hardware en via de hardware
met mensen. Bij het fietslampje bepaalt de software wat de ledjes doen, afhankelijk
een knopje.

De software op het fietslampje wordt ook wel embedded software genoemd. Deze
software is geschreven voor specifieke hardware en werkt ook alleen op die
hardware. ‘Gewone’ software kan meestal op verschillende hardware draaien. Denk
maar aan een website, die werkt op bijna alle moderne apparaten: telefoons, laptops,
tablets en zelfs televisies. En dat terwijl telefoons en televisies compleet verschillend
zijn.

Zoals eerder verteld, is embedded een apart gebied in software. Dit zorgt ervoor dat
er op een ander manier geprogrammeerd moet worden. Waar in andere software
gebieden veel vrijheid is, is in de embedded wereld veel beperkingen. Er moet goed
worden nagedacht of de code wel snel genoeg is, en niet te veel RAM of FLASH
gebruikt. Als code inefficiënt wordt gemaakt, moet er duurdere componenten
gebruikt worden, wat in massaproductie wel tot miljoenen kan schelen. Verder moet
de hardware ook worden aangepast, wat de ontwikkeling weer duurder maakt.

Waar kun je tegen aan lopen bij (Embedded) Software?

Tijdens programmeren zijn er vaak limieten, hoewel deze tegenwoordig steeds
minder worden. Omdat er voor hardware geschreven wordt, kan dit ook alleen op
hardware getest worden. Je kan tot zekere mate simuleren, maar software op
hardware simuleren is best moeilijk. Alles automatiseren is moeilijker, omdat alles
afhankelijk is van de hardware. Tests schrijven gaat moeilijk, omdat er met hardware
wordt gecommuniceerd (dit kan dus alleen via andere hardware gecontroleerd
worden).


Bij embedded software heb je niet alleen kennis nodig van software, maar ook van
hardware. De hardware wordt immers door software aangestuurd. Daarbij wordt er
ook nauw samengewerkt met de electrical engineer. Maar ze zullen regelmatig
verwijzen naar datasheets: een document waar informatie van een component in
staat. Denk bijvoorbeeld aan de snelheid van een microcontroller (mini computer).
Tijdens het schrijven van software moet wordt er veel geprobeerd, waarbij er
regelmatig fouten in de code komen. Versie bijhouden is daarom wel een must,
vooral omdat er soms fouten ontstaan die niet in code zijn. Denk bijvoorbeeld aan
hardware die net is stuk gegaan. Bij een versie waarvan zeker weet dat (een deel)
werkt, kan er daarop vertrouwd worden dat het aan iets anders ligt. Hiervoor wordt
veelal GIT gebruikt. Dit is een licht programma dit kijkt welke code erbij of eraf gaat.
Bij elke kleine verandering, slaat de programmeur deze verandering op via GIT (dit
heet een commit). GIT maakt het ook makkelijker om samen te werken en code
samen te voegen.


Een week van een programmeur kan er soms uit zien als een rollercoaster. Je bent
een paar dagen bezig met iets maken, vervolgens werkt het niet. Je denk na daarom
het niet werkt. Vervolgens werkt het in eens. Terwijl je blij bent, denk je na waarom
het werkt. Vervolgens werkt het niet meer.

Geniet van de meest gelezen posts

Gesprek inplannen