Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Softwarevisualisierung im Kontext des Programmverstehens und des Reverse Engineerings Steffen Buchner Seminar Software Language Engineering „Extraktion,

Ähnliche Präsentationen


Präsentation zum Thema: "Softwarevisualisierung im Kontext des Programmverstehens und des Reverse Engineerings Steffen Buchner Seminar Software Language Engineering „Extraktion,"—  Präsentation transkript:

1 Softwarevisualisierung im Kontext des Programmverstehens und des Reverse Engineerings Steffen Buchner Seminar Software Language Engineering „Extraktion, Analyse und Visualisierung von API-Daten“ SS 2010, Universität Koblenz

2 2 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

3 3 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

4 4 Grundlagen der Softwarevisualisierung Definition ● Diehl [1]: „Die Visualisierung von Artefakten, die in Bezug zu Software und ihrem Entwicklungsprozess stehen.“ ● Stasko [2]: „Der Gebrauch des Handwerks der Typographie, des grafischen Entwurfs, der Animation und der Kinematographie mit moderner Technologie der Mensch- Computer-Interaktion und der Computergrafik, um sowohl das menschliche Verstehen als auch die effektive Benutzung von Computersoftware zu vereinfachen.“ ● Knight und Munro [7]: „Eine Disziplin, die Gebrauch von verschiedenen Formen der bildlichen Darstellung macht, um Einblick und Verständis zu liefern und die Komplexität des betrachteten Softwaresystems zu reduzieren.“

5 5 Grundlagen der Softwarevisualisierung Motivation ● Softwaresysteme zum Teil gigantisch Windows XP: 40 MLOC Mac OS X 10.4:86 MLOC Debian 4.0: 283 MLOC ( kg Papier im LNCS-Format) ● „Code ist nicht greifbar, er hat keine körperliche Form oder Größe.“ (Thomas Ball) ● Code zeigt seine Struktur und sein Verhalten nicht leicht und sofort ersichtlich ● Wer die Programmiersprache nicht kennt, bekommt ohne Visualisierungsverfahren keinen Einblick in das System MoO moO MoO Moo MOO OOM MMM moO moO MMM mOo mOo MoO MMM mOo MMM moO moO MOO MOo mOo MoO MoO moo mOo mOo moo Berechnung der Fibonacci-Folge mit COW ? !

6 6 Grundlagen der Softwarevisualisierung Ziele ● Erhalten eines Überblicks ● Einsparung von Zeit und Geld (weniger Codelesen) ● Besseres Verständnis der Software ● Steigerung von Produktivität und Qualität ● Auffinden von Fehlern Quelle: Bassil und Keller [8]

7 7 Grundlagen des Reverse Engineerings Definition ● Chikofsky & Cross [4]: „Der Prozess der Analyse eines Systems, um Repräsentationen des Systems in einer höheren Stufe der Abstraktion zu erhalten.“ ● Koschke [8]:...und die Komponenten und ihre Beziehungen zu identifizieren.

8 8 Grundlagen des Reverse Engineerings Definition (2) Quelle: nach [6] Verständnis / Konzept Anforderungen Entwurf Implementation neu festlegen überdenken neu entwerfen neu schreiben Reverse EngineeringForward Engineering

9 9 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

10 10 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern grafis ch

11 11 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

12 12 1 Statische Programmvisualisierung Definition ● Visualisierung der Eigenschaften eines Programms, die für alle Ausführungen des Programms mit allen Eingabedaten gleich bleiben. ● Kann ohne Ausführen des Programms direkt aus dem Quelltext abgeleitet werden.

13 13 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

14 14 1 Statische Programmvisualisierung UML Klassendiagramme mit soft shapes H. Byelas und A. Telea: Visualization of Areas of Interest in Software Architecture Diagrams Technische Universität Eindhoven, Niederlande

15 15 1 Statische Programmvisualisierung UML Klassendiagramme mit soft shapes (2) ● „Zum Verständnis komplexer Softwaresysteme benötigt man Einsicht in Merkmale wie – Performance – Zuverlässigkeit – strukturelle Attribute ● korrespondierend mit der Systemarchitektur.“ ● Diese Merkmale bilden Areas of Interest (AOI)

16 16 1 Statische Programmvisualisierung UML Klassendiagramme mit soft shapes (3) Beispiele für Areas of Interest: – Alle hochzuverlässigen Komponenten – Alle Komponenten mit weniger als 1 MB Speicherverbrauch – Alle Komponenten, die in einer bestimmten Softwareversion eingeführt wurden – Alle Komponenten vom selben Anbieter

17 17 1 Statische Programmvisualisierung UML Klassendiagramme mit soft shapes (4) Wichtigste Anforderungen / Features: – Visualisierung von AOIs auf UML-ähnlichen Diagrammen unter Beibehaltung des Layouts – Leicht zu verfolgen – Nicht aufdringlich – Skalierbar – Wenige Überlappungen

18 18 Theorie: Car-Media-System Quelle: [11] - Abb. 1a

19 19 Praxis: Ein industrieller Controller in C++ Quelle: [11] - Abb. 1b

20 20 1 Statische Programmvisualisierung UML Klassendiagramme mit visuellen Attributen ● Technische Universität Eindhoven: Termeer, Lange, Telea, Chaudron ● Erster Ansatz: Softvision ● Zweiter Ansatz: MetricView

21 21 Erster Ansatz war Softvision: ● Boxen: Komponenten ● Boxverschachtelung: Komponenteneinschluss ● Linien: Aufrufe zwischen Komponenten ● Farbe ● Form ● Groesse ● Benutzer bevorzugten die ● reichhaltigeren UML-Diagramme ● Benutzer wollten einen semi- ● automatischen Weg, um metrische ● Visualisierung zu ihren ● UML-Diagrammen hinzuzufügen Quelle: [10] - Abb. 3

22 22 MetricView Abb. 4a

23 23 MetricView (2) Abb. 4b

24 24 MetricView (3) Abb. 4c

25 25 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

26 26 1 Statische Programmvisualisierung Class Blueprint ● Zeigt Aufrufgraphen innerhalb und zwischen Klassen ● Die Klasse wird in 5 Ebenen unterteilt: – Initialization Layer – Interface Layer – Implementation Layer – Accessor Layer – Attribute Layer ● Farbliche Markierung der Methoden

27 27 1 Statische Programmvisualisierung Class Blueprint (2) Quelle: [1] delegati ng extendin g overrid den

28 28 1 Statische Programmvisualisierung Class Blueprint (3) Unterschie dliche Klassen Quelle: [5]

29 29 1 Statische Programmvisualisierung Class Blueprint (4) Data Storage Pattern Wide Interface Pattern Large Implement ation Pattern

30 30 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

31 31 1 Statische Programmvisualisierung Simple Hierarchical Multi-Perspective ● Visualisiert Abhängigkeiten in hierarchisch strukturierten Daten als verschachtelte Graphen ● Bekommt Eingangsdaten von Analysen im Graph eXchange Language-Format ● Graphen können auf- und zugeklappt werden ● Creole für Eclipse (enthält Analyzer)

32 32 1 Statische Programmvisualisierung Simple Hierarchical Multi-Perspective (2) SHriMP Nested View

33 33 1 Statische Programmvisualisierung Simple Hierarchical Multi-Perspective (3) SHriMP Call Graph

34 34 1 Statische Programmvisualisierung Simple Hierarchical Multi-Perspective (4) SHriMP package dependecies via field accesses and method calls

35 35 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

36 36 1 Statische Programmvisualisierung Polymetric Views 2 5 ER- Diagram m 1 (3, 4) Quelle: [1]

37 37 Codecrawler – System Complexity View

38 38 1 Statische Programmvisualisierung Gliederung ● Definition ● UML-Diagramme ● Class Blueprint ● SHriMP ● Polymetric Views ● Metaphern

39 39 1 Statische Programmvisualisierung Metaphern ● Übertragung von abstrakten Entitäten auf andere Domänen, die der Betrachter besser versteht / kennt – Ordner und Dateien in Windows – Landkarten in der Geographie – Landscape Metaphor – City Metaphor – Galaxy / Solar system metaphor

40 40 1 Statische Programmvisualisierung Metaphern Christof Pohl: Visualization with polymetric views and city metaphor

41 41 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

42 42 2 Dynamische Programmvisualisierung Gliederung ● Definition ● Dynamische Architekturmodellierung ● Dynamische Verhaltensmodellierung ● Algorithmusvisualisierung

43 43 2 Dynamische Programmvisualisierung Gliederung ● Definition ● Dynamische Architekturmodellierung ● Dynamische Verhaltensmodellierung ● Algorithmusvisualisierung

44 44 2 Dynamische Programmvisualisierung Definition ● Visualisiert das Verhalten... ●...für eine bestimmte Eingabe! ● Was passiert zur Laufzeit? – Welche Anweisungen werden ausgeführt? – Wie ändert sich der Programmzustand? ● Dynamische Information zur Unterstützung des Prozesses des Programmverstehens Quelle: [1] Ideal: kombinie rt

45 45 2 Dynamische Programmvisualisierung Gliederung ● Definition ● Dynamische Architekturmodellierung ● Dynamische Verhaltensmodellierung ● Algorithmusvisualisierung

46 46 2 Dynamische Programmvisualisierung Dynamische Architekturvisualisierung - Augmented Static Diagrams ● Dynamisches Softwareachitektur- diagramm von Softarch ● Definition Kommunikation: Relative Anzahl der Methodenaufrufe und Event Propagation ● Breite der Pfeile: Umfang der Kommunikation zwischen den Komponenten ● Breite der Ränder: Umfang der eingehenden Kommunikation ● Hintergrundfarbe: Umfang der internen Kommunikation Quelle: [14]

47 47 SoftArch

48 48 2 Dynamische Programmvisualisierung Gliederung ● Definition ● Dynamische Architekturmodellierung ● Dynamische Verhaltensmodellierung ● Algorithmusvisualisierung

49 49 2 Dynamische Programmvisualisierung Dynamische Verhaltensvisualisierung - Massive Sequence and Circular Bundle Views B. Cornelissen, A. Zaidman, D. Holten, L. Moonen, A. Van Deursen, J. J. Van Wijk Execution Trace Analysis through Massive Sequence and Circular Bundle Views Understanding Execution Traces Using Massive Sequence and Circular Bundle Views Delft University of Technology, Eindhoven University of Technology, CWI

50 50 ● Problem bei der Benutzung dynamischer Daten: Skalierbarkeit - Unmengen an Information, Navigationsprobleme, Verlieren des Überblicks ● EXTRAVIS: Execution TRAce VISualizer – Pfaduntersuchung, Featurelokalisierung, Featurevergleich – Circular View: Zerlegung der Systemstruktur und die Art ihrer Interaktionen während des Traces – Massive Sequence View: Kurz und knapper Überblick über die aufeinander folgenden Aufrufe zwischen den Elementen des Systems in chronologischer Reihenfolge – Farbliche Kennzeichnung 2 Dynamische Programmvisualisierung Dynamische Verhaltensvisualisierung - Massive Sequence and Circular Bundle Views (2)

51 51 EXTRAVIS Abb. 6

52 52 → EXTRAVIS. avi EXTRAVIS

53 53 2 Dynamische Programmvisualisierung Gliederung ● Definition ● Dynamische Architekturmodellierung ● Dynamische Verhaltensmodellierung ● Algorithmusvisualisierung

54 54 2 Dynamische Programmvisualisierung Algorithmusanimation - Shape Analysis D. Johannes, R. Seidel, R. Wilhelm Algorithm Animation using Shape Analysis: Visualising Abstract Executions Department of Computer Science, Universität des Saarlandes

55 55 ● Visualisierung der abstrakten Ausführung und nicht mit konkreten Eingangsdaten ● Automatische Lösung: Mithilfe von shape analysis → erzeugt abstrakte Beschreibung des Heap-Status mittels logischer Strukturen (Prädikatenlogik: shape graphs) ● Die Menge der shape graphs für einen Programmpunkt beschreiben alle möglichen Heap-Konfigurationen für diesen 2 Dynamische Programmvisualisierung Algorithmusanimation - Shape Analysis (2)

56 56 Prädikate für die Beschreibung des Heap-Zustandes bei imperativen Programmiersprachen mit Zeigern ● root(v)Zeigt root auf v? ● x(v)Zeigt x auf v? ● r[root](v)Ist v erreichbar von root? ● r[x](v)Ist v erreichbar von x? ● ancest[root](v)Ist v ein Vorfahre von root? ● ancest[x](v)Ist x ein Vorfahre von v? ● left(v1, v2)Ist v1.left = v2? ● right(v1, v2)Ist v1.right = v2? 2 Dynamische Programmvisualisierung Algorithmusanimation - Shape Analysis (3) Argumente = Heap Cells Standard: Alle einstelligen Praedikate sogenannte abstraction predicates Heap Cells mit gleichen abstraction predicates werden zu einer Klasse zusammengefas st Gleiche Praedikate Quelle: [17]

57 57 2 Dynamische Programmvisualisierung Algorithmusanimation - Shape Analysis (4) // data structure for binary tree elements type tree = record data: integer left: pointer to tree right: pointer to tree endrecord // binary tree search algorithm pPosition := root; while (pPosition != NULL && pPosition.data != pSearched.data) { if (pSearched.data < pPosition.data) pPosition := pPosition.left; else pPosition := pPosition.right; } // Ergebnis: Pointer auf NULL oder auf gesuchten Knoten Suche in sortiertem Binärbaum, jede Programmzeile ist ein program point

58 58 2 Dynamische Programmvisualisierung Algorithmusanimation - Shape Analysis (5) Beispiel eines Shape Graphen, der während der Suche entsteht: „Beschreibung des Heap-Status zu einem bestimmten Zeitpunkt“ = pPosition Quelle: [19]

59 59 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

60 60 3 Evolutionsvisualisierung Gliederung ● Definition und Ziele ● Evolution Matrix ● GEVOL: Vererbungsgraphen über die Zeit ● CVSscan: Visualisierung von Codeevolution

61 61 3 Evolutionsvisualisierung Gliederung ● Definition und Ziele ● Evolution Matrix ● GEVOL: Vererbungsgraphen über die Zeit ● CVSscan: Visualisierung von Codeevolution

62 62 3 Evolutionsvisualisierung Definition und Ziele ● Das Gebiet der Software-Evolution befasst sich [...] mit der Aufgabe, die Entwicklung eines Softwaresystems zu verstehen bzw. sie geeignet auszuwerten. [15] ● Verstehen, zu welchem Zeitpunkt Klassen eingeführt/entfernt wurden → Bedeutung der Klassen ● Nachvollziehen des Wachstums von Klassen → Bedeutung der Klassen ● Nachvollziehen der Entstehung der jetzigen Struktur ● Identifizieren von gefährlichen Teilen (Fehler) ● Identifizieren von zuständigen Personen (wer, wann, was)

63 63 3 Evolutionsvisualisierung Gliederung ● Definition und Ziele ● Evolution Matrix ● GEVOL: Vererbungsgraphen über die Zeit ● CVSscan: Visualisierung von Codeevolution

64 64 3 Evolutionsvisualisierung Evolution Matrix ● Viereck: Version einer Klassen ● Breite, Höhe, Farbe: Metriken (z.B. Anzahl Methoden, Anzahl von Membervariablen) ● Spalten: Zeit ● Man kann Beobachtungen der Evolution jeder einzelnen Klasse (Anzahl Methoden,...), sowie des ganzen Systems (Anzahl Klassen) machen

65 65 3 Evolutionsvisualisierung Evolution Matrix (2) ● Pulsar – Ständiges Wachsen und Schrumpfen – Wachsen: Zufügen von Funktionalität – Schrumpfen: Refactoring / Restrukturierung

66 66 3 Evolutionsvisualisierung Evolution Matrix (3) ● Supernova – Plötzliches Explodieren – Große Refactorings mit massiver Funktionsverlagerung auf die Klasse – Datenhaltungsklassen können sehr schnell wachsen – Sleeper class: Wurde vor langer Zeit definiert aber noch nicht implementiert

67 67 3 Evolutionsvisualisierung Evolution Matrix (4) ● Roter Gigant – Dauerhaft rießig – Klassen mit zu viel Funktionalität → Refactoring sehr schwierig ● Stagnant – Verändert sich über längere Zeit nicht – Toter Code / gutes Design / Teil eines nicht bearbeiteten Subsystems

68 68 3 Evolutionsvisualisierung Evolution Matrix (5) ● Tagesfliege – Kurze Lebenszeit – Ausprobieren einer Idee ● Persistent – Gleiche Lebensspanne wie das gesamte System – Teil des originalen Entwurfs – → sollten begutachtet werden, da evtl. toter Code

69 69 Codecrawler: Evolution Matrix Ze it Klass en Abb. 7

70 70 Evolution Matrix des Packages tools.ant mit hybridem Modell Abb. 8

71 71 Evolution Matrix des Packages tools.ant mit hybridem Modell (2) 1. Alle abstrakten Klassen + java-style Interfaces von ihrem Container (abgeleitet von Packages) entfernen: → Item entfernt aus Aggregate Component „A“ 2. Bei Vererbung wird die Superklasse in jede Komponente aufgenommen. → Item aufgenommen in „B“ und „C“ als Ghost Classes, da sie nicht physisch zum Container gehören 3. Alle Abhängigkeiten zwischen Klassen, die nicht innerhalb desselben Containers sind werden Abhängigkeiten ihrer Aggregate Containers. → z.B. Patron ↔ Library wird zu Assembly Connector zwischen „A“ und „B“ Komponentendiagramm (reverse engineered) Hybrides Modell Abb. 9

72 72 3 Evolutionsvisualisierung Gliederung ● Definition und Ziele ● Evolution Matrix ● GEVOL: Vererbungsgraphen über die Zeit ● CVSscan: Visualisierung von Codeevolution

73 73 3 Evolutionsvisualisierung GEVOL: Vererbungsgraphen über Zeit Ja va Quelle: 16

74 74 GEVOL: Schnappschüsse des SandMark Vererbungsgraphen Autor1: Autor 2: Sonstige Autoren: Grün → Blau ● Beim ersten Auftauchen Autorfarbe (1. Farbe) ● Anschließend pro Zeitintervall ohne Veränderung Richtung blau ● TGRIP versucht, gleiche Knoten an der gleichen Stelle zu halten Quelle: [16] - Abb. 10a

75 75 GEVOL: Schnappschüsse des SandMark Aufrufgraphen Farben nach Heat Map Quelle: [16] – Abb. 10b

76 76 3 Evolutionsvisualisierung Gliederung ● Definition und Ziele ● Evolution Matrix ● GEVOL: Vererbungsgraphen über die Zeit ● CVSscan: Visualisierung von Codeevolution

77 77 3 Evolutionsvisualisierung CVSscan: Visualisierung von Codeevolution ● Visualisierung der Versionen einer einzelnen Datei ● Jede Codezeile als Pixelzeile ● Alle Codezeilen gleiche Länge Quelle: [17]

78 78 3 Evolutionsvisualisierung CVSscan: Visualisierung von Codeevolution (2) ● Drei verschiedene Farbcodierungen für eine Codezeile Quelle: [17] Konstru kt Autor Zeilenstat us

79 79 3 Evolutionsvisualisierung CVSscan: Visualisierung von Codeevolution (3) ● Zwei verschiedene Zeilenlayouts Quelle: [17] Konstru kt Datei- basiert Zeilen- basiert

80 80 Quelle: [17] Metrik fuer die gesamte Datei Metrik fuer eine Codezeile

81 81 Gliederung ● Grundlagen der Softwarevisualisierung und des Reverse Engineerings ● 1 Statische Programmvisualisierung ● 2 Dynamische Programmvisualisierung ● 3 Evolutionsvisualisierung ● Ideen zur Visualisierung der API-Benutzung

82 82 Ideen zur Visualisierung der API- Benutzung ● Bibliothek-Einbindung / Wechsel / Entfernung ~ Zeit ● Polymetric Views / City Metaphor ● → Extravis ● → Christof Pohl und Lina Brühl (mock-ups?)

83 Softwarevisualisierung im Kontext des Programmverstehens und des Reverse Engineerings Vielen Dank für die Aufmerksamkeit!

84 84 Quellen [1] S. Diehl Software Visualization - Visualizing the Structure, Behaviour and Evolution of Software. Springer Verlag. [2] J. T. Stasko, J. B. Domingue, M. H. Brown, B. A. Price Software Vsualization - Programming as a Multimedia Experience. The MIT Press. [3] R. Koschke Software visualization in software maintenance, reverse engineering, and re-engineering: a research survey. in Journal of Software Maintenance: Research and Practice, Volume 15, Issue 2 (M¨arz 2003), Seiten [4] E. J. Chikofsky, J. H. Cross II Reverse Engineering and Design Recovery: A Taxonomy. in IEEE Software, Volume 7, Issue 1 (Januar 1990), Seiten [5] M. Lanza Object-Oriented Reverse Engineering - Coarse-grained, Fine-grained, and Evolutionary Software Visualization. Inauguraldissertation der Philosophisch-naturwissenschaftlichen Fakultät der Universität Bern. [6] [7] Knight C, Munro M (1999) Comprehension with[in] virtual environment visualisations. In: Proceedings of the 7th international workshop on program comprehension, Pittsburgh, PA, pp 4–11 [8] Sarita Bassil and Rudolf K. Keller. Software visualization tools: Survey and analysis. In Proceedings of the Ninth International Workshop on Program Comprehension (IWPC2001), pages 7–17, Toronto, Canada, [9] Rainer Koschke, Atomic Architectural Component Recovery for Program Understanding and Evolution, Institut für Informatik, Universität Stuttgart, 2000 [10] M. Termeer, C. F. J. Lange, A. Telea, M. R. V. Chaudron Visual Exploration of Combined Architectural and Metric Information. in Proceedings of the 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis, Seite 11 [11] H. Byelas, A. Telea Visualization of areas of interest in software architecture diagrams. In Proceedings of the 2006 ACM symposium on Software visualization, Brighton, United Kingdom, Seiten

85 85 Quellen (2) [12] [13] M. Lungu, M.Lanza Softwarenaut: Cutting Edge Visualization. in Proceedings of the 2006 ACM symposium on Software visualization, Brighton, United Kingdom, Seiten [14] J. Grundy, J. Hosking. SoftArch: Tool support for integrated software architecture development. Department of Computer Science and Department of Electrical and Elecontric Engineering, University of Aucklan [15] Michael Pflug Diplomarbeit „Visualisierung der Evolution von Software-Komponenten“.Fachbereich Informatik, Universität Dortmund [16] C. Collberg, S. Kobourow, J. Nagra, J. Pitts, K. Wampler A system for graph-based visualization of the evolution of software. in Proceedings of the 2003 ACM symposium on Software visualization, San Diego, California, Seiten 77ff [17] L. Voinea, A. Telea, J. J. van Wijk CVSscan: visualization of code evolution. in Proceedings of the 2005 ACM symposium on Software visualization, St. Louis, Missouri, Seiten [18] Vorlesung von Jörg Herter, Shape Analysis Theorie“. SS 10 an der HTWdS [19] D. Johannes, R. Seidelm R. Wilhelm Algorithm Animation using Shape Analysis: Visualising Abstract Executions. Department of Computer Science. Universität des Saarlandes.

86 86 Einordnung von Softwarevisualisierung Softwarevisualisierung ist eine Teilmenge von mehreren gebräuchlichen Ansätzen: – Lesen der Dokumentation und des Quelltextes (Problem: Skalierbarkeit) – Ausführen der Software, Generieren von Ausführungssträngen (Problem: Skalierbarkeit) – Befragen von Benutzern und Entwicklern (Problem: Unerreichbarkeit, persönliche Ansichten)

87 87 Einordnung von Softwarevisualisierung Softwarevisualisierung ist eine Teilmenge von mehreren gebräuchlichen Ansätzen: – Benutzung von Visualizern, Slicern, Query Engines kombiniert mit Softwarevisualisierung, Clustering und Konzeptanalyse – Betrachtung der Evolution – Beurteilung mithilfe von Metriken, z.B. mithilfe der Polymetric Views

88 88 Primärziele des Reverse Engineerings ● Abschätzung der Qualität des Systems ● Erhalten einer Übersicht über das System (Größe, Komplexität, Struktur) ● Identifizieren von außergewöhnlichen Klassen und Methoden (zur weiteren Untersuchung / Refactoring) ● Finden und Verstehen der wichtigsten Klassen und Vererbungshierarchien ● Lokalisieren von ungenutztem Code Quelle: [4]


Herunterladen ppt "Softwarevisualisierung im Kontext des Programmverstehens und des Reverse Engineerings Steffen Buchner Seminar Software Language Engineering „Extraktion,"

Ähnliche Präsentationen


Google-Anzeigen