Software quality, in het Nederlands softwarekwaliteit of software productkwaliteit, is de mate waarin een
Onderstaande uitwerking is voornamelijk gebaseerd op ISO-norm 25010 voor System and software Quality Requirements and Evaluation (SQuaRE). Gecomineerd met ISO-25010 zijn er drie kwaliteitsmodellen: 1) productkwaliteit, 2) productkwaliteit voor agility en 3) kwaliteit tijdens gebruik.
Softwarekwaliteit – Productkwaliteit
Het ISO 25010 productkwaliteitsmodel onderscheidt 8 categorieën die onderverdeeld zijn in 31 product kwaliteitseigenschappen. Dit worden ook wel de interne en externe kwaliteitseigenschappen genoemd.
Geschiktheid (Functional suitability) | De mate waarin de functies van een softwareproduct of computersysteem, onder bepaalde condities, voldoet aan de uitgesproken en veronderstelde behoeften. Merk op dat het hier gaat om het voldoen aan de uitgesproken (expliciete) en veronderstelde (impliciete) behoefte en niet om te voldoen aan de in functionele specificaties vertaalde behoefte. Kwaliteitseigenschappen zijn: functionele compleetheid (functional completeness), functionele correctheid (functional correctness) en functionele toepasselijkheid (functional appropriateness). |
Prestatie-efficiëntie (Performance efficiency) | De prestaties in verhouding tot de hoeveelheid middelen gebruikt onder genoemde condities. Kwaliteitseigenschappen zijn: snelheid (time-behaviour), middelenbeslag (resource utilization) en capaciteit (capacity). |
Uitwisselbaarheid (Compatibility) | De mate waarin een softwareproduct of systeem informatie uit kan wisselen met andere producten, systemen of componenten, en/of het de gewenste functies kan uitvoeren terwijl het dezelfde hard- of software-omgeving deelt. Kwaliteitseigenschappen zijn: beïnvloedbaarheid (co-existence) en koppelbaarheid (interoperability). |
Bruikbaarheid (Usability) |
De mate waarin een softwareproduct of systeem gebruikt kan worden door gespecificeerde gebruikers om effectief, efficiënt en naar tevredenheid gespecificeerde doelen te bereiken in een gespecificeerde gebruikscontext. Kwaliteitseigenschappen zijn: herkenbaarheid van geschiktheid (appropriateness recognisability), leerbaarheid (learnability), bedienbaarheid (operability), voorkomen gebruikersfouten (user error protection), volmaaktheid gebruikersinteractie (user interface aesthetics) en toegankelijkheid (accessibility). |
Betrouwbaarheid (Reliability) | De mate waarin een softwareproduct of systeem gespecificeerde functies uitvoert onder gespecificeerde condities gedurende een gespecificeerde hoeveelheid tijd. Kwaliteitseigenschappen zijn: volwassenheid (maturity), beschikbaarheid (availability), foutbestendigheid (fault tolerance) en herstelbaarheid (recoverability). |
Beveiligbaarheid (Security) | De mate waarin een softwareproduct of systeem informatie en gegevens beschermt zodat personen, andere producten of systemen de juiste mate van gegevenstoegang hebben passend bij hun soort en niveau van autorisatie. Kwaliteitseigenschappen zijn: vertrouwelijkheid (confidentiality), integriteit (integrity), onweerlegbaarheid (non-repudiation), verantwoording (accountability) en authenticiteit (authenticity). |
Onderhoudbaarheid (Maintainability) | De mate waarin een softwareproduct of systeem effectief en efficiënt gewijzigd kan worden. Onderhoudbaarheid betreft de structurele of interne kwaliteit van de software (Wikipedia, 2015). Kwaliteitseigenschappen zijn: modulariteit (modularity), herbruikbaarheid (reusability), analyseerbaarheid (analysability), wijzigbaarheid (modifiability) en testbaarheid (testability). |
Overdraagbaarheid (Portability) | De mate waarin een softwareproduct of systeem effectief en efficiënt overgezet kan worden van een operationele infrastructuur naar een andere. Kwaliteitseigenschappen zijn: aanpasbaarheid (adaptability), installeerbaarheid (installability) en vervangbaarheid (replaceability). |
Softwarekwaliteit – Productkwaliteit voor agility
Met de eis voor de steeds snellere levering van nieuwe en gewijzigde software worden steeds vaker kwaliteitseigenschappen van softwareproducten genoemd die gericht zijn op
Evolueerbaarheid (Evolvability) |
Het vermogen tot aanpassing ven een softwareproduct aan veranderingen in de omgeving, de requirements en de technologie die impact hebben op het softwareproduct in termen van structurele en/of functionele verbeteringen zonder dat de aanpassing afbreuk doet aan de architecturale integriteit (Breivold et al, 2009). |
Releasebaarheid (Deployability) |
De mate waarin het softwareproduct frequente en betrouwbare uitlevering in een productieomgeving mogelijk maakt. Kwaliteitseigenschappen zijn automatische bouwbaarheid (build), automatische testbaarheid (testability), integreerbaarheid (integrate), automatische releasebaarheid (deploy) en onafhankelijkheid (independance, reducing ripple effect). |
Opmerking: Deze kwaliteitseigenschappen zijn geen onderdeel van ISO 25010.
Softwarekwaliteit – Kwaliteit tijdens gebruik
Het ISO 25010 model voor kwaliteit tijdens gebruik onderscheidt 5 categorieën die onderverdeeld zijn in 11 kwaliteitseigenschappen.
Effectiviteit (Effectiveness) | De nauwkeurigheid en volledigheid waarmee belanghebbenden gespecificeerde doelen behalen. |
Efficiëntie (Efficiency) | De benodigde hulpbronnen die gebruikt zijn in verhouding tot de nauwkeurigheid en volledigheid waarmee belanghebbenden doelen behalen. |
Voldoening (Satisfaction) | De mate waarin behoeften vervuld worden als het softwareproduct of systeem gebruikt wordt in een gespecificeerde gebruikscontext. De kwaliteitseigenschappen zijn: bruikbaarheid (usefullness), vertrouwen (trust), tevredenheid (pleasure) en welzijn (comfort). |
Vrijwaring tegen risico (Freedom from risk) | De mate waarin een softwareproduct of systeem het potentiële risico beperkt met betrekking tot economische status, mensenlevens, gezondheid of de omgeving. De kwaliteitseigenschappen zijn: economische risico beperking (economic risk mitigation), gezondheid- en veiligheidsrisico beperking (health and safety risk mitigation) en omgevingsrisico beperking (environmental risk mitigation). |
Context dekking (Context coverage) | De mate waarin een softwareproduct of systeem gebruikt kan worden met effectiviteit, efficiëntie, vrijheid van risico en voldoening zowel in de gespecificeerde gebruikscontexten als in niet initieel gespecificeerde gebruikscontexten. De kwaliteitseigenschappen zijn: context compleetheid (context completeness) en flexibiliteit (flexibility). |
Softwarekwaliteit – Opmerkingen
- ISO-norm 25010 vervangt sinds 2011 zijn voorganger ISO-norm 9162.
Referenties
- Breivold, H., Crnkovic, I. & Eriksson, P. (2009). Evaluating Software Evolvability.
- Wikipedia. (2015) Software Quality.
- CISQ. (2015). Consortium of IT Software Quality.
- ISO 25010 (2010). Systems and Software Quality Requirements (SQuaRE), ISO 25010:2010.
- Schulmeyer G. (2008). Handbook of Software Quality Assurance. Artech House, Fourth Edition, 2008.
- Bellomo, Stephany. (2014). Architectural implications of DevOps. Software Engineering Institute 2014. Webinar Presentation
- Bellomo, Stephany. (2015). Toward Design Decisions to enable Deployability. Software Engineering Institute 2015.
Gerelateerde begrippen