Presentationer Slide 1/1

Kap 5.1

Planera ett projekt

Gå från en vag idé till en plan som går att programmera och testa.

Mål

Efter lektionen ska du kunna...

  • förklara varför planering behövs
  • skriva tydliga krav
  • använda användningsfall, flödesschema och pseudokod
  • dela upp ett projekt i delar
  • bestämma projektets MVP

Vanlig fälla

Börja inte med kod direkt

Skapa filer
Skriv en meny
Lägg till funktioner
Ändra idén under tiden

Om målet är otydligt är det svårt att veta vad som ska byggas först.

Oklarheter i idén blir lätt större kodproblem.

Planering

Planen behöver inte vara perfekt

Planering betyder inte att varje detalj måste vara bestämd.

Planen ska göra problemet tillräckligt tydligt för att du ska kunna börja i rätt ordning.

Planen får ändras när du lär dig mer under projektet.

Från idé till krav

En vag idé räcker inte

Vag idé:
"Gör ett bibliotekssystem"
Tydligt krav:
"Användaren ska kunna söka efter en bok med titel."

Ett krav beskriver något programmet ska kunna göra.

Krav

Lånebibliotekets viktigaste funktioner

  • Lägg till en bok med titel och författare.
  • Sök efter en bok med titel.
  • Visa om boken är tillgänglig eller utlånad.
  • Spara data mellan programmets körningar.

Kraven visar att programmet behöver inmatning, lagring, sökning och utskrift.

Process

Sex steg från idé till start

  1. Beskriv idén.
  2. Skapa användningsfall.
  3. Rita viktiga flöden.
  4. Skriv pseudokod.
  5. Identifiera programmets delar.
  6. Bestäm en MVP.

Steg 1

Beskriv idén

Vad? Ett lånebibliotek för böcker.

Vem? En bibliotekarie.

Varför? För att registrera, söka och låna ut böcker.

Programmet ska vara ett lånebibliotek där
användaren kan lägga till, söka och låna ut böcker.

Steg 2

Användningsfall visar användarens mål

flowchart LR
    A[Bibliotekarie] --> B((Registrera bok))
    A --> C((Söka bok))
    A --> D((Låna ut bok))
    A --> E((Visa alla böcker))

Användningsfallen hjälper dig hitta vilka funktioner programmet behöver.

Användningsfall

Beskriv ett fall med text

Användare: Bibliotekarie
Mål: Låna ut en bok

1. Sök efter boken
2. Kontrollera att den finns
3. Kontrollera att den är tillgänglig
4. Ändra status till utlånad
5. Visa en bekräftelse

Steg 3

Rita flödet för utlåning

flowchart TD
    A([Start]) --> B[Skriv boktitel]
    B --> C[Sök efter boken]
    C --> D{Finns boken?}
    D -- Nej --> E[Visa: Boken finns inte]
    D -- Ja --> F{Är boken tillgänglig?}
    F -- Nej --> G[Visa: Redan utlånad]
    F -- Ja --> H[Ändra status till utlånad]
    H --> I[Visa bekräftelse]
    E --> J([Slut])
    G --> J
    I --> J

Varför flödesschema?

Upptäck besluten före koden

  • Vad händer om boken inte finns?
  • Vad händer om den redan är utlånad?
  • När får statusen ändras?
  • Vilket meddelande ska användaren få?

Diagrammet gör alternativa vägar synliga innan du skriver villkoren.

Steg 4

Skriv pseudokod

Fråga efter boktitel
Sök efter boken

Om boken inte finns:
    Visa "Boken finns inte"
Annars om boken redan är utlånad:
    Visa "Boken är redan utlånad"
Annars:
    Ändra status till utlånad
    Visa en bekräftelse

Pseudokoden beskriver logiken utan krav på korrekt Pythonsyntax.

Från pseudokod

Nu blir funktionerna tydligare

def sök_bok(titel):
    ...

def är_tillgänglig(bok):
    ...

def låna_ut_bok(bok):
    ...

Varje del av pseudokoden kan bli en funktion eller ett villkor.

Steg 5

Identifiera programmets delar

  • Gränssnitt: meny och användarinmatning.
  • Logik: sökning och utlåning.
  • Data: böcker och deras status.
  • Lagring: fil eller databas.
  • Felhantering: tom inmatning och saknade böcker.

Kodstruktur

Planera filer efter ansvar

lanebibliotek/
├── main.py       # meny och programflöde
├── databas.py    # spara och söka böcker
└── modeller.py   # klassen Book

Filstrukturen visar var olika delar ska byggas.

Steg 6

MVP: minsta fungerande version

MVP betyder Minimum Viable Product.

Det är den enklaste versionen som löser projektets viktigaste problem.

Målet är att snabbt få ett litet program som går att köra och testa.

Avgränsa

Nu och senare

MVP:
- Lägg till böcker
- Visa alla böcker
- Sök efter titel
Senare:
- Inloggning
- Grafiskt gränssnitt
- Statistik
- Export till PDF eller CSV

Varför MVP?

Bygg kärnan innan extrafunktionerna

  • Du får något körbart tidigt.
  • Grundfunktionerna kan testas innan projektet växer.
  • Du minskar risken att fastna i detaljer.
  • Extra funktioner kan prioriteras efter att kärnan fungerar.

Exempel

Planera ett elevregister

Syfte: En lärare ska kunna registrera elever och poäng.

Användare: Lärare.

Viktigaste funktioner: Lägg till elev, visa elever och sök efter elev.

Lagring: Databas eller textfil.

Elevregister

Pseudokod för ett centralt flöde

Visa meny
Om användaren väljer "lägg till elev":
    Fråga efter namn
    Fråga efter poäng
    Kontrollera att poängen är ett tal
    Spara eleven
    Skriv "Elev sparad"

Planen visar både normalflöde och behovet av validering.

Elevregister

Möjlig kodstruktur

elevregister/
├── main.py       # meny och användarens val
├── databas.py    # spara, hämta och söka elever
└── modeller.py   # klassen Elev

Nu är det tydligt vilken del som kan byggas och testas först.

Arbetsordning

Bygg projektet stegvis

  1. Skapa datamodellen.
  2. Bygg lagringen.
  3. Testa att lägga till och hämta data.
  4. Lägg till menyn.
  5. Hantera felaktig inmatning.
  6. Bygg extrafunktioner sist.

Risker

Planera även för fel

  • Vad händer vid tom inmatning?
  • Vad händer om användaren skriver text där ett tal krävs?
  • Vad händer om en sökning inte ger någon träff?
  • Vad händer om filen eller databasen inte kan öppnas?

Förväntade fel bör finnas med i krav och testfall.

Checklista

Innan du börjar koda

  • Vad är programmets syfte?
  • Vem ska använda det?
  • Vilka tre funktioner är viktigast?
  • Vad ingår i MVP?
  • Vilken data ska sparas?
  • Vilka fel kan uppstå?
  • Vilken del ska byggas först?

Öva

Planera ditt projekt

  1. Beskriv programmets syfte.
  2. Lista funktionerna.
  3. Skapa minst ett användningsfall.
  4. Rita ett centralt flöde.
  5. Skriv pseudokod för en funktion.
  6. Bestäm MVP och vad som får vänta.

Sammanfattning

Kom ihåg

  • Krav gör en vag idé programmerbar.
  • Användningsfall visar vad användaren behöver.
  • Flödesscheman visar beslut och alternativa vägar.
  • Pseudokod beskriver logiken före syntaxen.
  • MVP avgränsar den första fungerande versionen.
  • En bra plan visar vad som ska byggas först.