Sneller en goedkoper aanpassen van broncode met nieuwe taaltechnologie

Broncode van software kan sneller en goedkoper worden aangepast aan de eisen van deze tijd door het gebruik van 'generieke taaltechnologie'. Deze methode kan automatisch taken uitvoeren die onderhoudsprogrammeurs tot nu toe met de hand moesten doen. Jurgen Vinju, onderzoeker van het Centrum voor Wiskunde en Informatica (CWI) in Amsterdam, promoveert op dit onderwerp op 15 november aan de Universiteit van Amsterdam, op het proefschrift 'Analysis and Transformation of Source Code by Parsing and Rewriting'.

Publicatiedatum
3 november 2005

Broncode van software kan sneller en goedkoper worden aangepast aan de eisen van deze tijd door het gebruik van 'generieke taaltechnologie'. Deze methode kan automatisch taken uitvoeren die onderhoudsprogrammeurs tot nu toe met de hand moesten doen. Jurgen Vinju, onderzoeker van het Centrum voor Wiskunde en Informatica (CWI) in Amsterdam, promoveert op dit onderwerp op 15 november aan de Universiteit van Amsterdam, op het proefschrift 'Analysis and Transformation of Source Code by Parsing and Rewriting'.

Miljoenen regels
Bedrijven investeren graag in het onderhoud van de broncode van bestaande software, omdat dit goedkoper is dan het ontwerpen van nieuwe software. Sommige softwarecode wordt al veertig jaar gebruikt. Het is belangrijk dat deze code vlekkeloos blijft werken en tegelijkertijd leesbaar blijft voor onderhoudsprogrammeurs. Banken hebben bijvoorbeeld miljoenen regels code. Het onderhoud daarvan is duur aan menskracht en het werk is saai. Een deel van dit onderhoudswerk kan nu automatisch gedaan worden. Dit vereist een goed inzicht in de structuur van het programma.

Renovatie
Vinju baseerde zijn systeem op de technieken van ontleden en 'termherschrijven' met de programmeertaal ASF+SDF, die gebruikt wordt in de softwarerenovatie. Hij onderzocht ook hoe je de automatisering zo beknopt en begrijpelijk mogelijk opschrijft. Een programmeertaal zoals Java heeft honderden taalconstructies waarvan er maar een paar gebruikt worden tijdens het uitvoeren van specifiek automatisch onderhoud. Eerdere systemen moesten met alle constructies rekening houden. Analyse en aanpassing kunnen nu beknopter worden gedefinieerd. Het resultaat van Vinju's onderzoek is een verbeterde versie van ASF+DSF.

Kwaliteit
Tot nu toe was de kwaliteit van een automatisch gegenereerd eindproduct niet zo goed als dat van menselijke programmeurs. Oude systemen gooiden bijvoorbeeld al het commentaar weg, waardoor de software onleesbaar was. Ook de lay-out en uitlijning gingen verloren, doordat alles in één lange regel werd genoteerd. Voor herkenning door mensen zijn deze elementen juist heel belangrijk. Het eindproduct moet voldoen aan de eisen die mensen daaraan stellen, niet machines. Jurgen Vinju breidde daarom het bestaande onderhoudssysteem uit met het behoud van lay-out en commentaar. Dit is niet triviaal, omdat de structuur van een programma tijdens het updaten verandert, zodat niet meteen duidelijk is op welke plek oud commentaar neergezet moet worden.

Outsourcing
Doordat het nieuwe systeem kostenbesparend is, biedt het volgens Vinju mogelijkheden om onderhoud van software niet te outsourcen naar een ander bedrijf of land. "Het voordeel is dat de kennis over het systeem dan in huis blijft," zegt de onderzoeker. "Je hebt zo meer controle over het systeem doordat er minder kans op miscommunicatie is."

Financiering
Het onderzoek is deels gefinancierd door het ICT-Doorbraakproject CaLCE van SenterNovem. CaLCE is een samenwerkingsverband tussen het CWI, de Vrije Universiteit Amsterdam (VU), Getronics PinkRoccade en de Software Improvement Group. Vinju paste - in samenwerking met de VU - de nieuwe technologie toe op praktijkcases van industriële partners.