Programvarebehovsanalyse med eksempel

Programvarekrav er et funksjonelt eller ikke-funksjonelt behov som skal implementeres i systemet. Funksjonell betyr รฅ yte spesielle tjenester til brukeren.

For eksempel, i sammenheng med bankapplikasjoner vil funksjonskravet vรฆre nรฅr kunden velger "Se saldo", mรฅ de kunne se pรฅ sin siste kontosaldo.

Programvarekrav kan ogsรฅ vรฆre et ikke-funksjonelt, det kan vรฆre et ytelseskrav. For eksempel er et ikke-funksjonelt krav at hver side i systemet skal vรฆre synlig for brukerne innen 5 sekunder.

Sรฅ i bunn og grunn programvarekravet er en

  • Funksjonell eller
  • Ikke-funksjonell

trenge som mรฅ implementeres i systemet. Programvarekrav uttrykkes vanligvis som uttalelser.

 

Typer krav

  1. Forretningskrav: De er krav pรฅ hรธyt nivรฅ som er hentet fra business casen fra prosjektene. For eksempel gir et mobilbanktjenestesystem banktjenester til Sรธrรธst-Asia. Forretningskravet som er bestemt for India er kontosammendrag og pengeoverfรธring, mens for Kina er kontosammendrag og fakturabetaling bestemt som et forretningskrav
Land Selskap som tilbyr bankfunksjoner eller -tjenester
India Kontosammendrag og pengeoverfรธring
Kina Kontosammendrag og Bill Betaling
  1. Architekniske krav og designkrav: Disse kravene er mer detaljerte enn forretningskravene. Det bestemmer det overordnede designet som kreves for รฅ implementere forretningskravet. For vรฅr utdanningsorganisasjon vil de arkitektoniske og designmessige brukstilfellene vรฆre pรฅlogging, kursdetaljer osv. Kravet vil vรฆre som vist nedenfor.
Bankbrukssak Krav
Bill Betaling Denne brukssaken beskriver hvordan en kunde kan logge seg pรฅ nettbank og bruke Bill Betalingsanlegg.

Kunden vil se et dashbord med utestรฅende regninger fra registrerte fakturautstedere. Han kan legge til, endre og slette en fakturadetalj. Kunden kan konfigurere SMS, e-postvarsler for ulike faktureringshandlinger. Han kan se historien om tidligere betalte regninger.

Aktรธrene som starter denne brukssaken er bankkunder eller stรธttepersonell.

  1. System- og integrasjonskrav: Pรฅ laveste nivรฅ har vi system- og integrasjonskrav. Det er en detaljert beskrivelse av hvert eneste krav. Det kan vรฆre i form av brukerhistorier som virkelig beskriver det daglige forretningssprรฅket. Kravene er i rikelig med detaljer slik at utviklere kan begynne รฅ kode. Her er et eksempel pรฅ Bill Betalingsmodul hvor krav vil bli nevnt for รฅ legge til en Biller
Bill Betaling Krav
Legg til BillERS
  • Navn pรฅ verktรธyleverandรธr
  • Relasjonskundenummer
  • Automatiske betalinger โ€“ Ja/Nei
  • Betal hele Bill - Ja Nei
  • Automatisk betalingsgrense โ€“ Ikke betal hvis Bill er over spesifisert belรธp

Noen ganger for et prosjekt kan det hende du ikke mottar noen krav eller dokumenter รฅ jobbe med. Men fortsatt er det andre kilder til krav som du kan vurdere for kravet eller informasjonen, slik at du kan basere programvaren eller testdesignen pรฅ disse kravene. Sรฅ de andre kildene for krav du kan stole pรฅ er

Andre kilder til krav

  • Kunnskapsoverfรธring fra kolleger eller ansatte som allerede jobber med det prosjektet
  • Snakk om prosjekt med forretningsanalytiker, produktsjef, prosjektleder og utviklere
  • Analyser tidligere systemversjon som allerede er implementert i systemet
  • Analyser det eldre kravdokumentet til prosjektet
  • Se pรฅ tidligere feilrapporter, noen av feilrapportene blir omgjort til forbedringsforespรธrsel som kan implementeres i gjeldende versjon
  • Se pรฅ installasjonsveiledningen hvis den er tilgjengelig for รฅ se hva som kreves for installasjon
  • Analyser domenet eller bransjekunnskapen som teamet prรธver รฅ implementere

Uansett hvilken kilde til krav du fรฅr, sรธrg for รฅ dokumentere dem i en eller annen form, fรฅ dem vurdert fra andre erfarne og kunnskapsrike teammedlemmer.

Hvordan analysere krav

Tenk pรฅ et eksempel pรฅ et pedagogisk programvaresystem der en student kan registrere seg for forskjellige kurs.

La oss studere hvordan du analyserer kravene. Kravene skal holde en standard kvalitet pรฅ sitt krav, ulike typer kravkvalitet inkluderer

  • Atomic
  • Unikt identifisert
  • Komplett
  • Konsekvent og entydig
  • Tracmulig
  • Prioritert
  • Testbar

Analyser krav

La oss forstรฅ dette med et eksempel, det er tre kolonner i tabellen vist her,

  1. Den fรธrste kolonnen indikerer- "kravkvalitet"
  2. Den andre kolonnen indikerer- "dรฅrlig krav med et eller annet problem"
  3. Den tredje kolonnen er den samme som den andre kolonnen, men - "konvertert til et godt krav".
Krav Kvalitet Eksempel pรฅ dรฅrlig krav Eksempel pรฅ godt krav
Atomic
  • Studentene vil kunne melde seg pรฅ grunn- og etterutdanningskurs
  • Studentene vil kunne melde seg pรฅ grunnkurs
  • Studentene vil kunne melde seg pรฅ postgraduate kurs
Unikt identifisert 1- Studenter vil kunne melde seg pรฅ grunnkurs1- Studenter vil kunne melde seg pรฅ postgraduate-kurs
  1. Kurspรฅmelding
  2. Studentene vil kunne melde seg pรฅ grunnkurs
  3. Studentene vil kunne melde seg pรฅ postgraduate kurs
Komplett En professorbruker vil logge pรฅ systemet ved รฅ oppgi brukernavn, passord og annen relevant informasjon En professorbruker vil logge inn i systemet ved รฅ oppgi brukernavn, passord og avdelingskode
Konsekvent og entydig En student vil ha enten bachelor- eller postgraduate-kurs, men ikke begge deler. Noen kurs vil vรฆre รฅpne for bรฅde undergraduate og post-graduate En student vil ha enten under- eller postgraduate, men ikke begge deler
Tracmulig Vedlikeholde studentinformasjon kartlagt til BRD req.ID? Oppretthold studentinformasjon-tilordnet BRD krav ID 4.1
Prioritert Registrert student-Prioritet 1Vedlikeholde brukerinformasjon-Prioritet 1Registrere kurs-Prioritet 1Se rapportkort-Prioritet 1 Registrer Student-Prioritet 1Vedlikeholde brukerinformasjon-Prioritet 2Registrere kurs-Prioritet 1Se rapportkort-Prioritet3
Testbar Hver side i systemet vil lastes inn i en akseptabel tidsramme Sidene for registrering av studenter og pรฅmelding til kurs vil lastes inn innen 5 sekunder


La oss nรฅ forstรฅ hvert av disse kravene i detaljer fra og med Atomic.

Atomic

Atomic

Sรฅ hvert eneste krav du har bรธr vรฆre atomรฆrt, noe som betyr at det skal vรฆre pรฅ svรฆrt lavt detaljnivรฅ, det skal ikke vรฆre mulig รฅ skille ut i komponenter. Her vil vi se de to eksemplene for krav, kl Atomic og unikt identifiserte kravnivรฅer.

Sรฅ la oss fortsette med eksempel pรฅ systembygging for utdanningsdomene. Her er det dรฅrlige kravet "Studenter vil kunne melde seg pรฅ bachelor- og postgraduate-kurs" . Dette er et dรฅrlig krav fordi det ikke er atomisk fordi det snakker om to forskjellige enheter undergraduate og post-graduates kurs. Sรฅ รฅpenbart er det ikke et godt krav, men dรฅrlig krav, sรฅ korrespondanse godt krav ville vรฆre รฅ skille det ut i to krav. Sรฅ den ene snakker om pรฅmeldingen til grunnfag, mens den andre snakker om pรฅmeldingen til postgraduate-kursene.

Unikt identifisert

Unikt identifisert

Pรฅ samme mรฅte er neste kravkvalitet รฅ se etter unikt identifisert, her har vi to separate krav, men de har begge samme ID#1. Sรฅ hvis vi refererer kravet vรฅrt med referanse til ID#, men det er ikke klart hvilket eksakt krav vi refererer til dokumentet eller annen del av systemet, da begge har samme ID#1. Sรฅ skilles ut med unike id-er, sรฅ gode krav vil bli returnert som seksjon 1- kurs pรฅmeldinger, og den har to krav 1.1 id er pรฅmelding til grunnfag mens 1.2 id er pรฅmelding til postgraduate kurs.

Komplett

Komplett

Dessuten bรธr hvert eneste krav vรฆre komplett. For eksempel, her sier det dรฅrlige kravet at en "professorbruker vil logge pรฅ systemet ved รฅ oppgi brukernavn, passord og annen relevant informasjon". Her er den รธvrige relevante informasjonen ikke klar, sรฅ den andre relevante informasjonen bรธr staves i god forskrift for รฅ gjรธre kravet komplett.

Konsekvent og entydig

Konsekvent og entydig

Deretter skal hvert eneste krav vรฆre konsistente og entydige, sรฅ her har vi for eksempel krav "En student vil ha enten grunnkurs eller postgraduate-kurs, men ikke begge" dette er ett krav det er et annet krav som sier "Noen kurs vil vรฆre รฅpen for bรฅde undergraduate og post-graduate studenterยป.

Problemet med dette kravet er at fra det fรธrste kravet ser det ut til at kursene er delt inn i to kategorier under hovedfagskurs og etterutdanningskurs, og studenten kan velge ett av to, men ikke begge. Men nรฅr du leser andre krav, er det i konflikt med det fรธrste kravet, og det forteller at noen kurs vil รฅpne for bรฅde postgraduate og under-graduate.

Sรฅ det er รฅpenbart รฅ konvertere dette dรฅrlige kravet til et godt krav som er "En student vil ha enten under-graduate-kurs eller post-graduate-kurs, men ikke begge deler". Noe som betyr at hvert emne vil bli merket enten som et hovedfag eller et hovedfag

Tracmulig

Tracmulig

Hvert eneste krav bรธr vรฆre tracmulig fordi det allerede finnes forskjellige nivรฅer av krav, vi sรฅ allerede at vi pรฅ toppen hadde forretningskrav, og sรฅ har vi arkitektur- og designkrav etterfulgt av krav til systemintegrasjon.

Nรฅr vi konverterer forretningskrav til arkitektoniske og designmessige krav, eller konverterer arkitektoniske og designmessige krav til systemintegrasjonskrav, mรฅ det vรฆre traceability. Som betyr at vi skal kunne ta hvert eneste forretningskrav og tilordne det til det tilsvarende ett eller flere krav til programvarearkitektur og design. Sรฅ her er et eksempel pรฅ et dรฅrlig krav som sier ยซVedlikehold studentinformasjon โ€“ tilordnet til BRD-krav-ID?ยป Krav-ID-en er ikke oppgitt her.

Sรฅ nรฅr man konverterer det til et godt krav, stรฅr det det samme, men det er kartlagt med krav-ID 4.1. Sรฅ kartleggping bรธr vรฆre der for hvert eneste krav. Pรฅ samme mรฅte som vi har kart pรฅ hรธyt og lavt nivรฅping kravet, kartetping er det ogsรฅ mellom system- og integrasjonskravet til koden som implementerer det kravet, og det er ogsรฅ et kartping mellom system- og integrasjonskravet til testtilfellet som tester det spesifikke kravet.

Sรฅ dette traceffektivitet er pรฅ tvers av hele prosjektet

Prioritert

Prioritert Registrert student-Prioritet 1
Oppretthold brukerinformasjon-prioritet 1
Meld deg pรฅ kurs โ€“ prioritet 1
Vis rapportkort-prioritet 1
Registrer studentprioritet 1
Oppretthold brukerinformasjon-prioritet 2
Meld deg pรฅ kurs โ€“ prioritet 1
Se rapportkort-prioritet3

Deretter mรฅ hvert eneste krav prioriteres, slik at teamet har retningslinjer for hvilke krav som kan implementeres fรธrst og hvilke som kan gjรธres senere. Her kan du se dรฅrlig prioritet har registrert student, vedlikeholde brukerinformasjon og hvert eneste krav har gitt prioritet-1. Alt kan ikke ha samme prioritet, sรฅ krav kan prioriteres. Sรฅ eksempelet pรฅ gode krav her er registrer studenten og pรฅmeldingskurs er gitt hรธyeste prioritet 1, mens vedlikehold av brukerinformasjon kommer under ved prioritet 2 og sรฅ har vi se rapportkort pรฅ prioritet-3

Testbar

Testbar Hver side i systemet vil lastes inn i en akseptabel tidsramme Sidene for registrering av studenter og pรฅmelding til kurs vil lastes inn innen 5 sekunder

Hvert eneste krav skal vรฆre testbart, her er det dรฅrlige kravet "hver side i systemet vil lastes i en akseptabel tidsramme". Nรฅ er det to problemer med dette kravet fรธrst er at hver side betyr at det kan vรฆre mange sider som kommer til รฅ sprenge testarbeidet. Det andre problemet er at det stรฅr at siden skal lastes i en akseptabel tidsramme, hva er nรฅ en akseptabel tidsramme? Akseptabelt for hvem. Sรฅ vi mรฅ konvertere det ikke-testbare argumentet til et testbart argument, som spesifikt forteller om hvilken side vi snakker om "registrer student- og registrer kurssider", og den akseptable tidsrammen er ogsรฅ gitt som er 5 sekunder.

Konklusjon

Sรฅ dette er hvordan vi mรฅ se pรฅ hvert eneste krav pรฅ passende nivรฅ. For eksempel hvis vi skal bygge en programvare med tanke pรฅ system- og integrasjonskrav. Vi mรฅ se pรฅ system- og integrasjonskrav gitt i programvarekravspesifikasjonene eller brukerhistoriene og gjelde for hver eneste kravkvalitet. Sjekk deretter om hvert eneste krav er atomรฆrt, unikt identifisert og komplett og sรฅ videre.

Oppsummer dette innlegget med: