Skip to content

Procesmodel ​

Systemudviklingsmetode og procesmodel hænger lidt sammen. Systemudviklingsmetoden har ofte procesmodellen som en ovenstående tilgang. En procesmodel er en overordnet struktur for vores proces, som hvilken rækkefølge vi gør tingene i og hvordan vi tilgår vores arbejde.

Predictive - "Vi ved, hvad vi skal lave -> planlæg først." Iterative - "Vi forbedrer løsningen undervejs -> gentag og juster." Agile - "Vi udvikler lidt ad gangen -> få feedback og tilpas hurtigt." Incremental - "Vi bygger systemet i dele -> tilføj funktionalitet lidt ad gangen."

Adaptive – "Vi ved ikke alt endnu → lær og tilpas undervejs."

image

Usikkerhed & Kompleksitet ​

Der findes høj og lav for begge. Så lav usikkerhed og høj kompleksitet.

  • Usikkerhed peger på procesmodel.
  • Kompleksitet peger på systemudviklingsmetode.

Usikkerhed er hvor meget vi ikke ved om/i et projekt. Krav kan være uklare eller ændre sig undervejs.

Kompleksitet er hvor svært systemet er at udvikle og overskue. Der er også hvor mange dele og afhængigheder der påvirker hinanden.

Ved høj usikkerhed, bruger man cyklisk procesmodel. Ved høj kompleksitet, bruger man cyklisk systemudviklingsmetode, som så peger på en agil procsmodel.

Predictive models / Lineære procesmodeller ​

Predictive er når processen planlægges og forudsiges på forhånd. Altså når mn ved, hvad der skal bygges og dermed kan det planlægges forud.

Hvis alle krav/requirements er kendte og stabile, kan man tidligt planlægge, hvad system skal kunne og hvordan det skal designed og dermed hvordan udviklingen skal foregå.

Predictive models er især god, når der er lav usikkerhed.

De typiske faser i predictive modeller er:

  • Requirements -> Design -> Implementation -> Verification -> Development -> Maintenance

Vandfald - en fase færdiggøres, før man begynder på næste fase. Vandfald med feedback - en fase færdiggøres, hvor der gives feedback og dermed har mulighed for at gå tilbage, før man begynder på næste fase. Sashimi / Vandfald med overlap - faserne må gerne overlappe med hinanden, så en fase behøves ikke at være færdiggjort, før man begynder på en ny. Inkrementel vandfald - der laves flere mindre vandfald i stedet for et stort vandfald, altså et vandfald for hver feature, som så er en increment.

V-model - ligner et vandfald, men bare som et "v".

  • På venstre side specificerer og designer man systemet.
  • På højre side tester og verificerer man det, som blev defineret på venstre side.
  • I bunden implementerer man.

Software Development Life Circle (SDLC) - er en livscyklus for udvikling af noget software. Det beskriver hvilke overordnede aktiviteter softwareudvikling gennemgår.

Fordele:

  • Forudsigelighed, stabilitet, besparende, detaljeret design, mindre refaktorering, retter fejl tidligt, bedre dokumentation, mere tid til at lave træningsmaterialer, nem vedligeholdelse Ulemper:
  • Ufleksibel, senere første udgivelse, Big Design Up Front

Adaptive models ​

Adaptive modeller gør det muligt at tilpasse krav, planer og løsninger under selve udviklingen, når man får ny information og feedback. Adaptive models er især gode når der er høj usikkerhed og dermed mange forventede ændringer, fordi man ikke kender alle krav fra starten.

Fordele:

  • Fleksibel, god mulighed for feedback Ulemper:
  • Steps kan ikke blive gennemarbejdet ordenligt, risiko for fejl i mål

Iterative models / Cykliske procesmodeller ​

Iterative modeller er hvor dele af udviklingsprocessen gentages i flere iterationer. I hver iteration kan man vurdere resultatet og få feedback og dermed ændre eller forbedre løsningen i næste iteration.

Spiral - system udvikles gennem flere cyklusser med fokus på at identificere og reducere risici. Prototyping - man laver tidlige versioner af systemet og får feedback fra brugeren, og dermed forbedrer løsningen gennem flere iterationer.

Incremental ​

Incremental modeller er hvor man bygger systemet op i mindre dele, som kaldes increments. Man tilføjer mere funktionalitet/feature for hver increment, i stedet for at udvikle hele systemet på en gang.

Agile ​

Agile er en adaptiv tilgang til softwareudvikling, hvor man forsøger ikke at planlægge hele projektet fra starten. Man udvikler systemet lidt af gangen og får feedback, og dermed tilpasser kran, planer og løsningen undervejs.

Agile arbejder også typisk som iterativt og inkrementelt.