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
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
- Vem ska använda programmet?
- Vilket problem löser det?
- Vilken information behövs?
- Vilket resultat ska visas?
- 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 felmeddelandeDela upp ansvaret
Funktioner före implementation
| Funktion | Ansvar |
|---|---|
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
- Skapa minsta fungerande version.
- Testa input.
- Lägg till beräkningen och testa.
- Lägg till validering och testa.
- 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
| Indata | Förväntat | Faktiskt |
|---|---|---|
| Interstellar, 169 | 2 tim 49 min | fylls 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
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, minutes14.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
- Visa en vanlig användning.
- Visa hur felaktig input hanteras.
- Koppla demonstrationen till ett krav.
- 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.