Fossefallsmodellen, smidig utvikling og Scrum.
Når vi utvikler større programvaresystemer, trenger vi strukturerte metoder for å planlegge, organisere og gjennomføre arbeidet. Ulike systemutviklingsmetoder gir oss forskjellige rammeverk for hvordan vi kan jobbe effektivt i team, håndtere endringer og levere kvalitetsprodukter.
I dette kapittelet skal vi se på de mest brukte metodene i moderne programvareutvikling – fra tradisjonelle fossefallsmodeller til smidige metoder som Scrum og Kanban.
Fossefallsmodellen er en tradisjonell, sekvensiell tilnærming der utviklingsprosjektet deles inn i faser som må fullføres i rekkefølge:
1. Kravspesifikasjon – Alle krav samles inn og dokumenteres
2. Design – Systemarkitektur og detaljert design planlegges
3. Implementering – Koden skrives basert på designet
4. Testing – Systemet testes mot kravene
5. Vedlikehold – Systemet settes i drift og vedlikeholdes
Fordeler: Strukturert, god dokumentasjon, klar progresjon, enkel planlegging
Ulemper: Lite fleksibel, vanskelig å endre krav underveis, sen tilbakemelding fra brukere
Smidig/agil utvikling (Agile)
Agile metoder fokuserer på:
- Iterativ utvikling i korte sykluser (sprints/iterasjoner)
- Tett samarbeid med kunde/bruker
- Rask respons på endringer
- Fungerende programvare fremfor omfattende dokumentasjon
- Kontinuerlig forbedring
Fordeler: Fleksibel, tidlig verdi til kunde, bedre risikohåndtering
Ulemper: Krever erfarne team, kan være utfordrende å estimere sluttdato
Scrum
Scrum er et rammeverk for agil utvikling med følgende roller og elementer:
Roller:
- Product Owner – Representerer kunden, prioriterer funksjonalitet
- Scrum Master – Fasiliterer prosessen, fjerner hindringer
- Utviklingsteam – Selvorganiserende team som leverer produktet
Artefakter:
- Product Backlog – Prioritert liste over all ønsket funksjonalitet
- Sprint Backlog – Oppgaver valgt for nåværende sprint
- Increment – Fungerende produkt etter hver sprint
Seremonier:
- Sprint Planning – Planlegging av kommende sprint (1-4 uker)
- Daily Standup – Daglig 15-minutters møte
- Sprint Review – Demo av ferdig funksjonalitet
- Sprint Retrospective – Evaluering av prosess og forbedringspunkter
Kanban
Kanban er en metode for å visualisere og optimalisere arbeidsflyt:
- Kanban-tavle – Kolonner representerer arbeidsstadier (To Do, In Progress, Testing, Done)
- Work In Progress (WIP) limits – Begrenser antall oppgaver i hver kolonne
- Pull-system – Team henter nye oppgaver når kapasitet er ledig
- Kontinuerlig flyt – Ingen faste sprints, oppgaver flyter gjennom systemet
Når brukes Kanban: Support-team, vedlikeholdsarbeid, kontinuerlig leveranse
DevOps
DevOps er en kultur og praksis som bryter ned siloen mellom utvikling (Dev) og drift (Ops):
Prinsipper:
- Automatisering av bygg, testing og deployment
- Kontinuerlig integrasjon (CI) og kontinuerlig leveranse (CD)
- Infrastruktur som kode
- Monitoring og logging i produksjon
- Rask feedback-loop
Verktøy: Git, Jenkins, Docker, Kubernetes, Ansible, Prometheus
Med Fossefallsmodellen:
1. Måned 1-2: Intervjue kunde, skrive komplett kravspesifikasjon
2. Måned 3: Designe databaseskjema og systemarkitektur
3. Måned 4-6: Utvikle komplett løsning
4. Måned 7: Testing av hele systemet
5. Måned 8: Lansering
Problem: Kunden ser ikke produktet før måned 7-8. Hvis kravene var misforstått, oppdages det sent.
Med Scrum:
Sprint 1 (2 uker): Enkelt produktkatalog med bilder og priser
Sprint 2: Handlekurv og registrering av brukere
Sprint 3: Betalingsintegrasjon (forenklet)
Sprint 4: Ordrehistorikk og kvitteringer
Sprint 5: Søkefunksjonalitet
Sprint 6: Anmeldelser og vurderinger
Fordel: Kunden ser fungerende versjon etter 2 uker og kan gi tilbakemelding. Prioriteringer kan justeres underveis.
Med Kanban:
Team jobber kontinuerlig med oppgaver:
- [To Do] → [In Progress] → [Code Review] → [Testing] → [Done]
- WIP limit på "In Progress": Max 3 oppgaver samtidig
- Nye bugs og features legges til [To Do] og prioriteres løpende
- Ingen faste sprints, men kontinuerlig leveranse til produksjon
Egnet for: Team som må håndtere både nye features og akutte bugs.
Hva er hovedforskjellen mellom fossefallsmodellen og agile metoder?
A) Fossefallsmodellen bruker sprints, agile bruker faser
B) Fossefallsmodellen er sekvensiell, agile er iterativ
C) Fossefallsmodellen krever mer erfaring
D) Fossefallsmodellen er alltid raskere
Oppgave 2 (Flervalg)
Hvilken rolle i Scrum har ansvar for å prioritere Product Backlog?
A) Scrum Master
B) Utviklingsteam
C) Product Owner
D) CEO
Oppgave 3
Forklar kort hva "Daily Standup" er i Scrum, og hvorfor møtet holdes stående.
Oppgave 4
Et utviklingsteam jobber med vedlikehold av et eksisterende system. De får både planlagte features og akutte bugs. Hvilken metode (Scrum eller Kanban) ville du anbefalt, og hvorfor?
Oppgave 5
Beskriv kort hva WIP-limits er i Kanban, og hvorfor de er nyttige.
Oppgave 6
Hva er hovedforskjellen mellom Sprint Review og Sprint Retrospective i Scrum?
Oppgave 7
Nevn to fordeler og to ulemper med fossefallsmodellen sammenlignet med agile metoder.
Oppgave 8
Forklar kort hva DevOps er, og hvordan det skiller seg fra tradisjonell utvikling.
// --- Samleoppgaver ---
Samleoppgave 1
Dere skal utvikle en app for en ungdomsskole der elever kan registrere fravær, se timeplan og motta beskjeder. Skolen har gitt dere en liste med 25 ønsker om funksjonalitet, men budsjettet dekker kun 6 måneders arbeid for et team på 3 personer.
a) Hvilken systemutviklingsmetode ville du valgt? Begrunn svaret.
b) Skissér en plan for de første fire ukene av prosjektet.
c) Hvordan ville du prioritert hvilken funksjonalitet som utvikles først?
Samleoppgave 2
Et team bruker Scrum med 2-ukers sprints. I Sprint 3 oppdager de at en teknisk beslutning fra Sprint 1 gjør det svært vanskelig å implementere en viktig feature.
a) Hva er fordelene med at dette oppdages i Sprint 3, fremfor etter 6 måneders utvikling?
b) Forklar hvordan teamet kan håndtere dette problemet i Scrum-rammeverket.
c) Hvilken Scrum-seremoni er mest relevant for å diskutere denne type problemer?
Oppsummering
I dette kapittelet har du lært:
- Systemutviklingsmetoder: rammeverk for å utvikle programvare.
- Fossefall: sekvensiell metode.
- Smidig (Agile): iterativ og fleksibel.
- Valg av metode: ut fra prosjektets behov.
Noekkelbegreper
| Begrep | Forklaring |
|---|---|
| Fossefall | Sekvensiell utviklingsmetode |
| Smidig | Iterativ, fleksibel utviklingsmetode |
Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.