Softwarekwaliteit: Quo Vadis?

Zo gaan we met zijn allen naar de bliksem toe...

De kwaliteit van veel nieuwe software is bedroevend. Het lijkt erop alsof de kwaliteitscontrole de sluitpost is van veel ontwikkelaars. Dit leidt er onder andere toe dat het installeren van een nieuw - of een nieuwe versie van een bestaand - pakket met de nodige angst tegemoet wordt gezien. Zal Windows nog wel starten na installatie van de nieuwe Video for Windows (antwoord: vaak niet), waarom geeft OS/2 WebExplorer versie 1.03 meer fouten dan de voor gaande versie, Windows95 bevat een aantal valkuilen die u voor onaangename verrassingen kunnen stellen. In de overtuiging dat de race om de software-miljoenen alleen kan worden gewonnen door zo veel mogelijk nieuwe snufjes in hun produkten in te bouwen, gaan de softwareontwikkelaars en -gebruikers een onzekere toekomst tegemoet. Iedereen die wel eens met een computer (of het nu een PC, een Mac of een werkstation is maakt niet uit) werkt kent het volgende probleem. Een nieuwe versie van programma X is net geinstalleerd, en vol goede moed wordt de machine opnieuw gestart. In plaats van het vertrouwde welkomstscherm verschijnt echter een cryptische foutmelding, die de gebruiker op de hoogte stelt van het feit dat programma Y plotseling niet goed meer werkt. En dat zijn dan nog de makkelijke gevallen, waarbij de fout direct wordt opgemerkt. Lastiger wordt het al als na de installatie van een nieuw stuk software plotseling allerlei onverklaarbare fouten optreden. Een goed voorbeeld van dit laatste fenomeen is Microsoft Video for Windows, waarvan enkele maanden geleden versie 1.1e werd uitgebracht. Microsoft werd door Apple voor het gerecht gedaagd omdat zij in hun video-software onrechtmatig gebruik zouden hebben gemaakt van Apple-code. Of dat nu wel of niet zo was laten we hier in het midden, feit is in ieder geval dat de nieuwe Video for Windows-releases aanmerkelijk sneller waren dan de voorgangers. Versie 1.1e is echter een verhaal apart. Microsoft heeft deze versie op de markt gebracht als vervanger van de eerdere versies, waarbij de Apple-code vervangen is door `functioneel identieke' Microsoft-code. In de praktijk blijkt echter dat de installatie van Video for Windows 1.1e een voorheen redelijk stabiel (voor zover dat mogelijk is) Windows-systeem op de meest vreemde momenten crasht en brandt. Uiteindelijk blijkt, na lang speuren, dat er een aantal essentiële bestanden bij installatie van de laatste versie van Video for Windows van het systeem worden gehaald. Deze bestanden worden door Video for Windows 1.1e inderdaad niet meer gebruikt, en zijn in dat kader dan ook niet meer nodig. Helaas zijn diverse andere programma's ook afhankelijk van de betreffende code, en leidt het verwijderen van die bestanden tot grote problemen. Ook OS/2-gebruikers blijven niet verschoond van deze categorie problemen, waarbij wel moet worden opgemerkt dat IBM over het algemeen snel is met het uitbrengen van FixPacks (bugfixes voor een bestaande versie) en ServicePacks (updates voor software, waarin nieuwe functionaliteit is toegevoegd). Toch blijft het droevig dat na installatie van de nieuwste WebExplorer de hoeveelheid fouten aanmerkelijk toeneemt. Over de constante ellende voor DOS-gebruikers die met diverse configuratie moeten werken omdat bepaalde programma's elkaar niet lusten nog maar te zwijgen.Waar wordt dit nu eigenlijk door veroorzaakt, en - wat nog belangrijker is - wat kan er aan worden gedaan? Waarschijnlijk zijn de problemen samen te vatten op drie punten:
  • - Concurrentiestrijd leidt tot elkaar steeds sneller opvolgende versies
  • - Software wordt steeds complexer om aan de hogere eisen van de gebruikers te voldoen
  • - Het testen van software (en het beroep van softwaretester) staat niet in hoog aanzien bij de meeste ontwikkelaars (`echte mannen testen niet, dat is iets voor groentjes') Dit is natuurlijk een uiterst zorgwekkende ontwikkeling, aangezien de bruikbaarheid van een informatiesysteem staat of valt bij de betrouwbaarheid. De meeste in het oog springende voorbeelden hiervan zijn te vinden bij de programma's die `het allemaal mogelijk maken', oftewel de stuurprogramma's voor de hardware. Veel uitbreidingskaarten zijn afhankelijk van een of meerdere stuurprogramma's, zonder welke de kaart niet functioneert. De kwaliteit van deze stuurprogramma's laat echter vaak te wensen over. Vaak is het moeilijk - zo niet onmogelijk - om een nieuwe(re) versie van een stuurprogramma voor een `made in Taiwan' Enhanced IDE-kaart of videokaart te krijgen. En aangezien zonder driver de kaart verder waardeloos is, komt de onzorgvuldigheid van de ontwikkelaars de gebruiker op deze manier duur te staan. Ook de keuze voor een gerenommeerd merk biedt geen garantie dat u verschoond blijft van deze problematiek. Met name de kwaliteit van video-drivers valt in de praktijk vaak tegen.

    Niet alleen de software

    Gebruikers van oudere versies van WindowsNT, OS/2 en diverse desktop UNIX-versies op Intel Pentium-computers zijn de laatste maand opgeschrikt door de melding dat hun data op ieder willekeurig moment kan worden verminkt door een foutje in het ontwerp van de hardware. Het onderdeel van de PC dat de koppeling tussen de 16-bits IDE- en de 32-bits PCI-bus verzorgt blijkt niet goed met multitasking besturingssystemen overweg te kunnen, waardoor data-transacties verloren kunnen gaan. Het bewuste onderdeel (de RZ-1000 PCI-to-IDE bridge controller) werd toegepast op de vorige generatie Intel Pentium-moederborden (waarvan de `Plato' de meest bekende is), en heeft zo zijn weg naar honderdduizenden gebruikers gevonden. Toch is het pas sinds twee maanden algemeen bekend dat het ongelukkige ontwerp van dit component tot desastreuze gevolgen kan leiden. Een ander bekend voorbeeld is de `FDIV'-fout in de Pentium-processor (Intel heeft het nietmakkelijk de laatste tijd), die al tot menig hoofdbreker heeft geleid.

    Na ons de zondvloed

    Wat is er nu eigenlijk aan de hand? Is het allemaal zo erg als wij het hier voorstellen? Het onrustbarende antwoord op deze vraag is dat het waarschijnlijk nog erger is. We hebben het tot nu toe alleen nog maar gehad over standaard-softaantallen die over de toonbank gaan. Dat de ontwikkeling van deze produkten vaak langer duurt en meer kost dan gepland was, is bekend. De enorme concurrentieslag heeft geleid tot een grote uitbraak van de ziekte `featuritis', waarbij de ontwikkelaars steeds meer nieuwe functies (features) in hun produkten inbouwen in de hoop daarmee de gunst van de klant te winnen. Dat een groot deel van die funties door vrijwel niemand wordt gebruikt is van ondergeschikt belang, evenals het feit dat de nieuwe snufjes niet altijd even vlekkeloos werken. De tijd die de ontwikkelaars eigenlijk zouden moeten besteden aan het uitvlakken van de onvolkomenheden (en blatante missers) in hun nieuwe produkt, wordt in werkelijkheid besteed aan het uitdokteren van alweer een nieuwe versie, met een nog beter gevulde trucendoos. Sommige bedrijven hebben zich zelfs gecommitteerd aan het jaarlijks uitbrengen van een nieuwe versie (Corel is hier een goed voorbeeld van). De komst van moderne ontwikkelmethodieken en programmeertalen heeft niet kunnen verhinderen dat de hoeveelheid fouten in nieuw opgeleverde informatiesystemen de laatste jaren alleen maar is toegenomen. Erger nog is dat veel van die fouten onopgemerkt blijven, en als ze al opgemerkt worden vaak niet kunnen worden verholpen door gebrek aan tijd. Een van de boosdoeners op dit gebied is het toverwoord `client-server'. Op zich is het distribueren van functies over een informatiesysteem zeker geen slecht idee. Een client-server systeem is echter vele malen complexer dan een (functioneel identiek) gecentraliseerd systeem. Toch moet dat client-server systeem over het algemeen in kortere tijd worden gerealiseerd dan voorheen het geval was. De distributie van systeemfuncties brengt een grote onderlinge afhankelijkheid met zich mee. Een fout in een component werkt dan ook al snel door in diverse andere componenten, waardoor het opsporen van de werkelijke fout gelijk staat aan het zoeken van een naald in een hooiberg. Geautomatiseerde test-tools zijn hierbij slechts van beperkt nut, aangezien deze over het algemeen slechts worden losgelaten op de individuele componenten.

    Kwaliteitszorg

    Het lijkt erop dat de industrietak automatisering (software, hardware en diensten) nog steeds niet de puberteit ontgroeid is. Veel bedrijven zijn echter inmiddels volledig afhankelijk van hun informatiesysteem, een situatie die bij menig IT-manager tot slapeloze nachten leidt. Er zijn gelukkig uitzonderingen, die bevestigen dat het wel degelijk mogelijk is een betrouwbaar systeem te ontwerpen en onderhouden. Tandem Computers heeft zich op dit gebied gespecialiseerd, en is daarmee hofleverancier van menig financieel instituut. Dat ook Tandem wel eens uitgegleden is, is waarschijnlijk wel bekend (in ieder geval bij alle betrokkenen). De kwaliteitszorg lijkt voor de meeste softwareontwikkelaars echter een sluitpost. De meeste programmeurs hebben een aversie tegen testen en beschouwen dit als `beginnerswerk' In werkelijkheid moet een softwaretester een zeer goed begrip van het systeem hebben om een nieuw component goed te kunnen testen. Daarbij maakt de grote onderlinge afhankelijkheid tussen componenten het vaak moeilijk om de oorzaak van een fout op te sporen. Diezelfde afhankelijkheid leidt er soms toe dat het opsporen en oplossen van een fout leidt tot het ontstaan van nieuw fouten (neveneffecten).

    De waarde van ISO9000

    De International Standardisation Organisation (ISO) heeft een aantal richtlijnen opgesteld vooor het formaliseren van procedures binnen een bedrijf. Deze richtlijnen zijn onderverdeeld in een aantal categorieën, die ieder een bepaald deel van de kwaliteitszorg beschrijven. Het begrip `kwaliteit' is zelf ook omschreven in ISO 8402, in het kort luidt de definitie `de mogelijkheid om aan alle eisen en verwachtingen van de gebruiker te voldoen'. In meer technische termen wordt wel gesproken over `het totaal aan eigenschappen en mogelijkheden van een produkt dat het mogelijk maakt om aan alle impliciete en gestelde eisen te voldoen'. Dit lijkt een onmogelijke opgave, aangezien gebruikers zelf vaak niet goed beseffen welke eisen ze aan een produkt stellen. De kwaliteitszorg-normen en -procedures zijn in iedere bedrijfstak toepasbaar, ongeacht de technische karakteristieken van het eindprodukt. De ISO 9000 standaarden beschrijven het hele kwaliteitszorg-systeem - van concept tot implementatie. Een bedrijf dat aan alle normen voor een van de standaarden voldoet, mag zich `ISO 9000 gecertificeerd' noemen. Er wordt omderscheid gemaakt tussen een aantal substandaarden. ISO 9000 is de overkoepelende standaard, die de filosofie van kwaliteitszorg beschrijft en richtlijnen geeft hoe dit kan worden geimplementeerd. Voor diverse bedrijfstakken zijn aparte substandaarden ontwikkeld. ISO 9001 is met name gericht op de ontwikkeling, produktie, installatie en het onderhoud van produkten of diensten. De ISO 9002-norm beperkt zich tot kwaliteitsbeheer in ontwikkeling en installatie. Ook ISO 9003 is voor de softwareindustrie interessant, deze norm omschrijft de verplichtingen van een leverancier of fabrikant waar het gaat om de inspectie, het testen en de registratieprocedures. De uiteindelijke doelen van de kwaliteitszorg zijn (zeer gedetailleerd) omschreven in ISO 9004. Ieder bedrijf kan de voor hen geldende doelstellingen selecteren, het is niet nodig - en ook niet mogelijk - om aan alle doelstellingen te voldoen.

    Geen garantie

    ISO-certificatie is op zich een behoorlijke methode om de kwaliteitszorg-procedures van een bedrijf vast te stellen. De ISO-normen beschrijven echter alleen het algemene procedure en de wijze waarop die moet worden uitgevoerd. Aangezien de ISO-normen zijn ontwikkeld voor algemene toepasbaarheid ontbreken specifieke aanwijzingen voor de te volgen procedures. We hebben al eerder het voorbeeld van het client-server systeem genoemd, dat moelijk te testen en nog moelijker te debuggen is. Als een ISO 9000-gecertificeerd bedrijf deze testprocedures niet onder de knie heeft, kan de kwaliteit van het eindprodukt in de praktijk niet gegarandeerd worden. Het ISO stelt daarom zelf al dat er `onderscheid moet worden gemaakt tussen de ISO 9000-certificatie van een bedrijf, en de certificatie van de door dat bedrijf geleverde produkten'. In feite is het ISO-certificaat hiermee het KEMA-keur van de kwaliteitszorg: geen van beide biedt garantie voor de functionaliteit, en slechts een beperkte garantie op de kwaliteit van het produkt. Voor de softwarebranche gaat dit nog sterker op dan voor menig andere bedrijfstak, aangezien hier vaak gebruik gemaakt wordt van nieuwe technieken waarmee nog maar weinig ervaring is opgedaan (en dus ook nog geen goede testprocedures voor ontwikkeld zijn). Boze tongen beweren dan ook dat de praktische waarde van een ISO 9000-certificaat gering is, en dat de meeste bedrijven certificatie puur als een marketing-instrument gebruiken. De enorme kosten die met een volledige certificatie gemoeid zijn maken het voor kleinere bedrijven moeilijk om formeel aan de eisen te voldoen. Bovendien wordt de certificatie niet door het ISO zelf geregeld, maar door `onafhankelijke' bedrijven (die daar een hoop geld mee verdienen). Hiermee heeft het ISO (onbedoeld?) een nieuw wapen in de concurrentiestrijd ingevoerd, dat op oneigenlijke wijze kan worden toegepast.

    Een oplossing?

    Wat kan er gedaan worden om de teloorgang van de softwarekwaliteit tegen te gaan? In feite hebben de gebruikers de macht en de middelen om dit proces tot stand te brengen. De hoeveelheid klachten van gebruikers over fouten en onvolkomenheden in zowel de besturingssoftware als de applicatiesprogramma's neemt toe. Die gebruikers hebben dit echter gedeeltelijk aan zichzelf te denken, door telkens weer op de nieuwste, meest uitgebreide versie van pakket X af te springen. Aangezien 95% van de gebruikers niet meer dan 15% van de functies van de gemiddelde tekstverwerker of spreadsheet gebruiken, is deze houding volledig ongegrond. In deze strijd zijn al diverse goede initiatieven ten onder gegaan. Het veel aangehaalde voorbeeld van de mini-tekstverwerker LetterPerfect die niet opgewassen was tegen het macho-geweld van grote broer WordPerfect spreekt wat dit betreft boekdelen. Gebruikers van de light-tekstverwerker waren volgens de `echte gebruikers' nog niet toe aan `het echte werk'. In de overtuiging dat het echte werk bestaat uit het overladen van de harde schijf met vrijwel ongebruikte code gaat de gunst van de gebruiker nog steeds naar de pakketten met de meeste franje. Elders in dit blad staat een artikel over de nieuwste Office-pakketten voor Windows en OS/2. Hierbij hebben we ook een opsomming opgenomen van de functies die de pakketten te bieden hebben. Als u deze tabellen kritisch bekijkt, zult u er waarschijnlijk achter komen dat voor uw situatie het gros van de functies ongebruikt op de schijf zal blijven staan. De concurrentieslag heeft er echter toe geleid dat voor een volledig uitgebouwde tekstverwerker a la WordPerfect of Microsoft Word tegenwoordig minder wordt betaald dan enkele jaren geleden voor LetterPerfect. Wie voor nog geen ƒ 300,- een van deze pakketten kan kopen, die zal waarschijnlijk niet bereid zijn evenveel neer te leggen voor een compacte tekstverwerker die een stuk minder functies biedt. De marges op software zijn de laatste jaren enorm gekelderd, dit maakt het alleen nog maar moeilijker om nieuwe produkten succesvol op de markt te zetten. Experimenten met alternatieve vormen van distributie (shareware, media-distributie - de gebruiker koopt een CD-ROM waarop alle software in gecodeerde vorm staat, en kan tegen betaling een code krijgen om de programmas's te decoderen) zijn grotendeels op niets uitgelopen. In Nederland struikelt het shareware-concept over de geringe bereidwilligheid te betalen voor een produkt dat ook zonder betaling kan worden gebruikt. Gedeeltelijk is dit terug te voeren op het feit dat het vaak moeilijk is om de betaling op een zinnige wijze te verrichten (de bank vraagt soms evenveel voor het uitvoeren van de internationale transactie als het pakket zelf kost), maar het is ook een uiting van `zuunigheid' die de meesten van ons niet vreemd is. Wellicht dat de komst van modulaire software in dit opzicht verbetering kan brengen. Hierbij kunnen gebruikers aan de hand van hun eisen een pakket van software-bouwstenen combineren tot een applicatie, die in principe niet meer hoeft te bieden dan ze nodig hebben. Het is echter nog maar de vraag of het in de praktijk ook allemaal zo mooi zal verlopen. De technologie die gebruikt zal gaan worden voor het realiseren van dergelijke software-bouwdozen staat nog grotendeels in de kinderschoenen. Zowel OLE2 (van Microsoft) als OpenDoc (van `de rest') moeten zich nog grotendeels bewijzen, waarbij OLE2 het voordeel heeft dat de techniek al enige tijd in de praktijk wordt toegepast. OpenDoc is het beta-stadium nog niet ontgroeid, en er is ook nog geen zicht op de eerste commercieel toepasbare versies. OLE2 heeft als nadeel dat het in de praktijk minder geschikt is voor het ontwikkelen van compacte software-objecten met beperkte functionaliteit. Een OLE2-object is over het algemeen een compleet programma, en daar heb je niet veel aan voor het bouwen van een modulaire applicatie. OpenDoc biedt in theorie betere mogelijkheden, maar is zoals gezegd nog niet beschikbaar. Een groot voordeel van modulaire software is dat het mogelijk is om eenmaal ontworpen componenten in meerdere projecten te gebruiken. De grens tussen `maatwerk' en `confectie' wordt met modulaire software een stuk minder duidelijk, aangezien het vaak mogelijk zal zijn om een maatwerkapplicatie te bouwen met behulp van confectie-componenten. Aangezien het hier om nieuwe, complexe technologieen gaat, is het echter nog maar de vraag of dergelijke bouwdoos-applicaties het in stabiliteit op kunnen nemen tegen de huidige monolithische programma's.

    Wat kan er nu al worden gedaan?

    Zoals gezegd hebben de gebruikers uiteindelijk nog steeds de macht. Vreemd genoeg lijken computergebruikers zich weinig aan te trekken van een van de meest fundamentele sociologische en economische wetten, namelijk die van nutsmaximalisatie. Over het algemeen streven mensen naar een zo groot mogelijke bevrediging van hun behoeften tegen zo laag mogelijke `kosten' (financieel of anderszins). Bij de keuze van hard- en software lijkt echter de emotie (Dat is nieuw! Ik wil bijblijven! Mijn buurman/de concurrent heeft het ook al! Dat moet ik hebben!) het te winnen van het verstand (wat moet ik met die `troep'?). Een rationele beslissing zou hier natuurlijk meer op zijn plaats zijn. Als voldoende gebruikers hun verstand de voorrang zouden gunnen, dan zou het voor de softwareontwikkelaars interessant worden om naar de eisen van deze groep te luisteren. Die eisen kunnen dan het best worden samengevat met de woorden `kwaliteit vóór kwantiteit'.
    Frank de Lange