SOMA Reverse Engineering

Ähnliche Dokumente
Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Programmierkurs Java

Einführung in die Programmierung

Tutorium Rechnerorganisation

Einführung in die Programmierung für Wirtschaftsinformatik

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Codes und Informationsgehalt

Some Software Engineering Principles

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

E-PRIME TUTORIUM Die Programmiersprache BASIC

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Objektorientierte Programmierung

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Softwaretechnik (Allgemeine Informatik) Überblick

8: Zufallsorakel. Wir suchen: Einfache mathematische Abstraktion für Hashfunktionen

Modul 122 VBA Scribt.docx

Softwaremetriken verstehen und nutzen

VBA-Programmierung: Zusammenfassung

Algorithmen und Datenstrukturen

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Tagesprogramm

Methodische Grundlagen des Software Engineering - Übung 9

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

SEP 114. Design by Contract

Software Engineering. Bibliographisches Institut & F. A. Brockhaus AG, Mannheim; Spektrum Akademischer Verlag GmbH, Heidelberg, 2003

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Client-Server-Beziehungen

Projektverwaltung Problem Lösung: Modulare Programmierung

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

IKP Uni Bonn Medienpraxis EDV II Internet Projekt

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Kapitel 2: Der Software-Entwicklungsprozess

Vorkurs C++ Programmierung

Markup-basiertes Spezifikationsund Anforderungsmanagement in agilen Softwareprojekten

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Ein einfaches Modell zur Fehlerfortpflanzung

Test-Driven Design: Ein einfaches Beispiel

Klausur Software Engineering für WI (EuI)

Was ist Logische Programmierung?

Inhaltsverzeichnis. Beschreibung. Hintergrund

Graphic Coding. Klausur. 9. Februar Kurs A

Metadaten bei der Digitalisierung von analogen archivalischen Quellen. Kathrin Mileta, Dr. Martina Wiech

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Gründe für fehlende Vorsorgemaßnahmen gegen Krankheit

Übungen für Woche 10

POINT. of Reha Sport e.v. Reha-Sport. Der Wegweiser zum. Eine Information für Patientinnen, Patienten und Angehörige

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Theoretische Informatik I

Der Schutz von Patientendaten

Extending tl_member. Andreas Fieger

Robert Hartmann Public v1.0 (Feb 2015) Architektur & Agilität - Praxisbericht

ERP-Evaluation systematisch und sicher zum optimalen ERP-System

Warum sich das Management nicht für agile Softwareentwicklung interessieren sollte - aber für Agilität

How to do? Projekte - Zeiterfassung

Einführung in die Programmierung

Programmierung für Mathematik (HS13)

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Erwin Grüner

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

1. Bearbeite Host Netzgruppen

Beispiel 19. December 4, 2009

RT Request Tracker. Benutzerhandbuch V2.0. Inhalte

Constraint-Algorithmen in Kürze - Mit der Lösung zur Path-Consistency-Aufgabe 9

Ökonomik der Agrar und Ernährungswirtschaft in ILIAS

Informatik I Debugging

Konzepte der Informatik

Erster Bug: eine Motte

Projektsteuerung Projekte effizient steuern. Welche Steuerungsinstrumente werden eingesetzt?

Die Orgadata AG ist ein stark expandierendes Software-Unternehmen aus Leer. Mit unserem System LogiKal

Das System sollte den Benutzer immer auf dem Laufenden halten, indem es angemessenes Feedback in einer angemessenen Zeit liefert.

DeltaVision Computer Software Programmierung Internet Beratung Schulung

Übungen Programmieren 1 Felix Rohrer. Übungen

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

Häufig wiederkehrende Fragen zur mündlichen Ergänzungsprüfung im Einzelnen:

Mindestanforderungen an. Inland ECDIS Geräte im Informationsmodus und vergleichbare Kartenanzeigegeräte. zur Nutzung von Inland AIS Daten

Dr. Monika Meiler. Inhalt

Theoretische Grundlagen des Software Engineering

Generative Prozessmodelle Patrick Otto MDD Konferenz

Leitfaden zu den Einstellungen in der Office Line anlässlich eines EU-Beitritts

Adressen. Praktikum Funktionale Programmierung Organisation und Überblick. Termine. Studienleistung

Wirtschaftsinformatik I

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) Seite 1

Passwortverwaltung : Token/SMS

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Sortieren. Eine Testmenge erstellen

Technische Dokumentation IPCalculator

Java Kurs für Anfänger Einheit 5 Methoden

Probeklausur Softwareengineering SS 15

Vortrag von: Ilias Agorakis & Robert Roginer

Anleitung Grundsetup C3 Mail & SMS Gateway V

Silca Software ERKLÄRUNG. February 2013 Copyright Silca S.p.A. V.2.0

Java Einführung Collections

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Transkript:

SOMA Reverse Engineering Univ.Prof. Dr. Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Inhalt Was versteht man unter Reverse Engineering? Techniken/Methoden Probleme VU Software Maintenance 2

Engineering vs. Reverse Engineering Idee Engineering Task Produkt/ System VU Software Maintenance 3

Abstraktion Wesentlicher Bestandteil von Reverse Engineering ist die Extraktion von Wissen auf einer geeigneten Verständnisebene. 3 Arten der Abstraktion: Funktionenabstraktion Datenabstraktion Prozeßabstraktion VU Software Maintenance 4

Funktionenabstraktion Prozedurabstraktion Gewinnung von Wissen über die Funktionsweise einer Funktion oder Prozedur. Beispiel: pop(s) nimmt das oberste Element vom Stack s und liefert es zurück. VU Software Maintenance 5

Datenabstraktion Gewinnung von Wissen über die verwendeten Datenmodelle ohne Berücksichtigung der Implementierungsdetails. Beispiel: Mengen/Set-Implementierung über Listen. VU Software Maintenance 6

Datenabstraktion Set Set union Set List List list_union List VU Software Maintenance 7

Prozeßabstraktion Gewinnung von Wissen über den Programmablauf/Prozeß. Das exakte Verhalten wird dabei nicht betrachtet. VU Software Maintenance 8

Ziele des Reverse Engineerings Wiederherstellung verlorener Information Unterstützung der Migration zwischen unterschiedlichen Plattformen Verbesserung bzw. Wiederherstellung von Dokumentation Bereitstellung unterschiedlicher Sichtweisen auf ein Programm Extraktion wiederverwertbarer Komponenten Unterstützung im Umgang mit Komplexitäten Erkennen von Seiteneffekten Reduktion des Wartungsaufwands VU Software Maintenance 9

Abstraction HIGH LOW Ebenen des Reverse Engineerings Specification Design Implementation Redocumentation Specification recovery Design recovery Redocumentation Redocumentation Reverse Engineering VU Software Maintenance 10

Redocumentation Ziel: Erzeugung von semantisch äquivalenter Dokumentation innerhalb der selben Abstraktionsebene. Zweck: Erzeugung alternativer Ansichten Verbesserung bestehender Dokumentation Erzeugung von Dokumentation eines modifzierten Programms VU Software Maintenance 11

Techniken Graphische Programmrepräsenation Control Flow Graphs (CFG) Struktogramme Entity-Relationship-Diagramme Klassendiagramme... VU Software Maintenance 12

Control-Flow-Graphs S1 E S1 S2 TRUE S1 FALSE S2 TRUE E FALSE S1; S2 if E then S1 else S2 do S1 while E VU Software Maintenance 13

Struktogramme S1; S2 S1 S2 if E then S1 else S2 true S1 E false S2 do S1 while E E S1 VU Software Maintenance 14

Beispiel public int foo (int x,y) { int i = 0; int result = 0; while (i < x) { result = result + y; i = i + 1; } return result; } VU Software Maintenance 15

Design Recovery Ziel: Gewinnung von höheren Abstraktionen direkt aus dem Source Code. Zweck: Gewinnung von Designinformation für Maintenance oder Neuentwicklung. Gewinnung für Wissen um andere Applikationen entwickeln zu können. VU Software Maintenance 16

Sichtweisen Design Recovery Erkennung von Kontrollstrukturen, Datentypen, Module, Klassenhierarchien. Erkennung von Muster Abhängig von der Domäne Ableitung der Softwarearchitektur eines Systems VU Software Maintenance 17

Programmiermuster while(i<a.length) do... F(A[i])... i=i+1;... Anwendung von F auf alle Elemente in einem Array end while; VU Software Maintenance 18

Specification Recovery Ziel: Gewinnung von Spezifikationswissen aus Systeminformationen (Source Code, Dokumentation,..). Notwendig wenn: Designwissen oft nicht ausreichend. Paradigmenshift im Design (Strukturierte Programmierung vs. OO) VU Software Maintenance 19

Wann ist Reverse Engineering notwendig? Fehlendes oder unvollständiges Design/Spezifikation Ungenügende Dokumentation Schlecht strukturierter Source Code Programmtransformation Sicherstellung Programmkompatibilität Migration auf andere HW/SW-Plattformen Steigende Fehlerrate Herstellung ähnlicher Produkte VU Software Maintenance 20

Umstrukturierung des Control-flow-driven Source Codes Beispiel: Code mit Goto s in strukturierten Code umwandeln. Efficiency-driven Adaption driven Beispiel: Änderung im Coding Style; Änderung der Programmiersprache bzw. des Programmiersprachenparadigmas VU Software Maintenance 21

Efficiency-driven Restructuring if Score = 1 then Grade = A ; elseif Score = 2 then Grade = B ; elseif Score = 3 then Grade = C ; elseif Score = 4 then Grade = D ; else Grade = F ; end if case Score of 1: Grade= A 2: Grade= B 3: Grade= C 4: Grade= D else Grade = F end case VU Software Maintenance 22

Offene Probleme Automatisierung des Reverse Engineerings Identifizierung von Konzepten eines hohen Abstraktionsgrades Namensgebungsproblem Vergebung von sinnvollen Namen für Konzepte Domänenabhängigkeit! VU Software Maintenance 23

Zusammenfassung Reverse Engineering dient zur Extraktion von Wissen über ein Programm Reverse Engineering behandelt keine Modifikationsaufgaben Reverse Engineering ist für den Maintenance Prozeß wichtig Reverse Engineering ist teilweise automatisierbar VU Software Maintenance 24