Kwaliteit van software

Bij het sluiten van ICT-contracten over de ontwikkeling, het onderhoud en gebruik van software is een belangrijk aandachtspunt de kwaliteit van software. De kwaliteit ligt aan het hart de scope van het contract (requirements).

Het zal dienen te worden bepaald bij de start en getoetst worden bij oplevering. Ook in de fase van operationeel gebruik zal de kwaliteit voorwerp zijn van aandacht. Telkens kan dan blijken dat opvattingen over softwarekwaliteit verschillen. 

Voor een goed begrip van uiteenlopende beoordeling is het van belang om stil te staan bij de fundamentele vraag wat softwarekwaliteit inhoudt. 

Wat is kwaliteit?

Kwaliteit is een begrip dat in veel verschillende betekenissen wordt begrepen. Een veel gebezigde betekenis van het begrip kwaliteit in de alledaagse taal is die van “het beste wat er is”. Kwaliteit is dan “goed” of “slecht”.

Het wordt dan gezien als een soort op zichzelf staande eigenschap met een absoluut karakter. Dat is een betekenis die geen recht doet aan de werkelijkheid. Immers wat voor de een goed is, is dat niet voor de ander.

Het is beter om kwaliteit te begrijpen in een relatieve zin, namelijk de geschiktheid (“fitness”) in een bepaalde relatie. Dat kenmerk treft men aan in de meeste gangbare definities van het begrip kwaliteit in de literatuur.

Moeilijker wordt het om de vraag te beantwoorden waaraan de geschiktheid dient te worden gerelateerd. Wat bepaalt in essentie de kwaliteit van software? Er bestaat vele varianten:

  • De geschiktheid voor het beoogde gebruik (“fitness for use”)

  • De geschiktheid ten opzichte van de specificaties die in het ontwikkelproces – al of niet in samenwerking met de toekomstige gebruikers – waren afgesproken (fitness/ conformance to requirements”)

  • Geschiktheid voor de doelen die de gebruiker voor ogen heeft (“fitness for purpose”). Die doelen waren immers uitgangspunt bij de keuze voor de ontwikkeling van de software

De essentie van kwaliteit lijkt vooral te liggen in de subjectieve beleving derhalve vanuit een eigen blikveld (zie: Het specificeren van software-kwaliteit SERC 1992, p. 18).

Bij de beoordeling van de kwaliteit van software speelt dat het blikveld wezenlijk anders ligt voor de betrokkenen zoals de ontwikkelaars, de diverse uiteenlopende (eind)gebruikers, de beheerders en andere betrokkenen, zoals een CIO of een controller.

In de literatuur over de kwaliteit van software worden verschillende perspectieven op kwaliteit onderscheiden (zie: Doelgericht beoordelen van software, diss. H.T. Punter (diss.), Technische Universiteit Eindhoven, 2001).

Softwarekwaliteit volgens Garvin

Een bekende en veel geciteerde benadering is geformuleerd door David Garvin (David A. Garvin, “What does ‘product quality’ really mean?”, Sloan Management Review, fall 1984). Garvin maakt, op basis van het gedachtengoed uit verschillende (wetenschappelijke) disciplines een onderscheid in de volgende vijf benaderingen van kwaliteit:

  • transcedent”: kwaliteit is absoluut en universeel herkenbaar maar als zodanig niet goed te definiëren. De transcendale visie op kwaliteit is afkomstig uit de filosofie

  • product-based”: kwaliteit is een precieze en meetbare variabele en wordt gevormd door de hoeveel inherente eigenschappen

  • user-based”: kwaliteit is – hoogst subjectief – wat het beste voldoet aan de wensen van de gebruiker (“quality lies in the eyes of the beholder”, “fitness to use”, “fitness for use”)

  • manufacturering-based”: kwaliteit kan worden geïdentificeerd als de mate waarin een product voldoet aan de daaraan gestelde specificaties (“conformance to requirements”, “conformance to specifications”)

  • value-based”: kwaliteit is een beoordeling in de verhouding tot de kosten en prijzen die er tegenover staan (“the degree of excellence at an acceptable price and the control of variability at an acceptable cost”, “quality is value for money”)

Op basis van de verschillende perspectieven komt Garvin tot een achtdimensionaal raamwerk voor het denken over kwaliteit met daarin de volgende basis elementen: “performance”, “features”, “reliability”, “conformance”, “durability”, “serviceability”, “aesthetics” en “perceived quality”.

ISO-norm 25010 voor softwarekwaliteit

Softwarekwaliteit is het onderwerp van de internationale ISO-norm 25010 (NEN-ISO/IEC International standard 25010:2011 Systems and software engineering – Systems and software quality Requirements and Evaluation (SQuaRE) – Systems and software quality models (ISO 25010)).

ISO 25010 beschrijft de kwaliteitskenmerken van software en maakt daarbij een onderscheid in acht hoofdcategorieën van productkwaliteit: geschiktheid, prestatie-efficiency, uitwisselbaarheid, bruikbaarheid, betrouwbaarheid, vertrouwelijkheid, onderhoudbaarheid en overdraagbaarheid. Die acht hoofdcategorieën zijn verder onderverdeeld in 31 kwaliteitseigenschappen.

ISO 25010 maakt daarnaast een onderscheid in vijf hoofdcategorieën van kwaliteit tijdens gebruik (“quality in use”): effectiviteit, efficiency, voldoening, vrijwaring tegen risico en context dekking. Deze vijf zijn nog uitgesplitst in 11 nadere kwaliteitseigenschappen.

Specificeren van softwarekwaliteit

Bij de beoordeling van softwarekwaliteit komt het aan op een beoordeling van de eigenschappen van de software. Daarbij is van groot belang dat een wisselwerking en samenhang van eigenschappen bestaat waardoor eigenschappen met elkaar (kunnen) conflicteren. 

Een eigenschap zoals “vertrouwelijkheid” van software kan vormgegeven worden door het inbouwen van beveiligingsmaatregelen zoals het gebruik van login-wachtwoorden, het registeren en controleren van login-pogingen en versleuteling van databestanden.

Tegelijkertijd zullen deze maatregelen invloed hebben op andere eigenschappen zoals prestaties, gebruikersvriendelijkheid en snelheid (performance). Aan alles hangt een prijs. Het is van groot belang te realiseren dat een keuze voor bepaalde eigenschappen en maatregelen tevens gevolgen zal hebben voor overige eigenschappen. 

Bij de ontwikkeling van software zal aandacht moeten zijn voor het specificeren van de kwaliteit van de software. Keuzes dienen te worden gemaakt en tevens integraal te worden bezien tegen de implicaties die dit heeft voor andere eigenschappen.

De wezenlijke verwachtingen van belanghebbenden dienen op elkaar te worden afgestemd. Het specificeren van kwaliteit dient een integraal onderdeel te zijn van het specificatieproces. De belanghebbenden zullen afgestemde afspraken moeten maken over de wezenlijke eigenschappen van de software.

Dat proces behelst derhalve een “onderhandeling” tussen alle (belangen van alle) betrokkenen en het maken van keuzes die niet zonder gevolgen zijn voor andere eigenschappen. Randvoorwaarde is uiteraard de betrokkenheid van alle belanghebbenden en die betrokkenheid zal dienen te resulteren in een gebalanceerd set keuzes.

Bij het aangaan van afspraken (in het contracteringsproces) zal getoetst moeten worden of dat proces ook daadwerkelijk heeft plaatsgevonden. 

Heeft u vragen of wilt u contact over wat Legalz als ICT-jurist voor u kan betekenen, neem dan contact op of bel +31 (0)10 2290646 en spreek meteen een medewerker.