Zolang blijkt dat ontwikkelaars en gebruikers van 4gl-tools geen kennis hebben van het gehanteerde model, zal het niet mogelijk zijn om volgens het generator-paradigma te ontwikkelen, meent Rob Ronda.
Naar aanleiding van mijn artikel ‘Softwareontwikkeling gebaat bij nieuwe zienswijzen’ (Computable, 22 november 2002) heb ik veel reacties mogen ontvangen. Geen daarvan was negatief; men kan zich vinden in de achtergrond van de stelling.
Inhoudelijk zijn er kritische kanttekeningen geplaatst. En die vormen een mooie basis om wat dieper in te gaan op het idee van ‘niet een programma, maar de generator voor dat programma schrijven’.
De meest voorkomende reactie was dat de persoon of organisatie in kwestie "al een tool gebruikt" of zelfs "een tool heeft ontwikkeld". Die reactie heb ik steeds beantwoord met een vraag; "Wat is het model waarop het tool dat u gebruikt of hebt ontwikkeld, is gebaseerd?" Op deze vraag heb ik in geen van de gevallen een antwoord gekregen. De reactie was overwegend "Wat bedoelt u?". De uitleg van de vraag leidde altijd tot een intensive discussie waarin de essentie uiteindelijk verloren ging. Maar het werd mij duidelijk dat in alle tools die besproken zijn, een impliciet model wordt gehanteerd.
In veel reacties werd verwezen naar UML (unified modeling language). Maar ook daaruit blijkt dat men niet precies weet waar men mee bezig is. Uml is namelijk geen model, maar een taal waarin modellen ontwikkeld kunnen worden. Vragen naar het model leverde opnieuw vragende gezichten op. Dat is echt zonde, want dat reduceert UML tot een veredelde programmeeromgeving.
Uml heeft een syntactisch karakter. Dat legt een beperking op aan de uitdrukkingskracht. Ondanks de abstracte toevoegingen kan de syntaxis uiteindelijk te complex worden. Dus laat men de abstracte toevoegingen zitten, en is de taal per definitie beperkt.
Wij kiezen liever voor een abstract wiskundig domein, dat van gerichte semantische grafen om modellen vast te leggen. Door het abstracte karakter zijn er in theorie geen semantische beperkingen. De implementatie omvat een abstracte machine met instructies om het model te construeren. Graag wil men daar een syntactische ‘suiker’ op hebben om het model makkelijker te kunnen beschrijven, maar men is daar niet van afhankelijk. In onze huidige implementatie zijn syntaxis en abstracte machine gescheiden. De bouw van ‘diagramCompilerCompilers’ moet de scheiding overbruggen.
Om een generator te schrijven voor een applicatie moet het model van die applicatie expliciet zijn. Voor een informatiesysteem moet men bijvoorbeeld weten wat in essentie een ‘functie’ is. Zolang blijkt dat ontwikkelaars en gebruikers van 4gl-tools geen kennis hebben van het gehanteerde model, zal het niet mogelijk zijn om volgens het voorgestelde paradigma te ontwikkelen. Denk dus na wat uw model van een applicatie is.
Rob J Ronda, Boxmeer