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.

  • ๐Ÿ“˜ Definisjon: Et ikke-funksjonelt krav, eller NFR, beskriver hvor godt et system yter nรฅr det gjelder ytelse, sikkerhet, brukervennlighet, pรฅlitelighet og portabilitet.
  • ๐Ÿ—‚๏ธ Vanlige typer: Brukervennlighet, sikkerhet, pรฅlitelighet, skalerbarhet, kapasitet, tilgjengelighet, vedlikeholdbarhet og samsvar med forskrifter er kategoriene teamene bruker. track oftest.
  • ๐Ÿ“Š FURPS+ Modell: FURPS+ grupperer NFR-er etter funksjonalitet, brukervennlighet, pรฅlitelighet, ytelse, stรธtteevne og design- eller grensesnittbegrensninger.
  • ๐ŸŽฏ Testbare utsagn: Erstatt ยซraskยป eller ยซsikkerยป med numeriske terskler og verifiseringsmetoder, slik at NFR kan testes og aksepteres.
  • ๐Ÿ†š Funksjonell kontrast: Funksjonelle krav angir hva systemet gjรธr, mens ikke-funksjonelle krav angir hvor godt det gjรธr det under reelle forhold.
  • โœ… Forretningsmessig pรฅvirkning: Manglende NFR-er er den viktigste รฅrsaken til produksjonshendelser, regulatoriske funn og kostbare omarbeidinger av arkitekturen i senfasen.

Ikke-funksjonelle krav i programvareteknikk

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

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:

  1. Brukere mรฅ endre det opprinnelige passordet etter fรธrste vellykkede pรฅlogging, og det opprinnelige passordet mรฅ aldri brukes pรฅ nytt.
  2. Ansatte skal ikke ha lov til รฅ oppdatere sin egen lรธnnsinformasjon, og ethvert slikt forsรธk skal rapporteres til sikkerhetsadministratoren.
  3. Alle mislykkede forsรธk fra en bruker pรฅ รฅ fรฅ tilgang til et dataelement skal registreres i et revisjonsspor.
  4. Nettstedet skal stรธtte 20 millioner samtidige brukere uten at responstiden gรฅr forringet.
  5. Programvaren skal vรฆre portabel slik at det ikke skaper problemer รฅ bytte fra ett operativsystem til et annet.
  6. 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.

  1. Identifiser kvalitetsegenskapen. Kartlegg bekymringen til en FURPS+-kategori, slik at teamet vet om det er et krav til ytelse, brukervennlighet, sikkerhet eller pรฅlitelighet.
  2. Velg en beregning. Hver NFR trenger en enhet โ€“ millisekunder, forespรธrsler per sekund, samtidige brukere, prosentvis oppetid eller en samsvarsstandard som ISO 27001.
  3. Angi en numerisk terskel. Erstatt ยซraskยป med ยซunder 400 millisekunder ved 95. persentilยป. Erstatt ยซsvรฆrt tilgjengeligยป med ยซ99.9 prosent mรฅnedlig oppetidยป.
  4. Beskriv tilstanden. Angi belastningen, miljรธet eller brukersegmentet som terskelen gjelder for, for eksempel ยซunder toppsalg med 10 000 samtidige brukereยป.
  5. Definer verifiseringsmetoden. Merk testtypen โ€“ belastningstest, penetrasjonstest, kaoseksperiment, tilgjengelighetsrevisjon โ€“ og verktรธyet som vil bekrefte terskelen.
  6. 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.

Spรธrsmรฅl og svar

AI-drevne belastnings- og ytelsesverktรธy genererer realistisk trafikk, oppdager avvik i responstidsfordelinger og forutsier skaleringsgrenser fรธr produksjon. AI inspiserer ogsรฅ logger og tilgangsmรธnstre for รฅ flagge sikkerhetshendelser som tradisjonelle regelbaserte verktรธy overser.

Copilot og GPT konverterer vage kvalitetsutsagn til mรฅlbare NFR-er med metrikk, terskel, tilstand og verifiseringsmetode. Forretningsanalytikere gjennomgรฅr hvert utkast mot FURPS+-kategorier og SMART-rammeverket fรธr de aksepterer det i ordrebeholdningen.

Funksjonstesting sjekker om funksjoner oppfรธrer seg som de skal, for eksempel pรฅlogging eller sรธk. Ikke-funksjonell testing mรฅler hvor godt systemet yter under belastning, stress og bruk, og dekker ytelse, sikkerhet, brukervennlighet, kompatibilitet og pรฅlitelighetsmรฅl.

Skalerbarhet, tilgjengelighet, latens, elastisitet og kostnadseffektivitet dominerer skybaserte NFR-er. Teamene ogsรฅ track-observabilitet, mรฅl for gjenoppretting etter katastrofe som RPO og RTO, og samsvar med flere regioner fordi de styrer de fleste beslutninger om skyarkitektur.

Velg en beregning med en enhet, angi en numerisk terskel, beskriv betingelsen den gjelder under, og navngi bekreftelsesmetoden. For eksempel responstid under 400 millisekunder ved 95. persentil med 5,000 brukere, bekreftet av JMeter.

Kryptering av data i ro og under overfรธring, autentiseringsstyrke, rollebasert autorisasjon, revisjonslogging, tidsavbrudd for รธkter og samsvar med standarder som ISO 27001, PCI DSS og GDPR er sikkerhets-NFR-ene de fleste team dokumenterer.

ร… bruke vage adjektiver, utelate metrikken eller betingelsen, liste opp NFR-er bare pรฅ slutten av et prosjekt, og kopiere og lime inn standardtekst som ingen test kan verifisere er de vanligste feilene som fรธrer til omarbeiding av arkitekturen i sent stadium.

NFR-er finnes i programvarekravspesifikasjonen, arkitekturbeslutningsrapporter, tjenestenivรฅavtaler og sjekklister for ferdige resultater. Agile team knytter ofte mรฅlbare NFR-er til episke hendelser og til definisjonen av ยซklar for hver brukerhistorieยป.

Oppsummer dette innlegget med: