• Keine Ergebnisse gefunden

Software- Engineering für langlebige Systeme

N/A
N/A
Protected

Academic year: 2022

Aktie "Software- Engineering für langlebige Systeme"

Copied!
26
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Thomas Ruhroth | Dortmund

Software- Engineering für langlebige

Systeme

(2)

Thomas Ruhroth | Dortmund

Reengineering

Aus Alt mach Neu

(3)

Thomas Ruhroth | Dortmund

 Problem des Reengineerings

 Übersicht über die Themenbereich

VL8

 Ziele:

Verstehen was Reengineering ist und in welche Bereiche angeschnitten werden

 Die meisten Blöcke die hier vorkommen werden in andern Vorlesungen der TU genauer behandelt.

 Beispiel: Prozess-Mining in MGSE

(4)

 Ein altes Programm muss angepasst werden

Systemwechsel

Änderungen der Businessprozesse bei Code ohne Modellen

Binaries ohne Code

 Nur Binaries/Code vorhanden

 Änderungen umfangreich

 Model-Dokumente nicht lesbar/verloren

Datenverluste

Nicht mehr lesbare Formate (siehe auch Folien zur Dokumentation)

Problem

(5)

Erinnerung Model-Driven-Development

Requirements

Modelle

Code

Anforderungen

Modelle (Architektur,

Design, ...)

Code

Modellierung

Codierung

Binaries

Programm

Complilierung

(6)

Das Reengineering-Problem

Requirements

Modelle

Code

Anforderungen

Modelle (Architektur,

Design, ...)

Code

Modellierung

Codierung

Alter

Code ???

Binaries

Programm

Complilierung

(7)

Das Reengineering-Problem

Requirements

Modelle

Code

Anforderungen

Modelle (Architektur,

Design, ...)

Code

Modellierung

Codierung

Alter Code

Modelle (Architektur,

Design, ...)

Anforderungen

Reverse Engineering Binaries

Programm

Complilierung

Programm

(8)

Das Reengineering-Problem

Requirements

Modelle

Code

Anforderungen

Modelle (Architektur,

Design, ...)

Code

Modellierung

Codierung

Alter Code

Modelle (Architektur,

Design, ...)

Anforderungen

Reverse Engineering

Model Mining Requirements

Mining

Binaries

Programm

Complilierung

Programm

Decompiler

(9)

Transformationen „Aus Alt mach Neu“

Requirements

Modelle

Code

Anforderungen

Modelle (Architektur,

Design, ...)

Code

Modellierung

Codierung

Alter Code

Modelle (Architektur,

Design, ...)

Anforderungen

Model Mining Requirements

Mining

Code-Transformation Model-Transformation Anforderungsübernahme

Binaries

Programm

Complilierung

Programm

Decompiler

Emulation

(10)

Emulation

 Einfache Realisierung wenn Emulator bereitsteht

 Teilweise Performance Probleme

 Verschiedene

Abstraktionsmöglichkeiten

Emulation von Bibliotheken (teilweise in Cygwin, Wine)

Emulation von

Systembereichen (XP-Modus in Windows)

Emulation ganzer Rechner (Virtualisierung)

Laufzeit- Umgebung

1

Laufzeit- Umgebung

2

Emulation Laufzeit- Umgebung Programm 1

Programm

(11)

Decompiler

 Erzeugt „Code“ aus ausführbaren Dateien

 Probleme:

Keine lesbaren Namen

Nicht alle Strukturen können „rückübersetzt werden“

Optimierungen zerstören den linearen Ablauf

Beispiel zum Ausprobieren: Debuggen in Eclipse bei optimierenden Übersetzung

(12)

JD (Java Decompiler)

 Bei Java sind viele Informationen im Class-File enthalten

Klassennamen

Operationsnamen

 Wenn Debug-Informationen

Zeilennummern

Alle Variablen werden aufgelöst

(13)

Beispiel mit Debug-Infos

void init() {

for (int i = this.maxValue; i >= 2; i--) { this.isPrim[i] = true;

} }

void findPrimNumbers() {

for (int i = 2; i * i <= this.maxValue; i++) { If (this.isPrim[i] != 0) {

int j = i + i;

while (j <= this.maxValue) {

this.isPrim[j] = false;

j += i;

} } } }

(14)

Code-Transformation

 Code wird in eine andere Sprache transformiert

 Herausforderungen:

Unterschiedliche Pradigmen

Unterschiedliche Bibliotheken

Unterschiedliche Semantik gleicher Syntax

 Beispiel: java2script – Java to JavaScript

(15)

java2script

Java Runtime Bibliothek

JavaScript Simulation der

Java Runtime Bibliothek

Java Runtime Java

Programm

JavaScript Runtime

OO Sim JavaScript

Programm Übersetzung

(16)

Einfaches Beispiel

 javascript:if(a="$wt.examples.controlexample.ControlExample@h ttp://demo.java2script.org/org.eclipse.swt.examples/bin/",window[

"ClazzLoader"]!=null)$w$(a);else{var

d=document,t="onreadystatechange",x=d.createElement("SCRIP T"),f=function(){var s=this.readyState;if(s==null||s=="loaded"||

s=="complete"){$w$

(a);}};x.src="http://archive.java2script.org/1.0.0- v20061220/j2slib.z.js";(typeof x[t]=="undefined")?

x.onload=f:x[t]=f;d.getElementsByTagName("HEAD") [0].appendChild(x);void(0);}

(17)

Model-Mining - Code

 Erzeugen von Modellen aus dem Code

 Beispiele:

Erzeugen von UML-Diagrammen

Erzeugen von Prozessbeschreibungen

 Die Modelle sollten möglichst gut zum Programm passen

Java ↔ UML ok

C ↔ UML schwierig

Fortran77 ↔ UML schwierig

C ↔ Nasi-Schneiderman ok

(18)

Beispiel für automatische Umsetzung

(19)

Model-Mining - Binaries

 1. Möglichkeit:

Decompiler → Code → Model

 2. Möglichkeit: Instrumentierung

Ergänzen des Programms um Analysepunkte

Beobachtung/Logging während des Laufes

Erstellen des Modells aus den Logging-Dateien

 Wird nicht nur zum Reengineering benötigt

Security-Analysen

Nachweis der Sourcen

Schädlingsanalyse

Performanceanalysen

(20)

Instrumentierung

(21)

21

Process-Mining

Logs

Event 1 Event 2 Event 3

...

Event 1 Event 4 Event 3

...

Event 1 Event 2 Event 3

...

P1

P2

P3 P4

Vermutung

(22)

Java → UML-Klassendiagramm

 Übersetzung von Klassen einfach

 Was wird als Assoziationen, was wird als Fields

dargestellt?

 Wie ist es mit den Multiplizitäten?

1 meist noch eindeutig

 Wie mit anonymen Klassen umgehen?

Circle r: Integer

Circle Integer

r 1

(23)

Model-to-Model Transformation

 Ziel: Anpassung des Modells an die Zielsprache

 Teilweise Paradigmenwechsel

funktional → objektorientiert

deklarativ → imperative

 Teilweise Wechsel der Modellsprache

Jackson-Diagramme ↔ UML

BPMN ↔ UML

(24)

Requirements Mining

 Finden der Anforderungen die das Programm erfüllt

 Analyse der Funktion und des Nutzens

 Rekonstruieren der Einsatzszenarios

(25)

Anforderungsübernahme

 Meist direkte Übernahme der Anforderungen ins neue Projekt

 Häufig Anpassung

Entfernen von veralteten Anforderungen

Anpassen an neue Business-Prozesse

Optimieren

(26)

Nächste Woche:

Updates

Referenzen

ÄHNLICHE DOKUMENTE

 Termine werden im Juni bekannt gegeben (mind. drei Termine über die vorlesungsfreie

 Welche wahrnehmungspsychologische Aspekte werden durch die Pattern

 &lt;&lt; Bitten Sie ihren Partner eines der genannten Prinzipien genauer zu erklären&gt;&gt;..  Was sind

 Erstellen Sie eine Operation zum Hinzufügen eines Elementes am Anfang der Liste.  Erstellen Sie eine Operation zum Entfernen des

 Eine Semantik für eine Sprache L ist ein Tupel (D, [[.]]) aus einer semantische Domäne und einer Abbildung [[.]]: L → D, der semantischen Abbildungsfunktion..  Die

 Native zeigt an, dass die Operation in einem geladenen Shared Object File gesucht werden soll (oder DLL)..  Die Namen werden für das Shared Object

 Wenn eine Stelle geändert wird, müssen viele (weit entfernte) Code-Stellen mit angepasst werden.  Wenn der Code geändert wird, ergeben sich

Ziel dieser Vorlesung ist es, eine Einführung in allgemeine Probleme der verschiedenen Systemgruppen geben, und Techniken für den speziellen Bereich der langlaufenden Systeme