Systeemontwerp

Bij het maken van goede systemen komt veel kijken:

Programmeren

Programmeren is heel belangrijk bij het maken van software.

Goede software maken en programmeren vereist vakmanschap. Om een van te voren vaststelde uitkomst te bereiken is vakmanschap nodig.

Vergelijk programmeren eens met componeren. Iedere muzikant kan wat pingelen en toevallig op leuke melodietjes stuiten en dat moet je vooral ook doen. Maar van tevoren bedenken wat voor muziek je gaat maken en dat doelbewust in elkaar zetten vereist vakmanschap.

Goede software maken vereist een investering, of je nou MAX/MSP gebruikt, C++, Java(script), Scheme, Python of PHP, om iets goeds te maken moet je weten wat je doet. Anders maak je misschien wel iets dat werkt maar zonder aan te kunnen tonen dat het robuust is of zonder dat het echt is wat de bedoeling was.








En je moet weten wat je wilt. Anders kun je wel mooie dingen maken maar je kunt niet toevallig een sequencer maken, de besturing van een verkeersvliegtuig of een netwerk-installatie.

Het geeft voldoening als je iets moois maakt. Het geeft nog meer voldoening als je moeite moet doen om iets moois te maken dat niet zomaar iedereen in elkaar kan frutselen.

Modulair werken

Een systeem opbouwen uit onderdelen

In plaats van een systeem te zien als één monolithisch geheel kun je het ook opdelen in een aantal onderdelen die elk hun eigen rol binnen het systeem vervullen. Die onderdelen moeten op een of andere manier met elkaar kunnen communiceren, bijvoorbeeld door functies aan te roepen of berichten te sturen.

Voordelen van modulair werken

Black boxes

Bij het modulair werken hoef je misschien niet alle modules vanuit niets te maken of kun je gebruik maken van functies die door anderen gemaakt zijn. Dat kan bijvoorbeeld in de vorm van een library of kant-en-klare programma's of scripts.

Wanneer je onderdelen hergebruikt of 'ingekochte' spullen gebruikt hoef je de interne werking daarvan vaak niet helemaal (opnieuw) te doorgronden maar kun je volstaan met begrijpen hoe je het moet gebruiken of aansluiten. Dat behandel je ze dus als black box: je mag er wel in kijken (of soms ook niet) maar het hoeft niet. Dit impliceert dat je als ontwikkelaar van een module goed moet documenteren hoe deze gebruikt dient te worden.

Unit-test

Elke module kan in veel gevallen onafhankelijk van de andere en van de rest van het systeem getest worden. Hiervoor maak je meestal een test-omgeving en eventueel een test-procedure. Dat kan zowel met software als met hardware. Het testen van een module (a.k.a. unit) in isolement noemen we een unit-test.

Systeemintegratie

Bij het opbouwen van een syteem uit losse onderdelen komt er een moment dat je onderdelen gaat samenvoegen. Dat geldt voor software, hardware en alle andere materialen die je gebruikt. De onderdelen die je los van elkaar ontwikkeld hebt ga je 'integreren', ofwel: samenvoegen tot een groter geheel.

Integratietest

Bij het samenvoegen van modules hoort ook weer dat je nagaat of ze goed samenwerken. Ook hiervoor kun je een testomgeving en procedure maken. Deze test noemen we integratietest.