View
37
Download
0
Category
Preview:
Citation preview
Vorlesung Software-Reengineering
Prof. Dr. Rainer Koschke
Arbeitsgruppe SoftwaretechnikFachbereich Mathematik und Informatik
Universitat Bremen
Wintersemester 2010/11
Uberblick IMethodik der Architekturrekonstruktion
Statische Architekturrekonstruktion
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
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
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
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
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
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
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
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−
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
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
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
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
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
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
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)
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)
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
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)
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)
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.
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
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. . .
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.
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
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?
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.
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
• 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
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|
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)
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
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
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
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?
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
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).
Recommended