De grote softwarefabrikanten Sun en Microsoft werken beiden aan methoden om programmeercode zoveel mogelijk te vrijwaren van fouten. Dat wordt tijd; bugs zijn duur. Een Amerikaans onderzoek schatte in 2002 de schade dat jaar op zo’n 0,6 procent van het bruto nationaal product; 59,5 miljard dollar. Vertaalt naar het Nederlandse bnp is dat ruim twee miljard euro.
De grootste knallen kennen we allemaal. De eerste ruimteraket Ariane 5 ontploft op 4 juni 1996, 30 seconden na de start in Frans Guyana. Eerst valt de reserveboordcomputer uit, vijf honderdste seconden later de boordcomputer. De bug: de variabele, te maken met de snelheid in horizontale richting, overschreed een maximumwaarde, waardoor de computers vastliepen.
Korean Air vlucht 801, een Boeing 747-300, stort op 6 augustus 1997 neer op het eiland Guam, nog geen vijf kilometer voor de landingsbaan. Het ongeluk kost aan 228 mensen het leven. De Amerikaanse luchtvaartautoriteiten wijten het aan software-fouten, die voorkomen in veel van de in de VS gebruikte altimeter-software.
Stuiter-landing
Veel softwarefouten worden gerepareerd voordat er echt grote ongelukken gebeuren. De Mars Pathfinder is beroemd geworden doordat de beelden van het aan boord meegedragen karretje Sojourner via internet werden uitgezonden. Enkele dagen na de succesvolle stuiter-landing op 4 juli 1997 herstart de Pathfinder-boordcomputer zichzelf herhaaldelijk, waarbij steeds gegevens verloren gaan.
IBM gooit er geld tegenaan Ook IBM hoort tot het groepje softwarefabrikanten dat zich bezig houdt met programmeer-onderzoek. Met veertig miljoen dollar subsidiëerde de ict-reus in 2001 ‘Eclipse’, een programmeurs collectief dat een open-source ide wil ontwikkelen. "Het is een ide, geschikt voor van alles en niets in het bijzonder", introduceert de groep zichzelf. De ide en alle eraan gerelateerde toevoegingen worden ontwikkeld door gebruikersgroepen in landen zoals Frankrijk, Duitsland en de VS. Ze worden bijgestaan door Universitaire onderzoekers in Denemarken, Frankrijk, Canada en de VS. "Eclipse wil gebruik maken van de populariteit van Java als programmeertaal." Naast html (voor websites), ondersteunt de ide daarom code-ontwikkeling in Java, C, Java Server Pages, Enterprise Java Beans, Xml en Gif. Programmeurs kunnen hun eigen voorkeuren ontwikkelen en die aan de ide vasthaken. |
In 2000 roept de Amerikaanse rem-fabrikant Bendix Corp zo’n 300.000 schoolbussen en vrachtwagens terug. Een beschadigde data-kabel stuurt bij zestien bussen en vrachtwagens onjuiste gegevens naar de rem-computer. Is de snelheid lager dan 30 kilometer per uur, dan schakelt de computer de remmen vier seconden lang uit.
De meeste bugs zullen ons ontgaan. Bedrijven zijn over het algemeen niet scheutig met mededelingen over gekraakte websites en gestolen bedrijfsgegevens. Toch gebeuren ze geregeld. Tenslotte zijn er meer dan zeventigduizend virussen in omloop. De meeste systeembeheerders herkennen in de log-bestanden inmiddels blindelings de melding van de Slammer-worm.
"Genoeg!" zo zullen de topmannen bij Microsoft en Sun geroepen hebben.
Prototype
Wanneer komt er nu eindelijk eens software die meteen de eerste keer goed werkt?
Voorlopig nog niet, suggereert Sun Labs onderzoeker Michael Van De Vanter (waren zijn voorouders 150 jaar geleden hier gebleven, dan heette hij nu Van Deventer – gh). "We zijn aan het experimenteren met een prototype. Daar zijn geen product-plannen voor en die komen er in de nabije toekomst ook niet." Bij Sun Microsystems heet het project Jackpot. Het heeft als doel programmeurs meer informatie te verstrekken over de broncode en de manier te verbeteren waarop geïntegreerde ontwikkelomgevingen (integrated development environments, ide’s) met broncode omgaan.
Een van zijn collega-onderzoekers is de Canadese software-guru James Gossling. Hij is een van de bedenkers van de programmeertaal Java. Gossling reputatie dateert van nog langer geleden. Hij werkte begin jaren tachtig ook aan de teksteditor/ontwikkeltool Emacs, een nog immer populaire voorloper van ide’s. !ang1033. Deze teksteditor stond model voor veel van de hedendaagse ontwikkelgereedschappen.
De eerste serie Jackpot-experimenten richtte zich daarom op het verbeteren van de bestaande ide’s. Java en Emacs verklaren een beetje waarom Jackpot-experimenten zich in eerste instantie beperkten tot bijdragen aan open source Java-ide Netbeans, waarop het Sun Java-gereedschap Studio voortborduurt. Die serie proeven is inmiddels beëindigd. De onderzoekers richten zich nu op een compleet nieuwe omgeving.
Schuilplaats voor bugs
Van De Venter: "We proberen gereedschappen te bouwen die ontwikkelaars helpen met broncode. We doen proeven met een technologie waarvan we hopen dat die bruikbaar is op een aantal synergetische manieren." Een alternatieve manier van presenteren kan al helpen, aldus de onderzoeker. Dat helpt wellicht structurele gebreken te zien.
Een andere mogelijkheid die zijn onderzoeksgroep uitprobeert, is het presenteren aan de programmeur van analyse-resultaten over de code. "Onze ide biedt aan de code hier en daar opnieuw te bouwen, refactoring is daar een voorbeeld van."
Het team denkt ook aan het inbouwen van een metertje dat aangeeft hoe complex de code is, zo beschrijft het tijdschrift Technology Review van april. "De ide ziet dat het programma te moeilijk wordt, een schuilplaats voor bugs wordt. De programmeur wordt hiervoor gewaarschuwd."
De ide gaat verder dan een met een goede fout-opsporing (debugger) die wijst op een ontbrekende punt-komma, of de cursor laat knipperen op de plaats waar een / vergeten is. Van De Vanter vergelijkt in Technology Review het schrijven van code met spreektaal. "We willen iets dat let op slecht taalgebruik."
Het klinkt veelbelovend. Van De Vanter waarschuwt: "We zijn een heel klein groepje, dat werkt aan zeer experimentele code waarvan we de mogelijk toepassing of de zelfs maar de kans op slagen ervan niet goed begrijpen."
Blauwe schermen
Concurrent Microsoft pakt het iets anders aan. De softwaregigant uit Redmond moet haast routinematig pakketten met lapmiddelen uitgeven. Veiligheid is er daarom inmiddels bijna een neurose. Met als titel ‘Trustworthy Computing’ pastte het bedrijf vorig jaar zelfs de bedrijfsstructuur aan, om te zorgen dat veiligheid een eigenschap wordt van alle producten.
Microsofts structurele aanpak voor het voorkomen van programmeerfouten begon al in 1999 met de aankoop voor zestig miljoen dollar van softwarebedrijf Intrinsa, de maker van bug-opspoorgereedschap Prefix. Met dat gereedschap speurt Microsoft naar fouten in het Windows besturingssysteem, zo stelt Microsoft-softwareonderzoeker Jim Larus in hetzelfde Technology Review. Prefix zeeft door grote hoeveelheden code op zoek naar bekende patronen die overeenkomen met een lijst van algemeen voorkomende foutieve programmaregels. Het hielp volgens Larus al met het oplossen van duizenden vergissingen in Windows en andere producten.
De nieuwe ide moet ook de manier verbeteren waarop drivers worden gemaakt. In een nog te publiceren versie van ontwikkelomgeving Studio.Net worden deze drivers veel beter getest. Daarmee hoopt het bedrijf een andere veelvoorkomende ergernis van gebruikers te bestrijden, die van de beruchte blauwe schermen. Van deze ernstige softwarefouten, die meestal leiden tot het vastlopen van het besturingssysteem, wordt 15 procent veroorzaakt door softwaredrivers, zo schat Microsoft. Het bedrijf heeft uiteraard allang een certificeringsprogramma voor deze ‘software voor hardware’, maar niet alle fabrikanten doen daar aan mee.
Prefix heeft enkele nadelen. Het is om te beginnen erg langzaam. Belangrijker gebrek is echter dat het geen nieuwe soorten van programmeer-fouten kan opsporen: de huidige lijst van fouten die het opspoort zit vastgebakken in het programma. Microsoft is dan ook bezig met een nieuwe versie van Prefix. Net als bij Sun presenteert dit de programmeur abstracte gegevens over de code. Het moet andere programmeurs daarnaast in staat stellen om kleine stukjes code aan te laten haken, waarmee ze typische fouten in hun eigen werk kunnen opsporen. Volgens Larus overweegt Microsoft nog of ze Prefix ter beschikking zal stellen van andere softwarefabrikanten.
Buffer-overflow
Van alle veiligheidsfouten die Microsoft meldt wordt naar schatting een kwart veroorzaakt door buffer-overflows. Zo’n fout ontstaat wanneer een programma probeert data te schrijven in een deel van het geheugen dat daar niet voor gereserveerd is. Deze lekken met opzet veroorzaken, is een van de manieren waarop buitenstaanders toegang kunnen proberen te krijgen tot een computer of een netwerk.
Bill Gates droeg in januari vorig jaar zijn programmeurs op zich te concentreren op veiligheid in plaats van nieuwe mogelijkheden. Sommige productielijnen werden tijdelijk stopgezet, zodat de programmeurs zich konden scholen in veiligheidsmethodieken. Dat kostte het bedrijf miljoenen.
De studiepauze was echter nuttig: halverwege 2002 stelde Gates dat buffer overflows als fout-soort zo goed als uitgesloten konden worden. Hij deed die uitspraak op de Research Faculty Summit in Redmond, waar zo’n driehonderd universitaire onderzoekers op afkwamen. "Was dat het enige veiligheidsrisico dat we lopen, waren we nu in topvorm."
Project Slam
Thomas Ball en Siram Rajamani begonnen in 1999 samen aan het zogenoemde project Slam. Hun onderzoek naar methoden waarop softwarefouten het beste kunnen worden opgespoord resulteerde inmiddels wel tot een concreet resultaat. In september vorig jaar is hun aanpak ingebouwd in de ontwikkeling van besturingssysteem Windows.
Net als bij Sun moet ook hun project leiden tot een fundamenteel andere manier van het nakijken van programmaregels. Met hun methodiek is voorlopig alleen nog de manier te verbeteren waarop device drivers geschreven worden in programmataal C.
Slam construeert onder meer abstracties van een te testen C-programma. Dat model wordt middels andere modellen nagekeken. Daarnaast analyseert Slam ook de code en laat het er theorie op los om de techniek te testen.
De twee presenteerden hun aanpak in maart vorig jaar aan Bill Gates zelf. Ze lieten de Slam-methode vorig jaar los op meer dan honderd drivers; in een van hun demonstraties lieten ze zien hoe met hun methode de code voor een floppy-driver fors kon worden ingeperkt. Volgens Jim Larus sluit Slam programmeerfouten uit. "Vindt Slam geen fouten, dan zitten ze er niet in."< BR>