Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Theresia Geffen Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.