Hur vet du vilken kvalitet koden dina konsulter skriver håller?

Ja, hur kvalitetssäkrar du dina miljoninvesteringar i programkod? Väldigt många produktutvecklingsprojekt drivs helt eller delvis av inhyrda konsulter. Kostnaderna för dessa är tydliga.
De är inne i projekten en begränsad tid, och sedan kanske inte tillgängliga mer för dig. Vad händer sen? När de lämnat över projekt, kod och dokumentation (och faktura), står du då med de körda systemtesterna som enda bevis på att koden fungerar och därmed klarar acceptanskriteriet?

Eller, har du också säkerställt att koden du betalt dyra pengar för är:

  • möjlig för andra programmerare att underhålla och vidareutveckla, dvs bl.a. väl dokumenterad och skriven i enligt en vettig kodningsstandard?
  • fri från dolda fel?
  • robust och tål återanvändning?
  • cybersäker?
  • har en ren och tydlig arkitektur?
  • enkel att testa?

Drar din nya bil 1 liter eller 10 liter per mil?

Såvida ditt projekt inte är av typen engångsleverans, så är det sannolikt så att ditt företag kommer att göra många uppdateringar och tillägg under lång tid framöver. Det betyder att investeringen i produkten till största delen görs efter första release, och under lång tid av flera olika personer. Olika undersökningar visar att kostnaden för det fortsatta underhållet kan variera stort (1-10ggr) beroende på den interna kodkvaliteten, dvs de ovan listade egenskaper i koden som du inte kan testa utifrån i ett systemtest. Sådana egenskaper brukar ha otympliga namn som underhållbarhet eller ”maintainability”. Kostnaden för dålig maintainability är att en programändring tar flera gånger längre tid att göra än i en kodbas med god maintainability.

Summerar vi då dessa två faktorer
a) största investeringen i en produkts mjukvara görs under dess livstid efter första release
b) kostnaden för underhållet beror väldigt mycket på ”maintainability” kvaliteten.

så förstår man snabbt att det är riktigt dålig ekonomi att inte göra allt för att kräva bevis på att den kod som du betalt för, har just god ”maintainability”. Eller, för att använda en simpel metafor, har du just köpt dig en bil som drar 1 liter eller 10 liter per mil?

Vilka bevis kan jag kräva?

Som tur är finns hjälpmedel och mätetal för att kontrollera olika aspekter på ”maintainability” och kodkvalitet. Några saker du relativt enkelt kan kontrollera är t.ex

  • frihet från defekter och en bra kodningsstandard, dvs det som kan kontrolleras med statisk kodanalys
  • kodens komplexitet, dvs hur testbar den är
  • coupling och cyclicality, dvs hur väl arkitekturen gjorts modulär och därmed återanvändningsbar.

Om du konsekvent använder dessa teknologier, så lägger du en kvalitetsribba för dina projekt som du kan kräva ska klaras av både interna och externa resurser. Det kommer att i framtiden spara dig mycket pengar i att slippa re-factoring eller att helt skriva om gammal kod.

Vidare läsning:
“The Economics of Software Quality” av C. Jones/O. Bonsignour, Addison-Wesley.
“Building Maintainable Software” by Joost Visser, O’Reilly Media Inc., 2016.
“Faster issue resolution with higher technical quality of software”, Software Quality Journal, 2011.

Teknologier som kan hjälpa dig:
– Statisk kodanalys, t.ex CodeSonar
– Arkitekturanalys med beroendematriser, t.ex Lattix
– IP säkerhet t.ex Achilles test

Önskar du mer information?

Behöver du en offert, information eller råd. Kontakta oss!