Prořezávání programů založené na jejich podobnosti
Loading...
Date
Authors
Malecová, Tatiana
ORCID
Advisor
Referee
Mark
A
Journal Title
Journal ISSN
Volume Title
Publisher
Vysoké učení technické v Brně. Fakulta informačních technologií
Abstract
Cieľom tejto práce je navrhnúť metódu, ktorá zjednoduší dva porovnávané programy na základe výsledkov ich sémantickej analýzy. Cieľom je odstránenie čo najväčšieho množstva sémanticky ekvivalentných častí porovnávaných programov. Pre nájdenie týchto ekvivalentných častí aplikujeme vlastné riešenie problému nájdenia najväčšieho spoločného indukovaného podgrafu. Následne sme schopní zjednodušiť programy využitím spätného statického prerezávania. Aplikáciou tohto zjednodušenia získame prerezané programy, ktoré obsahujú rozdielne časti a časti programov, ktoré môžu tieto rozdiely ovplyvniť. Táto metóda je naimplementovaná ako rozšírenie nástroja DiffKemp, čo je statický analyzátor sémantických rozdielov medzi rôznymi verziami rozsiahlych programov. Experimenty vykonané na jadrách Linux-u ukazujú, že metóda je schopná veľmi efektívne vyprodukovať korektné prerezané programy (analýza sa predĺžila len o 3.2%). Navyše, vzniknuté prerezané programy sú omnoho menšie, ako originálne, čo ich činí vhodnými pre ďalšiu analýzu.
The aim of this work is to design a method that simplifies two programs based on the results of analysis of their semantic difference. The goal is to remove as many semantically equivalent parts of the programs as possible. To find these equivalent parts, we apply our own solution to the problem of finding the maximum common induced subgraph. Subsequently, we are able to simplify the programs by using backward static slicing. By applying this simplification, we obtain sliced programs that consist of the differing parts and parts that can affect these differences. The method has been implemented as an extension of the DiffKemp tool, which is a static analyser of semantic differences between different versions of large scale programs. Our experiments on the Linux kernel show that the method is able to produce correct slices very efficiently (the analysis is prolonged only by 3.2%). Moreover, the created slices are much smaller than the original programs, which makes them suitable for further analysis.
The aim of this work is to design a method that simplifies two programs based on the results of analysis of their semantic difference. The goal is to remove as many semantically equivalent parts of the programs as possible. To find these equivalent parts, we apply our own solution to the problem of finding the maximum common induced subgraph. Subsequently, we are able to simplify the programs by using backward static slicing. By applying this simplification, we obtain sliced programs that consist of the differing parts and parts that can affect these differences. The method has been implemented as an extension of the DiffKemp tool, which is a static analyser of semantic differences between different versions of large scale programs. Our experiments on the Linux kernel show that the method is able to produce correct slices very efficiently (the analysis is prolonged only by 3.2%). Moreover, the created slices are much smaller than the original programs, which makes them suitable for further analysis.
Description
Citation
MALECOVÁ, T. Prořezávání programů založené na jejich podobnosti [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2021.
Document type
Document version
Date of access to the full text
Language of document
en
Study field
Informační technologie
Comittee
prof. Ing. Tomáš Vojnar, Ph.D. (předseda)
doc. Ing. Ondřej Ryšavý, Ph.D. (místopředseda)
Ing. František Grézl, Ph.D. (člen)
doc. Ing. Jan Kořenek, Ph.D. (člen)
Dr. Ing. Petr Peringer (člen)
Date of acceptance
2021-06-15
Defence
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. 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. Otázky u obhajoby: On page 9 of your thesis, you say you simplified the presentation wrt the original algorithm used by DiffKemp by considering an instruction-by-instruction comparison only. Is it really a simplification of the presentation only? This is, does your tool support dealing with more general comparisons than instruction-by-instruction? Have you ever tried at least a simple experiment with applying some heavy-weight formal verifier, such as LLReve, on the code simplified by you? You mention that you reduced the changed code by 54.8 % overall. I am afraid that this needs still not be enough for the heavy weight tools to succeed. However, perhaps you saw some (many?) particular functions reduced much more so that LLReve would indeed catch up? May be this could even be tried for the defence? If there is enough time, you could comment on some of the issues mentioned in the part of the review devoted to the writing of your thesis. Particularly, points 12, 8, 3, and 10 are interesting from my point of view (in this order).
Result of defence
práce byla úspěšně obhájena
Document licence
Standardní licenční smlouva - přístup k plnému textu bez omezení