Homepage>Lehre>ProjektDiplomBachelorMasterArbeit> Analyse von Black-Box Komponenten / Software-Artefakten auf Bytecode-Ebene

Analyse von Black-Box Komponenten / Software-Artefakten auf Bytecode-Ebene

Ein Compiler übersetzt in Java oder C# geschriebenen Quelltext in Bytecode, welcher dann durch eine sogenannte virtuelle Maschine interpretiert oder "just-in-time" in nativen Maschinencode übersetzt wird. Im Vergleich zu "echtem" Maschinencode ist Bytecode in der Regel auf einer höheren Abstraktionsebene angesiedelt, besitzt jedoch unter Umständen einen geringeren Abstraktionsgrad als der Quellcode, aus dem er generiert wurde. Eine Bibliothek wie beispielsweise ASM stellt eine High-Level API zur Verfügung, um auf den Bytecode zuzugreifen. Diese bildet die Grundlage, um im Bytecode vorliegende Softwareartefakte (BlackBox-Komponenten) zu analysieren, adaptieren und manipulieren.

Ein in Form von Bytecode repräsentiertes Softwaresystem beinhaltet neben den Informationen zur Ausführung auch mehr oder weniger implizite Meta-Daten, die beispielsweise über die Architektur des Systems Auskunft geben können. Mit Hilfe geeigneter Operationen lassen sich Eigenschaften dieser Artefakte auf eine ähnliche Weise wie bei einer konventionellen Datenbank abfragen und gegebenenfalls auch verändern.

Aufgabenstellung

Im Rahmen der Diplomarbeit sollen auf Bytecode-Ebene mögliche Analysen erarbeitet und diese mit Hilfe eines ebenfalls zu entwickelnden (generischen) prototypischen Frameworks realisiert werden. Fragestellungen, die sich durch den Einsatz der Analysen / des Frameworks beantworten lassen sollen, sind beispielsweise:

  • Bestimmung von Software-Artefakt-Clustern, d.h. Teilmengen des zu untersuchenden Softwaresystems, welche keine Abhängigkeiten zu anderen Teilen des Systems besitzen. Darauf aufbauend Generierung von Deployment-Units in Form von JAR-Files.
  • Welche anderen Software-Artefakte müssen verfügbar sein, um ein bestimmtes Software-Artefakt zu instanziieren?
  • Detektierung bestimmter Bytecode-Strukturen
  • (Heuristische) Ableitung von Box-Grenzen
  • (Heuristische) Ableitung von Design-Patterns
  • ...

In der ersten Stufe ist eine geeignete Abfragesprache zu entwickeln, welche die Formulierung von Anfragen an die "Softwaresystem-Datenbank" gestattet. In der sich daran anschließenden zweiten Stufe sollen durch eine geeignete graphische Darstellung die komplexen Zusammenhänge visualisiert werden. Hierfür kann beispielsweise JUNG zum Einsatz kommen.

Voraussetzungen

  • Kenntnisse in der Programmiersprache Java
  • Kenntnisse des Java Bytecode-Konzepts sind von Vorteil, können jedoch auch im Rahmen der Arbeit erworben werden
  • SWING Kenntnisse

Beginn der Arbeit

Diese Arbeit ist vergeben.

Ansprechpartner

Dipl. Inform. Markus Reitz