Vorlesung Software-Reengineering

Ähnliche Dokumente
Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

DATA ANALYSIS AND REPRESENTATION FOR SOFTWARE SYSTEMS

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Vorlesung Software-Reengineering

Graph Visualisierung und Navigation. PG478 Open Graph Drawing Framework Martin Gronemann

Vorlesung Software-Reengineering

UML (Unified Modelling Language) von Christian Bartl

Programmverstehen 3: Detailliertes Verständnis. Dr. Thorsten Arendt Marburg, 10. Dezember 2015

Automatisches Layout von Graphen

Semantik-Visualisierung

Objektorientierte Programmierung III

Requirements Engineering I

Algorithmen und Datenstrukturen

Vorlesung Software-Reengineering

Übungen Softwaretechnik I

Vorlesung Software-Reengineering

Softwaretechnik. Überblick I. Prof. Dr. Rainer Koschke. Sommersemester 2009

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

FACHHOCHSCHULE MANNHEIM

Slide 1. Visualisierung evolutionärer Zusammenhänge

Klassen als Objekte. Smalltalk vs. Objective-C. Self-Nachrichten an Klassen in Objective-C. Klassen als Objekte. Smalltalk: Everything is an object

Vorlesung Software-Reengineering

Software Entwicklung 1

Softwaretechnik. Prof. Dr. Rainer Koschke. Fachbereich Mathematik und Informatik Arbeitsgruppe Softwaretechnik Universität Bremen

Objektorientiertes Programmieren

Einführung in die Informatik

Techniken der Projektentwicklungen

13 Abstrakte Datentypen

Visuelle Kryptographie. Anwendung von Zufallszahlen

Vorlesung Software-Reengineering

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Objektmodellierung. Grundkurs C++

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Einstieg in die Informatik mit Java

Mapra: C++ Teil 6. Felix Gruber, Sven Groß. IGPM, RWTH Aachen. 13. Juni 2017

Parameterübergabemechanismen für den Methodenaufruf

Kapitel 11: Vererbung Ziele von Klassen Einführung in die Informatik für struct Naturwissenschaftler und Ingenieure

1.3 Charakteristische Eigenschaften von objektorientierten Systemen

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

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

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Semantische Netze Psychologische Plausibilität

Konzepte der Programmiersprachen

Entwicklung eines Klassengraphen

Graph-basierte Modellierung in Software-Werkzeugen

IT I: Heute. Nachbetrachtung Wissensüberprüfung. Einführung Vererbung. Roboter in becker.robots. Filialenbelieferung 4.11.

JPlus Platform Independent Learning with Environmental Information in School

E-CARES-Projekt: Understanding Complex Legacy Telecommunication Systems. E-CARES-Projekt. André Marburger Lehrstuhl für Informatik III, RWTH Aachen

Softwaretechnik WS 16/17. Übungsblatt 01

STORYBOARDING ZUR ABLEITUNG VON KONTEXTBASIERTEN INTERACTION-CASES FÜR UBIQUITÄRE SYSTEME

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

OOP. Kapselung: Gruppierung von Daten und Funktionen als Objekte. Definieren eine Schnittstelle zu diesen Objekten.

3. GI-Workshop EPK 2004 Geschäftsprozessmanagement mit Ereignisgesteuerten Prozessketten Luxemburg. ARIS meets RUP

NoSQL Datenbanken EIN ÜBERBLICK ÜBER NICHT-RELATIONALE DATENBANKEN UND DEREN POTENTIALE IM ALLGEMEINEN UND IN DER INDUSTRIE

10 Abstrakte Datentypen

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

IT I: Heute. Nachbetrachtung Wissensüberprüfungen. Einführung Vererbung. Roboter in becker.robots IT I - VO 5 1

Einführung in die Programmierung

Vererbung, Polymorphismus

OOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik

systems landscape engineering - übung -

Was ist Wartung und welche vier Arten der Wartung unterscheidet die Norm ISO/IEC 12207? Wie lautet die Regel von Boehm? (ein Beispiel ausrechnen)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Vorlesung Software Reengineering

Interdisziplinäre fachdidaktische Übung: Formale Sprache Definitionen, Funktionen

Ziele und Tätigkeiten von Architekten

Inhalt und Überblick. Visuelle Kognition Adrian Schwaninger Universität Zürich

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2016/2017. Inhaltsverzeichnis 1

Objektorientierte Programmierung Studiengang Medieninformatik

Programmierkurs. Steffen Müthing. January 18, Interdisciplinary Center for Scientific Computing, Heidelberg University

Modulliste. für den Masterstudiengang. Data & Knowledge Engineering (alt) an der Otto von Guericke Universität Magdeburg Fakultät für Informatik

Grundlagen der Informatik 0

MULTIMEDIA IN DER TECHNISCHEN DOKUMENTATION. mediadynamics

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Kapitel Andere dynamische Datenstrukturen

Informatik 1. Informatik 1. Wolfgang Schreiner Engineering für Computer-basiertes Lernen Fachhochschule Hagenberg

Objektorientierte Datenbanken

Vererbung P rogram m ieren 2 F örster/r iedham m er K apitel 11: V ererbung 1

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

Service Engineering. IVS Arbeitsgruppe Softwaretechnik. Abschnitt: Einführung zur Vorlesung

Object-Oriented Analysis and Design Klausur Wintersemester 2006/2007

Kapitel 15: Von dynamischen zu statischen Typen. Grundlagen der Programmierung 1. Holger Karl. Wintersemester 2018/2018. Inhaltsverzeichnis 1

Konsolidierung von Software-Varianten in Software-Produktlinien ein Forschungsprogramm

Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

Kurze Wege Übungen. Prof. Dr. Rainer Koschke 1 Dipl.-Inform. Jochen Quante 1 Dipl.-Inform. Raimar Falke 1

The purpose of computing is insight, not numbers. Richard Hamming ( )

Transkript:

Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universität Bremen Wintersemester 2009/10

Überblick I 1

I 1 Über diese Folien Lernziele Reengineering Kontext Programm-Visualisierung Statische Programm-Visualisierung Dynamische Programm-Visualisierung Visualisierung von Metriken Klassenblaupause Evolutionäre Aspekte Zusammenfassung Wiederholungsfragen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 3 / 52

Über diese Folien Diese Folien entstammen einer Präsentation von Michele Lanza (Universität Lugano), mit dessen freundlicher Genehmigung. Die Unterschiede zum Original sind: Übersetzung ins Deutsche Kleinere Restrukturierungen und Verkürzungen Weitere Visualisierungen hinzugefügt Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 4 / 52

I Lernziele in einem Reengineering-Kontext Statische Code-Visualisierung Dynamische Code-Visualisierung Visualisierung von Metriken Visualisierung der Evolution Leichtgewichtige Ansätze Kontext Reengineering ist meist interaktiv Große Datenmengen müssen verstanden werden Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 5 / 52

II Software Visualization is the use of the crafts of typography, graphic design, animation, and cinematography with modern human-computer interaction and computer graphics technology to facilitate both the human understanding and effective use of computer software. Price, Baecker and Small, Introduction to Software Visualization Software is intangible, having no physical shape or size. Software visualisation tools use graphical techniques to make software visible by displaying programs, program artifacts and program behaviour. Thomas Ball Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 6 / 52

SV im Reengineering-Kontext Ziele: Reduktion der Komplexität Herausforderungen: Skalierbarkeit Aufgabenabhängigkeit der Visualisierung Art der Visualisierung Begrenzte Ressourcen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 7 / 52

Programm-Visualisierung Program visualization is the visualization of the actual program code or data structures in either static or dynamic form. [Price, Baecker und Small] Gebiete Statische Programm-Visualisierung Dynamische Programm-Visualisierung Aufgaben Verschiedene Sichten generieren Inferenzen ermöglichen Spezifische Probleme (aktives Forschungsgebiet) Effiziente Ausnutzung des Platzes, Kantenüberschneidungen, Layout-Probleme, Fokus, Human-Computer-Interaction,... Keine Konventionen (Farben, Symbole, Interpretation,... ) Granularität? Ganze System, Subsysteme, Module, Klassen, Hierarchien,... Wofür, wie und wann anzuwenden? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 8 / 52

Statische Programm-Visualisierung Visualisierung von Information, die statisch abgeleitet ist. Hängt von Sprache und Sprachparadigma ab: objektorientierte Sprachen: Klassen, Methoden, Attribute, Vererbung,... prozedurale Sprachen: Prozeduren, Aufrufe,...... Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 9 / 52

Klassendiagramme Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 10 / 52

Klassendiagramme (wie von herkömmlichen CASE-Werkzeugen dargestellt... ) Vorteile: Stellen objektorientierte Konzepte dar Geeignet für kleine Ausschnitte Nachteile: Skalieren nicht Benötigen Filter für relevante Informationen Nur voreingestellte Sichten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 11 / 52

Klassendiagramme mit visuellen Attributen Quelle: Alexandru Telea http://www.win.tue.nl/~alext/archiview/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 12 / 52

Klassendiagramme mit Soft Shapes Quelle: Alexandru Telea http://www.win.tue.nl/~alext/archiview/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 13 / 52

Allgemeine Graphen: Rigi Entity-Relationship- Visualisierung generische Präsentation durch typisierte Graphen Probleme: Filterung Navigation Skalierbarkeit Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 14 / 52

Allgemeine Graphen: Rigi Entities können gruppiert werden Vorteile: Skaliert besser generisch Nachteile: Wenig Programmiersprachensemantik Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 15 / 52

Gebündelte Kanten Quelle: Danny Holten http://www.win.tue.nl/~dholten/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 16 / 52

Geb undelte Kanten Quelle: Danny Holten http://www.win.tue.nl/~dholten/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 17 / 52

Bäume: Klassen-Hierarchien Jun/OpenGL Smalltalk Klassenhierarchie Probleme: Keine weitere Bedeutung der Farbe Überladen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 18 / 52

Bäume mit Metriken: Tree Maps Vorteile: hierarchisch (m.e.) 100% Raumnutzung skaliert Nachteile: Grenzen Wirres Bild Interpretation Nur Blätter Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 19 / 52

B aume mit Metriken: Tree Maps mit Texturen Quelle: Danny Holten http://www.win.tue.nl/~dholten/ Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 20 / 52

Bäume Euklidische Kegel Vorteile: Nutzen dritte Dimension Nachteile: Mangelnde Tiefe Navigation Hyperbolische Bäume Vorteile: Fokus ist wählbar Dynamisch Nachteile: Copyright Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 21 / 52

Metaphorische Visualisierung Quelle: Richard Wettel http://www.inf.usi.ch/phd/wettel/codecity-wof.html Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 22 / 52

Dynamische Programm-Visualisierung Visualisierung dynamischen Verhaltens Ausführungs-Trace Ressourcenverbrauch (Speicher/Laufzeit) Objekt-Interaktion... Schritte: 1 Code-Instrumentierung 2 Gewinnung der Laufzeitinformation 3 Auswertung der Laufzeitinformation 4 Visualisierung der Auswertung Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 23 / 52

Beispiel 1: JInsight (http://www.research.ibm.com/jinsight) Visualisierung von Ausführungs-Traces Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 24 / 52

Visualisiert Sequenzdiagramme; jeder vertikale Streifen repräsentiert ein Objekt; die Farbe des Streifens kodiert die Klasse. Die Zeit schreitet von oben nach unten fort. Aufrufe sind durch Kanten zwischen Objekten dargestellt und haben die aufgerufene Methode als Label. Die zeitlichen Bereiche, in denen ein Objekt tatsächlich aktiv sind (d.h. nicht nur eine andere Methode aufrufen, sondern tatsächlich selbst rechnen), sind im Streifen etwas heller dargestellt. JInsight erlaubt es auch, wiederkehrende Aufrufmuster automatisch zu erkennen und darzustellen. Ähnliche, aber leicht unterschiedliche Muster können dabei übereinandergelegt werden, um so die Unterschiede darzustellen.

Beispiel 2: Aufrufmatrix für Klassen einfach skaliert reproduzierbar Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 25 / 52

Inter-Class Call Matrix: This view provides an overview of the communication between classes. The matrix plots which classes call which other classes. Classes are arranged along both axes in the order they are instantiated. The color of the dots indicate the frequency of that communication.

Dynamische SV: Probleme Code-Instrumentierungsproblem Logging, erweiterte Virtual Machines, Method-Wrapping Skalierbarkeitsproblem Fülle der Details Traces werden sehr schnell enorm groß Vollständigkeitsproblem Information gilt nur für betrachtete Szenarien Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 26 / 52

Visualisierung von Metriken (Lanza 2003; Lanza und Ducasse 2003) Kombination von Metriken und Graph-Repräsentation Bis zu fünf Metriken bestimmen die Visualisierung der Knoten: Größe (1+2) Farbe/Farbton (3) Position (4+5) Y-Koordinate X Koordinate Farbton Breite Relation Element Höhe Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 27 / 52

System Complexity View Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 28 / 52

Method Efficiency Correlation View Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 29 / 52

Inheritance Classification View Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 30 / 52

Added: Ganz neue Methoden. Overridden: Ererbt und redefinierte Methoden. Extended: Overridden + Aufruf der gleichen Methode via super (Smalltalk), d.h. Aufruf zur entsprechenden Methode, die überschrieben wurde.

Data Storage Class Detection View Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 31 / 52

Von links nach rechts nach Breite (Number of Methods) geordnet. Dieselbe Metrik (Number of Methods) wird hier auf dreifache Weise dargestellt: Breite, Position innerhalb der Ordnung und Farbe. Dadurch kann ein verstärkender Effekt erzeugt werden.

Granularitätsproblem Hübsch... aber was verbirgt sich dahinter? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 32 / 52

Klassenblaupause (Ducasse und Lanza 2005) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 33 / 52

Die Einteilung hängt etwas von der Ausdruckskraft der Programmiersprache ab, auch von dem, was der Benutzer tatsächlich sehen möchte: aus Sicht der Spezifikation bzw. aus Sicht der tatsächlichen Verhältnisse. Initialization: Kontruktoren (soweit die Programmiersprache sie explizit darstellt, auch: Methoden, die Init und ähnlic Zeichenketten im Namen enthalten oder solche, die einen new-operator für die Klasse enthalten Interface: öffentliche Methoden; auch: solche, die tatsächlich von außerhalb aufgerufen werden (Accessors sind in einer anderen Kategorie; siehe unten) Implementation: versteckte Methoden bzw. solche, die von außerhalb nicht benutzt werden Accessors: Öffentliche Methoden, die nichts weiter tun als ein Attribut zu setzen bzw. zu lesen Attribute: versteckte Attribute

Semantische Information Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 34 / 52

Kategorisierung von Klassen Basiert auf Klassenblaupausen Zwei Perspektiven: Einzelne Klasse Vererbungskontext Klassenblaupause für jede einzelne Klasse Sind als Baum angeordnet Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 35 / 52

Klassenblaupause: Data Storage Viele Attribute Kann viele Zugriffsoperationen haben (Accessors) Harmloses Verhalten Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 36 / 52

Klassenblaupause: Wide Interface Viele Methoden in der Schnittstelle Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 37 / 52

Klassenblaupause: Large Implementation Geschachtelte Aufrufstruktur Viele Methoden Hohe Komplexität Breite Schnittstelle Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 38 / 52

Evolutionäre Aspekte (Lanza 2003) Die Gegenwart ist oft verständlicher, wenn man die Vergangenheit kennt. Betrachtung von Aspekten des Systems über die Zeit. Metrikwerte können besser eingeschätzt werden. Erlaubt, Trends auszumachen. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 39 / 52

Evolutionsmatrix Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 40 / 52

Kategorisierung von Klassen anhand der Evolutionsmatrix Dargestellte Metriken für Klassen: NOM (number of methods) NOA (number of attributes) Kategorisierung anhand der individuellen Evolution und der System-Evolution : Pulsar Supernova Weißer Zwerg Roter Riese Dornröschen Eintagsfliege Methusalem Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 41 / 52

Pulsar Definition Pulsar: wiederholte Änderungen, die Element größer und kleiner werden lassen. System-Hotspot: Jede neue Version verlangt Anpassungen. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 42 / 52

Supernova Definition Supernova: Plötzlicher Anstieg. Mögliche Gründe: massive Restrukturierung Datenspeicher für Daten, die plötzlich hinzugekommen sind Schläfer: Stumpf, der mit Funktionalität gefüllt wird Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 43 / 52

Weißer Zwerg, Roter Riese, Dornröschen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 44 / 52

Eintagsfliege & Methusalem Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 45 / 52

Fallstudie MooseFinder (38 Versionen) Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 46 / 52

Spektrograph x-achse: Zeit; y-achse: Softwareeinheit; Farbe: #commits Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 47 / 52

Courtesy Jingwei Wu, Richard C. Holt, Ahmed Hassan, University of Waterloo, Canada

Färbung im Spektrograph linearer Gradient exponentieller Gradient Stufen Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 48 / 52

(SV) I SV ist unabdingbar im Reengineering-Kontext Match-Mismatch-Hypothese: problem-solving performance depends on whether the structure of a problem is matched by the structure of a notation Gilmore und Green Jede SV betont bestimmte Information und vernachlässigt andere Information. Geeignete SV ist abhängig von der zu lösenden Aufgabe. Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 49 / 52

(SV) II Alphabetismus der SV Wie drücke ich es aus? Wie interpretiere ich es? Vieles noch in der Forschung, wenig in kommerziellen Werkzeugen Software-Wahrnehmung: Andere menschliche Sinne werden genutzt Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 50 / 52

Wiederholungs- und Vertiefungsfragen I Wofür eignen sich Tree Maps und wie sind sie zu interpretieren? Welche Probleme gibt es bei der Visualisierung dynamischer Daten? Wie lassen sich Metriken visualisieren? Was ist eine Klassenblaupause? Wie lassen sich damit Klassen charakterisieren? Welche zusätzlichen Aspekte lassen sich durch die Visualisierung evolutionärer Daten gewinnen? Was sagt die Match-Mismatch-Hypothese (Gilmore und Green) aus? Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 51 / 52

Ducasse und Lanza 2005 Ducasse, Stephane ; Lanza, Michele: The Class Blueprint: Visually Supporting the Understanding of Classes. In: IEEE Computer Society Transactions on Software Engineering 31 (2005), Januar, Nr. 1, S. 75 90 Lanza 2003 Lanza, Michele: Object-Oriented Reverse Engineering - Coarse-grained, Fine-grained, and Evolutionary Software Visualization. http: //www.inf.unisi.ch/faculty/lanza/downloads/lanz03b.pdf, University of Bern, Dissertation, 2003 Lanza und Ducasse 2003 Lanza, Michele ; Ducasse, Stephane: Polymetric Views A Lightweight Visual Approach to Reverse Engineering. In: IEEE Computer Society Transactions on Software Engineering 29 (2003), Nr. 9, S. 782 795 Rainer Koschke (Univ. Bremen) Vorlesung Software-Reengineering WS 2009/2010 52 / 52