Vorlesung Software-Reengineering Uberblick ¨ I Merkmalsuche fileVorlesung Software-Reengineering...

15
Vorlesung Software-Reengineering Prof. Dr. Rainer Koschke Arbeitsgruppe Softwaretechnik Fachbereich Mathematik und Informatik Universit¨ at Bremen Wintersemester 2010/11 ¨ Uberblick I Merkmalsuche

Transcript of Vorlesung Software-Reengineering Uberblick ¨ I Merkmalsuche fileVorlesung Software-Reengineering...

Page 1: Vorlesung Software-Reengineering Uberblick ¨ I Merkmalsuche fileVorlesung 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 IMerkmalsuche

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

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

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

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?

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

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

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

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

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

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

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

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 ×

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

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}

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

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}, ∅)

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

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

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

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

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

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

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

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)

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

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

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

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