Detail práce
Extrakce grafu toku řízení z bajtkódu Java
Grafy toku řízení (Control Flow Graph -- CFG) slouží jako základ pro mnoho analýz vyhodnocujících kvalitu programu. Takovou analýzou je i testování založené na modelech (model-based testing), které na základě analýzy modelu kódu, např. grafu, generuje testovací případy. Aby bylo možné tuto analýzu provádět co nejobecněji, je vhodné, aby instrukce obsažené v CFG patřily do některé z obecných instrukčních sad.Tato práce se zabývá extrakcí grafů toku řízení z bajtkódu jazyka Java a následným překladem jednotlivých instrukcí bajtkódu uvnitř základních bloků do instrukční sady LLVM IR. Výsledný program dokáže spolehlivě získat grafy toku řízení z programů v jazyce Java zadaných v jakékoli z nejběžnějších forem pro šíření tohoto typu software (.jar archiv, .java nebo .class soubory). Grafy na výstupu jsou navíc koncipovány tak, aby nad nimi bylo možné provádět analýzu za účelem generování jednotkových testů.
bajtkód jazyka Java, graf toku řízení, analýza, LLVM IR
Studentka nejprve prezentovala výsledky, kterých dosáhla v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Studentka následně odpověděla na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studentky na položené otázky rozhodla práci hodnotit stupněm "A".
- V práci uvádíte, že využití existujících nástrojů pro extrakci grafů s sebou neslo více problémů než užitku. Na čem je toto tvrzení založeno? Byly učiněny experimenty s těmito nástroji?
- Proč byla zvolena právě instrukční sada LLVM IR? Podle textu existují při překladu Java bajtkódu do LLVM IR problémy a některé instrukce jsou pouze simulovány. Byly zvažovány i nějaké alternativy?
Fučík Otto, doc. Dr. Ing. (UPSY FIT VUT), člen
Grézl František, Ing., Ph.D. (UPGM FIT VUT), člen
Matoušek Petr, doc. Ing., Ph.D., M.A. (UIFS FIT VUT), člen
Smrčka Aleš, Ing., Ph.D. (UITS FIT VUT), člen
@bachelorsthesis{FITBT19241, author = "Petra Se\v{c}ka\v{r}ov\'{a}", type = "Bakal\'{a}\v{r}sk\'{a} pr\'{a}ce", title = "Extrakce grafu toku \v{r}\'{i}zen\'{i} z bajtk\'{o}du Java", school = "Vysok\'{e} u\v{c}en\'{i} technick\'{e} v Brn\v{e}, Fakulta informa\v{c}n\'{i}ch technologi\'{i}", year = 2017, location = "Brno, CZ", language = "czech", url = "https://www.fit.vut.cz/study/thesis/19241/" }