vorlesung software-reengineering uberblick ¨ i merkmalsuche filevorlesung software-reengineering...
Post on 06-Sep-2019
10 Views
Preview:
TRANSCRIPT
Vorlesung Software-Reengineering
Prof. Dr. Rainer Koschke
Arbeitsgruppe SoftwaretechnikFachbereich Mathematik und Informatik
Universitat Bremen
Wintersemester 2010/11
Uberblick IMerkmalsuche
Merkmalsuche:
Merkmalsuche I
MerkmalsucheAusgangsszenario fur MerkmalsucheStatische AnalyseDynamische AnalyseStatische und dynamische AnalysenFormale Begriffsanalyse
Partielle OrdnungSupremum und InfimumVerkurztes Hasse-Diagramm
MerkmalsucheWeitere Anwendungen der BegriffsanalyseWiederholungsfragen
Merkmalsuche:
Merkmalsuche
LernzieleAusnutzung aller verfugbarer Information (statisch unddynamisch)Suche nach Merkmalen (statt Programmmustern)
KontextWeitere Anwendung der BegriffsanalyseUnterstutzung der Lokalisierung beim Programmverstehen
Merkmalsuche: Ausgangsszenario fur Merkmalsuche
Szenario fur Merkmalsuche in einem Zeichentool
Ziel:Rekonstruktion von Traceability-Abbildung:Merkmal (Feature) → Implementierungskomponenten
• Ihre Aufgabe ist es, fur ein System mit mehr als 10,000 Routinen
– ein Merkmal hinzuzufugen, zu korrigieren oder zu andern– oder einfach die Implementierung eines Merkmals zu verstehen.
• Wo beginnen Sie?
• Merkmalsuche:
– welche Komponenten eines Systems implementieren eineinzelnes Merkmal bzw. eine Menge von Merkmalen?
Merkmalsuche: Ausgangsszenario fur Merkmalsuche
Merkmale und Komponenten
Ein Merkmal ist eine realisierte funktionale oder nicht-funktionaleEigenschaft des Systems.Eine Komponente ist eine ausfuhrbare Einheit, z.B.:
eine einzelne Anweisung oder ein Ausdruck,eine Routine (Funktion, Prozedur),ein Modul,ein Subsystem,eine Task, ein Thread oder Prozess.
Im Folgenden:Merkmal = von außen anstoßbares und beobachtbaresVerhalten des Systems, das auf Komponenten abgebildetwerden kann.Komponente = Routine.
Merkmalsuche: Statische Analyse
Statische Analyse nach Chen und Rajlich (2000)
codesource
extractor
callgraph
traversal
callgraphcall graph
Probleme:Wo beginnen?Wo fortfahren?Wo aufhoren?Prazision der statischenExtraktion?
main
draw draw arc
set text
set ru ll
set centc
set cente
move
load
save
Merkmalsuche: Dynamische Analyse
Zwei dynamische Ausfuhrungs-Traces (Wilde u. a. 1992)
source
difference
starting set
for static
analysis
code
invoke with feature
invoke w/o feature
trace
trace
profiler
profiler
invoking
input set
excluding
input set
compiler executable
Merkmalsuche: Dynamische Analyse
Dynamische Aufrufgraphenmit Merkmal
main
draw draw arc
set text
set ru ll
set centc
set cente
move
load
save
ohne Merkmal
main
draw draw arc
set text
set ru ll
set centc
set cente
move
load
saveDifferenz:
main
draw draw arc
set text
set ru ll
set centc
set cente
move
load
save
Merkmalsuche: Dynamische Analyse
Probleme der dynamischen Analyse
Invoking-Input-Set – Excluding-Input-Set kannimmer noch sehr viele nicht-merkmalspezifische Routinensowie nicht wirklich merkmalspezifische Routinen enthalten.
Resultate hangen von der Eingabe ab;d.h. Resultate bilden nur einen Startpunkt fur weitere statischeAnalysen.
Wo soll mit der statischen Analyse begonnen werden?Das Resultat differenziert die identifizierten Routinen nichtweiter.
Merkmalsuche: Statische und dynamische Analysen
Statisch und dynamisch nach Eisenbarth u. a. (2003)
codesource
extractor
callgraph
traversal
callgraphcall graph
invoke feature f1
invoke feature f2
compiler executable
trace
trace
trace
profiler
profiler
profilerinvoke feature fn
concept
analysis
latticeconcept
... ... ... ...
,. . .
routines (f1)
routines (f2)
routines (fn)
invocationtable
Merkmalsuche: Statische und dynamische Analysen
Szenarien fur das Grafikprogramm
zE eine Ellipse zeichnenzK einen Kreis zeichnenzR ein Rechteck zeichnenzT Text zeichnen
Merkmalsuche: Statische und dynamische Analysen
Aufruftabelle
zE zK zR zTmain × × × ×draw × × × ×draw arc × ×set centc ×set cente ×set ru ll ×set text ×
Die Darstellung der Relation in Form einer Aufruftabelle erfolgt im Kontext der Merkmalsuche aus Platzgrundenkonsequent transponiert, da wir es stets mit mehr Routinen als Merkmalen zu tun haben werden.
Merkmalsuche: Formale Begriffsanalyse
Begriffsanalyse (Concept Analysis)
Menge O von ObjektenMenge A von AttributenRelation I ⊆ O ×Adas Tripel C = (O,A, I) wird formaler Kontext genanntfur eine Menge von Objekten O ⊆ O ist α(O) die Mengegemeinsamer Attribute:
α(O) := {a ∈ A | (o, a) ∈ I fur alle o ∈ O}
fur eine Menge von Attributen A ⊆ A ist ω(A) die Menge dergemeinsamen Objekte:
ω(A) := {o ∈ O | (o, a) ∈ I fur alle a ∈ A}
Merkmalsuche: Formale Begriffsanalyse
Begriffsanalyse (Concept Analysis)
Ein Paar aus Objekten und Attributen c = (O,A) heißtBegriff (Concept), genau dann, wenn
A = α(O)
und gleichzeitigO = ω(A)
Begriff entspricht einem maximalen Rechteck in der Tabelle(modulo Zeilen- und Spaltenpermutationen).Fur einen Begriff c = (O,A) ist
O = extent(c) (extent) undA = intent(c) (intent) des Begriffs c.
Merkmalsuche: Formale Begriffsanalyse
zE zK zR zTmain × × × ×draw × × × ×draw arc × ×set centc ×set cente ×set ru ll ×set text ×
({main, draw},{zE,zK, zT, zR })({draw arc, main, draw}, {zE,zK})({set cente, draw arc, main, draw}, {zE})({set centc, draw arc, main, draw}, {zK})({set text, main, draw},{zT})({set ru ll, main, draw},{zR})({set ru ll, set text, set centc, set cente, draw arc, main, draw}, ∅)
Merkmalsuche: Formale Begriffsanalyse
Partielle Ordnung von BegriffenPartielle Ordnung ≤:Seien c1 = (O1,A1) und c2 = (O2,A2) zwei Begriffe; dann
c1 ≤ c2 :⇔ O1 ⊆ O2
oder, dualc1 ≤ c2 :⇔ A2 ⊆ A1
c2 ist Oberbegriff (Superconcept) von c1
c1 ist Unterbegriff (Subconcept) von c2
⇒ c2 hat mindestens die Objekte von c1 und c1 hat mindestensdie Attribute von c2.Bsp.: ({draw arc, main, draw}, {zE,zK})≤ ({set centc, draw arc, main, draw}, {zK})Falls weder c1 ≤ c2 noch c2 ≤ c1, dann sind c1 und c2unvergleichbar.
Merkmalsuche: Formale Begriffsanalyse
Begriffsverband
Menge L aller Begriffe eines Kontexts C zusammen mitHalbordnung ≤ bilden einen vollstandigen Verband, den sogenannten Begriffsverband:
L(C) = {(O,A) ∈ 2O× 2A | A = α(O) und O = ω(A)}
Hasse-Diagramme visualisieren die Relation <:
c1 < c2 ⇔ c1 ≤ c2 und es gibt keinen Begriff c(, c1, c2), mit c1 ≤ c ≤ c2
Merkmalsuche: Formale Begriffsanalyse
Hasse-Diagramm
draw Circledraw Ellipsis
maindraw
maindraw
draw arc
maindraw
draw arc
set ru llset textset centcset cente
maindraw
draw arc
maindraw
maindraw
draw Ellipsisdraw Circledraw Textdraw Rectangle
2 4 53
0
1
draw arc
set cente
set ru lldraw Rectangle
draw Ellipsis
set centcdraw Circle
draw Textset text
6
maindraw
Merkmalsuche: Formale Begriffsanalyse
Supremum und Infimum
Fur zwei Begriffe c1 und c2
Gemeinsamer Unterbegriff Infimum u
(O1,A1)u(O2,A2) = (O1 ∩ O2, α(O1 ∩ O2))
Begriff, der die Menge der gemeinsamen Attribute zweierObjektmengen enthaltGemeinsamer Oberbegriff Supremum (t)
(O1,A1)t(O2,A2) = (ω(A1 ∩ A2),A1 ∩ A2)
Begriff, der die Menge der gemeinsamen Objekte zweierAttributmengen umfasst
Fur die Operatoren u und t gelten:• Kommutativitat: xty = ytx und xuy = yux• Assoziativitat: (xty)tz = xt(ytz) und (xuy)uz = xu(yuz)• Absorbtionsgesetze (Verschmelzungsgesetze): xt(xuy) = x und xu(xty) = x• Großtes (Top, 1) und kleinstes (Bottom, 0) Element existieren
Verkurzter Verband:
Eindeutig bestimmter Knoten im Begriffsverband, der mit• Attribut a beschriftet wird:
µ(a) =
⊔{c ∈ L(C) | a ∈ intent(c)}
heißt Attributbegriff zu a (→ großter Begriff mit a)• Der Knoten, der mit dem Objekt o markiert wird:
γ(o) =�
{c ∈ L(C) | o ∈ extent(c)}
und heißt Objektbegriff zu o (→ kleinster Begriff mit o).
Merkmalsuche: Formale Begriffsanalyse
Verkurztes Hasse-Diagramm des Begriffsverbands
2 4 53
0
1
draw arc
set cente
set ru lldraw Rectangle
draw Ellipsis
set centcdraw Circle
draw Textset text
6
maindraw
Merkmalsuche: Merkmalsuche
Merkmalsuche
2 4 53
0
1
draw arc
set cente
set ru lldraw Rectangle
draw Ellipsis
set centcdraw Circle
draw Textset text
6
maindraw
Fur Kreis zeichnen:
spezifisch: set centcsehr relevant: draw arcetwas relevant main, drawirrelevant alle anderen
main
draw draw arc
set text
set ru ll
set centc
set cente
move
load
save
Merkmalsuche: Weitere Anwendungen der Begriffsanalyse
Weitere Anwendungen der Begriffsanalyse
Anwendungsbeispiel: Refactoring von Klassenhierarchien:
Sammle alle erforderlichen Attribute fur jede Instanz einerKlasse → TabelleErstelle Begriffsverband fur Tabelle.
→ Jedes Konzept ist prinzipiell eine Klasse.→ Die ≤-Relation stellt die Vererbung dar.→ Supremum: gemeinsame Oberklasse.→ Infimum: gemeinsame Unterklasse.
– Snelting und Tip (2000)
Merkmalsuche: Wiederholungsfragen
Wiederholungs- und Vertiefungsfragen I
Wie kann man bei der Lokalisierung von Merkmalen prinzipiellvorgehen, d.h. welche Verfahren kommen in Frage?Wie konnnen Merkmale mit Hilfe der Begriffsanalyseidentifiziert werden?Was ist der formale Kontext hierfur?Welche Rolle spielt der Begriffsverband? Wie lasst er sichinterpretieren?Welche Rolle spielt die statische Analyse? Warum ist sienotwendig?Wie funktioniert die inkrementelle Begriffsanalyse? Und wiekann dies fur die Merkmalsuche ausgenutzt werden?Wie findet man Merkmale, wenn es keineEin-zu-eins-Beziehung zwischen Merkmalen und Szenarienexistiert?
Merkmalsuche: Wiederholungsfragen
1 Agrawal und Horgan 1990 Agrawal, Hiralal ; Horgan,Joseph R.: Dynamic Program Slicing. In: Proceedings of theConference on Programming Language Design andImplementation. White Plains, New York, USA, Juni 1990
2 Chen und Rajlich 2000 Chen, Kunrong ; Rajlich, Vaclav:Case Study of Feature Location Using Dependence Graph. In:Proceedings of the 8th International Workshop on ProgramComprehension. Limerick, Irland : IEEE Computer Society Press,Juni 2000, S. 241–249
3 Eisenbarth u. a. 2003 Eisenbarth, Thomas ; Koschke,Rainer ; Simon, Daniel: Locating Features in Source Code. In:IEEE Computer Society Transactions on Software Engineering29 (2003), Marz, Nr. 3, S. 210–224
4 Ernst 2000 Ernst, Michael: Dynamically Discovering LikelyProgram Invariants. Seattle, Washington, USA, University ofWashington, Department of Computer Science and Engineering,Dissertation, August 2000
Merkmalsuche: Wiederholungsfragen
5 Quante und Koschke 2006 Quante, Jochen ; Koschke,Rainer: Dynamic Object Process Graphs. In: Proceedings of theEuropean Conference on Software Maintenance andReengineering. Bari, Italy, Marz 2006
6 Richner und Ducasse 2002 Richner, Tamar ; Ducasse,Stephane: Using Dynamic Information for the Iterative Recoveryof Collaborations and Roles. In: Proceedings of the InternationalConference on Software Maintenance. Montreal, Canada : IEEEComputer Society Press, Oktober 2002, S. 34–43
7 Snelting und Tip 2000 Snelting, Gregor ; Tip, Frank:Understanding Class Hierarchies Using Concept Analysis. In:ACM Transactions on Programming Languages and Systems 22(2000), Mai, Nr. 3, S. 540–582
8 Wilde u. a. 1992 Wilde, Norman ; Gomez, Juan A. ; Gust,Thomas ; Strasburg, Douglas: Locating User Functionality inOld Code. In: Proceedings of the International Conference onSoftware Maintenance. Orlando, FL, USA : IEEE ComputerSociety Press, November 1992, S. 200–205
top related