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.
Technische Universiteit Eindhoven