Hva er ikke-funksjonelle krav i programvareteknikk?
โก Smart oppsummering
Ikke-funksjonelle krav spesifiserer kvalitetsegenskaper som ytelse, sikkerhet, brukervennlighet, pรฅlitelighet, skalerbarhet og portabilitet, og definerer hvor godt et programvaresystem mรฅ oppfรธre seg og gjรธr vage forventninger om til mรฅlbare, testbare og hรฅndhevbare tekniske mรฅl gjennom hele leveransesyklusen.
Hva er et ikke-funksjonelt krav?
A Ikke-funksjonelle krav (NFR) spesifiserer en kvalitetsattributt for et programvaresystem. NFR-er bedรธmmer systemet ut fra responsivitet, brukervennlighet, sikkerhet, portabilitet og andre kvalitetsattributter som er kritiske for suksess. Et vanlig eksempel pรฅ ikke-funksjonelle krav er, "hvor raskt laster nettstedet?" ร ikke oppfylle ikke-funksjonelle krav fรธrer til systemer som frustrerte brukere.
Ikke-funksjonelle krav i programvareutvikling setter begrensninger pรฅ systemets design pรฅ tvers av den smidige etterslepet. For eksempel bรธr nettstedet laste inn pรฅ tre sekunder nรฅr antallet samtidige brukere overstiger 10 000. ร beskrive ikke-funksjonelle krav er like viktig som รฅ fange opp funksjonelle krav.
Typer ikke-funksjonelle krav
Hovedkategoriene av ikke-funksjonelle krav er:
Typer ikke-funksjonelle krav
- Usability
- service~~POS=TRUNC
- administrasjon
- Gjenvinnbarhet
- Trygghet
- Data Integrity
- Kapasitet
- Tilgjengelighet
- skalerbarhet
- Interoperabilitet
- Pรฅlitelighet
- vedlikeholdbarhet
- Overholdelse av regelverk
- Miljรธmessige begrensninger
Eksempler pรฅ ikke-funksjonelle krav
Her er praktiske eksempler pรฅ ikke-funksjonelle krav:
- Brukere mรฅ endre det opprinnelige passordet etter fรธrste vellykkede pรฅlogging, og det opprinnelige passordet mรฅ aldri brukes pรฅ nytt.
- Ansatte skal ikke ha lov til รฅ oppdatere sin egen lรธnnsinformasjon, og ethvert slikt forsรธk skal rapporteres til sikkerhetsadministratoren.
- Alle mislykkede forsรธk fra en bruker pรฅ รฅ fรฅ tilgang til et dataelement skal registreres i et revisjonsspor.
- Nettstedet skal stรธtte 20 millioner samtidige brukere uten at responstiden gรฅr forringet.
- Programvaren skal vรฆre portabel slik at det ikke skaper problemer รฅ bytte fra ett operativsystem til et annet.
- Informasjonspersonvern, eksport av begrenset teknologi og immaterielle rettigheter skal kunne revideres.
Funksjonelle vs. ikke-funksjonelle krav
De viktigste forskjellene mellom funksjonelle og ikke-funksjonelle krav er:
| Parametre | Funksjonskrav | Ikke-funksjonelle krav |
|---|---|---|
| Hva er det? | Verb | attributter |
| Krav | Det er obligatorisk | Det er ikke obligatorisk |
| Fangetype | Det fanges opp i brukstilfelle. | Det fanges opp som et kvalitetsattributt. |
| Sluttresultat | Produktfunksjon | Produktegenskaper |
| fange | Lett รฅ fange | Vanskelig รฅ fange |
| Mรฅlet | Hjelper deg รฅ verifisere funksjonaliteten til programvaren. | Hjelper deg med รฅ verifisere ytelsen til programvaren. |
| Fokusomrรฅde | Fokus pรฅ brukerkrav | Konsentrerer seg om brukerens forventning. |
| Teknisk dokumentasjon | Beskriv hva produktet gjรธr | Beskriver hvordan produktet fungerer |
| Type testing | Funksjonell testing som system-, integrasjons-, ende-til-ende-testing, API-testing osv. | Ikke-funksjonell testing som ytelse, stress, brukervennlighet, sikkerhetstesting, etc. |
| Testutfรธrelse | Testutfรธrelse gjรธres fรธr ikke-funksjonell testing. | Etter funksjonstestingen |
| produkt info | Produktegenskaper | Produktegenskaper |
Fordeler med ikke-funksjonelle krav
De viktigste fordelene med Ikke-funksjonell testing er:
- Ikke-funksjonelle krav sikrer at systemet fรธlger juridiske regler og samsvarsregler.
- De beskytter systemets pรฅlitelighet, tilgjengelighet og ytelse.
- De leverer en god brukeropplevelse og enkel betjening.
- De former programvarens sikkerhetspolicy.
Ulemper med ikke-funksjonelle krav
Vanlige ulemper med ikke-funksjonelle krav er:
- Ikke-funksjonelle krav kan pรฅvirke flere programvareundersystemer pรฅ hรธyt nivรฅ.
- De krever spesielle hensyn under arkitektur og design pรฅ overordnet nivรฅ, noe som รธker kostnadene.
- Implementering er sjelden knyttet til et enkelt programvareundersystem.
- De er vanskelige รฅ endre nรฅr arkitekturfasen er fullfรธrt.
FURPS+ modell for klassifisering av ikke-funksjonelle krav
FURPS+ er den mest brukte taksonomien for ikke-funksjonelle krav. Den ble opprinnelig utviklet hos Hewlett-Packard, og grupperer kvalitetsattributter i fem hovedkategorier pluss ytterligere begrensninger markert med ยซ+ยป. Modellen hjelper forretningsanalytikere med รฅ unngรฅ รฅ gรฅ glipp av en hel klasse med krav.
- Funksjonalitet: Funksjoner, sikkerhet og gjenbrukbarhet som gรฅr utover den grunnleggende funksjonslisten.
- brukervennlighet: Menneskelige faktorer, estetikk, konsistens, dokumentasjon og responsivitet i brukeropplevelsen.
- Pรฅlitelighet: Tilgjengelighet, gjennomsnittlig tid mellom feil, gjenopprettingsevne, forutsigbarhet og nรธyaktighet.
- Ytelse: Hastighet, gjennomstrรธmning, kapasitet, skalerbarhet og ressursforbruk under belastning.
- Stรธtteevne: Testbarhet, fleksibilitet, installerbarhet, lokaliseringsbarhet og vedlikeholdbarhet for det leverte systemet.
- Pluss (+): Design, implementering, grensesnitt og fysiske begrensninger som nรธdvendige plattformer, standarder eller maskinvare.
Team som tilordner alle ikke-funksjonelle krav til en FURPS+-kategori, har mindre sannsynlighet for รฅ levere et system som oppfyller funksjoner, men som svikter pรฅ ytelse, sikkerhet eller vedlikeholdbarhet.
Hvordan skrive testbare ikke-funksjonelle krav
Et velskrevet ikke-funksjonelt krav er mรฅlbart, verifiserbart og tidsbundet. Vage utsagn som ยซsystemet mรฅ vรฆre rasktยป eller ยซappen bรธr vรฆre sikkerยป er ambisjoner, ikke krav. Fรธlg trinnene nedenfor for รฅ konvertere en intensjon til en testbar NFR.
- Identifiser kvalitetsegenskapen. Kartlegg bekymringen til en FURPS+-kategori, slik at teamet vet om det er et krav til ytelse, brukervennlighet, sikkerhet eller pรฅlitelighet.
- Velg en beregning. Hver NFR trenger en enhet โ millisekunder, forespรธrsler per sekund, samtidige brukere, prosentvis oppetid eller en samsvarsstandard som ISO 27001.
- Angi en numerisk terskel. Erstatt ยซraskยป med ยซunder 400 millisekunder ved 95. persentilยป. Erstatt ยซsvรฆrt tilgjengeligยป med ยซ99.9 prosent mรฅnedlig oppetidยป.
- Beskriv tilstanden. Angi belastningen, miljรธet eller brukersegmentet som terskelen gjelder for, for eksempel ยซunder toppsalg med 10 000 samtidige brukereยป.
- Definer verifiseringsmetoden. Merk testtypen โ belastningstest, penetrasjonstest, kaoseksperiment, tilgjengelighetsrevisjon โ og verktรธyet som vil bekrefte terskelen.
- Bruk SMART-sjekken. Bekreft at kravet er spesifikt, mรฅlbart, oppnรฅelig, relevant og tidsbestemt fรธr det havner i etterslepet.
Eksempel pรฅ omskrivning: ยซSystemet skal vรฆre rasktยป blir til ยซKassesiden skal svare pรฅ under 500 millisekunder ved 95. persentil med 5,000 samtidige brukere, bekreftet av en JMeter lasttest hver utgivelse.ยป Den reviderte uttalelsen lar utviklere designe for den, testere verifisere den, og produkteiere godta den uten argumenter.


