37
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universit¨ at Bremen Wintersemester 2010/11 ¨ Uberblick I Methodik der Architekturrekonstruktion Statische Architekturrekonstruktion

Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Vorlesung Software-Reengineering

Prof. Dr. Rainer Koschke

Arbeitsgruppe SoftwaretechnikFachbereich Mathematik und Informatik

Universitat Bremen

Wintersemester 2010/11

Uberblick IMethodik der Architekturrekonstruktion

Statische Architekturrekonstruktion

Page 2: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion:

Methodik der Architekturrekonstruktion I

Methodik der ArchitekturrekonstruktionSoftwarearchitektur

Idealisierte SoftwarearchitekturSoftwarearchitektur in der PraxisDefinition von SoftwarearchitekturSoftwarearchitekturrekonstruktionViews und ViewpointsViewpoints im Forward-Engineering

ArchitekturrekonstruktionBeobachtungenGoal–Question–View(–Metric)Zusammensetzung von Prozessen durch SichtenProzessebenenProzessentwurfProzessausfuhrungWiederholungsfragen

Methodik der Architekturrekonstruktion:

Lernziele

Ziele und Notwendigkeit von Architekturrekonstruktion kennenSchritte der Architekturrekonstruktion kennen:

ProblemanalyseSichtenbestimmungDatensammlungInferenz von WissenInformationsprasentation und -interpretation

statische und dynamische Techniken der DatensammlungkennenTechniken der Inferenz von Wissen im Reverse-Engineeringbeherrschen

Page 3: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Softwarearchitektur

Softwarearchitektur in Lehrbuchern

Kanonische Compilerarchitektur nach Shaw und Garlan (1993)

Analysis

LexicalAnalysis

Syntactic Semantic

AnalysisCode

Generation

AST

Symbol

Table

OptimizationText Code

Methodik der Architekturrekonstruktion: Softwarearchitektur

Softwarearchitektur in der Praxis

Compilerarchitektur im echten Leben

Page 4: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Softwarearchitektur

Definition von Softwarearchitektur

DefinitionSoftware architecture is the fundamental organization of a systemembodied in

its components,their relationships to each other and to the environment,and the principles guiding its design and evolution.

— IEEE Std. 1471-2000 (2000)

Methodik der Architekturrekonstruktion: Softwarearchitektur

Architekturrekonstruktion und Reverse-Engineering

DefinitionReverse Engineering is the process of analyzing a subject systemto

identify the system’s components and theirinterrelationships andcreate representations of the system in another form or ahigher level of abstraction.

— Chikofsky und Cross II. (1990)

DefinitionArchitecture reconstruction is the process of analyzing a subjectsystem to reconstruct architectural views. — Rainer Koschke, 2008

Page 5: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Softwarearchitektur

Views und Viewpoints IEEE Std. 1471-2000 (2000)

DefinitionA view (deutsch: Sicht) is a representation of a whole system fromthe perspective of a related set of concerns.

Methodik der Architekturrekonstruktion: Softwarearchitektur

Views und Viewpoints IEEE Std. 1471-2000 (2000)

DefinitionA viewpoint (deutsch: Blickwinkel) is a specification of the rulesand conventions to construct and use an architectural view.

cloned

callsvar-access

type-depmodule

Page 6: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Softwarearchitektur

Viewpoints im Forward-Engineering

ZachmanPerry and Wolfe

4+1Siemens

Clements et al.. . .

Methodik der Architekturrekonstruktion: Softwarearchitektur

Viewpoints-Kategorien nach Clements u. a. (2002)

M: module: static structuredecompositionusegeneralizationlayers

CC: component & connectors: runtime structurepipe and filtershared datapublish and subscribeclient serverpeer-to-peercommunicating processes

A: allocation: embedding in organizational developmentcontext

deploymentimplementationwork assignment

Page 7: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Beobachtungen

Architekturrekonstruktion ist problemgetriebenProbleme sind kontextabhangigverschiedene Kontexte erfordern verschiedeneArchitektursichten

→ es gibt keinen detaillierten Rekonstruktionsprozess, der immerpasst

→ Rekonstruktionsprozesse mussen im Kontext entworfen werdenRekonstruktion basiert meist auf vielen Architektursichtender Rekonstruktionsprozess lasst sich durch Architektursichtendefinieren

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Goal–Question–View(–Metric)Problemgetriebene Architekturrekonstruktion rekonstruiert Sichtensystematisch:

Goals: Was ist das Problem, weswegen die Rekonstruktionerfolgt? Was ist das Ziel der Rekonstruktion?

Beispielproblem: Anderungen betreffen immer viele Module.Ziel: Existierende Modularisierung bewerten und verbessern.

Questions: Was muss ich wissen, um das Ziel zu erreichen?Bsp.: Was sind die Abhangigkeiten zwischen Modulen? Wiekann die Modularisierung verbessert werden?

Views: Welche Architektursichten werden benotigt, um dieAntwort zu finden?

Bsp.: Module-Use Viewpoints: as-is und verbessert + LuckeMetrics: Wie konnen die Antworten quantifiziert werden?

Bsp.: Kopplungs- und Kohasionsmetriken fur existierende undverbesserte Modularisierung, Anzahl und Gewicht derUnterschiede

Page 8: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Zusammensetzung von Prozessen durch Sichten

output viewinput view 1

input view 2

input view 3

– van Deursen u. a. (2004)

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Prozessebenen

ProzessentwurfWas ist das Problem?Welche Sichten werden rekonstruiert?Wie werden diese Sichten rekonstruiert?

ProzessausfuhrungDatensammlungInferenz von WissenInformationsprasentation und -interpretation

Page 9: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Architekturrekonstruktion: Prozessentwurf

Interessenten

Akteur in

Datenfluss

Problem−

darstellungProblem−

analyse bestimmung

Sichten−

Viewpoints

Bibliothek von

Prozess−Designer

Ziel−Viewpoints

Problemdarstellung

Ziel−Viewpoints

Abbildungsregeln

Quell−Viewpoints

Quell−Viewpoints

sammlung

Daten−

Rekonstrukteur

interpretation

Informations−

Inferenz von

Wissen

Verfeinerung

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Architekturrekonstruktion: Prozessausfuhrung

Daten

Rekonstrukteur

Daten−

sammlung

Akteur in

Datenfluss

Quell−

sichten

Wissensbank

Quell−

sichten

Ziel−

sichten

Inferenz von

Wissen

Abbildung

sichten

Ziel−

interpretation

sichten

Architektur−

Interessenten

Informations−

Page 10: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Methodik der Architekturrekonstruktion: Architekturrekonstruktion

Wiederholungsfragen

Erlautere die Begriffe View (Sicht) und Viewpoint.Wie kann man Viewpoints klassifizieren?Erlautere die Schritte der Architekturrekonstruktion.Welche Rolle spielen Views (Sichten) und Viewpoints in derArchitekturrekonstruktion?

Statische Architekturrekonstruktion:

Statische Architekturrekonstruktion I

Statische ArchitekturrekonstruktionProblemanalyseSichtenbestimmungDatensammlungInferenz von Wissen mit der ReflexionsmethodeHierarchische ReflexionsmethodeInferenz mit Software-ClusteringClustering-GegenstandAhnlichkeit zwischen EinzelelementenSkalenBinare EigenschaftenIntervallskalaUbersicht Clustering-AlgorithmenGraphentheoretische AlgorithmenKonstruktionsalgorithmenOptimierungsalgorithmen

Page 11: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion:

Statische Architekturrekonstruktion IIHierarchische AgglomerationZusammenfassungWeiterfuhrende LiteraturWiederholungsfragen

Statische Architekturrekonstruktion:

Lernziele

strukturelle Sicht von Software-Architektur kennenMethodik zur Architekturrekonstruktion umsetzen konnenstrukturelle Sicht rekonstruieren konnen

hypothesengesteuertautomatisches Clustering

Page 12: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Problemanalyse

Softwarearchitekturrekonstruktion

Analysis

LexicalAnalysis

Syntactic Semantic

AnalysisCode

Generation

AST

Symbol

Table

OptimizationText Code

Statische Architekturrekonstruktion: Problemanalyse

Workshop zur ProblemanalyseWorkshop mit allen ”Stakeholdern“:

ArchitektenBenutzer- undKundenvertreternProgrammierernTestern

Build-IngenieurenProjektmanagerQualitatsmanagerWiederverwendungsmanager

Page 13: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Problemanalyse

Problemanalyse

Probleme:Anderungen sind schwierig und fehlertrachtigkeine einzelne Person hat den Uberblickneue Entwickler haben lange EinarbeitungszeitenModule sind in anderen Compiler kaum wiederzuverwendenProjektplane sind unzuverlassig

Ziele:Modulsicht redokumentierenModulsicht bewertenVerbesserungen planen

Statische Architekturrekonstruktion: Sichtenbestimmung

Sichtenbestimmung: Viewpoints

Modulsicht as-is:Implementierungsentitaten I: globaleDeklarationen, Dateien, VerzeichnisseImplementierungsabhangigkeiten:benutzt, teil-von

Modulsicht wie beabsichtigt:Logische Entitaten L: Module,Subsysteme, SchichtenLogische Abhangigkeiten:muss-benutzen, muss-teil-sein-von

Abbildungssicht:Entitaten: I ∪ LRelationen: maps-to I → L

Konformanzsicht:Enitaten: I ∪ LRelationen: Konvergenz, Absenz,Divergenz

symtable

threeadr

codelist

constab

minilax

codegen

codegenS

typechk

semantic

prntree

parser

scanner

argument

xmem

error macros

cbam

abstree

Error Handler

Macros

AST2IL

Constants Table

AST

Middleend

Scanner

Semantic Analysis

Global Controls

Main

Compiler

Infrastructure

Backend

Frontend

Parser

Symbol Table

IL

Memory Manager

Page 14: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Sichtenbestimmung

Sichtenbestimmung: Metriken

Modulsicht I as-is: Kopplung und KohasisionModulsicht L wie beabsichtigt: Kopplung und KohasisionAbbildungssicht: # Abbildungen fur Elemente im selbenBehalter in I auf verschiedene Elemente in LKonformanzsicht: # Konvergenzen, # Absenzen, #Divergenzen

Statische Architekturrekonstruktion: Datensammlung

Datensammlung: Taxonomie von Abhangigkeiten

direkte:syntaktische AbhangigkeitKontrollabhangigkeitDatenabhangigkeit

indirekt:Zeigerdynamisches Bindengeklonter ProgrammtextJava-Reflection. . .

. . . hergeleitet mit statischen oder dynamischen Analysen undanschließendem Liften in der Dekompositionshierarchie

Page 15: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Reflexionsmethode von Murphy u. a. (1995, 2001)

Ziele der Reflexionsmethode:

hypothesengetriebene ArchitekturrekonstruktionArchitekturvalidierung

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Reflexionsmethode (Murphy u. a. 2001)

1 Stelle Architekturmodell auf2 Extrahiere Implementierungsmodell3 Bilde Modelle aufeinander ab4 Berechne Reflexionsmodell5 Verfeinere/korrigiere

BeispielH3H2H1

Page 16: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Formalisierung der Reflexionsmethode: Propagierung

ba

A B

pref

maps−to maps−to

Modulsicht L

hypothetische

implementierte

Modulsicht I ref

pref(A, B) ⇔ ∃(a, b ∈ I) : (ref(a, b)∧maps-to(a) = A∧maps-to(b) = B)

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Formalisierung der Reflexionsmethode: Konvergenz

convergence

ref

ba

A B

pref

maps−to maps−to

ref

convergence(A, B) ⇔ ref(A, B) ∧ pref(A, B)

Page 17: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Formalisierung der Reflexionsmethode: Absenz

A

a b

Bref

absence

maps−to maps−to

absence(A, B) ⇔ ref(A, B) ∧ ¬pref(A, B)

Statische Architekturrekonstruktion: Inferenz von Wissen mit der Reflexionsmethode

Formalisierung der Reflexionsmethode: Divergenz

A

a b

B

ref

maps−to maps−to

divergence

pref

divergence(A, B) ⇔ ¬ref(A, B) ∧ pref(A, B)

Page 18: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Reflexionsmethode fur große Systeme

große Systeme werden hierarchisch in Subsysteme zerlegtdie originale Reflexionsmethode erlaubt keine hierarchischehypothetische Sicht

→ Erweiterung notwendig (Koschke und Simon 2003)

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Hierarchische Reflexionsmethode: Inkonsistentes Modell?

A

A’’A’

u a

v a’

B

B’ B’’

wb

ref

ref

Page 19: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Hierarchische Reflexionsmethode: Propagierung

ba

maps−to(a) maps−to(b)

A B

ref

* *

pref

pref ↑(A, B) ⇔ ∃(a, b ∈ M) : (ref(a, b)∧partof ∗(maps-to(a), A)∧partof ∗(maps-to(b), B))

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Hierarchische Reflexionsmethode: Konvergenz

convergence

ref

ba

maps−to(a) maps−to(b)

A B

ref

* *

pref

convergence(A, B) ⇔ ref(A, B) ∧ pref ↑(A, B)

Page 20: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Hierarchische Reflexionsmethode: Absenz

maps−to(b)maps−to(a)

a b

BAref

absence

* *

absence(A, B) ⇔ ref(A, B) ∧ ¬pref ↑(A, B)

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Hierarchische Reflexionsmethode: Divergenz

A’

A=maps−to(a)

a

B’

b

divergence

*

ref

B=maps−to(b)

*

pref

divergence(A, B) ⇔ ¬∃(A′, B′) : (partof ∗(A, A′)∧partof ∗(B, B′)∧ref(A′, B′)) ∧ pref(A, B)

Page 21: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Beispiel

A’

u a

B’’

b b’

A

A’’ B’C’

e

C B

Die gestrichelten Kanten sind nach oben propagierte Kanten. In solchen Fallen konnen zwischen zweikonzeptionellen Knoten sowohl Divergenzen, Abwesenheiten und Konvergenzen auftreten.

Page 22: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Reflexionsmethode

Zusammenfassung

hierarchisches hypothetisches Modell ist notwendig fur großeSystemehypothetisches Modell und Abbildung mussen manuell erstelltwerdenVoraussetzungen:

hypothesische Sicht erfordert Wissen uber Anwendungsbereichund potentielle Architektur

Weitere notwendige Erweiterungen:Abbildung von RelationenKontroll- und Datenflussabhangigkeiten statt nur Referenzen

Statische Architekturrekonstruktion: Inferenz mit Software-Clustering

Hypothesengetriebene manuelle Zuordnung versusunuberwachte Klassifikation

Reflexionsmethode beginnt mit Architekturhypothesedie Abbildung konkreter auf logischer Komponenten istmanuellbei 1,5 MLOC mussen leicht 10.000 Routinen, zumindesthunderte von Dateien abgebildet werden

→ umgekehrter Ansatz: automatische Gruppierungzusammengehoriger Elemente

Page 23: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Inferenz mit Software-Clustering

Automatisches Software-Clustering

Software-Clustering ist unuberwachte Klassifikation.

Software-Elemente werden automatischauf der Basis ihrer Ahnlichkeit gruppiertbzw. auf Basis ihrer Unahnlichkeit unterschieden.

Fragen:Welche Software-Elemente werden gruppiert?Wie ist die Ahnlichkeit zwischen Software-Elementen definiert?Auf welche Weise wird gruppiert (welcher Algorithmus wirdverwendet)?

Statische Architekturrekonstruktion: Clustering-Gegenstand

Gegenstand des Software-Clusterings

Gruppiert werden. . .globale Deklarationen in CAttribute und Methoden in objektorientierten ProgrammenKlassen in objektorientierten ProgrammenModule und PaketeDateienvereinzelt sogar einzelne Anweisungen und Ausdrucke. . .

Page 24: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Ahnlichkeit zwischen Einzelelementen

Ahnlichkeit zwischen zwei Elementen

Member

Typ

Routine

malloc

List

head

parameter

parameter

fill put get

enclosing enclosing

calllist_length

call call call call

call

use

setlist_insert

size

set

Ahnlichkeitsdefinition kann sich auf

• Beziehungen zwischen Elementen und• Eigenschaften jedes einzelnen Elements

stutzen.

Page 25: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Skalen

Ahnlichkeit auf Basis von Eigenschaften

Arten von Eigenschaften (abhangig von Skalen):Nominalskala = ,

Ordinalskala <Intervallskala + −Rationalskala ÷ ×Absolutskala eindeutige Metrik

Statische Architekturrekonstruktion: Binare Eigenschaften

Binare Eigenschaften

Binare Eigenschaften sind spezielle nominale Eigenschaften, diezweiwertig reprasentiert werden konnen.

Symmetrische binare Eigenschaften:zwei Kategorienz.B.Routine versus Variable.

Asymmetrische binare Eigenschaften:Eigenschaft ist vorhanden (1)

z.B. Routine ist Blatt im AufrufgraphEigenschaft ist nicht vorhanden (0)

z.B. Routine ruft andere Routinen auf

Page 26: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Binare Eigenschaften

Binare Eigenschaften

Beispiel fur asymmetrische binare Eigenschaften:Routine liest/schreibt Variable.

set/use v1 v2 v3 v4 v5 v6r1 × × ×r2 × × ×r3 ×

Statische Architekturrekonstruktion: Binare Eigenschaften

Binare Eigenschaften

Assoziationskoeffizienten:

Element j1 0

1 a b a + bElement i 0 c d c + da + c b + d n = a + b + c + d

Werden 0-0-Ubereinstimmungen gewertet, und wenn ja, wie?Gewichtung von Ubereinstimmungen und Differenzen?

Page 27: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Binare Eigenschaften

Binare EigenschaftenElement j1 0

1 a b a + bElement i 0 c d c + da + c b + d n = a + b + c + d

simple matching coefficient:

simple(i , j) = a + dn

Jaccard coefficient:

Jaccard(i , j) = aa + b + c

Sorensen-Dice coefficient:

Sorensen-Dice(i , j) = 2× a2× a + b + c

. . .

Eine Fallstudie von Saeed u. a. (2003) zeigte, dass:

• Sorensen-Dice und Jaccard verhalten sich gleich → die zusatzliche Gewichtung gemeinsamer Eigenschaftenbringt keinen erkennbaren Vorteil.

• Simple matching coefficient erscheint ungeeignet (was man intuitiv erwarten wurde, weil er derAbwesenheit von Eigenschaften viel Bedeutung zumisst; im Falle von Software-Elementen sind die meistenEigenschaften der oben genannten Art ublicherweise solche, die die beiden Element beide nicht besitzen.

Page 28: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Intervallskala

Intervallskala

Elemente ↓

Eigenschaften→

x1,1 x1,2 . . . x1,f . . . x1,px2,1 x2,2 . . . x2,f . . . x2,p. . . . . . . . . . . .xn,1 xn,2 . . . xn,f . . . xn,p

mit xi ,j : Wert der Eigenschaft j fur Element i .Beispiele:

Anzahl AufrufeMcCabe-KomplexitatLange in CodezeilenBezeichnerlange. . .

→ siehe Klonerkennung. . .

Statische Architekturrekonstruktion: Intervallskala

Intervallskala: Normalisierung

x1,1 x1,2 . . . x1,f . . . x1,px2,1 x2,2 . . . x2,f . . . x2,p. . . . . . . . . . . .xn,1 xn,2 . . . xn,f . . . xn,p

z1,1 z1,2 . . . z1,f . . . z1,pz2,1 z2,2 . . . z2,f . . . z2,p. . . . . . . . . . . .zn,1 zn,2 . . . zn,f . . . zn,p

Erster Schritt: Normalisiere (standardisiere) die Werte:Z-Score:

zi ,f =xi ,f −mf

sfrelative Varianz

wobei

mf =1n × (x1,f + x2,f + . . . + xn,f ) Durchschnitt

sf =1n×(|x1,f−mf |+|x2,f−mf |+. . .+|xn,f−mf |) Durchschnittsvarianz

Page 29: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

• mf : Durchschnitt fur Eigenschaft f• sf : mittlere Abweichung fur Eigenschaft f• zi,f : relative Abweichung der Eigenschaft f fur Objekt i

Statische Architekturrekonstruktion: Intervallskala

Ahnlichkeit fur Intervallskala

Minkowski-Distanz:

d(i , j) = q√|zi ,1 − zj,1|q + |zi ,2 − zj,2|q + . . . + |zi ,p − zj,p|q

wobei q > 0.

Falls q = 1, dann ist d die Manhattan-Distanz:

d(i , j) = |zi ,1 − zj,1|+ |zi ,2 − zj,2|+ . . . + |zi ,p − zj,p|

Falls q = 2, dann ist d der Euklidische Abstand:

d(i , j) =√|zi ,1 − zj,1|2 + |zi ,2 − zj,2|2 + . . . + |zi ,p − zj,p|2

Page 30: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Intervallskala

Ahnlichkeit fur Intervallskala

Eigenschaften einer Distanzmetrik:

d(i , j) ≥ 0d(i , i) = 0d(i , j) = d(j , i)d(i , j) ≤ d(i , k) + d(k, j)

Weitere Alternativen (z.B. gewichtete Distanz, parametrischeProduktmoment-Korrelation) siehe Literatur.

Ahnlichkeit: sim(i , j) = 1− d(i , j)

Statische Architekturrekonstruktion: Intervallskala

Ahnlichkeit zwischen Gruppen

Wie wird Ahnlichkeit zwischen ganzen Gruppen bestimmt?

Single-Linkage

single-link(C , A ∪ B) = max(sim(C , A), sim(C , B))

Complete-Linkage

complete-link(C , A ∪ B) = min(sim(C , A), sim(C , B))

Unweighted Pair-Group-Average

avg-link(C , A ∪ B) =|A| × sim(C , A) + |B| × sim(C , B)

|A|+ |B|

Page 31: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Ubersicht Clustering-Algorithmen

Clustering-Algorithmen

Varianten:

graphentheoretische AlgorithmenKonstruktionsalgorithmenOptimierungsalgorithmenHierarchische Agglomeration

Statische Architekturrekonstruktion: Graphentheoretische Algorithmen

Graphentheoretische Algorithmen

Graphentheoretische AlgorithmenClustering von Knoten in einem Graph (= binare Relation).

Beispiele

Starke Zusammenhangskomponenten (Zyklen)DominanzanalyseEinfache Zusammenhangskomponenten (isolierte Teilgraphen)

Page 32: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Einfache ZusammenhangskomponentenStecke jeden Knoten in eigene Mengeforeach edge (s,t) in graph loop

union (find(s),find(t))end loop

• union (a, b): vereinigt die beiden Mengen a und b• find (x): liefert die Menge, die x enthalt

– Hopcraft und Ullman (1983)

Statische Architekturrekonstruktion: Konstruktionsalgorithmen

Konstruktionsalgorithmen

KonstruktionsalgorithmenGruppierung der Knoten in einem Durchlauf auf der Basis ihrerEigenschaftsvektoren

geographische TechnikenSuche nach dichten Ansammlungen

Page 33: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Optimierungsalgorithmen

Optimierungsalgorithmen

OptimierungsalgorithmenVerbesserung existierender Gruppierung.

Erstelle initiale Partition mit n Gruppenrepeat

bestimme Kristallisationskerne1 (KK)gruppiere jedes Element zum ahnlichsten KK

until keine Elemente mehr re-gruppiert werden konnen

1Kristallisationskern ist oft Zentroid

Statische Architekturrekonstruktion: Hierarchische Agglomeration

Hierarchische Agglomeration

Hierarchische AgglomerationSukzessive Gruppierung von Paaren in eine Baumstruktur, genanntDendrogramm.

Partitioniere n Element in n GruppenBerechne n × n-Ahnlichkeitsmatrixrepeat

finde das Paar (a,b) mit maximaler Ahnlichkeitmerge (a,b)aktualisiere Ahnlichkeitsmatrix

until keine Elemente mehr re-gruppiert werden konnen

Page 34: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Hierarchische Agglomeration

Dendrogramm

a b c d e f hg i j k

0.9

0.8

0.7

0.4

0.6

0.5

0.3

0.2

0.1

0.0

threshold

Statische Architekturrekonstruktion: Zusammenfassung

Zusammenfassung

Datensammlung:statische Programmanalysedynamische Programmanalyse

Inferenz von WissenReflexionsmethodeSoftware-Clustering

Informationsinterpretation:Differenz der Modulsichten as-is und wie-beabsichtigtKopplungs- und Kohasionsmetriken

Page 35: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Weiterfuhrende Literatur

Weiterfuhrende Literatur

Wiggert (1998) bietet einer allgemeinen Darstellung vonClustering-Techniken.Von Koschke (2000) stammt eine ausfuhrlicheZusammenstellung und Klassifikation vonClustering-Techniken im Reverse-Engineering.

Statische Architekturrekonstruktion: Wiederholungsfragen

Wiederholungs- und Vertiefungsfragen

Wie geht man bei der Reflexionsmethode vor?Wie sind Konvergenzen, Divergenzen und Abwesenheit genaudefiniert?Was ist Software-Clustering?Wozu wird Software-Clustering verwendet?Wie kann Ahnlichkeit zwischen zwei Elementen definiertwerden?Wie hangt dies mit den Skalen zusammen?Wie kann Ahnlichkeit fur ganze Mengen von Elementendefiniert werden?Welche Algorithmen kann man fur das Clustering benutzen?

Page 36: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Wiederholungsfragen

1 Chikofsky und Cross II. 1990 Chikofsky, Elliot J. ; CrossII., James H.: Reverse Engineering and Design Recovery: ATaxonomy. In: IEEE Software 7 (1990), Januar, Nr. 1, S. 13–17

2 Clements u. a. 2002 Clements, Paul ; Bachmann, Felix ;Bass, Len ; Garlan, David ; Ivers, James ; Little, Reed ;Nord, Robert ; Stafford, Judith: Documenting SoftwareArchitecture. Boston : Addison-Wesley, 2002

3 van Deursen u. a. 2004 Deursen, Arie van ; Hofmeister,Christine ; Koschke, Rainer ; Moonen, Leon ; Riva, Claudio:Symphony: View-Driven Software Architecture Reconstruction.In: IEEE/IFIP Working Conference on Software Architecture,IEEE Computer Society Press, Juni 2004, S. 122–132

4 Hopcraft und Ullman 1983 Hopcraft ; Ullman: Datastructures and algorithms. Addison-Wesley, 1983

5 IEEE Std. 1471-2000 2000 IEEE P1471: IEEERecommended Practice for Architectural Description ofSoftware-intensive Systems—Std. 1471-2000. 2000

Statische Architekturrekonstruktion: Wiederholungsfragen

6 Koschke 2000 Koschke, Rainer: Atomic ArchitecturalComponent Recovery for Program Understanding and Evolution,Universitat Stuttgart, Deutschland, Dissertation, 2000

7 Koschke und Simon 2003 Koschke, Rainer ; Simon, Daniel:Hierarchical Reflexion Models. In: Working Conference onReverse Engineering, IEEE Computer Society Press, November2003, S. 36–45

8 Murphy u. a. 1995 Murphy, Gail C. ; Notkin, David ;Sullivan, Kevin: Software Reflexion Models: Bridging the GapBetween Source and High-Level Models. In: Proc. of the ThirdACM SIGSOFT Symposium on the Foundations of SoftwareEngineering, ACM Press, 1995, S. 18–28

9 Murphy u. a. 2001 Murphy, Gail C. ; Notkin, David ;Sullivan, Kevin J.: Software Reflexion Models: Bridging theGap between Design and Implementation. In: IEEE ComputerSociety Transactions on Software Engineering 27 (2001), April,Nr. 4, S. 364–380

Page 37: Vorlesung Software-Reengineering Uberblick ¨ I Methodik ... · Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und

Statische Architekturrekonstruktion: Wiederholungsfragen

10 Saeed u. a. 2003 Saeed, M. ; Maqbool, O. ; Babri, H.A. ;Hassan, S.Z. ; Sarwar, S.M.: Software Clustering Techniquesand the Use of Combined Algorithm. In: European Conferenceon Software Maintenance and Reengineering, IEEE ComputerSociety Press, 2003, S. 301–310

11 Shaw und Garlan 1993 Shaw, Mary ; Garlan, David: AnIntroduction to Software Architecture. In: Advances in SoftwareEngineering and Knowledge Engineering. River Edge, NJ : WorldScientific Publishing Company, 1993

12 Wiggert 1998 Wiggert, T. A.: Using Clustering Algorithmsin Legacy Systems Remodularization. In: Working Conference onReverse Engineering, IEEE Computer Society Press, 1998,S. 33–43. – Nice introduction to software clustering. Does notintroduce a new clustering technique, but gives an overview onthe clustering techniques compiled from literature on generalclustering (not software related).