spacer.png, 0 kB
Volg Cursor via Twitter Volg Cursor via Facebook Cursor RSS feed
spacer.png, 0 kB

spacer.png, 0 kB


“Philips heeft de High Tech Campus (HTC) opgericht om innovatie te stimuleren“
Cursor in PDF formaatCursor als PDF
PrintE-mail Tweet dit artikel Deel dit artikel op Facebook
Het ontsluieren van de diepere betekenis in oude software
20 september 2007 - Software-programma’s zijn zelden 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 softwaregebruiker hier een vinger achter te krijgen. Promovendus Lucian Voinea ontwikkelde voor het eerst een methode om de ontstaansgeschiedenis, en daarmee deels de kwaliteit, van een softwareprogramma visueel inzichtelijk te presenteren. Hij verdedigt op maandag 1 oktober zijn proefschrift ‘Software Evolution Visualization’.

“Software evolueert soms met rare sprongen”, zegt Voinea. “Soms neemt een programmeur een ontwerpbeslissing die op het moment klein lijkt, maar die in de loop der tijd een flinke impact heeft op de stabiliteit van het hele programma.” Het beroemdste voorbeeld hiervan is de millenniumbug. Om in de begintijd van de softwareprogrammatuur ruimte te besparen, die toen ontzettend duur was, werden de jaartallen in slechts twee cijfers weergegeven. Om de overgang naar het jaar 2000 toch vlekkeloos te laten verlopen, was een wereldwijde reparatie-inspanning noodzakelijk.
“Met dit simpele voorbeeld kun je zien dat veel problemen in software vaak niet het gevolg zijn van stomme fouten, maar van bewust gemaakte keuzes. Met mijn methode kun je erachter komen wat de redenen van de programmeurs indertijd waren voor het maken van ontwerpcodes.” Een voorbeeld van 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 nieuwe programmatuur ontstaan, waarbij niet altijd meer te achterhalen is waarom ontwerpbeslissingen in het verleden genomen zijn. Voinea: “Een programmeur kan bijvoorbeeld besloten hebben om twee stukken software te splitsen. Wellicht omdat dat beter is voor de stabiliteit van het programma. Maar dat weet je nu niet. Een programmeur die in een volgende versie die stukken software bij elkaar zou willen zetten, kan dan onbewust een flinke fout begaan.”
Het maken van grote pakketten software die foutloos werken, is in de praktijk dan ook een zeer moeilijke opgave. Steeds vaker zijn softwareproblemen de oorzaak van treinvertragingen, elektriciteitsstoringen of internetuitval. Zo werd in juni van dit jaar bekend dat mislukte ict-projecten de overheid in de afgelopen vijf jaar maar liefst honderd miljoen euro hebben gekost. Elke manier om de kwaliteit van het ontwerp en het onderhoud van software te verbeteren, is dan ook meer dan welkom.
“Een bekende manier om te snappen hoe software in elkaar zit, is ‘reverse engineering’. Hierbij maak je een snapshot van het huidige systeem, en probeer je te begrijpen hoe alle componenten op elkaar inwerken. Maar het is slechts een plaatje wat je krijgt. Je kunt niet achterhalen wat de overwegingen zijn geweest waarom de software zo in elkaar zit, of hoe de software is geëvolueerd. Want daar kun je ook erg relevante informatie uit halen.”
Voinea heeft in zijn onderzoek een speciale tool ontwikkeld, de Visual Code Navigator (VCN), waarmee hij op basis van het gehele softwarearchief veel informatie kan opduiken. Zo kan hij bijvoorbeeld op het niveau van coderegels 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 kwesties die bij de ontwikkeling van de software hebben gespeeld.”
Ook op het niveau van afzonderlijke files, 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 één persoon. Stel dat deze ziek wordt, of opeens een andere baan kiest, dan hang je en kun je soms voor een groot deel opnieuw beginnen.” In de softwarepakketten die Voinea analyseerde voor zijn proefschrift kwam hij dat probleem vooral tegen bij open source-software. “Dat zijn vooral in het begin hobbyprojecten waarbij een goeroe het in zijn eentje van de grond heeft getrokken en het voor een groot deel blijft doen. De inbreng van anderen zijn, al klinkt het misschien een beetje tegenstrijdig bij open source-software, relatief beperkt. Bij commerciële pakketten zie je een meer gelijke verdeling.” Voinea moet lachen bij zijn verhaal over een softwareproject bij zijn faculteit Wiskunde & Informatica. Hier had een tijdelijke kracht zich praktisch onmisbaar gemaakt door een heel groot deel van het programmeerwerk voor zijn rekening te nemen. Er restte de faculteit niets anders dan deze persoon na afloop van zijn tijdelijke dienstverband een verlengd contract aan te bieden. “Niet dat dat een groot probleem was, want hij kon erg goed programmeren”, aldus Voinea.

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. Solide softwareprogrammatuur met weinig fouten zou idealiter hierbij een afvlakkende curve moeten vertonen, waarbij je kunt zien dat de laatste periode vrijwel uitsluitend besteed is aan het testen en verwijderen van ‘bugs’ in de software.
Voinea heeft bij zijn ontwerp de gebruiker van de software altijd in zijn vizier gehouden. “Deze moet in een oogopslag kunnen zien wat de kwaliteit van de software is. Dus inzicht in de mogelijke afhankelijkheid van een dominante programmeur is cruciaal, net als een bewijs dat er veel energie en tijd heeft gezeten in het testen van de software. Het ergste wat je kan overkomen, is dat je software krijgt aangeleverd waarbij tot op de laatste dag nog nieuwe regels zijn toegevoegd.”

Ondernemerschap
Voinea realiseert zich dat hij een interessante tool heeft ontwikkeld. “Misschien begin ik hiermee wel mijn eigen start-up”, zegt hij verwachtingsvol. “Want dit is een tool die je op praktisch alle bestaande software kunt loslaten, mits je volledige inzage hebt in de ontstaansgeschiedenis. Dus alle regels vanaf versie 1.0. Vanuit een aantal partijen is al interesse getoond. Zo ben ik met een van de ontwikkelaars van KDE, een desktopomgeving van Linux, in gesprek. Hij wil de Visual Code Navigator misschien inzetten in hun kwaliteitssysteem, omdat hij erg geïnteresseerd is in een manier om continu de kwaliteit van de software te monitoren.”
Dus, wie weet, misschien dat Voinea binnenkort de stap zet naar het ondernemerschap. Hij merkt wel dat maar weinig mensen echt enthousiast reageren als hij zijn plannen vertelt. “Ik krijg vaak te horen dat het een te groot risico is, dat ik teveel bureaucratie ga krijgen of dat ik beter eerst een baan bij een groter bedrijf kan nemen. De sfeer in Nederland is niet echt ondernemers-minded, in tegenstelling tot in Roemenië, waar ik vandaan kom. Daar beginnen veel meer studenten na hun studie te pionieren. Gelukkig kom ik af en toe ook mensen tegen die me wel enthousiasmeren. En ik heb ook al een gesprek met het TU/e Innovation Lab gehad, dat helpt ook.”/.

Wie kennis wil maken met de tool die Voinea heeft ontwikkeld, kan deze downloaden op www.win.tue.nl/~lvoinea/VCN.html.

Software/Xavier Theunissen
Foto/Bart van Overbeeke