BLOG

Softwareontwikkeling

Wat is Model-based design?

3 oktober 2017

Model-based design is een relatief nieuwe benadering van programmeren. Er wordt steeds meer gepleit voor het gebruik van een model-based design. Bantégnies bedrijf Esterel Techonologies (nu eigendom van ANSYS) is hier pionier in. Het bedrijf maakt tools om safety-critical software te bouwen. Bantégnie vindt dat het typen van miljoenen regels code in een IDE (software ontwikkelomgeving voor programmeurs) niet de juiste manier is om grote applicaties te ontwikkelen. Niemand zou een auto met de hand bouwen, maar veel code is nog steeds handwerk. En als het dan om 10.000 regels gaat, is dat nog te behappen, maar 100 miljoen regels zoals in een Tesla of andere high-end auto wordt erg ingewikkeld, aldus Bantégnie.

Bij het gebruik van een model-based design schrijf je geen directe code meer maar stel je een soort flowchart op die regels beschrijft die je programma moet volgen (het model). De computer genereert vervolgens code voor je gebaseerd op die regels.

De lift als voorbeeld van model-based design

Als je een controle systeem voor een lift wil ontwerpen, kan een regel bijvoorbeeld zijn: als de deur open is en iemand op de knop drukt naar een andere vloer, moet de deur sluiten en de lift gaan bewegen in de gewenste richting. In de model-based design benadering zou deze regel worden weergegeven met een klein diagram, met boxen die de verschillende staten van ‘zijn’ uitdrukken. In dit geval bijvoorbeeld ‘open’, ‘dicht’ en ‘in beweging’. En daarnaast lijntjes die laten zien hoe je van de ene staat in de andere komt. De diagrammen maken de regels duidelijk: door gewoon te kijken naar de plaatjes wordt duidelijk dat de enige manier om de lift te laten bewegen is door de deur te sluiten en omgekeerd: om de deur te openen moet de lift niet meer bewegen.

Model-based design versus traditioneel programmeren

De foto op je scherm is in het model-based design echter niet je eindproduct, zoals bij Photoshop wel het geval is. Het is meer een soort blueprint. Maar toch, software maken op deze manier is essentieel anders dan via traditioneel programmeren. Bij traditioneel programmeren word je geacht om complexe regels om te zetten in code. De meeste energie steek je in het vertalen, in plaats van nadenken over de regels zelf. In model-based design zijn de regels alles wat je hebt. Het is een manier om minder te focussen op de machine en meer op het probleem dat je probeert op te lossen.

Natuurlijk moet er al veel werk gedaan zijn voor een project begint om deze model-based design benadering te laten slagen. Iemand moet eerst een tool bouwen om modellen te ontwikkelen die natuurlijk zijn voor mensen (die eruit zien en werken als gewone notities en tekeningen die mensen zelf zouden maken) maar toch nog ondubbelzinnig genoeg zijn om door een computer te worden begrepen. Ze moeten een programma maken dat deze modellen verandert in echte code. En dan moet men nog bewijzen dat de gegenereerde code altijd zal doen wat ie hoort te doen.

Maar Bantégnie legt ook uit dat het mooie van een computer hebben die je eisen omzet in code in plaats van een mens is dat je zeker kan zijn, en zelfs wiskundig kunt bewijzen, dat de gegenereerde code aan de eisen voldoet. Veel van de voordelen van model-based design komen doordat je requirements tussendoor kunt toevoegen en tegelijkertijd zeker kunt zijn dat bestaande eisen functioneel blijven, want met elke verandering kan de computer verifiëren dat je programma nog werkt. Vrijheid om software te blijven aanpassen en verbeteren, zonder de angst onbedoeld nieuwe bugs te introduceren.

Wilt u meer weten over model-based design approach of vraagt u zich af of uw software simpeler en concreter kan? Neem dan vrijblijvend contact met ons op.

Interesse in een gesprek?

neem contact op met Geurt Jan van Ek

Neem contact op

Zie onze privacyverklaring.