Přístupnostní navigace
E-application
Search Search Close
Bachelor's Thesis
Author of thesis: Ing. Daniel Kříž
Acad. year: 2022/2023
Supervisor: prof. Ing. Tomáš Vojnar, Ph.D.
Reviewer: Ing. Ondřej Vašíček
The aim of this thesis is to propose a method for automatic generation of custom code change patterns in LLVM IR language for DiffKemp, a tool for analyzing semantic differences between version of large scale projects. The goal is to enable automatic generation of changes between versions of a project with values, global variables or structure types. This has been achieved by finding the common pattern between changes and then generating its variants, which differ in usage of global variables and types. The proposed solution was implemented as an extension of DiffKemp and our experimentation on small programs shows that out proposed method is able to yield at least partially satisfactory results.
DiffKemp, LLVM, LLVM IR, static analysis, GNU/Linux Kernel, automatic pattern inference, automatic pattern generation
Date of defence
15.06.2023
Result of the defence
Defended (thesis was successfully defended)
Grading
D
Process of defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl 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í studenta na položené otázky rozhodla práci hodnotit stupněm D.
Topics for thesis defence
Language of thesis
English
Faculty
Fakulta informačních technologií
Department
Department of Intelligent Systems
Study programme
Information Technology (BIT)
Composition of Committee
prof. Ing. Tomáš Vojnar, Ph.D. (předseda) doc. Ing. Petr Matoušek, Ph.D., M.A. (člen) Ing. František Grézl, Ph.D. (člen) doc. Ing. Tomáš Martínek, Ph.D. (člen) Ing. Matěj Grégr, Ph.D. (člen)
Supervisor’s reportprof. Ing. Tomáš Vojnar, Ph.D.
Celkové zvládnutí zadání považuji za podprůměrné, zejména z důvodu slabší implementace a téměř žádného experimentálního ověření. Na druhé straně mají teoretické přínosy práce potenciál zásadně vylepšit schopnosti nástroje DiffKemp v oblasti automatické analýzy sémantických rozdílů v různých verzích průmyslového software. S přihlédnutím k této skutečnosti a k tomu, že se jednalo o náročné zadání převyšující běžný rozsah bakalářské práce, doporučuji komisi připustit práci k obhajobě a hodnotit známkou D (uspokojivě).
Cílem práce bylo navrhnout a implementovat algoritmus pro automatické odvozování vzorů změn zachovávajících sémantiku pro nástroj DiffKemp. Jelikož se jedná o poměrně rozsáhlý nástroj vyvíjený ve výzkumné skupině VeriFIT, který navíc používá netriviální techniky analýzy programů, považuji toto zadání za nadprůměrně náročné. Student v rámci práce navrhl několik pokročilých algoritmů, nicméně kvůli vyšší náročnosti zadání mu nezůstal dostatek času na důslednou implementaci a experimentování. Většina algoritmů je proto implementována pouze ve formě základního prototypu. Navzdory tomu považuji teoretický přínos práce za dostatečně významný na to, aby mohla být práce obhájena.
Student v rámci práce nastudoval poměrně velké množství souvisejících vědeckých článků. Kromě doporučených zdrojů byl schopen sám nalézt další relevantní práce, z nichž mnohé mohou pomoci s rozvojem nástroje DiffKemp i v budoucnu.
Během celého řešení práce byl student příkladně aktivní a učastnil se pravidelných schůzek, na které byl vždy dobře připraven.
Bohužel, jak již bylo zmíněno, zejména pokrok v implementační oblasti byl poměrně pomalý, což vedlo k dokončování práce pod značným tlakem. Výsledný text a implementace proto neodpovídají usílí, které student práci věnoval.
Implementace navržených algoritmů bude s největší pravděpodobností časem začleněna do hlavní vývojové větve nástroje DiffKemp.
Grade proposed by supervisor: D
Reviewer’s reportIng. Ondřej Vašíček
Práce nesplnila bod zadání č. 5 (testování) a bod zadání č. 4 (implementace) nebyl splněn úplně. Nicméně funkcionalita vytvořeného řešení je podle mě stále přínosná. Tyto nedostatky byly způsobeny nedostatkem času při dokončování práce.
Na druhou stranu ale byla práce obtížná a kvalita textu práce je velmi dobrá obzvláště na poměry bakalářských prací. Nedostatky z pohledu splnění zadání jsou tedy dle mého názoru prominutelné, ale výrazně snižují hodnocení práce, která by jinak byla na výborné úrovni.
Evaluation level: obtížnější zadání
Zadání považuju za obtížnější kvůli intelektuální náročnosti pochopení jednotlivých konceptů a algoritmů.
Evaluation level: zadání splněno pouze částečně
Bod zadání č. 5 byl splněn jen ve velmi omezené míře formou pár základních automatizovaných testů. Nedošlo tedy k řádnému otestování a neproběhlo otestování na Linuxovém jádře nebo jiných projektech.
Dále funkcionalita samotného výstupu práce je omezená. Bod zadání č. 4 tedy není úplně dotažen dokonce (viz. popis realizačního výstupu níže).
Tyto nedostatky byly dle studenta způsobeny nedostatkem času při dokončování a nečekanými komplikacemi během implementace. Výstup této práce je ale podle mého názoru i v takto omezené podobě stále přínosný.
Evaluation level: je v obvyklém rozmezí
Kapitola o experimentech a vyhodnocení je velmi krátká. Jinak je ale práce v obvyklém rozmezí.
Práce je velmi dobře strukturovaná a úrovní vyjadřování se blíží k odborným článkům.
Práce je psána dobrou angličtinou až na pár překlepů a pár výskytů drobných nedostatků (např. chybějící členy "a / the" nebo chybějící "s" na konci slovesa).
Z typografického hlediska je práce v pořádku až na pár chybějících nezlomitelných mezer.
Práce se odkazuje na množství relevantních zdrojů včetně řady odborných článků. Bibliografické citace jsou vypracovány vzorně.
Zdrojový kód je dobře strukturovaný a dokumentovaný.
Bohužel je ale jeho funkcionalita omezená a z pohledu zadání nebyl dostatečně otestován. Předmětem práce bylo automatické generování vzorů změn zdrojového kódu, kde jeden vzor má pokrývat několik podobných změn. Práce tuto funkcionalitu dělí mezi neparametrické vzory změn a parametrické vzory změn. Implementace parametrických vzorů aktuálně ale bohužel nefunguje pro některé případy parametrizace změn konstant. Funkcionalita výstupu práce tedy splňuje zadání jen částečně. Nicméně neparametrické vzory změn fungují a parametrické vzory změn fungují alespoň pro změny typů (oproti změnám konstant).
Výstup práce měl být také otestován na Linuxovém jádře nebo na jiném projektu. Toto bohužel nebylo provedeno (nebo to alespoň není v textu práce). Místo toho bylo provedeno jen testování na několika vlastních příkladech. Testování tedy z pohledu zadání splněno nebylo.
Práce dále rozšiřuje schopnosti nástroje DiffKemp a tedy navazuje na řadu předchozích prací, přínos této práce je ale samostatný (tedy nejedná se jen o rozšíření předchozích prací).
Nástroj DiffKemp směřuje k nasazení v praxi a jeho rozšíření touto prací může být tedy také časem prakticky využito.
Grade proposed by reviewer: D
Responsibility: Mgr. et Mgr. Hana Odstrčilová