KODKVALITET OCH LIVSCYKELKOSTNAD
I många beslut om en programvaruprodukt är information om produktkvaliteten en vital del för att säkra en långsiktig framgång. Många gånger åskådliggörs denna framgång genom att mäta livscykelkostnaden. De flesta företag saknar dock metoder för att mäta kodkvaliten, vilket gör att den i många fall underskattas.
Kvaliteten hos en programvaruprodukt inkluderar både externa och interna aspekter.
- Extern kvalitet definieras genom egenskaper som funktionalitet, användarvänlighet, prestanda och felfrekvens under drift.
- Intern kvalitet definieras genom egenskaper som testbarhet, ändringsbarhet, återanvändningsbarhet och underhållsbarhet.
Den externa kvaliteten är vanligtvis adresserad och under kontroll eftersom den ligger nära kundens upplevda kvalitet. Den interna kvaliteten är ofta förbisedd eftersom den är svårare att synliggöra och mäta. Speciellt gäller det interna kvalitetsaspekter vars effekt märks senare i produktens livscykel. En god intern kvalitet reducerar inte bara framtida kostnader för produkten, det reducerar också kostnaden för att nå den önskade externa kvaliteten.
Konkreta exempel på hur kodkvaliteten påverkar livscykelkostnaden:
- Minskad utvecklingskostnad då det blir enklare att addera ny funtionalitet
- Lägre kostnad för test, av extern kvaliteten, eftersom komplex kod är svårare att testa
- Ökad produktkvalitet då “Spaghetti-lik” kod kommer generera fler buggar
- Förbättrad predikterbarhet genom att det inträffar färre överraskningar under utvecklingen
- Minskat beroende av nyckelpersoner när man har läsbar och förstålig kod
I tillägg till att påverkan på livcykelkostad så finns det många situationer där objektiv insyn i programvarans kvalitet kan vara avgörande - dvs att man konkret behöver kunna mäta kodkvaliteten.
- Kontrollera produktkvalitet för utlagd (”outsourced”) utveckling
- Beslut kring omstrukturering av produkt (”refactoring”)
- Val mellan liknande produkter
- Uppföljning av förbättringsarbete
- Utvärdera Open Source (”FOSS”) projekt
- Due diligence av produkt inför uppköp eller investering
I dessa, och naturligtvis i det löpande arbetet med att upprätthålla eller nå en viss kvalitetsnivå, är kunskap om den faktiska kvaliteten nödvändig för att fatta rätt beslut.
SQALE (Software Quantitative Assessment based on Lifecycle Expectations) ger en möjlighet att synliggöra och objektivt mäta, och därmed också att styra, den interna kvaliteten i programvaruprodukter.
Vad är det?
SQALE bygger på en kvalitetsmodell, verktygsbaserade mätningar av olika kvalitetsegenskaper samt en analys av utfallet av dessa mätningar i relation till kvalitetsmodellen.

Kvalitetsmodellen byggs upp av sex kvalitetsegenskaper i lager baserad på programvarans livscykel. Till varje kvalitetsegenskap finns ett antal underliggande egenskaper som definieras genom en eller flera kvalitetskrav som skall uppfyllas. Avståndet till kvalitetsmålen mäts genom att en åtgärdsfaktor införs för respektive kvalitetskrav. Detta resulterar i ett index som motsvarar det arbete som krävs för att åtgärda avvikelse från kvalitetsmålen.
Var kommer det ifrån?
SQALE utvecklades av Q-Labs 2005 baserat på ISO 9126 samt annat arbete om kvalitet av bl a Boehm och McCall. ISO 9126 täcker in både extern och intern kvalitet medan SQALE fokuserar på den interna kvaliteten.
Mätningarna i SQALE baseras på statisk kodanalys (dvs. analys utan att exekvera koden). Statisk kodanalys har används sedan slutet av 1970-talet då Stephen C. Johnson skapade ”lint” för att hitta potentiella fel under utvecklandet av operativsystemet UNIX. Sedan dess har en mängd olika verktyg skapats och de är oftast inriktade på en delmängd av alla kodrelaterade kvalitetsaspekter.
Vår erfarenhet
Vi har under lång tid arbetat med kvalitet i många olika situationer. SQALE har framgångsrikt används sedan 2005 och vi har i Sverige genomfört ett tjugotal projekt inom fordonsindustri, telekom, IT och off-shore. Kodmässigt har vi analyserat många miljoner rader kod (modellen är språkoberoende och vi har hittills studerat C/C++, Java och PLC). I flera fall har det handlat om att en beställare vill analysera sin leverantörer produkter.
Nicolás Martín-Vivaldi (nicolas.martin-vivaldi@addalot.se) arbetar på Addalot och har 20 års erfarenhet av process- och kvalitetsförbättringar. Huvudfokus är att vägleda organisationer att bli mer framgångsrika. Dessa uppdrag inkluderar olika modeller och tekniker såsom Lean-development, och olika mognadsmodeller (CMMI, SPICE, COBIT, ISDS).