Planlegging og gjennomføring av et komplett IT-prosjekt.
No er det tid for å bringe alt du har lært saman i eit avsluttande prosjekt! I dette kapittelet skal vi gå gjennom korleis du planlegg, gjennomfører og presenterer eit større IT-prosjekt – frå idé til ferdig løysing.
Dette er din moglegheit til å vise kompetanse innan programmering, databasar, nettapplikasjonar, testing, versjonskontroll og systemutvikling.
Gode prosjektidéar:
- Løyser eit reelt problem (ditt eige eller andre sitt)
- Passe omfang (2-6 vekers arbeid)
- Lèt deg demonstrere fleire kompetansemål
- Noko du er motivert for
Eksempel på prosjekt:
- Treningslogg – Registrer treningsøkter, visualiser progresjon
- Budsjettapp – Spor utgifter, kategoriser, lag rapportar
- Quiz-platform – Lag quizar, ta quiz, sjå highscore
- Oppskriftsapp – Søk oppskrifter, handlelistegenerator
- Bokingsystem – Book møterom, sportsanlegg, etc.
- Læringsapp – Flashcards, spaced repetition
- Matsvinnapp – Del overskotsmat i nabolaget
Fase 2: Kravspesifikasjon
Dokumenter kva systemet skal gjere:
Funksjonelle krav (features):
- "Brukarar skal kunne registrere seg med e-post og passord"
- "Systemet skal vise dei 10 siste treningsøktene"
- "Brukarar skal kunne eksportere data til CSV"
Ikkje-funksjonelle krav:
- Yting: "Søk skal returnere resultat på < 1 sekund"
- Tryggleik: "Passord skal haskast med bcrypt"
- Brukarvennlegheit: "Appen skal fungere på mobil og desktop"
MoSCoW-prioritering:
- Must have – Kritisk funksjonalitet
- Should have – Viktig, men ikkje kritisk
- Could have – Nice to have
- Won't have – Utanfor scope
Fase 3: Teknologival
Vel teknologiar basert på behova til prosjektet:
Backend:
- Flask (Python) – Enkel, fleksibel
- Django (Python) – Meir struktur, innebygd admin
- Express.js (Node.js) – JavaScript heile vegen
Database:
- SQLite – Enkel, lokal
- PostgreSQL – Robust, for produksjon
- MongoDB – NoSQL, fleksibel struktur
Frontend:
- HTML/CSS/JavaScript – Klassisk
- React – Moderne, komponentbasert
- Flask Templates – Server-side rendering
Versjonskontroll:
- Git + GitHub (alltid!)
Testing:
- unittest/pytest (Python)
- Jest (JavaScript)
Fase 4: Design og arkitektur
Database-design:
- Lag ER-diagram
- Normaliser tabellar
- Definer relasjonar
Wireframes:
- Skisser brukargrensesnitt (papir eller Figma)
- Planlegg navigasjon og arbeidsflyt
Arkitekturdiagram:
[Frontend] <--> [Backend API] <--> [Database]
|
v
[External APIs]Fase 5: Prosjektplan
Bruk Kanban eller lag ein sprint-plan:
Eksempel (2-vekers sprintar):
Sprint 1:
- Sett opp Git repository
- Lag database-skjema
- Implementer brukarregistrering og innlogging
- Skriv testar for autentisering
Sprint 2:
- CRUD-operasjonar for hovudentitet (f.eks. treningsøkter)
- Enkel frontend for å vise og leggje til data
- Integrasjonstestar
Sprint 3:
- Søkjefunksjonalitet
- Datavisualisering (grafar)
- CSS-styling
Sprint 4:
- Avanserte features (eksport, delefunksjon)
- Bugfixes
- Dokumentasjon
Fase 6: Gjennomføring
Best practices under utvikling:
- Commit ofte (dagleg)
- Skriv testar fortløpande
- Hald kodebasen køyrbar
- Dokumenter undervegs
- Be om tilbakemelding tidleg
Typiske utfordringar:
- Scope creep – Prosjektet veks ukontrollert
Løysing: Prioriter MoSCoW, dropp "could have"
- Tekniske problem – Sit fast
Løysing: Google, dokumentasjon, be om hjelp
- Tidsnød – For ambisiøst
Løysing: Lever ein fungerande MVP (Minimum Viable Product)
Fase 7: Testing og kvalitetssikring
Sjekkliste før innlevering:
- [ ] Alle kritiske features fungerer
- [ ] Testar passerer (minst 70% coverage)
- [ ] Koden er ryddig og dokumentert
- [ ] README er komplett
- [ ] Ingen hardkoda passord/API-nøklar
- [ ] Appen køyrer på ei anna maskin (be nokon om å teste!)
Fase 8: Presentasjon
Typisk struktur (10-15 minutt):
1. Introduksjon (2 min)
- Kva er problemet?
- Kven er målgruppa?
2. Demo (5 min)
- Vis viktigaste funksjonalitet
- Live demo (ha backup-video!)
3. Teknisk gjennomgang (3 min)
- Arkitektur
- Interessante tekniske løysingar
- Utfordringar du løyste
4. Refleksjon (2 min)
- Kva lærte du?
- Kva ville du gjort annleis?
- Vidare planar?
5. Q&A (3 min)
Presentasjonstips:
- Øv på førehand (timekeeper!)
- Start med fungerande kode (reset database før demo)
- Snakk meir om kvifor enn kva
- Vis fram kode du er stolt av
Fase 9: Retrospektiv
Reflekter over prosjektet:
Kva gjekk bra?
- God planlegging?
- Effektiv bruk av Git?
- Bra testing?
Kva kunne vore betre?
- Urealistisk scope?
- For lite testing?
- Dårleg tidsbruk?
Kva lærte du?
- Tekniske ferdigheiter
- Prosjektstyring
- Feilsøking
Neste gong:
- Konkrete forbetringspunkt
Skildring: Webapplikasjon for å logge treningsøkter og visualisere progresjon.
Kravspesifikasjon (MoSCoW):
Must have:
- Brukarregistrering og innlogging
- Logge treningsøkt (dato, øving, sett, reps, vekt)
- Vise historikk over økter
- Søkje etter øvingar
Should have:
- Visualisere progresjon med grafar (Chart.js)
- Førehandsdefinerte øvingar (knebøy, markløft, etc.)
Could have:
- Eksporter data til CSV
- Del økter med vener
- Mobil-responsiv design
Won't have:
- Sosiale features (kommentarar, likes)
- Mobilapp (berre webapp)
Teknologival:
- Backend: Flask (Python)
- Database: SQLite (PostgreSQL i produksjon)
- Frontend: HTML/CSS/JavaScript + Chart.js
- Testing: pytest
- Versjonskontroll: Git + GitHub
Database-skjema:
users (id, username, email, password_hash, created_at)
exercises (id, name, category, description)
workouts (id, user_id, date, duration, notes)
workout_sets (id, workout_id, exercise_id, set_number, reps, weight)Tidsplan (4 veker):
Veke 1:
- Dag 1-2: Sett opp Flask + database
- Dag 3-4: Implementer autentisering (register, login, logout)
- Dag 5: Skriv testar for autentisering
Veke 2:
- Dag 1-2: CRUD for workouts (create, read)
- Dag 3: CRUD for workout_sets
- Dag 4-5: Testar + frontend for logging
Veke 3:
- Dag 1-2: Søkjefunksjon for øvingar
- Dag 3-4: Progresjonsgraf med Chart.js
- Dag 5: Responsiv CSS (mobile-first)
Veke 4:
- Dag 1: Eksport til CSV (bonus)
- Dag 2-3: Bugfixes, refaktorering
- Dag 4: Fullstendig README og dokumentasjon
- Dag 5: Førebu presentasjon
Presentasjonsnotat:
- Demo: Registrer brukar → Logg økt → Vis graf
- Teknisk høgdepunkt: Forklare Chart.js-integrasjon
- Utfordring: Modellere many-to-many mellom workouts og exercises
- Lærdom: Kor viktig god databasedesign er frå start
Kva står MoSCoW for i kravspesifikasjon?
A) Most, Should, Could, Won't
B) Must, Should, Could, Won't
C) Maybe, Should, Could, Would
D) Must, Shall, Can, Will
Oppgåve 2 (Fleirval)
Kva er eit MVP (Minimum Viable Product)?
A) Den mest avanserte versjonen av produktet
B) Eit produkt med berre dei mest kritiske funksjonane
C) Eit produkt utan testing
D) Eit produkt berre for mobile einingar
Oppgåve 3
Forklar skilnaden mellom funksjonelle og ikkje-funksjonelle krav.
Oppgåve 4
Du planlegg ein quiz-app. Lag ei liste med 5 funksjonelle krav (features) og prioriter dei med MoSCoW.
Oppgåve 5
Kvifor er det viktig å be nokon andre om å teste appen din før innlevering?
Oppgåve 6
Nemn tre ting ei god README-fil for eit prosjekt bør innehalde.
Oppgåve 7
Forklar kort kva "scope creep" er, og korleis du kan unngå det.
Oppgåve 8
Kvifor bør du skrive testar kontinuerleg gjennom prosjektet, i staden for å vente til slutten?
// --- Samleoppgaver ---
Samleoppgåve 1: Planlegg ditt eige prosjekt
Vel éin av desse idéane (eller lag din eigen):
- Bokapp med vurderingar
- Oppskriftsapp med ingrediensar og framgangsmåte
- Studieplanleggjar for fag og innleveringar
a) Skriv ei kort skildring (2-3 setningar) av prosjektet.
b) Lag ein kravspesifikasjon med 8-10 krav (prioritert med MoSCoW).
c) Vel teknologiar (backend, database, frontend).
d) Skisser databaseskjema med minst 3 tabellar.
e) Lag ein 4-vekers tidsplan med konkrete oppgåver per veke.
Samleoppgåve 2: Evaluer eit fiktivt prosjekt
Ein elev har laga ein "Matsvinn-app" der folk kan dele overskotsmat. Appen har:
- Brukarregistrering (e-post + passord i klartekst!)
- Legg ut matannonse (bilete, skildring, lokasjon)
- Sjå annonsar på eit kart
- Kommentarfelt (inga moderering)
Eleven har jobba åleine i 8 veker, ingen versjonskontroll, ingen testar.
a) Kva tryggleiksproblem ser du?
b) Korleis kunne bruk av Git ha hjelpt dette prosjektet?
c) Kva testar burde vore skrivne?
d) Gi konkrete råd for korleis eleven kan forbetre koden og prosessen framover.
Samleoppgåve 3: Førebu ein presentasjon
Du har nett fullført "Treningslogg-appen" frå eksempelet.
a) Lag ein detaljert agenda for ein 12-minutters presentasjon.
b) Kva delar av koden ville du vist fram? Kvifor?
c) Kva utfordring ville du framheva, og korleis løyste du henne?
d) Kva er dei 3 viktigaste lærdommane dine frå prosjektet?
Oppsummering
I dette kapittelet har du lært:
- Avsluttande prosjekt: planlegging og gjennomføring.
- Prosjektplan: mål, milepælar og framdrift.
- Gjennomføring: byggje løysinga steg for steg.
- Heilskap: bruke kunnskap frå heile faget.
- Dokumentasjon og presentasjon: vise prosess og resultat.
Nøkkelomgrep
| Omgrep | Forklaring |
|---|---|
| Prosjektplan | Plan med mål, milepælar og framdrift |
| Milepæl | Viktig delmål i eit prosjekt |
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.