Tobias Kiefer Bachelor-Arbeit Betreuer: Prof. Dr. Antonio Krüger PLUS Architektur-Browser (PAB) Bachelor-Master-Seminar, 09.01.2014
Agenda Was ist abat+? Motivation Related Work Architektur Mein Vorhaben Visualisierung Zusammenfassung 07.01.14 Tobias Kiefer abat+ GmbH 2
Was ist abat+? IT-Unternehmen mit Sitz in St. Ingbert Software für Produktionssteuerung und Logistik für Automotive- und Zulieferindustrie: PLUS PLUS: Fertigungssteuerung Fertigungsplanung Qualitätsmanagement Implementierung, Rollout und Support des Steuerungssystems 07.01.14 Tobias Kiefer abat+ GmbH 3
Motivation Repository mit Informationen über Abhängigkeitsgraph der Softwarearchitektur IST-Zustand: Momentan keine geeignete Softwarelösung Mühsames nachschlagen von Abhängigkeiten Gute Kenntnis des PLUS-Clients notwendig SOLL-Zustand: Abhängigkeiten schnell und einfach einsehbar Eigenschaften von Komponenten in Echtzeit einsehbar 07.01.14 Tobias Kiefer abat+ GmbH 4
Reverse Engineering Related Work bezeichnet den Vorgang, aus einem bestehenden, fertigen System[ ] durch Untersuchung der Strukturen, Zustände und Verhaltensweisen, die Konstruktionselemente zu extrahieren. Aus dem fertigen Objekt wird somit wieder ein Plan erstellt.[4] bezeichnet den Prozess ein System zu analysieren um 1. einzelne Komponenten und deren Beziehungen untereinander zu identifizieren. 2. eine Repräsentation des Systems auf einem abstrakteren Level zu erschaffen. [1] 07.01.14 Tobias Kiefer abat+ GmbH 5
Related Work Columbus [1] Framework zum Analysieren von großen C++ programmen Ziel: besseres Verstehen von Beziehungen zwischen einzelnen Komponenten in großen Software Systemen Extraktions Prozess: 1. Extraktion von Informationen 2. Beziehung zwischen Komponenten 3. Export/Visualisierung Visualisierung: Graph, welcher die Abhängigkeiten zwischen einzelnen Klassen und Namespaces zeigt 07.01.14 Tobias Kiefer abat+ GmbH 6
Related Work Columbus[1] bietet Erweiterungsmöglichkeit durch selbstgeschriebene Plugins z.b. HTML-Export Filtern: benutzt C++ Elemente Klassen Quellcode Dateien Namespaces Keine Möglichkeit verschiedene Programme/Releases zu parsen und zu vergleichen Keine Erkennung von Dead-Code bzw. Fehlern 07.01.14 Tobias Kiefer abat+ GmbH 7
Related Work Rigi[5] Tool für Software-Analyse und Programm-Verstehen Ziel: Identifizierung von Software Komponenten in einem System und deren Repräsentation auf einem abtrakteren Level Extraktions Prozess: 1. Identifizierung der Komponenten 2. Beziehung zwischen Komponenten 3. Extraktion des abstrahierten Systems sowie der Desgin Informationen Benutzer entscheidet wie detailiert bzw. abstrakt der Extraktionsprozess sein soll 07.01.14 Tobias Kiefer abat+ GmbH 8
Related Work Rigi[5] Visualisierung: Verschiedene Views, z.b: Call Graph Überblicke über einzelne Klassen Filtern: Skript Sprachen, die Benutzern erlaubt zu sagen, was extrahiert und wie es gefiltert werden soll Keine Möglichkeit verschiedene Programme/Releases zu parsen und zu vergleichen Keine Erkennung von Dead-Code bzw. Fehlern 07.01.14 Tobias Kiefer abat+ GmbH 9
Related Work GPLAP[6] Programm zum Entdecken von Software Plagiarismus mit Hilfe von Anhängigkeitsgraph-Analyse (PDG) Ziel: Plagiierte Programmsekmente zu finden, falls vorhanden PDG = graphische Repräsentation von Daten und Steuerungsabhänigkeiten innerhalb eines Programms bzw. einer Prozedur Identifier Renaming,Code Insertions und Control Replacement verändern nicht die eigentliche Struktur des PDG 07.01.14 Tobias Kiefer abat+ GmbH 10
Related Work GPLAP[6] Filtereinstellung gibt an, wie strikt Abhängigkeitsgraphen verglichen werden keine Möglichkeit Filter nach dem Parsen zu modifizieren Gibt zwei PDG-Teilgraphen zurück, in denen Plagiarismus vermutet wird 07.01.14 Tobias Kiefer abat+ GmbH 11
Vergleich Abhängigkeits graph Erkennung von Fehlern/ Deadcode Vergleich von Verschiedenen Releases/ Programmen Möglichkeit zu Filtern Visualisierung Columbus Graph Rigi Graph GPLAP Graph- Paare PAB Tabellen [3] 07.01.14 Tobias Kiefer abat+ GmbH 12
Architektur - Übersicht MVVM-Pattern Views: User Interface (C#) Datenvisualisierung View Model: Bindeglied zwischen View und Model (C#) Gekapselter Zugriff auf Model Model: Darzustellenden Daten Business Objekte (C#) Backend: Server (Cobol), Datenbanken 07.01.14 Tobias Kiefer abat+ GmbH 13
Architektur - Business Objekte Business Objekte(BO) bestehen aus vier Klassen 1. BO-Factory zum Erzeugen und Verwalten aller BOs eines bestimmten Typs 2. BO-Key Kapselung aller Schlüsseleigenschaften zur Identifizierung 3. BO-Data Datenfelder mit Zugriffseigenschaften Methoden zum Abgleich zweier Datenobjekte 4. Business Object Wrapper für BO-Key und BO-Data, Schnittstelle für Verwender 07.01.14 Tobias Kiefer abat+ GmbH 14
Mein Vorhaben C# basierendes Reverse-Engineering Tool, bestehend aus zwei Komponenten 1. Parser: Extrahieren von Eigenschaften einzelner Komponenten Ermittlung der Abhängigkeitsgraphen zwischen den verschiedenen Ebenen zwischen Objekten einer Ebene Abstrahieren von Quellcode in Datenbank Erkennen bestimmter Fehler auf Server Seite 07.01.14 Tobias Kiefer abat+ GmbH 15
Mein Vorhaben Vorgehensweise: 1. Rekursives Durchsuchen des Source Codes nach benötigten Dateien 2. Parallelisiertes Parsen dieser Dateien um gewünschte Informationen zu erhalten reguläre Ausdrücke beachten von Ausnahmen 3. Mit Hilfe erlangter Informationen Abhängigkeiten zwischen einzelnen Komponenten erstellen 4. Abstraktion von Informationen und Abhängigkeiten in MSSQLServer Datenbank 07.01.14 Tobias Kiefer abat+ GmbH 16
Mein Vorhaben 2. Visualisierungs-Tool für PLUS-Client: Anzeige der Eigenschaften einzelner Komponenten Visualisierung mittels Tabellen (keinen Graph) Klares Erkennen von Abhängigkeiten zwischen den verschiedenen Ebenen zwischen Objekten einer Ebene Verschiedene Filter-Optionen Vergleich einzelner Releases 07.01.14 Tobias Kiefer abat+ GmbH 17
Visualisierung 07.01.14 Tobias Kiefer abat+ GmbH 18
Visualisierung 07.01.14 Tobias Kiefer abat+ GmbH 19
Visualisierung - Master Unterschiedliche Objekttypen in einzelnen Gruppen dargestellt (BO, Server,...) Lediglich wichtige Spalten zur Identifizierung eines Objekts (ID, Name,...) Gruppen können ein-/ausgeklappt werden 07.01.14 Tobias Kiefer abat+ GmbH 20
Visualisierung - Details Anzeige vollständiger Informationen und Eigenschaften des ausgewählten Objekts. Unterteilung in verschiedene Gruppen möglich (Informationen, Datenfelder,...) 07.01.14 Tobias Kiefer abat+ GmbH 21
Visualisierung - Verknüpfungen Rechter Bereich zeigt alle Verknüpfungen zu anderen Objekten Verknüpfte Objekte sind in entsprechende Gruppen aufgeteilt. Nur die wichtigsten Informationen zur Identifikation der Objekte dargestellt 07.01.14 Tobias Kiefer abat+ GmbH 22
Zusammenfassung 07.01.14 Tobias Kiefer abat+ GmbH 23
Fragen Vielen Dank für Ihre Aufmerksamkeit Fragen? [2] 07.01.14 Tobias Kiefer abat+ GmbH 24
Quellen [1] Ferenc et al. - Columbus - reverse engineering tool and schema for C++ Res. Group on Artificial Intelligence, Univ. of Szeged, Hungary 2002 [2] http://vilacostas.de/eh-content/pages/4347/images/fragezeichen-maennchen.jpg [3] https://www.iconfinder.com/icons/58687/check_ok_icon#size=128 [4] http://de.wikipedia.org/wiki/reverse_engineering [5] Müller at al. - Understanding software systems using reverse engineering technology perspective from the Rigi project University of Victoria, Victoria, BC, Canada 1993 [6] Lui et al. - GPLAG: detection of software plagiarism by program dependence graph analysis University of Illinois-UC, Urbana, IL 2006 07.01.14 Tobias Kiefer abat+ GmbH 25