1 / 21

Föreläsning 6, kapitel 6

Föreläsning 6, kapitel 6. Objekt som uppför sig som de skall Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling. Fredric Ragnar fredric.ragnar@hgo.se Telefon 0498-299948 Andreas Hedrén andreas.hedren@hgo.se Telefon 0498-299954.

Download Presentation

Föreläsning 6, kapitel 6

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Föreläsning 6, kapitel 6 Objekt som uppför sig som de skallKursbok: “Objects First with Java- A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar fredric.ragnar@hgo.se Telefon 0498-299948 Andreas Hedrén andreas.hedren@hgo.se Telefon 0498-299954

  2. Objekt som beter sig korrekt Den här föreläsningen: • Test • Avlusning/Debugging • Automatisera test • Att skriva för att kunna underhålla

  3. Vi måste hantera fel • Tidiga fel är ofta syntaxfel • Kompilatorn hittar de felen • Senare fel är ofta logiska fel • Kompilatorn kan inte hjälpa till med logiska fel • Kallas också buggar • En del buggar har ingen direkt uppenbar betydelse • Kommersiell programvara är sällan utan fel

  4. Förhindra eller Detektera(Utvecklare eller Underhållare) • Vi kan minska sannolikheten för fel • Använd metoder för programvaruutveckling som t ex inkapsling • Vi kan öka chanserna att hitta/detektera felen • Använd god programvaruutvecklingsed som modularisering och dokumentation • Vi kan utveckla vår skicklighet att hitta fel

  5. Testa och Avlusa • Detta är mycket viktiga kunskaper och färdigheter • Att testa är att leta efter fel • Att avlusa (eng: debug) är att leta efter vad som är fel. • Felet kan visa sig ganska så långt från själva felet

  6. Tekniker för att testa och avlusa • Enhetstest (i BlueJ) (eng: unit testing) • Automatisera test • Manuellt gå igenom koden • Utskrifter till skärmen • Avlusningsverktyg (eng: debuggers)

  7. Enhetstest • Varje enhet av en applikation kan bli testad • Metod, klass, modul (Java: package) • Kan och borde ske under utvecklingen • Att hitta och fixa tidigt sänker utvecklingskostnaden (t ex programmerartid) • En testsvit byggs upp

  8. Grunderna om att testa • Förstå vad enheten borde göra – enhetens kontrakt • Du letar efter brott mot kontraktet • Använd positiva test och negativa test • Testa gränser • Noll, en, full • Sök i en tom samling (eng: collection) • Lägg till i en full samling

  9. Enhetstest i BlueJ • Objekt kan skapas av olika klasser • Enskilda metoder kan köras • Med ”inspect” får man uppdaterad information om ett objekts tillstånd • Utforska med diary-prototype projektet.

  10. Automatisera test • Att testa på ett bra sätt är en kreativ process, men… • … att testa grundligt tar tid och innebär mycket upprepningar • Regressionstest innebär att upprepa tester, d vs köra tester igen • Att använda en test-rigg kan underlätta en del. • Klasser skrivs som utför testerna • Kreativiteten läggs på att skapa dessa testklasser

  11. Automatisera test, mer • Utforska med diary-testing projektet • Det krävs fortfarande att någon analyserar resultatet • Utforska en högre grad av automatisering med diary-test-automation projektet • Nu behövs bara åtgärder, dvs mänsklig inblandning om fel rapporteras.

  12. Modularisering och Gränsnitt • Applikationer består ofta av olika moduler • T ex så att flera team kan jobba på dem • Gränssnittet mellan modulerna måste vara klart specificerat. • Stöder oberoende samtidig utveckling • Ökar sannolikheten för en framgångsrik integrering.

  13. Modularisering i en kalkylator • En modul behöver inte veta hur en annan modul är implementerad, dvs hur den ser ut inuti. • Modulen som jobbar mot användaren ”User controls” borde vara ett GUI eller en hårdvarumanick som ett tangentbord. • Modulen som gör beräkningarna ”Arithmetic Logic” kan vara mjukvara eller hårdvara

  14. Metodsignaturer som gränssnitt // Return the value to be displayed. public int getDisplayValue(); // Call when a digit button is pressed. public void numberPressed(int number); // Call when a plus operator is pressed. public void plus(); // Call when a minus operator is pressed. public void minus(); // Call to complete a calculation. public void equals(); // Call to reset the calculator. public void clear();

  15. Avlusning (Debugging) • Det är viktigt att bli duktig på att läsa kod • Avlusning gör man ofta på andras kod • Det finns tekniker och verktyg som stödjer avlusningsprocessen • Utforska med calculator-engine projektet

  16. Manuellt gå igenom koden • Relativt ovanligt • Ett low-tech sätt • Mer kraftfullt än man kan tro • Gå ifrån datorn! • ”Kör” ett program för hand • Hög-nivå (step) eller låg-nivå (step-into) vyer.

  17. Använd tabell för objektens tillstånd • Beteendet hos ett objekt beror ofta på tillståndet • Ett felaktigt beteende beror ofta på ett felaktigt tillstånd • Skriv alla fältens värde i en tabell • Dokumentera alla förändringar efter varje att metod körts

  18. Verbala genomgångar • Förklara för någon annan vad koden gör • De kanske hittar felet • Genom att förklara så kanske du själv hittar felet • Det finns formella metoder för att ha genomgångar eller granskningar i grupp

  19. Spårutskrifter • Den mest populära metoden • Inga speciella verktyg behövs • Alla programmeringsspråk stödjer detta • Bara effektivt om rätt metoder är dokumenterade • Det kan bli väldigt mycket utsktifter • Att kunna slå av och på kräver att man tänker efter före

  20. Avlusare (eng:Debuggers) • Avlusare är både språk och miljöberoende • BlueJ har en integrerad avlusare • Stödjer brytpunkter • Man kan exekvera med ”Step” och ”Step into” • Man kan se meddelandekedjor • Objektens tillstånd

  21. Summering • Att program har fel är ett faktum • Bra programvruutvecklingstekniker kan minska felen • Att kunna testa och avlusa är mycket viktigt • Automatisera testerna när det är möjligt • Använd flera avlusningsmetoder

More Related