Visualisierung feingranularer Abhängigkeiten

Ähnliche Dokumente
Vorlesung Software-Reengineering

Software Maintenance. Anmerkung zu Program Slicing UNIV.-PROF. DIPL.-ING. DR. FRANZ WOTAWA

Kapitel 5 Statische Programmanalyse

Task& Data-Flow Graphs

Vorlesung Software Reengineering

Advanced Slicing of Sequential and Concurrent Programs

Grundlagen der Datenflußanalyse. und Programmabhängigkeitsgraphen

Codegenerierung für Basisblöcke (1)

Sprachtechnologie und Compiler

Advanced Slicing of Sequential and Concurrent Programs

Software Engineering. Statische Analyse! Kapitel 11

Vergleich von Graphen mittels drei verschiedener Visualisierungstechniken

Objektorientierte Modellierung (1)

Software Engineering. Statische Analyse. Martin Glinz Harald Gall. Wintersemester 2006/07. Kapitel 11. Universität Zürich Institut für Informatik

Visuelle Sprachen und Ihre Ausdrucksmittel

2.2 Kollineare und koplanare Vektoren

Graph-basierte Modellierung in Software-Werkzeugen

Einstieg in die Informatik mit Java

Struktogramme. Hinweise 1 Stand:

Inhaltsverzeichnis 1. Objektorientierung: Ein Einstieg 2. Objekte, Klassen, Kapselung

Einstieg in die Informatik mit Java

V. Metriken. Gliederung. I. Motivation. Lesen mathematischer Symbole. Wissenschaftliche Argumentation. Matrizenrechnung. Seite 67

Konzepte II. Netzwerkanalyse für Politikwissenschaftler

Statische Codeanalyse

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Konzepte II. Netzwerkanalyse für Politikwissenschaftler. Wiederholung

PLUS Architektur-Browser

Binärbäume und Pfade

Semantik von Programmiersprachen SS 2017

32. Werkzeuge zur Visualisierung

5. Bäume und Minimalgerüste

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Kompetenzbereich. Kompetenz. Grössen, Funktionen, Daten und Zufall Operieren und Benennen

Grundbegriffe der Informatik

Vorkurs Informatik WiSe 16/17

Vorlesung 4 BETWEENNESS CENTRALITY

Vorkurs Informatik WiSe 15/16


15. Elementare Graphalgorithmen

Vorlesung Datenstrukturen

Digraphen, DAGs und Wurzelbäume

8. Stateflow Grundlagen. Daniel Schrammel - BA Stuttgart -

5. Algorithmen. K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Schnitt- und Äquivalenzproblem

Grundbegriffe der Informatik

Inhalt Software-Metriken Software-Metriken mit Together FindBugs. Software-Metriken

Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

Programmiersprachen und Übersetzer

Gruppen, Graphen, Symmetrie Was sind negativ gekrümmte Gruppen?

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

...imbeispiel: Die Konkatenation der Blätter des Ableitungsbaums t bezeichnen wir auch mit yield(t). liefert die Konkatenation: name int + int.

Klausur zum Fach Mathematik 1 Teil 1

LabVIEW. 1.Einleitung

Perlen der Informatik I Wintersemester 2012 Aufgabenblatt 7

Konzepte der Programmiersprachen

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algorithmen II Vorlesung am

Programmverstehen. Andreas Zeller Lehrstuhl für Softwaretechnik Universität des Saarlandes, Saarbrücken

WS 2013/14. Diskrete Strukturen

Algorithmen und Datenstrukturen in der Bioinformatik Zweites Übungsblatt WS 05/06 Musterlösung

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Zur Zykelschreibweise von Permutationen

Konzepte der Informatik

Einführung in die Informatik I (autip)

Programmierparadigmen

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Engineering-Werkzeug komplexe Softwaresysteme

Viel Erfolg bei der Bearbeitung der Aufgaben!

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Angewandte Informatik

Streams. V by WBR1&MOU2/BFH-TI. Berner Fachhochschule Hochschule für Technik und Informatik HTI

33. Analysewerkzeuge. 1) Visualisierung von Graphen 1) VCG 2) AiSee 3) LogLin und CroCoCosmos 2) WCETA mit AiT Version ,

5.2 Endliche Automaten

Verkettete Datenstrukturen: Bäume

Algorithmen auf Sequenzen Paarweiser Sequenzvergleich: Alignments

Einführung in die linearen Funktionen. Autor: Benedikt Menne

Hydroinformatik I: Synthese-Übung Sprachelemente

Beweis des Pumping Lemmas

Visuelle Analyse großer Datenmengen

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Workshop WissKI für Uni Sammlungen. Martin Scholz , basierend auf

Algorithmische Mathematik I

Seminar Werkzeuggestütze. tze Softwareprüfung. fung. Slicing. Sebastian Meyer

Einführung: Zustandsdiagramme Stand:

Präzedenz von Operatoren

Seminar Programmierung Eingebetteter Systeme

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Parallelisierung von Modellprädiktiver Regelung auf CUDA-Hardware

8. Metriken. Idee von Maßsystemen Halstead live Variables Variablenspanne McCabe-Zahl LCOM*

Grundkurs Semantik. Sitzung 3: Mengenlehre. Andrew Murphy

Mengen und Abbildungen

Java. Von den Grundlagen bis zu Threads und Netzen von Prof. Dr. Ernst-Wolfgang Dieterich Fachhochschule Ulm

Diskrete Mathematik 1

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

01145 Maß- und Integrationstheorie

Transkript:

Visualisierung feingranularer Abhängigkeiten Jens Krinke FernUniversität in Hagen Fachbereich Elektrotechnik und Informationstechnik Fach Softwaretechnik 6. Workshop Software-Reengineering, Bad Honnef, Mai 2004 1/17

Visualisierung Graphische Visualisierung von Abhängigkeiten zwischen größeren Einheiten ist ein wichtiges (und erfolgreiches) Hilfsmittel. UML-Diagramme Abhängigkeiten zwischen Klassen, Objekten, Komponenten etc. Visualisierung von Eigenschaften (Metriken) 2/17

Feingranulare Abhängigkeiten Feingranulare Abhängigkeiten sind Abhängigkeiten zwischen den Anweisungen und Ausdrücken eines Programms. Datenabhängigkeiten existieren zwischen Anweisungen, die die gleiche Variable benutzen oder definieren, Kontrollabhängigkeiten existieren zwischen Anweisungen, die über die Ausführung anderer Anweisungen entscheiden. Ähnliche Definitionen gibt es für den interprozeduralen Fall. 3/17

Layout von Abhängigkeitsgraphen Darstellung von Abhängigkeiten durch Abhängigkeitsgraphen mit Hilfe allgemeiner Graphlayouter, wie z.b. davinci VCG dot Erfahrungen: Verwendung von Standard-Layoutern führt zu keinen verständlichen Graphen. Entwickler finden sich im Graph nicht zurecht. 4/17

Beispiel (dot) 5/17

Eigenschaften feingranularer Abhängigkeiten Entwickler erwarten spezielle Eigenschaften: Entwickler brauchen die syntaktische Struktur um sich im Programm zurechtzufinden. Abstraktionen wie Clustering oder Falten können nicht mehr auf die Programmstruktur (Quelltext) abgebildet werden. Ohne Bezug zum Quelltext ist ein Verständnis auf Anweisungs-Ebene nicht möglich. 6/17

Deklaratives Layout Kontrollabhängigkeiten bilden das Gerüst ähnlich einem abstrakten Syntaxbaum. Die Reihenfolge der Anweisungen im Quelltext entspricht der horizontalen Reihenfolge der Knoten. Datenabhängigkeiten werden nachträglich geroutet und ändern das Layout nur wenig. Umsetzung: 1. Layout der Kontrollabhängigkeiten durch Sugiyama 2. Layout der Datenabhängigkeiten als Manhattan-Layout 7/17

Beispiel-Layout Entry read(n) i := 1 s := 0 p := 1 while (i<=n) write(s) write(p) read(n) i := 1 s := 0 p := 1 while (i<=n) s := s + i p := p * i i := i + 1 write(s) write(p) s := s + i p := p * i i := i + 1 8/17

Beispiel-Layout Entry read(n) i := 1 s := 0 p := 1 while (i<=n) write(s) write(p) read(n) i := 1 s := 0 p := 1 while (i<=n) s := s + i p := p * i i := i + 1 write(s) write(p) s := s + i p := p * i i := i + 1 9/17

GUI 10/17

Slices Slices enthalten alle Anweisungen eines Programms, die eine bestimmte Anweisung beeinflussen können. Berechnung durch Erreichbarkeit im Abhängigkeitsgraphen. Probleme: Slices sind (immer noch) zu groß. Slices enthalten keine quantitativen Aussagen. Slicing wird nicht zum Programmverstehen benutzt. Grund: Slices fehlt es an Lokalität und Abstraktion. 11/17

Lokalität Lokalität in Slices kann erreicht werden, indem die Distanz der Abhängigkeiten zur aktuellen Anweisung gemessen und berücksichtigt wird. Die Distanz eines Knoten zur aktuellen Anweisung ist die Anzahl der Kanten auf dem kürzesten Pfad. Slices werden nur bis zu einer Distanz berechnet Slices werden mit der Distanz der Knoten visualisiert Beide Varianten können kombiniert werden. Beides kann sowohl im Graphen, als auch im Quelltext visualisiert werden. 12/17

Textuelle Darstellung 13/17

Abstrakte Darstellung Am Anfang des Programmverstehens steht nicht die Frage nach gibt es eine Abhängigkeit zwischen X und Y?, sondern eher Was sind die wichtigen Variablen und Prozeduren? Welchen Einfluss hat eine Variable oder Prozedur? Wo sind starke Kopplungen zwischen Variablen bzw. Prozeduren? Was sind die Hot Spots? 14/17

Chopping Ein Chop enthält die Anweisungen eines Programms, die an einer Beeinflussung einer Anweisung durch eine andere Anweisung beteiligt sind. Chops können wie Slices berechnet und benutzt werden. Chops haben die gleichen Probleme wie Slices. Zur Abstraktion werden Chops zur Berechnung einer Kopplungsmatrix herangezogen: Statt Anweisungen: Variablen oder Prozeduren als Kriterien Die Anzahl der beteiligten Anweisungen wird gemessen Die Anzahl wird als Maßzahl in einer Matrix visualisiert 15/17

Chop-Visualisierung ansitape Variablen: 2: stdin 3: stdout 4: stderr 12: tcb (tape control block) 16/17

Zusammenfassung Visualisierung von feingranularen Abhängigkeiten mit Hilfe von Standard-Layoutern führt zu keinen verständlichen Graphen. Visualisierung mit speziellem Layout hilft deutlich weiter. Slices fehlt es an Lokalität und Abstraktion. Lokalität: messen, benutzen und visualisieren der Distanz. Abstraktion: messen und visualisieren des Einflussbereichs zwischen Variablen bzw. Prozeduren. 17/17