Software ontwerp
In de loop van de ontwikkeling van de software engineering is al veel
geschreven en gezegd over het ontwerpen van software. Vele methoden en
technieken zijn bedacht en verfijnd naarmate er meer ervaring mee werd
opgedaan.
Enkele van de methoden zijn strikt formeel, andere zijn wat vrijer. Er
is niet één techniek of methode de enig zaligmakende; de grootte van het
project, de grootte van het projectteam, de mate waarin naar verwachting
de software later aangepast en uitgebreid zal moeten worden, de mate
waarin de programmeurs ervaring hebben met een bepaalde methode, het type
software dat geschreven moet worden (een besturing met nauwe relatie met
de hardware, of juist een database applicatie waarin alleen met data
gewerkt wordt), dit zijn allemaal aspecten die de keuze voor of tegen een
bepaalde methode bepalen. De belangrijkste tip die we kunnen geven is
eigenlijk:
Mààk een ontwerp.
Gebruik Uw inventiviteit, creativiteit en kennis van zaken om,
vòòrdat U ook maar één regel programmeert, voor Uzelf goed vast te
stellen:
- Wàt er gemaakt moet worden.
- Hòe het gemaakt kan gaan worden.
Door het probleem van te voren goed te overdenken voorkomt U veel werk
in de uitvoeringsfase.
Wanneer U weet wat er gemaakt moet worden, en hoe U dit denkt aan te
pakken, zult U dit op één of andere wijze willen opschrijven. Twee
eenvoudige hulpmiddelen hiertoe zullen hieronder besproken worden.
Flowcharts
Met een flowchart kan de afloop van een programma eenvoudig in een
schema worden weergegeven. Hiertoe zijn drie symbolen voldoende.

Programma afloop
Het programma loopt via de lijnen tussen de symbolen. De snelheid
waarmee het programma wordt uitgevoerd is geen onderdeel van de
representatie. Bij een flowchart worden alle acties en beslissingen
oneindig snel doorlopen. Ook andere limieten die in een normale computer
een rol kunnen spelen (eindig geheugen, eindige reken nauwkeurigheid,
etc.) spelen in een flowchart geen rol.
Normalerwijze wordt een flowchart van boven naar beneden doorlopen.
Wanneer een lijn van beneden naar boven gaat, dient er een pijl in de lijn
te worden getekend.
Actie
Een rechthoek geeft een actie aan. De actie die wordt uitgevoerd staat
in de rechthoek beschreven. Een rechthoek heeft één uitgang, maar kan
meerdere ingangen hebben (minimaal één.)
Conditie
Met een ruit wordt een splitsing aangegeven in de programma afloop. Na
een ruit kan het programma één van twee routes volgen. De route die
genomen zal worden is bepaald door de voorwaarde die in de ruit beschreven
staat.
Wanneer de ruit te krap is voor de tekst die erin geschreven moet
worden, kan hij verbreed worden.
Terminals
Met cirkels worden programma begin- en eindpunten weergegeven. Een
circel kan ook gebruikt worden als 'label' in een flowchart. Hierdoor
wordt het mogelijk een flowchart over meerdere pagina's te verdelen. Een
programmalijn eindigt dan in een cirkel met bijvoorbeeld label 'A', en op
een andere pagina start een ander deel van de flowchart weer met een
cirkel met label 'A'. De twee flowcharts sluiten dan op elkaar aan op de
plaats van de cirkel.
Voorbeeld
Een voorbeeld van een flowchart die de programma afloop laat zien van
een eenvoudige routine die het getal 'b' vermenigvuldigt met 28 ,is
hieronder gegeven.

Toestandsdiagrammen
Besturingen worden vaak ontworpen voor apparaten of systemen die in een
beperkt aantal bedrijfstoestanden kunnen zijn. Een voorbeeld is een
videorecorder, waar (onder meer) de volgende bedrijfstoestanden herkend
kunnen worden:
- cassette uitgeworpen
- cassette ingevoerd
- stilstaan
- spelen
- spoelen
Het is over het algemeen de taak van de besturing deze
bedrijfstoestanden (states) te volgen en te controleren. Het is dan ook
vaak zinvol deze bedrijfstoestanden op te nemen in een diagram (een
toestandsdiagram, ofwel state-diagram.)
State
In een state-diagram wordt een bedrijfstoestand weergegeven door een
rechthoek. In de rechthoek staat de naam van de state.
Er worden ook vaak cirkels gebruikt om een state aan te geven. Welke U
kiest is een kwestie van smaak of gewoonte.
Overgangen
De overgang van de éne naar een volgende state wordt weergegeven door
een lijn met een pijl aan het eind. Bij de lijn staat de conditie
beschreven waaronder de toestandsverandering optreedt.
Acties
Vaak moet de besturing een actie uitvoeren om het te besturen apparaat
van toestand te laten veranderen, of als gevolg van de toestandsovergang.
De te ondernemen actie wordt eveneens naast de lijn geschreven, meteen
onder de voorwaarde waaronder de toestandsovergang zich voordoet.
Voorbeeld 1
Een voorbeeld van een systeem dat in een aantal onderscheiden
toestanden kan verkeren, is gegeven in de onderstaande figuur. Hier is een rat
opgesloten in twee kooien die met elkaar verbonden zijn via een buis. Het
dier kan via de buis van kooi A naar kooi B en terug lopen, en passeert
daarbij onderweg twee lichtsluisjes die de aanwezigheid van de rat kunnen
detecteren. Het is de opdracht van de software om bij te houden in welke
van de twee kooien de rat zich op elk moment bevindt
.
Stel dat de rat zich in kooi A bevindt. Als hij zijn snuit in de buis
steekt, blokkeert hij de lichtinval op detector A. Deze gebeurtenis wordt
herkend door de software als 'A=0', en leidt ertoe dat wordt overgegaan
naar de volgende toestand ('voor detector A'.) Wanneer in deze toestand
'A=1' wordt, is de rat blijkbaar teruggekropen, en wordt de toestand 'in
kooi A' weer aangenomen. Als echter ook detector B geblokkeerd wordt ('A=0
en B=0'), dan is de rat in de buis terechtgekomen. Toestand 'voor detector
A en voor detector B' wordt aangenomen. Kruipt de rat in deze toestand een
stukje terug ('A=0 en B=1') dan wordt de vorige toestand weer actief, maar
kruipt de rat verder ('A=1 en B=0') dan wordt de volgende toestand actief.
Zo wordt het gedrag van de rat gevolgd, en weet de software op elk moment
waar de rat zich bevindt.

Voorbeeld 2
Een ander voorbeeld van een apparaat dat zich in verschillende states
kan bevinden, en bestuurd kan worden door een micro-controller, is een
snickers-automaat. Het state-diagram van de automaat is hieronder gegeven.

De software volgt niet alleen de verschillende states van de machine,
maar zorgt ook voor de besturing ervan. Hiertoe moet de besturing bij de
overgangen tussen de verschillende states een actie ondernemen. Deze
acties worden weergegeven in het diagram, meteen onder de voorwaarde
waaronder van state gewisseld wordt.
Een belangrijke gebeurtenis uit de buitenwereld is 'reset'. Als de
machine wordt aangezet, worden alle laden vergrendeld en komt de machine
in de toestand 'laden vergrendeld'.
De machine blijft in deze toestand, totdat een munt wordt ingeworpen.
In reactie hierop worden de laden ontgrendeld, en komt de machine in de
state 'laden ontgrendeld'.
Deze state blijft actief totdat de klant één van de laden heeft
geopend. In reactie hierop kunnen de laden weer vergrendeld worden, en
komt de automaat in de state 'lade geopend'.
Wanneer de lade weer wordt gesloten, kan de state 'laden vergrendeld'
weer worden aangenomen, en wordt gewacht op de volgende muntinworp.
|