Programvareutviklingsmetoder

Laget av Camilla Larsen

Kravspesifikasjoner og  Unified modelling language

Agenda

  • Kravspesifikasjoner

  • Introduksjon til UML

  • UML diagramtyper

  • UML verktøy

  • Fordeler og ulemper ved UML

  • Gruppeoppgave

Kravspesifikasjoner

Tekniske Kravspesifikasjoner

  • Dokumenter som beskriver de tekniske kravene som må oppfylles for å utvikle eller produsere et produkt eller en tjeneste.
  • Kan omfatte spesifikasjoner for hardware, programvare, ytelse, pålitelighet, sikkerhet og andre relevante tekniske egenskaper.
  • Inneholder detaljert beskrivelse av produktet eller tjenesten som skal utvikles, og spesifiserer kravene som må oppfylles for å oppnå ønsket funksjonalitet og ytelse.
  • Viktig for å sikre at produktet eller tjenesten er av høy kvalitet og oppfyller kravene til kunden eller brukeren.
  • Kan også bidra til å unngå misforståelser eller uklarheter mellom utviklere, designere og kunder eller brukere.

Hva bør kravspesifikasjoner innbære?

I korte trekk bør kravspesifikasjon inneholde all nødvendig informasjon som er relevant for å utvikle eller produsere produktet eller tjenesten i henhold til kundens eller brukerens behov og krav. Det er viktig å sikre at kravspesifikasjonen er klar og presis for å unngå misforståelser eller uklarheter senere i utviklingsprosessen.

Kravspesifikasjons innhold

 

  • Funksjonelle krav: hva produktet eller tjenesten skal kunne gjøre. F.eks: krav til funksjonaliteten til en programvareapplikasjon eller maskinvarekomponent.

  • Ikke-funksjonelle krav: kvaliteten eller egenskapene til produktet eller tjenesten. F.eks: krav til sikkerhet, ytelse, tilgjengelighet, pålitelighet eller skalerbarhet.

  • Designkrav: Hvordan produktet eller tjenesten skal designes. F.eks utseende, brukergrensesnitt, arkitektur og andre designelementer.

  • Prosjektkrav: tidsfrister, budsjett og andre krav som er spesifikke for prosjektet.

  • Testing og kvalitetskrav: testing og kvalitetssikring av produktet eller tjenesten. F.eks: testingstyper, testomfang og kvalitetsstandarder.

  • Dokumentasjonskrav:  dokumentasjon som må være tilgjengelig for produktet eller tjenesten, f.eks brukerhåndbøker, teknisk dokumentasjon og annen relevant informasjon.

  • Kommunikasjonskrav: kommunikasjon og samarbeid mellom utviklingsteamet og kunden eller brukeren, f.eks krav til rapportering, møter og annen kommunikasjon.

Hvem skriver egentlig kravspesifikasjonene?

Hvem skriver egentlig kravspesifikasjonene?

 

  • Kunder eller brukere: kan være den primære kilden til kravene. De kan gi en beskrivelse av hva de ønsker produktet eller tjenesten skal kunne gjøre og hvilke krav de har til kvalitet, ytelse og funksjonalitet.

  • Produktsjef: er ansvarlige for å utvikle og markedsføre produktet eller tjenesten. De kan skrive kravspesifikasjoner basert på markedsundersøkelser, brukerundersøkelser og konkurranseanalyse.

  • Utviklere og ingeniører:  kan skrive kravspesifikasjoner. De kan gi innsikt i tekniske krav og begrensninger, og bidra til å sikre at kravene er realistiske og gjennomførbare.

  • Prosjektledere: kan koordinere utviklingsprosessen og bidra til å skrive kravspesifikasjoner basert på kravene fra ulike interessenter.

Unified modelling language

Introduksjon til UML

  • Det er et visuelt verktøy som brukes i programvareutvikling for å beskrive og dokumentere et system.
  • UML gir en felles og standardisert måte å representere systemet på, som gjør det enklere for utviklingsteam å samarbeide og kommunisere om systemet.
  • UML består av et sett med diagrammer som representerer forskjellige aspekter av systemet, for eksempel brukstilfeller, klasser, sekvenser, aktiviteter og tilstander.

UML for frontend

  • For front-end studenter kan man si at UML kan hjelpe dem med å forstå hvordan systemet er strukturert og hvordan de forskjellige komponentene henger sammen. For eksempel, UML kan brukes til å designe brukergrensesnittet, definere interaksjoner mellom brukeren og systemet, og modellere hvordan informasjon flyter gjennom systemet.

UML for backend

  • For back-end studenter kan man si at UML kan hjelpe dem med å forstå hvordan systemet fungerer og hvordan forskjellige deler av systemet samhandler med hverandre. For eksempel, UML kan brukes til å definere datamodeller og relasjoner mellom forskjellige databasetabeller, modellere forretningslogikk, og beskrive hvordan informasjon flyter mellom forskjellige systemkomponenter.

UML-diagramtyper

Det finnes mange ulike diagramtyper, men vi skal kun fokusere på:

UML-diagramtyper

  • Use case-diagram
  • Aktivitetsdiagram

Use-case diagram

  • Formål: Use case-diagrammer brukes til å identifisere, beskrive og organisere funksjonelle krav og brukssaker for et system. Viser hva slags funksjonalitet som er tilgjengelig for brukerne.
  • Fokus: Fokuserer på aktørene som bruker systemet og de forskjellige oppgavene (brukssaker) som systemet skal støtte for disse aktørene.
  • Bruk: hjelper med å kommunisere og organisere kravene fra brukernes perspektiv, og de danner grunnlaget for å utvikle mer detaljerte use case-beskrivelser og andre UML-diagrammer.
  • Eksempel: Et use case-diagram for en e-handelsapplikasjon kan vise aktørene som kunden og administratoren, samt brukssakene som å bestille produkter, administrere brukerkontoer og oppdatere produktlageret.

Aktivitetsdiagram

  • Formål: Viser trinnene som trengs for å utføre en aktivitet eller prosess. Diagrammet viser hvilke handlinger som må utføres, og i hvilken rekkefølge, for å oppnå et bestemt mål.
  • Fokus: Fokuserer på detaljene i hvordan en bestemt oppgave eller prosess utføres, inkludert de forskjellige stegene, beslutninger, parallelle handlinger, og flyt av kontroll.
  • Bruk: Aktivitetsdiagrammer er spesielt nyttige for å forstå, analysere og dokumentere arbeidsflyten eller prosessen til en funksjonalitet i systemet.
  • Eksempel: Et aktivitetsdiagram kan vise hvordan en bestillingsprosess utføres i en e-handelsapplikasjon, inkludert trinn som å velge produkter, legge dem til i handlekurven, gå til utsjekking, og betale.
 					[Start]
                        |
                        v
            [Velg pizzatype og størrelse]
                        |
                        v
           [Velg tillegg (toppings, sauser)]
                        |
                        v
              [Legg til pizza i handlekurven]
                        |
                        v
            [Gå til handlekurv for å sjekke]
                        |
          [Er bestillingen korrekt?]
          /              |                \
       Ja               Nei              Avbryt bestilling
        |                |                     |
        v                v                     v
[Fullfør bestilling]   [Endre bestilling]    [Avslutt]
                        |
                        v
                  [Fullfør bestilling]
                        |
                        v
                    [Betal]
                        |
                        v
                   [Bestilling fullført]
                        |
                        v
                    [Slutt]

Fordeler og ulemper med UML

Positive sider:

Negative sider:

  • Tydelig kommunikasjon: UML gir et standardisert visuelt språk for å beskrive og kommunisere systemdesign.
  • Bedre design: UML kan hjelpe utviklere med å lage bedre design ved å strukturere systemet på en logisk og oversiktlig måte.
  • Økt effektivitet: UML kan øke effektiviteten i designprosessen ved å hjelpe teammedlemmer til å forstå hverandres arbeid bedre.
  • Gjenbruk: UML kan øke gjenbrukbarheten av koden ved å skape et visuelt bilde av systemet, som kan brukes til å lage nye systemer med lignende funksjonalitet.
  • Kompleksitet: UML kan være komplekst og vanskelig å forstå for uerfarne utviklere og klienter.
  • Tidkrevende: UML-diagrammer kan være tidkrevende å lage, spesielt hvis de skal være detaljerte og nøyaktige.
  • Begrenset verdi: UML kan ha begrenset verdi i prosjekter som er små eller enkle, eller der designet ikke endres ofte.
  • Stivhet: UML kan være stivt i forhold til endringer, og det kan være vanskelig å endre diagrammene når systemet utvikler seg.

UML-verktøy

  • https://www.draw.io/
  • https://www.lucidchart.com
  • https://www.visual-paradigm.com/
  • Figma
  • Adobe XD

Gruppeoppgave

Oppgavebeskrivelse: Deltakerne deles inn i grupper. Hver gruppe skal lage sitt eget UML-diagram for en enkel applikasjon som lar brukere registrere seg og logge inn på en nettside. Front-end gruppen skal fokusere på brukergrensesnittet, mens back-end gruppen skal fokusere på databasestrukturen og håndtering av brukerdata.

Velg 2 av diagrammene under som dere skal lage sammen i gruppen:

  • Use case-diagram som viser alle handlingene brukeren kan utføre, for eksempel å registrere seg, logge inn, og endre passord.
  • Aktivitetsdiagram som viser hva som skjer når brukeren utfører en handling, for eksempel registrering av ny bruker.

 

Når diagrammene er ferdige, skal skjermbilder sendes til Camilla på teams

Gruppeoppgave

Tema for neste forelesning

  • Gjesteforeleser (?)
  • Brukermedvirkning
  • Prototyping
  • Brukertesting

Programvareutviklingsmetoder

By Camilla Larsen

Programvareutviklingsmetoder

  • 503