Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Software Reengineering Werkzeuge und Prozesse

Ähnliche Präsentationen


Präsentation zum Thema: "Software Reengineering Werkzeuge und Prozesse"—  Präsentation transkript:

1 Software Reengineering Werkzeuge und Prozesse
Andreas Winter AG Wartung 15. Oktober 2004

2 Überblick Software Reengineering Reengineering Werkzeuge
(unser) Reengineering Begriff Reengineering Maßnahmen und Prozesse Reengineering Werkzeuge GUPRO (Generische Umgebung zum Programmverstehen) Interoperabilität von Reengineering Werkzeugen GXL (Graph eXchange Language) Zusammenfassung AG Wartung 15. Oktober 2004

3 Software Reengineering …
Verlängerung des Software- Lebens Ziel: [Chikofsky/Cross, 1990] …"is the examination and alteration of a sub-ject system to reconstitute it in a new form … This may include modifications with respect to new requirements …" [Smith et al (SEI)] … "is the systematic transformation of an existing system into a new form to realize quality improvements in operation, system capability, functionality, performance, or maintainability and supportability at a lower cost, schedule, or risk to the customer" AG Wartung 15. Oktober 2004

4 Software Reengineering
Reengineering Kategorien Wartung Erhaltung Erweiterung Migration Integration Sanierung Re-Dokumentation Ablösung Ziel-setzung Software- system Software- system Reengineering AG Wartung 15. Oktober 2004

5 Reengineering Maßnahmen
korrektive Wartung: unverzügliche Beseitigung von Fehlern, (Release-getriebe) korrektive Systemerhaltung: Behebung von Fehlern in der nächsten ausgelieferten Version Erweiterung/Adaption: Anpassung an geänderte Anforderungen Migration: Überführung von Softwaresystemen in andere Zielumgebungen Integration: Kombination verschiedener Softwaresysteme Sanierung: Verbesserung der Softwarequalität (ohne Änderung der Funktionalität) Re-Dokumentation: nachträgliche Erstellung von Dokumentationen Ablösung: Vorbereitung der Außerdienststellung eines Softwaresystems vgl. [Sneed+2004] AG Wartung 15. Oktober 2004

6 Reengineering Prozesse
Behauptungen Unterschiedliche Reengineering Maßnahmen erfordern unterschiedliche Vorgehensweisen Vorgehensweisen für einzelne Reengineering Maßnahmen lassen sich als Varianten eines Referenz-Prozess- Modells auffassen konkrete Reengineering Projekte folgen problem-bezogenen Anpassungen dieser Varianten AG Wartung 15. Oktober 2004

7 GUPRO Generische Umgebung zum Programmverstehen
Werkzeuge GUPRO Generische Umgebung zum Programmverstehen AG Wartung 15. Oktober 2004

8 GUPRO Idee Anpassbares Werkzeug zur Progammanalyse
unterstützt verschiedene Analysetechniken anpassbar an die meisten Analyseprobleme Verwendung von Graphentechnologie Graph-basierte, konzeptionelle Modellierung des Analyse-Problems Überführung des Softwaresystems in ein Graphen-Repository Analyse des Repositoryinhalts durch Graphanfragen und Graphenalgorithmik Verwendung extern entwickelter Komponenten Austausch von Reengineering-Daten mit GXL (Graph eXchange Language) AG Wartung 15. Oktober 2004

9 GUPRO Architektur Conceptual Model (Schema) Visualization Source Code
Repository ex- tract view Visualization abstract AG Wartung 15. Oktober 2004

10 Graphen in GUPRO TGraphen:
typisierte, attributierte, angeordnete, gerichtete Graphen AG Wartung 15. Oktober 2004

11 EER - Graph Schemas AG Wartung 15. Oktober 2004

12 Multi Language Conceptual Model
AG Wartung 15. Oktober 2004

13 GEOS Conceptual Model AG Wartung 15. Oktober 2004

14 C Conceptual Model 14 AG Wartung 15. Oktober 2004

15 Analyse durch Graph-Anfragen
GReQL (Graph Query Language): Graph-Anfragesprache mit regulären Pfadausdrücken Hüllenbildung erweiterbare Funktions- und Relationsbibliothek eingeschränkte Prädikatenlogik erster Stufe Syntax: FROM declaration WITH predicate REPORT result description END AG Wartung 15. Oktober 2004

16 Beispiel Caller/Callee-Paare FROM f, g: V{Function}
WITH f --> {isCaller} <-- {isCallee} g REPORT f.name, g.name END [[ (main, max), (main, min) ]] AG Wartung 15. Oktober 2004

17 Beispiel Welche Programme werden durch JCL direkt gestartet?
direkt oder indirekt gestartet? FROM jcl: V{JclProcedure} REPORT jcl.name, FROM called: V{Program} REPORT called.name END END WITH jcl <-- {isStepIn} <-- {isCalledIn} called (<-- {isModuleOf} --> {CallsProgram})* AG Wartung 15. Oktober 2004

18 Query Example Show "highest" superclass to each class is Class
FROM class, super: V{Class} WITH class > {isSubclassOf}* super AND outDegree{isSubclassOf} (super) = 0 REPORT class.name, super.name END 18 Class name is 0..* AG Wartung 15. Oktober 2004

19 GUPRO Workbench AG Wartung 15. Oktober 2004

20 Table View AG Wartung 15. Oktober 2004

21 GUPRO Code View AG Wartung 15. Oktober 2004

22 GUPRO-Projekte GUPRO ReSec GEOS LISA ReJob
Analyse mehrsprachiger Softwaresysteme auf Architekturebene (Cobol, PL/1, CSP, JCL, IMS-DB, SQL) gefördert durch BMFT ReSec feingranulare Analyse zur Software- zertifizierung (C, Ada) GEOS Analyse eines mehrsprachigen Software- systems zum Aktienhandel (Java, C, C++, RDBMS) LISA feingranulare Analyse zur Sicherheits- überprüfung von LINUX ReJob Repository-Struktur für JCL AG Wartung 15. Oktober 2004

23 Interoperabilität von Reengineering Werkzeugen
GXL Graph eXchange Language ( AG Wartung 15. Oktober 2004

24 Reengineering Tools Gesucht: Visualization Source Code abstract ex-
Repository ex- tract view Visualization abstract Gesucht: Standard Austauschformat für Reengineering Werkzeuge AG Wartung 15. Oktober 2004

25 Zielsetzung ausgetauschte Daten Mathematischesl Model Notation
Instanzen (Graphen) Schemas (Graphklassen) Mathematischesl Model typisierte, attributierte, gerichtete, angeordnete Graphen erweitert um Hypergraphen und hierarchische Graphen Notation eXtensible Markup Language (XML) Unified Modeling Language (UML) AG Wartung 15. Oktober 2004

26 GXL Partners AG Wartung 15. Oktober 2004

27 gerichtete Graphen <node id = "v1"> <edge id = "e1"
from = "v1" to = "v2"> </edge> <edge id = "e6 from = "v7" AG Wartung 15. Oktober 2004

28 typisierte, gerichtete Graphen
<node id = "v1"> <type xlink:href =s.gxl #Function" /> </attr> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> </edge> <edge id = "e6 from = "v7" #isInput" /> <node id = "v1"> </node> <node id = "v2"> <node id = "v7"> ... <edge id = "e1" from = "v1" to = "v2"> </edge> <edge id = "e6 from = "v7" AG Wartung 15. Oktober 2004

29 typisierte, attributierte, gerichtete Graphen
<node id = "v1"> <type xlink:href =s.gxl #Function" /> <attr name = "name"> <string>main</string> </attr> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <string>b</string> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> <attr name = "line"> <int>8</int> </edge> <edge id = "e6 from = "v7" #isInput" /> <node id = "v1"> <type xlink:href =s.gxl #Function" /> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> </edge> <edge id = "e6 from = "v7" #isInput" /> AG Wartung 15. Oktober 2004

30 typisierte, attributierte, gerichtete, angeordnete Graphen
<node id = "v1"> <type xlink:href =s.gxl #Function" /> <attr name = "name"> <string>main</string> </attr> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <string>b</string> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> <attr name = "line"> <int>8</int> </edge> <edge id = "e6 from = "v7" to = "v2" toorder = "2"> #isInput" /> <node id = "v1"> <type xlink:href =s.gxl #Function" /> <attr name = "name"> <string>main</string> </attr> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <string>b</string> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> <attr name = "line"> <int>8</int> </edge> <edge id = "e6 from = "v7" #isInput" /> AG Wartung 15. Oktober 2004

31 typisierte, attributierte, gerichtete, angeordnete Graphen
<node id = "v1"> <type xlink:href =s.gxl #Function" /> <attr name = "name"> <string>main</string> </attr> </node> <node id = "v2"> <type xlink:href ="s.gxl #FunctionCall" /> <node id = "v7"> <type xlink:href ="s.gxl# Variable" /> <string>b</string> <edge id = "e1" from = "v1" to = "v2"> #isCaller" /> <attr name = "line"> <int>8</int> </edge> <edge id = "e6 from = "v7" #isInput" /> to = "v2" toorder = "2"> AG Wartung 15. Oktober 2004

32 GXL Werkzeuge Filter/Converter Reverse Engineering Tools
Bauhaus Resource Graphs (Univ. Stuttgart) DOT (AT&T) FAMIX (Nokia) GraLab (Univ. Koblenz) Progres (RWTH Aachen) RPA (Philips, Eindhoven) RSF (Univ. Victoria) TA (Univ. Waterloo) XMI (Univ. BW München) Reverse Engineering Tools Bauhaus (Univ. Stuttgart) Columbus (Univ. Szeged) CPPX (Univ. Kingston, Univ. Waterloo) GUPRO (Univ. Koblenz) Missing Link (Merlin, Karlsruhe) Rigi (Univ. Victoria) PBS/Swagkit (Univ. Waterloo) TKSee/SN (Univ. Ottawa) Venice (Univ. Helsinki, Nokia) AG Wartung 15. Oktober 2004

33 GXL Werkzeuge Graph Transformation Systems Software Engineering Tools
AGG (TU Berlin) Fujaba (Univ. Paderborn) Genset (Univ. Oregon) Progres (RWTH Aachen) Software Engineering Tools Chi-Bel (Univ. Toronto) DiaGen (Univ. Erlangen) Edinbourgh Concurrency Workbench (Univ. Edinbourgh) MetaEdit (Jyväskylä) Upgrade (RWTH Aachen) Graph Visualizer Graph Tool (Univ. Durham) GraphViz (AT&T) Shrimp (Univ. Victoria) TouchGraph (Alex Shapiro) yFiles (Univ. Tübingen) JGraph (Zürich) Graph Databases Gras (RWTH Aachen) AG Wartung 15. Oktober 2004

34 Beispiel Visualisierung von Bauhaus-Architekturen mit UML AG Wartung
15. Oktober 2004

35 Beispiel Visualisierung von Bauhaus-Architekturen mit UML AG Wartung
15. Oktober 2004

36 Fachgruppe Reengineering
Zusammenfassung Reengineering Reengineering Maßnahmen GI Fachgruppe Reengineering (in Gründung) Workshop Software Reengineering Reengineering Werkzeug GUPRO – Generische Umgebung zum Programmverstehen Interoperabilität von Reenginneering Werkzeugen GXL – Graph eXchange Language Fachgruppe Reengineering AG Wartung 15. Oktober 2004


Herunterladen ppt "Software Reengineering Werkzeuge und Prozesse"

Ähnliche Präsentationen


Google-Anzeigen