Thesis (Selection of subject)Thesis (Selection of subject)(version: 368)
Thesis details
   Login via CAS
Preprocesor Java bytecode pro verifikační nástroje
Thesis title in Czech: Preprocesor Java bytecode pro verifikační nástroje
Thesis title in English: Java Bytecode Preprocessor for Program Verification Tools
Key words: Java, JVM, bytecode, transformace kódu, verifikace programů
English key words: Java, JVM, bytecode, code transformation, program verification
Academic year of topic announcement: 2014/2015
Thesis type: diploma thesis
Thesis language: čeština
Department: Department of Distributed and Dependable Systems (32-KDSS)
Supervisor: doc. RNDr. Pavel Parízek, Ph.D.
Author: hidden - assigned and confirmed by the Study Dept.
Date of registration: 08.06.2015
Date of assignment: 11.06.2015
Confirmed by Study dept. on: 19.06.2015
Date and time of defence: 16.06.2016 09:00
Date of electronic submission:13.05.2016
Date of submission of printed version:13.05.2016
Date of proceeded defence: 16.06.2016
Opponents: doc. RNDr. Petr Hnětynka, Ph.D.
 
 
 
Guidelines
Mnoho verifikačních nástrojů pro jazyk Java klade určitá omezení na vstupní program. Kód programu například nemůže obsahovat určité posloupnosti instrukcí.
Pokud vstupní program tyto podmínky nesplňuje, tak může verifikace skončit chybou nebo spočítá nepravdivý výsledek.
Autoři verifikačních nástrojů se zaměřují spíše na vlastní algoritmy, a technické a implementační detaily odsouvají na pozdější dobu.

Tato práce se zabývá nástroji J2BP a PANDA, které analyzují zkompilované Java programy na základě technik predikátové abstrakce.
Práce má následující hlavní cíle:
(1) Rozpoznat posloupnosti instrukcí Java bytecode, které nejsou korektně zpracovány nástroji J2BP a PANDA;
(2) Navrhnout a implementovat transformace Java bytecode, které nahradí všechny problematické posloupnosti instrukcí tak, že nástroje J2BP a PANDA dokáží výsledný program korektně zpracovat.
Dalším cílem práce je implementovat transformace, které budou nahrazovat volání některých agregovaných metod na třídách kolekcí jazyka Java (jedná se například o metody putAll a containsAll) za ekvivalentní bytecode, který bude obsahovat pouze volání odpovídajících primitivních metod (například put nebo contains) a bežné řídící struktury jazyka Java.
Výsledkem práce bude samostatná aplikace, která se použije jako preprocesor pro nástroje J2BP a PANDA.
References
1. J2BP: Predicate Abstraction for Java Programs. https://github.com/d3sformal/j2bp
2. PANDA: Predicate Abstraction in Dynamic Analysis. https://github.com/d3sformal/panda
3. ASM: Java Bytecode Manipulation Framework. http://asm.ow2.org/
4. Polyglot extensible compiler framework. http://www.cs.cornell.edu/projects/polyglot/
5. JAstAddJ: The JastAdd Extensible Java Compiler. http://jastadd.org/web/jastaddj/
 
Charles University | Information system of Charles University | http://www.cuni.cz/UKEN-329.html