diplomová práce

Aplikace formálních metod v analýze sémantických rozdílů mezi verzemi software

Text práce 892.35 kB

Autor práce: Ing. František Nečas

Ak. rok: 2023/2024

Vedoucí: Ing. Viktor Malík, Ph.D.

Oponent: prof. Ing. Tomáš Vojnar, Ph.D.

Abstrakt:

Cílem této práce je navrhnout integraci formálních metod pro DiffKemp, nástroj pro statickou analýzu sémantických rozdílů v rozsáhlých programech napsaných v jazyce C. Cílem tohoto rozšíření je umožnit analýzu složitějších změn, které by typicky byly analyzovatelné spíše nástroji založenými na formálních metodách, a zároveň zachovat škálovatelnost nástroje DiffKemp na velké projekty. Principem navrženého řešení je při analýze v případě nalezení možné sémantické změny zakódovat problém ekvivalence příslušných instrukcí jako instanci problému SMT. Tím je možné sémantický rozdíl potvrdit, nebo vyvrátit s pomocí SMT solveru. Navržené řešení bylo implementováno v nástroji DiffKemp a experimenty provedené na sadě programů zvané EqBench ukazují, že rozšiřuje schopnosti nástroje DiffKemp, převážně v oblasti přesné analýzy úprav aritmetických výrazů.

Klíčová slova:

DiffKemp, statická analýza, sémantické rozdíly, LLVM IR, formální metody, vzory změn v kódu, řešení problému SMT, Z3 solver, Linuxové jádro, sbírka programů EqBench

Termín obhajoby

20.06.2024

Výsledek obhajoby

obhájeno (práce byla úspěšně obhájena)

znamkaAznamka

Klasifikace

A

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 A.

Otázky k obhajobě

  1. Vyjádřete se prosím k bodům uvedeným v části věnované prezentační úrovni zprávy.
  2. V sekci 4.2 uvádíte, že prozatím nebyla řešena shoda pro případ úprav kódu, který přistupuje do paměti. Odhlédneme-li od vyšší ceny řešení tohoto případu, máte představu, zda se v porovnávaných kódech tento případ vyskytuje?
  3. Jak byste dopadl u aritmetických operací, pokud byste se přesunul do floatové domény? Zaměřil jste se na to v experimentech?
  4. Proč jste pro experimenty nezvolil i sady z benchamarků?
  5. Je cílem detekce i chyba v překladači?
  6. Do jakých teorií se překládá?

Jazyk práce

angličtina

Fakulta

Ústav

Studijní program

Informační technologie a umělá inteligence (MITAI)

Specializace

Matematické metody (NMAT)

Složení komise

prof. Ing. Tomáš Vojnar, Ph.D. (předseda)
Ing. Martin Hrubý, Ph.D. (člen)
Ing. Aleš Smrčka, Ph.D. (člen)
Dr. Ing. Petr Peringer (člen)
Ing. Radek Hranický, Ph.D. (člen)
doc. Ing. Ondřej Lengál, Ph.D. (člen)

Posudek vedoucího
Ing. Viktor Malík, Ph.D.

Overall, this is a high-quality thesis on a complex assignment. The student has demonstrated skills at the level of a PhD student - the ability to independently develop advanced algorithms and methods, explore related work, and write a text adhering to high scientific standards. I also appreciate his time management skills and additional tasks that he fulfilled - contributing to a journal paper on DiffKemp and preparing a formal verification tool 2LS for an international competition.


With respect to all of the above, I propose to evaluate the thesis with the grade A and suggest the committee to consider further awards.

Kritérium hodnocení Slovní hodnocení
Informace k zadání

The thesis integrates formal methods into the DiffKemp tool, which is a tool applying advanced static program analysis techniques for checking program equivalence. The tool has been developed by the VeriFIT research group in cooperation with Red Hat. The complexity of the assignment itself is above average since it required to study and understand a complex research project (both the implementation and the related publications), advanced formal methods techniques (SMT solving), and propose and implement a novel approach integrating SMT solving into DiffKemp. The thesis has succeeded to fulfill the assignment and significantly improves the capabilities of DiffKemp in terms of analyzing complicated code refactorings. At the same time, the thesis is a solid base for future work and research.

Aktivita při dokončování

The activity of the student has been exemplary. He has finished the implementation in great advance and left sufficient time to perform experiments and write the thesis text which I had the opportunity to review several times. Overall, I am very satisfied with the student's approach.

Publikační činnost, ocenění

The work has been presented at the student conference Excel@FIT 2024. At the same time, the student has helped with preparing a journal version of a research paper on DiffKemp which is to be submitted to the TOSEM journal (Q1). In addition, as already mentioned, the thesis is a good basis for further research which could potentially result in a publication on an international scientific conference.

I'd also like to mention that František has been collaborating with me since his bachelor study on a different tool for formal verification of C programs called 2LS. Despite switching to a different topic for his Master's thesis, he still managed to help preparing 2LS for this year's volume of International Competition on Software Verification 2024.

Práce s literaturou

The student has used the recommended literature sources as well as he was able to find additional sources by himself. He has well explored the relevant related work.

Aktivita během řešení, konzultace, komunikace

The student was very active during the entire academic year, we had regular weekly meetings where he almost every time presented new progress with the thesis.

Výsledný počet bodů navržený vedoucím: 100

Známka navržená vedoucím: A

Zadání práce je náročnější a má výzkumný charakter. Student zadání jednoznačně splnil, přičemž v rámci práce přispěl k připravovanému časopiseckému článku a vytvořil také východisko k dalšímu výzkumu. Student také našel několik, nyní již opravených chyb v nástroji DiffKemp i v jedné ze sad vzorových testovacích příkladů z dané oblasti, používaných v mezinárodním kontextu. Technická zpráva i realizační dílo jsou velmi kvalitní. Student rovněž prezentoval svou práci na studentské konferenci Excel@FIT 2024.

Kritérium hodnocení Slovní hodnocení Body
Rozsah splnění požadavků zadání

Stupeň hodnocení: zadání splněno

Zadání práce bylo jednoznačně splněno.

Rozsah technické zprávy

Stupeň hodnocení: je v obvyklém rozmezí

Technická zpráva není objemově nejrozsáhlejší, ale obsahuje jasný popis všeho podstatného. Stručnost v tomto případě hodnotím pozitivně.

Prezentační úroveň technické zprávy

Technická zpráva je strukturována logicky, jednotlivé kapitoly a sekce na sebe dobře navazují a mají vhodně zvolený rozsah. Text je až na několik výjimek technicky přesný, velmi dobře čitelný a doprovozený dobře zvolenými ilustračními příklady.

Zmíněné drobné výjimky jsou z mého pohledu dvě: (1) Na straně 17 v bodě 1 mi není jasné, co jsou „sequential code blocks“ a jaká je jejich vazba na základní bloky kódu. (2) V popisu zakódování dotazů na ekvivalenci zvolených bloků kódu do formy SMT problému na konci úvodní části sekce 4.2 (strana 20) by zřejmě měla být nějakým způsobem zajištěna disjunktnost proměnných, s nimiž se pracuje (a která je pak zajištěna příslušným indexováním v příkladu v sekci 4.2.3). Tyto nedostatky nicméně považuji za drobné a současně se vztahující na náročnější pasáže popisu.

92
Formální úprava technické zprávy

Technická zpráva je psána anglicky, a to na velmi vysoké úrovni, jen s minimem chyb (nakolik jsem schopen to posoudit). Rovněž typograficky je technická zpráva na velmi dobré úrovni.

95
Práce s literaturou

Výběr studijních pramenů je vhodný, zdroje jsou vhodně citovány (snad jen na straně 24 mohla být příslušná citace umístěna uvnitř věty, ne mimo ni).

95
Realizační výstup

Realizační výstup je na velmi vysoké úrovni. Vysoce také oceňuji rozsáhlé experimenty, které byly provedeny k vyhodnocení výsledku a které rovněž vedly k nalezení a opravě chyb jak v rozšiřovaném nástroji DiffKemp, tak v jedné z použitých a mezinárodně známých sad testovacích příkladů.

98
Využitelnost výsledků

Práce významně rozšiřuje soubor metod používaných nástrojem DiffKemp pro ověřování sémantické shody rozsáhlých nízko-úrovňových programů, které prošly refaktorováním. Nástroj DiffKemp je jedním z klíčových výzkumných projektů mezi společností Red Hat a univerzitami (zejména, ale nejen FIT VUT). Nástroj ještě není prakticky nasazen, ale je zde solidní naděje, že k tomu dojde. Nástroj posouvá hranice poznání v oblasti posuzování sémantické shody na rozsáhlém systémovém kódu. Studentem vytvořené rozšíření sice nerozřešilo velký počet reálných změn v kódu, které dosud DiffKemp nezvládnul, ale několik takových reálných případů se objevilo. Jedná se přitom o první krok k nalezení vhodného způsobu kombinace „leightweight“ přístupů používaných nástrojem DiffKemp jako primárních s „heavyweight“ přístupy, které méně škálují, ale zvládnou ověřit výraznější změny kódu. Další výzkum v této oblasti je předpokládán, včetně studentovy účasti na něm. Student svou prací a experimenty s nástrojem DiffKemp současně přispěl k dokončovanému článku o metodách stojících za nástrojem DiffKemp, který bude zaslán do časopisu ACM TOSEM, WoS IF Q1/AIS Q2 (se studentem jako spoluautorem).

Náročnost zadání

Stupeň hodnocení: obtížnější zadání

Zadání hodnotím jako obtížnější, protože má výzkumný charakter a kombinuje práci s nízko-úrovňovým systémovým kódem (Linuxové jádro, knihovny jazyka C apod.), infrastrukturou překladačů, statickou analýzou i rozhodovacími procedurami pro SMT problémy. 

Otázky k obhajobě:
  1. Vyjádřete se prosím k bodům uvedeným v části věnované prezentační úrovni zprávy.
  2. V sekci 4.2 uvádíte, že prozatím nebyla řešena shoda pro případ úprav kódu, který přistupuje do paměti. Odhlédneme-li od vyšší ceny řešení tohoto případu, máte představu, zda se v porovnávaných kódech tento případ vyskytuje?
Výsledný počet bodů navržený oponentem: 95

Známka navržená oponentem: A

Odpovědnost: Mgr. et Mgr. Hana Odstrčilová