Wim_Couwenberg_03

Wim Couwenberg 

16 December 2008

Op de opiniepagina van NRC Handelsblad van 14 oktober stond een bijdrage waarin de auteur zijn beklag deed over de geringe aandacht voor alfawetenschappen terwijl er toch zoveel nuttigs uit is voortgekomen. Hij verwees onder meer naar de Indiase taalkundige Panini uit de vierde eeuw voor Christus, die onderzoek deed dat tot onze moderne computertalen zou hebben geleid. De schrijver doelt hier denk ik op het feit dat sommigen het Backus-Naur-formalisme om een grammatica te noteren ook wel het Panini-Backus-formalisme noemen. Panini en Backus zouden een vergelijkbare formele notatie hebben ontwikkeld.

Toch kan ik de ontwikkelaar van Fortran moeilijk als een alfa zien. Dat was hij ook helemaal niet. Backus was het niet te doen om het beschrijven van iets bestaands, maar om het creëren van iets nieuws. Zijn werk heeft mede de deur geopend voor de enorme ontwikkeling van computertalen. De IEEE beschouwt de eerste Fortran-compiler terecht als een van de tien belangrijkste algoritmes van de twintigste eeuw. Zo makkelijk kunnen alfa‘s zich ons vakgebied niet toe-eigenen.

Ik had zelf nog een andere associatie bij dit verhaal: Panini staat tot Backus als een architect tot een engineer. Panini mag dan baanbrekend werk hebben verricht, er was iemand als Backus nodig om het tot bloei te brengen. Ook de rol van een architect is in de dagelijkse praktijk vaak niet zichtbaar genoeg en zijn invloed wordt niet altijd herkend.

Ik beweer daarmee niet dat een architect (of architectuur) overbodig is. Iedere ontwikkelaar beseft in meer of mindere mate dat iets van structuur, een groter plan, noodzakelijk is voor een kwaliteitsproduct. De relatie tussen architect en ontwikkelaar handen en voeten geven, is alleen niet zo makkelijk. Gezien de leeftijd van het vak en de ruime aandacht ervoor de laatste jaren zou je toch echt meer concreets mogen verwachten. De voortgang steekt schril af tegen de fenomenale ontwikkelingen op software- en hardwarevlak. Er is geen wet van Moore voor architectuur.

De momenten waarop architectuur en ontwikkeling samengaan, behoren tot de mooiste in een project. Beide disciplines zetten samen complexiteit om in haalbaarheid. De begrippen die in dat proces een rol spelen, klinken vertrouwd: rollen, modellen, standaarden, modules, componenten, interfaces. De kunst is om deze begrippen samen zo ver in te durven kleuren dat ze in het eindproduct nog zijn aan te wijzen. Juist op dit punt zijn architecten geneigd om het bij een betwistbaar document te laten. We geloven graag dat UML 2.0 een wiskundig formele taal is, maar we gebruiken het toch lekker als een veredeld whiteboard. Tussen te abstract en te (taal)specifiek gaapt een ongemakkelijk gat.

Het moet gezegd dat ik niet in de (hard-)realtimehoek zit, waar een formelere werkwijze wel tot stand is gebracht. Voor toestandsmachines is goede tooling beschikbaar en ze worden voldoende begrepen om als een solide gemeenschappelijk model te dienen. Je zou willen dat alle domeinen zich zo correct en begrijpelijk laten beschrijven.

Rondom mijn eigen werkplek hebben we de afgelopen jaren hard gewerkt aan een vergaande formalisering van het gebruik van interfaces. Het is een ideaal middel gebleken om vanuit de bestaande kleurrijke ontwikkeltradities samen een beter product te kunnen bouwen. Dat dat ook in 2008 nog niet vanzelf gaat, is een verhaal op zich.

Momenteel proberen we de lijn van Panini en Backus voort te zetten. Aan onze interfaces ontbreekt namelijk nog een formele grammatica. Modules kunnen met elkaar babbelen, maar wat is een zinnige conversatie? Verschillen in opvatting leiden tot frustratie en tijdverspilling. Het moet vanzelfsprekend worden dat we bij iedere interface ook dat aspect meenemen. Het zal architecten helpen om preciezer te zijn en ontwikkelaars om zich aan elkaars afspraken te houden. Opnieuw lijkt voor dit onderwerp de theorie ver verwijderd van de praktijk. We zullen weer uitvindingen moeten doen. Wil de echte Backus nu opstaan?