Knippen en plakken met software

Programmeertalen zitten zo in elkaar dat computers ze begrijpen. Maar eigenlijk zouden ze vooral moeten aansluiten bij de menselijke manier van denken. Daarover gaat het onderzoek van MODSE.

‘Neem bijvoorbeeld een systeem voor hypotheekoffertes’, legt prof.dr. Arie van Deursen van de TU Delft uit. ‘De marketingafdeling verzint voortdurend nieuwe vormen van hypotheken. Dat betekent dat de software van hypotheekadviseurs telkens aangepast moet worden. Daarvoor moeten de programmeurs diep in de code duiken, want de programmeertaal hanteert heel andere begrippen dan de marketeers. De omschrijving van de nieuwe hypotheek past vaak op twee A4-tjes, maar het vertalen daarvan naar code is een lastige stap.’

‘Het zou handiger zijn als je kon programmeren in termen die bekend zijn uit de hypotheekwereld’, gaat Van Deursen verder. ‘Dat scheelt veel werk. Bovendien zou dan het verband tussen de verschillende hypotheken duidelijk zijn. Als de definitie van een bepaald begrip verandert, kun je het op één plek wijzigen. Nu moet je bij elke afzonderlijke hypotheek in de code duiken om te kijken hoe het begrip uitgewerkt is.’

Het doel van MODSE (Model-driven software evolution) is te bestuderen hoe je gebruiksvriendelijke programmeertalen snel kunt maken. Want als je voor elk vakgebied een aparte taal nodig hebt, kost dat natuurlijk ook veel tijd en geld. Daarvoor moeten verschillende barrières geslecht worden.

‘Ten eerste moet je natuurlijk onderzoeken welke termen binnen een bepaald vakgebied bruikbaar zijn om in een programmeertaal te stoppen’, vertelt Van Deursen. ‘Sterker nog, je wilt het zelfs zo doen dat je de taal een beetje kunt aanpassen aan ontwikkelingen in het vakgebied. Maar je oude programma’s moeten dan nog wel werken. Dus moet je niet alleen de wijziging doorvoeren, maar tegelijk een procedure ontwikkelen hoe je de oude versie van de taal omzet naar de nieuwe.’

Een tweede probleem is sterk technisch van aard. Voor programmeertalen geldt: hoe dichter ze op de machine zitten, hoe makkelijker de vertaling van het programma naar machinecode. Als je een taal maakt die dichter op de gebruiker zit, wordt de vertaalslag naar machinecode groter. De speciale vertaalsoftware is dan complexer, met een groter risico dat er fouten inzitten. Dat mag uiteraard niet, want een fout in de vertaler betekent dat er fouten in alle machinecode kunnen zitten, terwijl het programma correct is. Het valt te vergelijken met een tolk die zijn talen niet goed kent. Dat kan heel veel verwarring geven.

‘Zo’n programmeertaal op hoog niveau is niet alleen prettiger voor de gebruiker’, vertelt Van Deursen. ‘Als je zeker weet dat de vertaalsoftware klopt, krijg je ook betere programma’s. Immers, als je minder programmaregels hebt, is de kans op fouten kleiner. Minder lange programma’s maakt programmeurs bovendien productiever: ze lossen hetzelfde probleem in minder tijd op. Dat is ook belangrijk, omdat er een tekort is aan programmeurs.’

Knippen en plakken

Binnen MODSE wordt niet alleen gekeken naar manieren om overzichtelijke programma’s te schrijven, maar ook naar manieren om bestaande programma’s beter te ordenen. ‘Veel software is in de loop der jaren voortdurend aangepast’, vertelt Van Deursen. ‘Daardoor is het een rommeltje geworden. Wij analyseren de wirwar van stukken code en kijken of het beter kan.’

Hij laat een grafiek zien van het systeem bij een fabrikant van chipmachines. Gekleurde streepjes geven aan dat sommige functies op allerlei plekken verspreid in de code zitten. Die fabrikant had de grafieken gemaakt om te kijken of het mogelijk was de programma’s in stukjes te knippen en vervolgens in een logische volgorde weer aan elkaar te plakken. Deze aanpak, die ‘weaving’ heet, maakt het bij een volgende onderhoudsbeurt eenvoudiger om te bepalen waar je de code moet aanpassen.

Van Deursen en de zijnen bekijken hoe je weaving breder kunt inzetten. Ook hier geldt: eerst proberen een heel algemeen model te maken hoe het werkt. Dat model moet zo in elkaar zitten dat je er heel snel varianten van kunt maken voor verschillende toepassingen.

In de toekomst gebruiken hypotheekbanken en chipmachinefabrikanten ieder hun eigen programmeertalen. Maar daaraan ligt hetzelfde model ten grondslag, zodat ze snel en flexibel wijzigingen kunnen aanbrengen, zonder dat een doolhof van programmacode ontstaat.

×