Skriva en kravspecifikation

När en kravspecifikation ska skrivas är det viktigt att komma ihåg att det huvudsakliga målet är att leverera en så bra produkt som möjligt, och inte att producera en perfekt kravspecifikation. Det finns många olika bra definitioner som beskriver hur en kravspecifikation ska skrivas, men alla har åtminstone en del gemensamt; dvs kärnan i en kravspec, nämligen kraven.
skriva-kravspecifikation

Kraven delas upp i funktionella krav och icke funktionella krav (även kallade för kvalitetskrav). Funktionella krav beskriver funktionaliteten hos det önskade systemet som oftast består av något slags beräkning och resultat, given specifikt indata. Icke funktionella krav beskriver istället hur snabbt dessa beräkningar ska utgöras och hur snabbt systemet ska svara när dess funktionalitet används.

Exempel:

  • Funktionellt krav: ”Systemet skall kunna exportera grafer i PDF-format.”
  • Icke funktionellt krav: ”Tiden det tar att exportera en graf till PDF-format skall inte överstiga 2 sekunder.”

Det första kravet är ett enkelt exempel som beskriver funktionalitet som systemet förväntas ha. Lägg märke till nyckelordet skall vars syfte är att förtydliga kravens prioritet, dvs. hög i detta fall. Andra nyckelord som kan användas är t.ex. borde, som förmedlar lägre prioritet. Det är väldigt viktigt att tidigt i kravspecifikationen definiera olika prioritetsnivåer om man avser att använda sådana. Dessutom är det viktigt att vara konsekvent i sin användning av nyckelord för att minska tvetydigheten.

Det andra kravet är ett exempel på ett icke funktionellt krav som beskriver systemets prestanda. Utöver prestanda krav finns det en mängd olika typer av kvalitetskrav som beskriver hur ett system ska bete sig. Några av de vanligaste finns listade nedan, tillsammans med en kort exempelbeskrivning:

  • Användarvänlighet – Hur snabbt en användare lär sig att använda systemet
  • Kapacitet – Hur många användare systemet klarar av att hantera samtidigt
  • Säkerhet – Mått på hur väl systemet klarar av yttre intrångsförsök
  • Underhållbarhet – Mått på hur enkelt det är att underhålla systemet
  • Tillgänglighet – Ett krav som beskriver systemets tillgänglighet; t.ex. 90% av den totala tiden

I den inledande fasen av kravhantering där information samlas från olika parter som på något sätt är relaterade till det önskade systemet, kan systemets funktionalitet beskrivas med något som kallas för use cases (användningsfall). Detta är ett mindre formellt och icke tekniskt sätt att samla krav i form av korta scenarier som beskriver hur användaren interagerar med systemet och hur detta förväntas bete sig i olika situationer. Dessa användningsfall bryts sedan ned i specifika krav (t.ex. kan en enda användningsfall ge upphov till ett tiotal krav, både funktionella och icke funktionella).

Hur börjar man att skriva en kravspecifikation?

Beroende på hur komplext det önskade systemet är och hur mycket resurser som är allokerade till kravhantering kan kraven skrivas enligt olika standarder. Eftersom alla projekt är till viss grad unika, finns det finns ingen kravspecifikationsmall som man ska följa till punkt och pricka. Därför har vi lagt upp flera exempel på både mallar och på kravspecifikationer under Mall & Exempel.

Lycka till!