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