DM536 Rapport og debug
Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf Allen B. Downey: Think Python: How to Think Like a Computer Scientist, Version 2.0.10, Green Tea Press, 2013. Martin Storgaard Frit fra leveren
Rapport Før du starter Læs hele projektbeskrivelsen igen Vær især opmærksom på de krav projektbeskrivelsen stiller - både implicitte og eksplicitte
Rapport Specifikation Beskriv problemet Hvad siger projektbeskrivelsen? (Du må gerne referer til den!) Har du selv nogle mål du vil have opfyldt? Gør det kort og præcist
Rapport Design Beskriv de algoritmer du har designet Du skal ikke beskrive hvordan du er kommet frem til din algoritme Benyt pseudo kode (Enten punkt form eller som nedenfor) Eksempel: [Beskrivende tekst for algoritmen, inklusiv navn] output = tom liste For hvert element, e, i listen, A: hvis e ikke er en liste: Tilføj e til output ellers Tilføj hvert element i listen e til output
Rapport Implementering Vis din implementering Undlad trivielle dele, fx output = [] Highlight og linienumre er essentielle Når du forklarer hvad eller hvorfor du har implementeret som du har, så referer til linienummeret Eksempel: Forklar hvad extend() gør, og hvorfor det svarer til dit design
Rapport Test Inkluder kun test fra den sidste version af din kode! Denne sektion er vigtig, og det kan være svært at finde alle tilfælde og kan tage lang tid! Vis gerne at hver enhed i din kode virker Dvs. at du viser og tester hver metode Test skal inkluderer: Rigtig input (Vis at det rent faktisk virker) Forkert input (Vis hvad den gør hvis det ikke virker, er det forventeligt?) Speciale tilfælde (Oftest, men ikke udelukkende, vil det være at teste if-else statements) Du må (bør) lave dit eget input til ovenstående Dokumenter dine test på følgende format: Input Forventet output Faktiske output Kommentar til din test
Rapport Konklusion Beskriv hvordan dit produkt lever op til kravene Du kan opsummere din specifikation og henvise til dine test sektioner Kan indeholde en meget kort diskussion, hvis der er noget der ikke virker og hvad man tror, der er galt
Rapport Appendiks Kildekode (med formatering og linienumre) Test kode Input Evt. ekstra kode skrevet til testene Output Andre hjælpeprogrammer mv.
Debugging Fejltyper Syntaks fejl Runtime fejl Semantiske fejl
Debugging Syntaks fejl Fejlen opstår før programmet kører Opstår hvis syntaksen i ens fil er forkert Eksempel
Debugging Syntaks fejl Tjek at du ikke bruger et keyword som variabel navn Tjek at du har et kolon hvor det skal være, fx efter forløkken, while-løkken, if-statement osv Tjek at dine tekst strenge er afsluttet korrekt Tjek at du har lukket dine operatore, fx (, [ og { Tjek at du bruger == fremfor = og omvendt Tjek at du kun bruger tabs eller mellemrum når du indrykker dine linier
Debugging Syntaks fejl Tjek at du har gemt dine ændringer Tjek at du kører den rigtige fil Hvis du skriver et modul, tjek at du ikke bruger samme navn som et Python modul
Debugging Runtime fejl Fejlen opstår imens programmet kører Kan opstå af mange årsager Programmet er afhægig af brugerinput og fanger ikke exceptions ordentlig Den løber tør for hukommelse fx uendelig recursion
Debugging Runtime fejl Programmet gør absolut ingen ting Betyder at du højest sandsynlig kun har metoder og klasser i din fil, men at du aldrig kalder dem! Programmet starter, men bliver aldrig færdigt Dette betyder oftest at du har lavet en uendelig løkke eller en uendelig rekursion
Debugging Runtime fejl Løsning: Indsæt print-statement i din kode! Hvis det ikke virker: Prøv andre steder i din kode Hvis det ikke virker: Så forstår du muligvis ikke flowet i din kode Løsning: Indsæt print-statement i starten af dine metoder
Debugging Runtime fejl Alt for meget output! Simplificer dit output eller simplificer din kode Omskriv dele af din kode, det kan være at det giver dig en bedre forståelse! Find det mindste output, som producerer fejlen Find det mindste output, som ikke producerer fejlen
Debugging Semantiske fejl Fejlen opstår i mens programmet kører Der kommer ingen fejl besked, men programmet gør ikke det rigtige! Find det sted i koden, som ikke virker korrekt Brug print-statements undervejs Hvis du har en masse one-liners prøv at opdele koden til flere linier og print dem