. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Analýza, návrh, testování a debugging v procedurálním programování PLIN048 – Základy programování pro humanitní obory Richard Holaj FF MU 24. března 2017 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Co nás dnes čeká? Analýza a návrh Obecné principy analýzy a návrhu Vybrané metody analýzy a návrhu Testování a debugging Testování Debugging Cvičení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Jak analyzovat a navrhovat program? ▶ klíčová fáze ▶ reprezentace stavu ▶ proměnné, kolekce ▶ datové typy ▶ jak reprezentujeme data ▶ architektura, návrh ▶ postup řešení problému ▶ rozložení na podproblémy ▶ řešení podproblémů (funkce) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Reprezentace stavu ▶ vše s čím chceme pracovat, musíme reprezentovat ▶ jaká data ▶ v jaké formě ▶ možné datové typy ▶ vhodnost datových typů ▶ povaha řešeného problému . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Rozložení problému na podproblémy pomocí funkcí ▶ jak bych problém řešil já ▶ které činnosti se opakují ▶ dílčí činnosti ▶ zmenšování měřítka → rekurze ▶ změna kontextu → parametrizace, cykly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Vybrané metody analýzy a návrhu ▶ top-down přístup (dekonstrukce) ▶ bottom-up přístup (konstrukce) ▶ dílčí činnosti cykly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Principy ▶ manuální x automatické ▶ jednotlivé funkcionality x celek ▶ očekávaný x skutečný výstup pro daný vstup ▶ výpisy x specializované nástroje ▶ ne nutně programátor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Volba vstupů ▶ white-box x black-box ▶ náhodné vstupy ▶ mezní hodnoty ▶ pokrytí, počet testů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Test-driven development ▶ definice funkcionality testy ▶ implementace ▶ regresní testování ▶ continuous integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Vybrané metody debuggingu ▶ kontrolní výpisy ▶ debugger ▶ rubber duck debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Cvičení Napište program, který odpovídá činnostem, které vykonáváte při vaření (zvolte si libovolný recept). Pro implementaci použijte metodu top-down. Otestujte. Předpokládejme situaci, kdy nemáme k dispozici operaci mocniny, násobení ani dělení a chceme implementovat právě umocňování čísla přirozeným (tj. kladným celočíselným) exponentem. Pro implementaci použijeme metodu bottom-up. Otestujte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Analýza a návrh Testování a debugging Cvičení Cvičení Navrhněte postup implementace obecné tahové hry pro dva hráče a hráče s počítačem pomocí metody prototypování. Otestujte. Upravte implementace předchozích příkladů tak, že do nich skryjete chybu/y. Nechte kolegu tyto chyby najít pomocí kontrolních výpisů a rubber duck debuggingu.