Technische Universiteit Eindhoven

20-09-2007: Het ontsluieren van de diepere betekenis in oude software

Onderzoek Lucian Voinea aan TU Eindhoven

Softwareprogramma's zijn niet altijd even foutloos. Afhankelijk van de samenwerking tussen verschillende programmeurs, de complexiteit van de software en de duur van de testperiode zal een programma sneller of minder snel crashen. Vaak is het echter niet mogelijk om als gebruiker van software hier een vinger achter te krijgen. TU/e-onderzoeker Lucian Voinea ontwikkelde voor het eerst een methode om de ontstaansgeschiedenis, en daarmee deels de kwaliteit, van een software-programma visueel inzichtelijk te presenteren. Hij verdedigt maandag 1 oktober zijn proefschrift Software Evolution Visualization aan de Technische Universiteit Eindhoven (TU/e).

Millenniumbug
Software evolueert soms met rare sprongen. Soms neemt een programmeur een bepaalde ontwerpbeslissing die op het moment klein lijkt, maar die in de loop der tijd een flinke impact heeft op de stabiliteit van een geheel programma, aldus promovendus Lucian Voinea. Het beroemdste voorbeeld is de millennium-bug. Om in de begintijd van de softwareprogrammatuur ruimte te besparen (die toen ontzettend duur was) werden de jaartallen in slechts 2 cijfers weergegeven. Om de overgang naar 2000 toch vlekkeloos te laten verlopen was een wereldwijde reparatie-inspanning noodzakelijk.
Met dit simpel voorbeeld kan je zien dat veel problemen in software niet het gevolg zijn van stomme fouten, maar vaak van bewust gemaakte keuzes, aldus Lucian Voinea. Met mijn methode kan je er achter komen wat de redenen van de programmeurs indertijd waren voor het maken van bepaalde ontwerpcodes.
Een voorbeeld van oude software uit het verre verleden is de vele 'onleesbare' antieke software bij bijvoorbeeld banken. Bovenop de eerste oude regels-code is vaak een lappendeken aan allerlei nieuwe programmatuur ontstaan, waarbij niet altijd meer te achterhalen is waarom ontwerpbeslissingen in het verleden ooit genomen zijn.

Visual Code Navigator
Voinea heeft in zijn onderzoek een speciale tool ontwikkeld, de Visual Code Navigator (VCN), waarmee hij op basis van het gehele software-archief veel informatie kan opduiken. Zo kan hij bijvoorbeeld op het niveau van coderegels heel goed visueel in kaart brengen welke code een bepaalde programmeur heeft geschreven, of wat hij precies heeft veranderd. Dit is vooral handig voor nieuwkomers in een project. Zij kunnen hierdoor snel ingewerkt raken in het team, en een goed overzicht krijgen van de voorgaande issues die bij de ontwikkeling van de software hebben gespeeld. Ook op het niveau van afzonderlijke bestanden, of op het niveau van het gehele systeem kan Voinea nieuwe informatie opdiepen. Wat je als projectmanager van het ontwikkelen van nieuwe software wilt voorkomen, is dat je teveel afhankelijk wordt van een persoon. Stel dat deze ziek wordt, of opeens een andere baan kiest, dan hang je en kan je soms voor een groot deel opnieuw beginnen.

Programmeerhistorie
Voinea kan met zijn tool nog andere nieuwe informatie uit de programmeerhistorie halen. Zo weet hij de groei van het aantal coderegels in de loop van de tijd in kaart te brengen, evenals de groei van de complexiteit van de software. Dat is vaak een oplopende lijn, zoals ook te zien in de figuur. Solide softwareprogrammatuur met weinig fouten zou idealiter hierbij een afvlakkende curve moeten vertonen, waarbij je kan zien dat de laatste periode vrijwel uitsluitend besteed is aan het testen en verwijderen van 'bugs' in de software.