KINŠT, O. Integrace nástrojů Predator a Symbiotic pro analýzu software [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2024.
S ohledem na výše uvedené hodnotím práci stupněm C na horním okraji tohoto stupně. S přihlédnutím k poctivému přístupu k řešení diplomové práce a také k účasti v týmu nástroje Predator na soutěži SV-COMP’24 doporučuji zvážit možnost lepšího hodnocení v případě vynikající prezentace práce při obhajobě.
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Informace k zadání | Náročnost práce spočívala v tom, že studentovým úkolem bylo zkombinovat dva nástroje pro formální verifikaci programů s ukazateli a dynamickými datovými strukturami – konkrétně nástroje Predator a Symbiotic (resp. knihovnu DG, na které Symbiotic stojí), z nichž oba jsou nástroji akademickými, oba používají dosti netriviální konstrukce a oba jsou bez hlubší dokumentace a podpory. Pro studenta se jednalo o práci v nové oblasti, bez předchozí projektové či bakalářské práce s podobným zaměřením. Po část roku student navíc pobýval na Erasmu. Student zadání práce dle mého názoru jednoznačně splnil a přinesl ve své práci poznatky zajímavé pro výzkumníky soustředěné kolem nástrojů Predator a Symbiotic. Jedná se zejména o potvrzení dostupného potenciálu ve výsledcích produkovaných nástrojem Predator ke zlepšení ukazatelové analýzy v knihovně DG a diskusi různých konkrétních problémů, které se s tímto možným využitím pojí, včetně některých možných (byť ne vždy zcela uspokojivých) řešení těchto problémů. Tyto problémy přitom předem nebyly známy a bez řádného prozkoumání dané oblasti se těžko daly předpovídat. Na druhou stranu se dle mého názoru v rámci práce dalo dosáhnout výsledků i kvalitnějších a lépe přímo použitelných. Rovněž textová část práce mohla být zpracována lépe. | ||
Práce s literaturou | Studentova práce s literaturou byla bezproblémová, sám dokázal nalézt vhodné informace v případech, kdy se vůbec v literatuře najít daly. Ne všechny detaily implementace nástrojů Predator a Symbiotic jsou totiž v literatuře popsány. V řadě případů nezbylo nic jiného než studium zdrojových kódů a experimentování s nimi. | ||
Aktivita během řešení, konzultace, komunikace | Student na řešení práce pracoval systematicky po celý akademický rok. Na schůzky, ať již fyzické či online, chodil pravidelně. Byl na schůzky řádně připravený a prezentoval dosažené pokroky a problémy, na které narazil. V době jeho pobytu na Erasmu nicméně přece jen byla intenzita práce přirozeně nižší, a proto došlo k dokončení práce až během začátku léta. | ||
Aktivita při dokončování | Text práce byl dokončován s nevelkým, ale přiměřeným předstihem. Text jsem stihl projít a předat studentovi komentáře k zapracování (kterých byl dosti vysoký počet). | ||
Publikační činnost, ocenění | Výsledek práce nebyl publikován formou článku, ale veškerý vytvořený kód je volně k dispozici formou open source a může být po dalším vylepšení využit k lepší integraci nástrojů Predator a Symbiotic. Navíc bych rád vyzdvihl to, že nad rámec zaměření své práce se student v rámci seznamování se s nástrojem Predator podílel na jeho přípravě pro účast v prestižní mezinárodní soutěží ve verifikaci software SV-COMP’24, jejíž divizi zaměřenou na bezpečnost práce s pamětí nástroj Predator následně vyhrál. Ondřej Kinšt je proto také uveden na stránkách soutěže jako člen vítězného týmu nástroje Predator za rok 2024. |
Overall, the thesis introduces an interesting combination of two program verification tools Predator and Symbiotic. The proposed solution is implemented as a proof-of-concept and the performed experiments show that it has the potential to verify programs which neither of the tools can verify on its own. Unfortunately, the implementation is rather simple and not very efficient. The text of the thesis could use some improvement, too. On the other hand, I consider this a challenging assignment and the student was able to propose and implement a working solution, hence, with respect to all of the above, I suggest to accept the thesis and grade it with the grade B (very good) .
Kritérium | Známka | Body | Slovní hodnocení |
---|---|---|---|
Náročnost zadání | The assignment deals with two advanced tools for program analysis, Predator and Symbiotic (particularly its DG library). For each tool, the student had to study the underlying concepts which often comprise advanced techniques of program verification and to explore, understand, and extend implementations of these tools which contain a vast amount of (often legacy) code. From my experience, this is already a challenging task when dealing with a single verification tool, let alone with two. In addition, the goal of the thesis was to interconnect these tools which is a difficult task on its own as the tools use different modes of execution (Symbiotic is a standalone tool while Predator is a compiler plugin), intermediary program representations, and underlying theoretical concepts to perform the analysis. This step required a substantial amount of work, both from the theoretical and practical perspective. With respect to this, I consider the assignment to be rather complex. | ||
Rozsah splnění požadavků zadání | |||
Rozsah technické zprávy | |||
Prezentační úroveň technické zprávy | 75 | The text is logically divided into 7 chapters, starting from introducing the theoretical concepts of Predator and Symbiotic, through describing the proposed solution both from design and implementation perspective, and finishing with experimental evaluation. The division is mostly reasonable and the progression of the text is good. On the other hand, the text itself describes quite advanced topics and is sometimes rather hard to follow. For instance, the chapter on implementation contains 6 pages of dense text with only few code examples which are inlined in the text. In general, the entire thesis could use more examples and illustrations to ease understanding. Another drawback is that many concepts are used without being properly (and preferably formally) introduced (e.g. points-to sets and maps). | |
Formální úprava technické zprávy | 85 | The thesis is written in a good English, with only few language mistakes. The typography is also mostly good, although it could use some improvements. Especially the placement of the figures is not very good - some of them appear several pages later than they are described and some are placed in the middle of an empty page which is a bit disturbing. | |
Práce s literaturou | 80 | The student had to study and understand several scientific papers that describe Predator and Symbiotic. The text demonstrates that he has perfomed this task well. He has also well studied the relevant theoretical concepts, however, I completely miss comparison of the proposed solution with other existing works (i.e. "related work"). | |
Realizační výstup | 80 | The implementation consists of two parts - an extension of Predator which dumps Symbolic Memory Graphs (SMGs) in the proposed format and an extension of the DG library which loads the SMGs, performs various transformations, and uses them to perform points-to analysis. All code is published open source, however, it is hard to deduce the amount of work done by the student from the code attached to the thesis as it contains the entire Predator and DG projects without any revision history. Still, the student implemented a working proof of concept which is able to run on a vast amount of programs as demonstrated on examples from the Predator toolsuite as well as on benchmarks from the SV-COMP competition. Unfortunately, the experiments only show that the proposed points-to analysis is more precise when compared to the points-to analysis previously existing in the DG library but completely fails to demonstrate if the new points-to analysis actually helps DG (or Symbiotic) to verify programs which could not be verified before. In addition, a major drawback of the implementation is its poor performance which would have to be solved before it could be used in practice. | |
Využitelnost výsledků | Both Predator and Symbiotic are research tools which belong among the best state-of-the-art tools for memory safety analysis and which strive to be applied in practice. The results of this work could be used as a starting point for a more thorough research and development which could eventually lead to successfully verifying programs that could not have been verified by state-of-the-art tools before. However, there is still a lot of work to be done as the proposed solution is rather simple and only has a form of a proof-of-concept. |
eVSKP id 157223