PresentationerSlide 1/1

Kapitel 14

Projekt

Från idé och krav till testat, dokumenterat och redovisat program.

Mål

Efter kapitlet ska du kunna...

  • planera ett avgränsat program
  • skriva testbara krav
  • designa struktur och pseudokod
  • implementera och testa stegvis
  • dokumentera och redovisa arbetet

Projektkedjan

Arbeta i tydliga faser

PlanKravDesignKodTestDokumentationRedovisning

Nya insikter kan göra att du behöver gå tillbaka.

14.1

Planera innan du kodar

Beskriv problemet och målgruppen.

Avgränsa vad första versionen ska kunna.

Identifiera input, bearbetning och output.

Välj textgränssnitt eller GUI.

Exempelprojekt

Filmregister

  • Läs in filmens namn.
  • Läs in längden i minuter.
  • Omvandla till timmar och minuter.
  • Visa resultatet tydligt.
  • Hantera felaktig input.

Planeringsfrågor

Gör idén konkret

  1. Vem ska använda programmet?
  2. Vilket problem löser det?
  3. Vilken information behövs?
  4. Vilket resultat ska visas?
  5. Vad ingår inte?

14.2 · VAD

Krav beskriver beteendet

Kravspecifikationen säger vad programmet ska kunna.

Varje krav ska gå att kontrollera genom testning.

Kravet ska inte låsa implementationen i onödan.

Funktionella krav

Skriv testbara meningar

  • Programmet ska läsa in ett filmnamn.
  • Programmet ska läsa in längd i minuter.
  • Programmet ska beräkna timmar och återstående minuter.
  • Programmet ska visa resultatet.
  • Programmet ska visa tydliga felmeddelanden.

Svagt eller testbart?

Undvik vaga krav

Vagt

Programmet ska vara bra.

Testbart

Om längden inte är ett heltal ska programmet visa ett felmeddelande.

14.3 · HUR

Design beskriver lösningen

  • Dela upp programmet i funktioner.
  • Planera dataflödet.
  • Skriv pseudokod.
  • Skissa gränssnittets ordning.
  • Bestäm hur fel ska hanteras.

Pseudokod

Filmprogrammets flöde

starta programmet
läs in filmnamn
läs in längd i minuter
kontrollera inmatningen
beräkna timmar och minuter
visa resultat
annars visa felmeddelande

Dela upp ansvaret

Funktioner före implementation

FunktionAnsvar
get_movie()hämta input
convert_minutes()beräkna tid
validate_movie()kontrollera värden
show_result()visa output

14.4

Implementera en del i taget

  1. Skapa minsta fungerande version.
  2. Testa input.
  3. Lägg till beräkningen och testa.
  4. Lägg till validering och testa.
  5. Bygg gränssnittet och testa händelser.

Beräkningen

Minuter till timmar och minuter

def convert_minutes(total_minutes):
    hours = total_minutes // 60
    minutes = total_minutes % 60
    return hours, minutes

// ger hela timmar och % ger resten.

Hela kärnan

Textbaserad första version

def convert_minutes(total_minutes):
    hours = total_minutes // 60
    minutes = total_minutes % 60
    return hours, minutes

movie = input("Filmens namn: ")

try:
    length = int(input("Längd i minuter: "))
    if movie and length > 0:
        hours, minutes = convert_minutes(length)
        print(f"{movie}: {hours} tim {minutes} min")
    else:
        print("Namn saknas eller längden är ogiltig")
except ValueError:
    print("Längden måste vara ett heltal")

Testa under tiden

Vänta inte till slutet

Kör varje ny del med ett normalt värde.

Kör även ett felaktigt värde.

Små teststeg gör orsaken till fel lättare att hitta.

Spara fungerande delmål.

14.5

Ett testfall har tre delar

IndataFörväntatFaktiskt
Interstellar, 1692 tim 49 minfylls i efter körning

Testet är godkänt när faktiskt resultat matchar förväntat.

Testa olika vägar

Normalfall och felfall

  • Giltigt namn och positivt heltal.
  • Tomt filmnamn.
  • Bokstäver som längd.
  • Längden 0 eller negativt tal.
  • Gränser som 59, 60 och 61 minuter.

Interaktivt testfall

Testa filmprogrammet

Testprotokoll
Kör ett test.

14.6

Dokumentation bevarar kunskap

  • Vad programmet gör och vem det är till för.
  • Hur programmet startas och används.
  • Viktiga funktioner och beräkningar.
  • Kända begränsningar.
  • Genomförda tester och resultat.

Kommentarer i koden

Förklara syfte

# Omvandlar total filmlängd till timmar och minuter
def convert_minutes(total_minutes):
    hours = total_minutes // 60
    minutes = total_minutes % 60
    return hours, minutes

14.7

Redovisa produkt och process

  • Beskriv problemet och målgruppen.
  • Visa krav och designval.
  • Demonstrera programmets funktioner.
  • Förklara problem och lösningar.
  • Visa testfall och förbättringar.

Bra demonstration

Visa mer än ett lyckat fall

  1. Visa en vanlig användning.
  2. Visa hur felaktig input hanteras.
  3. Koppla demonstrationen till ett krav.
  4. Förklara en förbättring du skulle göra.

Sammanfattning

Kom ihåg

  • Planering avgränsar problemet.
  • Krav beskriver vad programmet ska göra.
  • Design beskriver hur lösningen ska byggas.
  • Implementation sker stegvis med löpande testning.
  • Testfall jämför förväntat och faktiskt resultat.
  • Dokumentation och redovisning förklarar produkt och process.