Přístupnostní navigace
E-přihláška
Vyhledávání Vyhledat Zavřít
bakalářská práce
Autor práce: Ing. Lukáš Petr
Ak. rok: 2022/2023
Vedoucí: prof. Ing. Tomáš Vojnar, Ph.D.
Oponent: Ing. Tomáš Fiedor, Ph.D.
Cílem této práce je vytvořit přehlednější prezentaci výsledků nástroje DiffKemp sloužícího pro statickou analýzu sémantických rozdílů ve velkých projektech napsaných v jazyce C. V současnosti DiffKemp zobrazuje všechny informace o nalezených rozdílech v nestrukturované textové podobě, což je pro uživatele mnohdy nepřehledné. Pro vyřešení tohoto problému byl v této práci vytvořen nový výstup nástroje DiffKemp, který poskytuje výsledky v serializované podobě pomocí formátu YAML. Tento výstup je následně zpracován a zobrazen pomocí nově vytvořeného prohlížeče výsledků, realizovaného jako webová aplikace pomocí knihovny React, frameworku Bootstrap a balíčku react-diff-view. Dále se práce zaměřila na poskytnutí uživateli dodatečného kontextu ve formě zdrojových kódů analyzovaných funkcí a usnadnění navigace a orientace v nalezených rozdílech a k nim poskytovaných informací jako jsou zásobníky volání. Provedené srovnání nově vytvořeného prohlížeče ukázalo, že usnadňuje uživateli oproti původnímu řešení rozpoznat změny v poskytovaných zásobnících volání a umožňuje mu rychlejší navigaci ve výsledcích a také mezi vztahy nalezených rozdílů a analyzovaných částí.
DiffKemp, statická analýza sémantických rozdílů, vizualizace rozdílů, prohlížeč výsledků, React, zásobník volání
Termín obhajoby
15.06.2023
Výsledek obhajoby
obhájeno (práce byla úspěšně obhájena)
Klasifikace
C
Průběh obhajoby
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 C.
Otázky k obhajobě
Jazyk práce
čeština
Fakulta
Fakulta informačních technologií
Ústav
Ústav inteligentních systémů
Studijní program
Informační technologie (BIT)
Složení komise
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)
Posudek vedoucíhoprof. Ing. Tomáš Vojnar, Ph.D.
Celkově se jedná o velmi dobře zvládnuté zadání. Student prokázal technické schopnosti na dobré úrovni a výsledek jeho práce významným způsobem vylepšuje možnosti nasazení nástroje DiffKemp v praxi. Proto navrhuji hodnotit práci známkou B (velmi dobře).
Cílem práce bylo navrhnout a implementovat nový způsob vizualizace výsledků analýzy sémantických rozdílů mezi verzemi průmyslového software, které jsou výstupem nástroje DiffKemp. Jedná se o průměrně náročné zadání, hlavní složitost spočívala v tom, že výstup DiffKempu je poměrně komplikovaný a jeho kompaktní zobrazení není triviální. Práce navíc zahrnovala nutnost vytvoření nového formátu výstupu z nástroje, a proto bylo nutné nastudovat některé principy, na nichž tento nástroj, vyvíjený ve výzkumné skupině VeriFIT ve spolupráci s firmou Red Hat, staví. Zadání považuji za splněné, řešení byo dovedeno do stavu, kdy budou vyžadovány minimální úpravy pro jeho nasazení do praxe.
Vzhledem k charakteru zadání zahrnovala práce se zdroji primárně průzkum existujících technologií pro vizualizaci změn ve zdrojových kódech. Student odvedl dobrou práci, kdy prozkoumal vícero možností, z nichž vybral ty nejvhodnejší pro jeho případ.
Během celého řešení byl student aktivní, účastnil se pravidelných konzultací a téměr vždy představil nové poznatky či pokrok v práci.
Implementace byla dokončena se značným předstihem, díky čemuž byl dostatek času na napsání textu práce, který byl k dispozici pro několik fází připomínkování.
Část vytvořeného řešení je v této době již součástí hlavní vývojové větve nástroje DiffKemp, zbytek je aktuálně ve formě otevřeného pull requestu a s největší pravděpodobností bude brzy začleněn. Zároveň bude toto řešení základem pro nasazení nástroje DiffKemp ve společnosti Red Hat.
Známka navržená vedoucím: B
Posudek oponentaIng. Tomáš Fiedor, Ph.D.
Práci pana Petra Lukáše hodnotím jako dobrou. Na práci hodnotím pozitivně, že bude značně usnadňovat práci při analýze sémantických změn v linuxových jádrech ve firmě RedHat a je současně stavěna na dobře zavedených principech a vývojových platformách. Na druhou stranu, text práce mohl být více doladěn jak po jazykové tak obsahové stránce.
Stupeň hodnocení: průměrně obtížné zadání
Zadání považuji za průměrně obtížné: cílem je vytvořit uživatelské prostředí pro nástroj, který analyzuje sémantické rozdíly mezi různými verzemi programů, přičemž zadání nevyžaduje detailní pochopení principů jak tato analýza funguje, a pouze pracuje s jejími výstupy.
Stupeň hodnocení: zadání splněno
Zadání splněno bez výhrad.
Stupeň hodnocení: je v obvyklém rozmezí
Práce čítá 39 vysázených stran (tzn. cca 60 normostran), je v obvyklém rozmezí a neobsahuje vatu.
Práce je dopře strukturovaná a kapitoly na sebe navazují.
K struktuře však mám dvě podstatné výhrady: (1) práce popisuje některé technologie, které nejsou natolik stěžejní (např. javascript, npm, nebo jpx), a současně (2) práce nedostatečně prozkoumává alternativy ke zvolené vývojové platformě React (např. vue.js, Angular, apod).
Popis technologií pro vykreslování rozdílů mezi různými verzemi je poměrně strohý: popisuje pouze dvě React komponenty, a nezmiňuje další jiné alternativy (např. vytvoření vlastní implementace, nebo jiné flexibilní formáty nebo visualizační knihovny). Některé sekce (hlavně u teoretického základu) by bylo vhodnější ilustrovat příklady.
Typografická a jazyková stránka práce je poměrně slabá.
Práce obsahuje (1) řadu anglikanismů (např. snapshot místo snímek, diff místo rozdíl), (2) drobné chybky (např. ojediněle chybné použití čárek, nebo v gramatice), nebo, (3), místy nevhodné formulace textu.
Dále pak obsahuje drobné typografické prohřešky nebo nedostatky, jako je (1) nedostatečné zvýraznění klíčových pojmů (např. programy jako je make nebo anglické výrazy, by zasloužily zvýraznit), nebo (2) špatné zarovnání čísel v tabulkách (nejsou zarovnány napravo, tak aby šly porovnat řády).
Současně bych doporučil držet se striktně technického popisu (tzn. vyhnout se formulacím jako je "myslím, že", nebo "bude se hodit").
Chválím sekci s analýzou požadavků; na druhou stranu bych ale doporučil požadavky lépe označit než jen čísly (např. P_CG, P_LIST).
Práce cituje 20 zdrojů. Porušení citační etiky jsem nezaznamenal. Práce mohla důkladněji popisovat alternativní řešení a jiné možné vývojové platformy.
Realizační výstup je v pořadků, zkomplilovatelný a funkční. Řešení bylo osobně předvedeno. Řešení je bez pochyby lepší než původní výstup nástroje diffkemp a věřím, že bude brzy zakomponováno v hlavní větvi projektu. Doporučil bych práci rozširit o drobné QoL zlepšení: např. filtrování funkcí nebo zdůraznění rozsahu nalezených změn u jednotlivých funkcí.
Kód je dobře komentovaný. Řešení je v recenzním řížení v hlavní větvi projektu diffkemp ve formě tzv. Pull Request,.
Práce je řešena v rámci projektu diffkemp, který je používán ve firmě RedHat pro analýzu sémantických změn v linuxových jádrech. Očekává se, že bude práce v brzké době zakomponována v hlavní větvi projektu a bude dále využívána i rozvíjena.
Známka navržená oponentem: C
Odpovědnost: Mgr. et Mgr. Hana Odstrčilová