Så hanterar du icke funktionell kravställning och teknisk skuld

Så hanterar du icke funktionell kravställning och teknisk skuld

I takt med att informationsteknologi och digitalisering blir allt viktigare för företag och organisationer så blir även inverteringar mer integrerade och komplicerade. Detta leder till att det blir svårare att retroaktivt anpassa fundamenten till nya inriktningar, livscykelhantering blir avgörande för vilka risker och möjligheter man har att anpassa mot strategier och kvalitetsförväntningar.

 

Icke funktionell kravställning & Teknisk skuld

 

I takt med att informationsteknologi och digitalisering blir allt viktigare för företag och organisationer så blir även inverteringar mer integrerade och komplicerade. Detta leder till att det blir svårare att retroaktivt anpassa fundamenten till nya inriktningar, livscykelhantering blir avgörande för vilka risker och möjligheter man har att anpassa mot strategier och kvalitetsförväntningar.

 

Icke-funktionella krav anger kvalitetskriterier

För att undvika att hamna i ett läge där man inte längre har möjlighet att möta marknadens behov inom en rimlig tid och investeringsnivå så bör man redan tidigt etablera nyckeltal som indikerar trender på de icke-funktionella kraven och den tekniska skuld som man har upparbetat i lösningen. Dessa nyckeltal agerar som en baslinje (nollmätning) som man sedan mäter förändringar mot. Det pratas väldigt mycket idag om IT säkerhet och vikten av informationssäkerhet – inte minst i samband med ny lagstiftning och medias reportage kring organisatoriska fadäser inom just IT säkerhet.

Beslutsfattare och kravställare av informationssystem och tjänster underskattar ofta vikten av de icke-funktionella kraven, kanske för att det är grumligt vad det egentligen innebär, samt att det ofta rör sig om tekniska eller designmässiga kvalitetsaspekter och vedertagna begrepp från yrkeskåren. Icke-funktionella krav är krav som anger kvalitetskriterier som kan användas för att bedöma driften av ett system, i stället för specifika beteenden. Planen för genomförande av icke-funktionella krav beskrivs ofta i dokumentation för systemarkitekturen och underhålls vanligtvis av en lösningsarkitekt. Några vanliga områden man pratar om kring icke-funktionella krav är:

  • Säkerhet – Nivå av preventiva säkerhetsåtgärder för att motverka otillbörlig tillgång
  • Förvaltningsbarhet – Livscykelaspekter för att bedöma hur utvecklingsbart systemet är
  • Tillgänglighet – Toleranser för systemets tillgänglighet
  • Användbarhet – Intuition mått för användare att konsumera nya funktioner
  • Prestanda – Kapacitetsmått under tung last

 

Kvantifiera den tekniska skulden

Framgångsrika organisationer använder moderna metoder för att utveckla lösningar med inbyggda kvalitetsgrindar för att systematiskt och inkrementellt bygga lösningen med rätt kvalitetsegenskaper. Vilket innebär att man ibland medvetet inte bygger lösningen med full funktion. Vanligtvis gör man en prototyp för att tidigt utvärdera egenskaper och riktningsbeslut. Eftersom vissa delar har medvetet blivit eftersatta och kommer behöver kompletteras så aggregeras det en skuld, eg. teknisk skuld. Begreppet (teknisk skuld) fungerar precis som vanlig ekonomisk skuld, genom att man lånar för att tidigare kunna erhålla produkten så får man betala ränta så länge man har lånet kvar.  Precis som amortering på ett ekonomiskt lån så betalar man tillbaka sin tekniska skuld med refaktorisering, dvs man förbättrar kvalitén i koden. Teknisk skuld kan mätas genom att kvantifiera attribut och kodmönster med tidsfaktorer och övervakas kontinuerligt (continuous inspection). Koden kan delas upp i olika alvarsgrader som exempelvis att det luktar illa till riktigt buggar och sårbarheter som akut måste fixas före det produktionssätts.

Genom att kontinuerligt mäta och medvetet styra utvecklingen inkrementellt så får man även tidiga varningssignaler och minimerar kvalitetsbrister. Genom kvalitetsprofiler så kan man mäta specifika grader av kvalitetsbrister och säkerställa att man inte överstiger satta tröskelvärden. Enhetstestning och utforskande testning kan påverka kvalitetsgrindar och kan med fördel innefattas i kvalitetsprofilen. Kvalitetsgrindar säkerställer att varje inkrement uppnår rätt nivå och mäts i perioder mot baslinjen för att se trender och tendenser. Ju tidigare man upptäcker en kvalitetsbrist, desto mindre blir i regel skadan och ju enklare blir det att åtgärda.

Kontinuerlig inspektion

SonarQube (www.sonarqube.org) är ett bra verktyg för att kontinuerligt mäta och kvantifiera den tekniska skuld man har i lösningen. Genom statisk kodanalys så analyserar verktyget hela kodbasen och presenterar visuellt hur olika ögonblicksbilder av koden presterar mot den kvalitetsprofil man har fördefinierat. Det möjliggör en dialog kring icke-funktionella kvalitetsaspekter och teknisk skuldhantering som annars kan vara abstrakt och svårkommunicerad.

Genom att visualisera och använda verktyg som SonarQube för att analysera stora kodmassor så kan vi säkerställa att vi ser samma bild och gemensam förståelse för annars svåra begrepp att säkerställa handskakning med tydlig kommunikation med intressenter.

Tillsammans med en partner som har gedigen erfarenhet av kvalitetshantering och med effektiv kommunikation kring icke-funktionella krav så att du som kund kan komma till avgörande insikter och säkerställa att investeringar frodas under lång tid framöver.