Onderhoudsprogrammeurs zijn te veel tijd kwijt met het analyseren en aanpassen van verouderde broncode. Het zou beter zijn dit proces te automatiseren met behulp van tools.
Dat stelt Niels Veerman, die maandag 15 januari promoveerde aan de Vrije Universiteit op dit onderwerp. Softwaresystemen zijn constant onderhevig aan veranderingen en worden daardoor steeds complexer. Daarbij gaat het niet alleen om zoiets als het jaar 2000-probleem of de invoering van de euro, maar ook een nieuw besturingssysteem, een databasemigratie, veranderende gebruikerswensen of nieuwe wetgeving kunnen aanleiding zijn voor het moeten doorvoeren van structurele aanpassingen. Operationele systemen stammen echter vaak nog uit de jaren ’70 en ’80. Ze zijn geschreven in klassieke programmeertalen, waarvan Cobol de belangrijkste is. Analyse van deze programma’s is lastig, omdat objectoriëntatie, procedures en lokale variabelen er nog niet in gebruikt worden. Onderhoudsprogrammeurs zijn daardoor veel tijd kwijt met het leren begrijpen van legacysystemen. Andere factoren die de analyse bemoeilijken zijn dat gegevens vaak zijn opgeslagen in verouderde databanken, dat een ‘intelligente’ programmeeromgeving ontbreekt en dat het over het algemeen om enorme hoeveelheden code gaat. Het doorvoeren van aanpassingen kost daardoor veel tijd. Veerman in zijn proefschrift: “Uit diverse studies blijkt dat meer dan de helft van de kosten van software gemaakt wordt na oplevering. Van deze kosten wordt weer de helft besteed aan het analyseren van de code, een kwart aan testen en slechts 5 procent aan het doorvoeren van de eigenlijke wijziging.”
Het analyseren en aanpassen van legacysystemen gebeurt nu nog grotendeels handmatig.
Die aanpak is volgens Veerman echter foutgevoelig, inefficiënt en inflexibel. Het zou beter zijn om analyses en aanpassingen te automatiseren met gereedschappen. Veerman: “Er bestaan commerciële tools voor algemene aanpassingen, zoals een veel voorkomende migratie. Omdat organisaties vaak echter heel specifieke aanpassingen moeten doen, loont het de moeite om tools op maat te maken. Daarvoor bestaan ontwikkelomgevingen die zijn gebaseerd op generieke taaltechnologie.” Daar-mee kan de broncode worden ontleed aan de hand van een grammatica die de betreffende taal beschrijft. Het resultaat is een ‘parse tree’, een boomstructuur waarin de elementen van de code gerepresenteerd zijn in de structuur zoals ze in de code voorkomen. Met behulp van dezelfde ontwikkelomgeving kunnen transformatieregels worden geschreven, die delen van de broncode aanpassen. Veerman schets in zijn proefschrift de voordelen van deze benadering: “De ontwikkeling en afstemming van de ‘tooling’ kan enige tijd in beslag nemen. Gedurende deze periode kan het reguliere onderhoud gewoon doorgaan. Op het moment dat de ‘tooling’ beschikbaar is wordt de meest recente versie van de broncode aangeleverd. Deze wordt vervolgens automatisch aangepast en binnen korte tijd opgeleverd, zodat het reguliere onderhoud niet ‘bevroren’ hoeft te worden en eventuele versieproblematiek wordt vermeden.”
OS-software voor tooling
Op www.meta-environment.org vind je een open source ontwikkelomgeving op basis van generieke taaltechnologie. Het volledige promotieonderzoek van Niels Veerman kun je nalezen op www.cs.vu.nl/~nveerman/research/thesis.pdf.