Programmering nivå 1 med Python

Kapitel 14: Projekt

I detta kapitel går du igenom hela projektprocessen: planering, krav, design, implementering, testning, dokumentation och redovisning.

Innehållsförteckning

Klicka på ett avsnitt för att hoppa direkt.

14.1 Planera ett program

Innan du börjar koda måste du planera ditt program.

Många nybörjare hoppar direkt till kod, men då fastnar man ofta.

Planering hjälper dig att

  • förstå problemet
  • strukturera lösningen
  • undvika onödiga fel

Vad innebär planering

Att planera ett program betyder att du bestämmer

  • vad programmet ska göra
  • vem som ska använda det
  • hur det ska fungera

Exempel

Du vill skapa en filmapp. Då kan planeringen vara:

Programmet ska

  • låta användaren skriva in filmer
  • spara längd på filmer
  • visa information om filmer

En enkel plan

Du kan skriva din plan så här:

Program: Filmlista

Programmet ska

  • ta emot filmens namn
  • ta emot filmens längd
  • visa information om filmen

Viktiga frågor att ställa

  • Vad är syftet med programmet?
  • Vad ska användaren kunna göra?
  • Vilken information behövs?
  • Hur ska resultatet visas?

Tips

  • Börja enkelt
  • Gör inte för stort program direkt
  • Bygg vidare steg för steg

Koppling till kursen

När du planerar tränar du problemlösning, struktur och förståelse för hur program byggs. Detta används i verkliga projekt.

Övning

Skriv en plan för ett eget program, till exempel:

  • en budgetapp
  • en träningsapp
  • en filmlista
  • ett enkelt spel

Skriv:

  • vad programmet ska göra
  • vad användaren ska kunna göra
  • vilken information som behövs

Planen ska vara tydlig och enkel att förstå.

14.2 Kravspecifikation (VAD)

Efter att du har planerat ditt program är nästa steg att skriva en kravspecifikation.

En kravspecifikation beskriver exakt vad programmet ska göra och gör det tydligt vad som ska byggas innan du börjar koda.

Varför behövs en kravspecifikation

En kravspecifikation hjälper dig att

  • ha tydliga mål
  • undvika missförstånd
  • bygga rätt funktioner från början

Vad innehåller en kravspecifikation

En enkel kravspecifikation kan innehålla:

  • funktionella krav
  • krav på användaren
  • krav på hur programmet ska bete sig

Funktionella krav

Funktionella krav beskriver vad programmet ska kunna göra.

Exempel:

  • Programmet ska ta emot användarens namn
  • Programmet ska ta emot användarens ålder
  • Programmet ska beräkna år kvar till pension
  • Programmet ska visa resultatet

Krav på användaren

  • Användaren ska kunna skriva in text
  • Användaren ska kunna skriva in siffror
  • Användaren ska förstå vad som ska matas in

Krav på beteende

  • Programmet ska visa felmeddelande vid felaktig inmatning
  • Programmet ska inte krascha
  • Programmet ska visa tydliga instruktioner

Exempel

Program: Filmlista

Funktionella krav

  • Programmet ska kunna lägga till en film
  • Programmet ska kunna visa alla filmer
  • Programmet ska kunna visa filmens längd

Användarkrav

  • Användaren ska kunna skriva in filmens namn
  • Användaren ska kunna skriva in filmens längd

Beteende

  • Programmet ska visa ett tydligt fel om längden inte är ett tal
  • Programmet ska visa filmer i en lista

Tips

  • Skriv tydligt och konkret
  • Undvik otydliga ord som "bra" och "snabb"
  • Tänk på användaren

Koppling till kursen

När du skriver kravspecifikation tränar du problemlösning, struktur och anpassning till användare. Detta är viktigt för att nå högre betyg.

Övning

Skriv en kravspecifikation för ditt program från föregående övning och dela upp i:

  • funktionella krav
  • användarkrav
  • beteende

14.3 Design (HUR)

När du har en plan och en kravspecifikation är nästa steg design.

Design handlar om hur programmet ska byggas. Du bestämmer struktur, uppdelning och hur olika delar hänger ihop.

Vad innebär design

Att designa ett program betyder att du bestämmer

  • vilka delar programmet ska bestå av
  • hur dessa delar ska samarbeta
  • hur koden ska organiseras

Dela upp programmet

Ett bra program delas upp i mindre delar. Det gör koden lättare att förstå och arbeta med.

Exempel på steg:

  • ta emot inmatning
  • bearbeta data
  • visa resultat

Exempel

Program: Filmlista

Design

  • Del 1 Inmatning: användaren skriver filmens namn och längd
  • Del 2 Bearbetning: programmet sparar informationen
  • Del 3 Utskrift: programmet visar information om filmen

Pseudokod

Ett sätt att designa är att skriva pseudokod, alltså en beskrivning av programmet med vanliga ord.

Starta program
Fråga efter filmens namn
Fråga efter filmens längd
Spara informationen
Visa filmen

En enkel struktur

Start
Inmatning
Bearbetning
Utskrift
Slut

Tänk på detta

  • Håll designen enkel
  • Dela upp i tydliga steg
  • Skriv så att någon annan förstår

Koppling till kursen

När du arbetar med design tränar du strukturerad problemlösning, planering av program och förmåga att bygga större program.

Övning

Skriv en design för ditt program med pseudokod. Dela upp i steg som inmatning, bearbetning och utskrift.

14.4 Implementering

Nu är det dags att börja koda.

Implementering betyder att du skriver programmet utifrån din design.

Du går från plan och struktur till fungerande kod.

Vad innebär implementering

Att implementera ett program betyder att du

  • skriver koden
  • följer din design
  • testar under tiden

Arbeta steg för steg

Skriv inte hela programmet direkt.

Bygg i små delar och testa ofta.

Exempel:

  • Börja med att ta emot inmatning
  • Testa att det fungerar
  • Lägg till nästa del

Exempel

def hamta_film():
    namn = input("Skriv filmens namn: ")
    return namn

def hamta_langd():
    while True:
        try:
            langd = int(input("Skriv filmens längd: "))
            return langd
        except ValueError:
            print("Fel: skriv ett heltal")

def visa_film(namn, langd):
    print(f"Film: {namn}")
    print(f"Längd: {langd} minuter")

film = hamta_film()
langd = hamta_langd()
visa_film(film, langd)

Testa under tiden

Kör programmet ofta.

Testa olika saker:

  • skriv rätt värden
  • skriv fel värden
  • testa gränsfall

Vanliga fel

  • syntaxfel (felstavningar i koden)
  • logiska fel (programmet gör fel sak)
  • felaktig inmatning

Tips

  • Skriv tydliga variabelnamn
  • Använd funktioner
  • Kommentera vid behov
  • Testa ofta

Koppling till kursen

När du implementerar tränar du programmering i Python, kontrollstrukturer, felhantering och kodstruktur.

Detta är centralt i kursen.

Övning

Implementera ditt program utifrån din design. Programmet ska ta emot inmatning, bearbeta information och visa resultat.

Extra övning: GUI i Tkinter

Skapa ett program med grafiskt gränssnitt som hanterar information om en film.

Programmet ska

  • ta emot filmens namn
  • ta emot filmens längd i minuter
  • beräkna längden i timmar
  • visa resultatet i fönstret

Krav

  • Använd Label före varje inmatningsfält
  • Använd Entry för input
  • Använd en Button som startar beräkningen
  • Visa resultatet med en Label
  • Visa felmeddelande om längden inte är ett heltal

Tips

  • Använd en funktion som körs när knappen klickas
  • Använd get() för att läsa data från Entry
  • Använd config() för att uppdatera text i Label

Extra utmaning:

  • Visa resultatet på flera rader
  • Formatera så det står t.ex. 2 tim och 36 min om användaren matar in 123 min
  • Testa att skriva fel värden och se vad som händer

Exempel på Tkinter-program för filminfo

14.5 Testning

När programmet är färdigt behöver du testa det. Testning betyder att du kontrollerar att programmet fungerar som det ska.

Du testar både vanliga fall och situationer där något kan bli fel.

Varför är testning viktigt

Testning hjälper dig att

  • hitta fel
  • förbättra programmet
  • se om kraven är uppfyllda

Vad ska man testa

  • programmet startar
  • inmatning fungerar
  • beräkningar blir rätt
  • resultatet visas korrekt
  • fel hanteras på rätt sätt

Exempel

Du har gjort ett filmprogram. Testa till exempel:

  • skriv in ett filmnamn
  • skriv in ett vanligt heltal som längd
  • kontrollera att rätt resultat visas

Testa sedan felaktiga värden:

  • tomt filmnamn
  • bokstäver i längdfältet
  • negativt tal
  • 0

Testfall

Ett testfall är en planerad test. Du bestämmer

  • vad du skriver in
  • vad som borde hända
  • vad som faktiskt händer

Exempel på testfall

Test 1

Inmatning: Interstellar, 169

Förväntat resultat: Programmet visar filmens namn och tiden 2 tim 49 min

Test 2

Inmatning: Tomt namn, 120

Förväntat resultat: Felmeddelande om att filmnamn saknas

Test 3

Inmatning: Avatar, abc

Förväntat resultat: Felmeddelande om att längden måste vara ett heltal

Test 4

Inmatning: Dune, -5

Förväntat resultat: Felmeddelande om att längden måste vara större än 0

Dokumentera testningen

Det är bra att skriva ner dina tester. Då ser du tydligt vad du har testat, vilka fel du hittat och vad du behöver ändra.

Tips

  • Testa både rätt och fel värden
  • Testa flera olika situationer
  • Ändra en sak i taget om något går fel

Koppling till kursen

När du testar tränar du att hitta syntaxfel, logiska fel, förebygga fel och förbättra programkvalitet.

Övning

Testa ditt program med minst fyra olika testfall. Skriv för varje testfall:

  • vilken inmatning du använder
  • vad du förväntar dig
  • vad som faktiskt händer

Fundera på om du behöver ändra något i programmet efter testningen.

14.6 Dokumentation

När programmet är klart behöver det dokumenteras. Dokumentation betyder att du beskriver hur programmet fungerar.

Det gör det lättare för dig själv och andra att förstå koden.

Varför behövs dokumentation

Dokumentation hjälper dig att

  • förklara programmet
  • visa hur det fungerar
  • göra koden lättare att förstå senare

Vad kan dokumenteras

  • vad programmet gör
  • hur programmet används
  • hur koden är uppbyggd
  • vilka delar som är viktiga

Kommentarer i kod

Ett vanligt sätt att dokumentera är kommentarer i koden.

# Hämtar filmens namn från användaren
namn = entry_namn.get()

Du ska inte kommentera varje rad i onödan, utan där kommentarer faktiskt hjälper läsaren.

Beskrivning av programmet

Det är också bra att skriva en kort text om programmet, till exempel:

Programmet tar emot ett filmnamn och en längd i minuter. Sedan räknar programmet om tiden till timmar och minuter. Resultatet visas i programmets fönster.

Beskrivning av viktiga delar

Du kan förklara viktiga delar, till exempel vad en funktion gör, hur fel hanteras och hur resultat visas.

Exempel: Funktionen berakna() läser in värden, kontrollerar längden och visar resultatet i fönstret.

Vad bra dokumentation kännetecknas av

Bra dokumentation är

  • tydlig
  • kortfattad
  • relevant
  • lätt att förstå

Tips

  • Skriv så att en annan elev förstår
  • Förklara viktiga delar
  • Håll dokumentationen enkel och tydlig

Koppling till kursen

När du dokumenterar tränar du god struktur, tydlig kommunikation och förståelse för kodens uppbyggnad.

Övning

Dokumentera ditt program. Skriv:

  • en kort beskrivning av vad programmet gör
  • kommentarer till viktiga delar i koden
  • en förklaring av hur användaren använder programmet

14.7 Redovisning

När ett program är klart ska det ofta redovisas.

Redovisning betyder att du visar upp ditt arbete och förklarar hur du har tänkt.

Det handlar inte bara om att visa att programmet fungerar, utan också om att beskriva hur du planerade, byggde, testade och förbättrade programmet.

Varför redovisning är viktigt

En redovisning hjälper dig att

  • visa vad du har gjort
  • förklara hur programmet fungerar
  • visa hur du har löst problem
  • visa att du förstår din egen kod

Vad en redovisning kan innehålla

  • vad programmet gör
  • vem programmet är gjort för
  • vilka krav du utgick från
  • hur du designade programmet
  • hur du implementerade det
  • hur du testade det
  • vilka problem du stötte på
  • hur du löste dem

Beskriv projektet

Exempel:

Jag har gjort ett filmprogram i Tkinter. Användaren kan skriva in en films namn och dess längd i minuter. Programmet räknar om tiden till timmar och minuter och visar resultatet i fönstret.

Beskriv din planering

Exempel:

Först planerade jag vad programmet skulle göra. Sedan skrev jag en kravspecifikation. Efter det gjorde jag en enkel design där jag bestämde vilka delar programmet skulle ha.

Beskriv hur programmet fungerar

Exempel:

Programmet har två inmatningsfält och två knappar. En knapp används för att räkna ut resultatet. Den andra används för att rensa fälten. Programmet kontrollerar också om användaren skriver fel.

Beskriv problem och lösningar

Exempel:

Ett problem var att användaren kunde skriva bokstäver i längdfältet. Det löste jag med try/except.

Ett annat problem var att användaren kunde lämna filmnamnet tomt. Det löste jag med en kontroll som visar ett felmeddelande.

Beskriv testningen

Exempel:

Jag testade både korrekta och felaktiga värden. Jag testade till exempel ett vanligt tal, ett negativt tal, text i längdfältet och tomt namn.

Visa förbättringar

Exempel:

Om jag skulle fortsätta utveckla programmet skulle jag kunna lägga till en lista med flera filmer. Jag skulle också kunna spara filmer i en fil.

Tips inför redovisning

  • Använd tydliga ord
  • Visa programmet steg för steg
  • Förklara varför du gjort vissa val
  • Var beredd att beskriva hur koden fungerar

Koppling till kursen

När du redovisar tränar du att beskriva projektarbete, visa problemlösning och förklara hur större program byggs.

Övning

Förbered en kort redovisning av ditt program. Ta med:

  • vad programmet gör
  • hur du planerade arbetet
  • hur programmet är uppbyggt
  • vilka problem du löste
  • hur du testade programmet
  • vad du skulle vilja förbättra vidare