Kravspesifikasjon

I kravspesifikasjonen skal vi lage konkrete punkter som forteller oss hva oppdragsgiveren ønsker at vi skal lage. Vel så viktig er det imidlertid at kravspesifikasjonen også indirekte forteller oss hva vi ikke skal lage. Det er ingen grunn til å bruke tid og ressurser på å lage ekstrafunksjoner som ingen i utgangspunktet ønsket.

Det finnes to typer nivåer av kravspesifikasjon. Den ene går kun på hvilke krav som settes til selve systemet som skal lages, mens den andre i tillegg også beskriver hvilke eksterne rammer som settes for systemet. Eksterne rammer kan for eksempel være tidsplan, arbeidsressurser, økonomi, driftskrav, ytelseskrav osv.

For den typen prosjekter som blir dekket av denne boka, er nok den første versjonen som kun beskriver hva som skal lages, mest relevant og den vi skal ha fokus på. Det er imidlertid viktig å være klar over at utvikling av større prosjekter ofte har slike ytre rammer som man må forholde seg til. Kravspesifikasjonen bør som et minimum inneholde følgende tre punkter:

  • Overordnet beskrivelse: En kortfattet beskrivelse av hva som skal lages.
  • Hensikt: Hva er årsaken til at man ønsker at systemet skal lages, og hvilke behov skal det dekke?
  • Funksjonelle krav: Helt konkrete punkter om hvordan systemet skal fungere. Disse punktene er ofte nummererte eller i det minste i listeform. Ofte grupperer man også sammen relaterte krav i hovedpunkter og underpunkter, slik at listen består av flere nivåer.

I tillegg kan man ha med følgende punkter om man også ønsker å si noe om rammene rundt prosjektet. Disse punktene går ofte under samlebetegnelsen operasjonelle krav og er nok som tidligere nevnt mer aktuelle for prosjekter som er større enn dem som denne boka tar for seg:

  • Rammer: Når skal ting være ferdig, og hvor mye ressurser i form av penger og arbeidstid har vi tilgjengelig?
  • Ord og uttrykk: En beskrivelse av hva vi legger i ord og uttrykk som benyttes i systemet, slik at alle er enige om hva vi snakker om.
  • Brukere: Hvem skal bruke systemet, og hvordan skal de bruke det? Hva er forutsetningene til de ulike brukerne?
  • Avhengigheter: Skal systemet kjøre på spesiell maskinvare, eller skal det integreres mot eksisterende komponenter?
  • Systemkrav: Hva kreves av sikkerhet, oppetid, vedlikehold, ytelse osv.?
Last updated on