Extending Data Lineage Analysis Platform with Support for Dependency Injection Frameworks
Rozšíření platformy pro analýzu datových toků o podporu knihoven na vkládání závislostí
diploma thesis (DEFENDED)
View/ Open
Permanent link
http://hdl.handle.net/20.500.11956/127818Identifiers
Study Information System: 230748
Collections
- Kvalifikační práce [11982]
Author
Advisor
Referee
Hnětynka, Petr
Faculty / Institute
Faculty of Mathematics and Physics
Discipline
Software and Data Engineering
Department
Department of Distributed and Dependable Systems
Date of defense
29. 6. 2021
Publisher
Univerzita Karlova, Matematicko-fyzikální fakultaLanguage
English
Grade
Excellent
Keywords (Czech)
vkládání závislostí|graf volání|Spring Framework|statická analýza|datové tokyKeywords (English)
data lineage|dependency injection|call graph|Spring Framework|static analysisDatové toky tvoří důležitý aspekt dnešního podnikového prostředí. MANTA Flow je platforma pro analýzu datových toků, která již má základní podporu pro analýzu Java programů poskytovanou jednou z jejích komponent zvaných Bytecode Scanner. Přesto je v dnešním podnikovém prostředí jen velmi málo aplikací, které nepoužívají vkládání závis- lostí alespoň ve velmi omezené míře. Proto představujeme rozšíření komponenty Bytecode Scanner v platformě MANTA Flow, abychom také umožnili automatickou analýzu da- tových toků v aplikacích, které využívají vkládání závislostí. Rozšíření dokáže zpracovat i složité definice standardních kontejnerů pro vkládání závislostí. Vzhledem k tomu, že vkládání závislostí ovlivňuje výběr cílů volání metody, popisujeme také strukturu grafu volání a jeho modifikace pro podporu vkládání závislostí. Nakonec použijeme tuto infras- trukturu k návrhu a implementaci pluginu do komponenty Bytecode Scanner pro Spring Framework, populární knihovnu pro vkládání závislostí pro platformu Java. Plugin byl úspěšně testován na malém, ale realistickém softwarovém systému, který umí číst data ze souboru, transformovat je a zapisovat do databáze. 1
Data lineage forms an important aspect of today's enterprise environment. MANTA Flow is a data lineage analysis platform that already has basic support for analysis of Java programs, provided by one of its components called Bytecode Scanner. Neverthe- less, there are very few applications in today's enterprise environment that do not use dependency injection at least in a very limited way. Therefore, we present an extension of Bytecode Scanner in the MANTA Flow platform to support data lineage analysis of dependency injection frameworks as well. The extension is able to process even complex definitions of standard dependency injection containers. Since the dependency injec- tion influences a selection of method call targets, we also provide a description of call graph structure and its modification to support dependency injection. Last, we use this infrastructure to design and implement a plugin into Bytecode Scanner for the Spring Framework, a popular dependency injection framework targeting Java Platform. The plugin has been successfully tested on a small but realistic software system that can read data from a file, transform them, and write them into a database. 1
