Lecture 3 Guiding Software Development Where do you go next? - - PowerPoint PPT Presentation

lecture 3 guiding software development where do you go
SMART_READER_LITE
LIVE PREVIEW

Lecture 3 Guiding Software Development Where do you go next? - - PowerPoint PPT Presentation

Lecture 3 Guiding Software Development Where do you go next? Mentoring! Evolutionay Coupling Research Hypothesis Evolutionay Coupling eROSE Reengineering of Software Evolution Tom Zimmermann Saarland University Peter Weigerber


slide-1
SLIDE 1

Lecture 3 Guiding Software Development

slide-2
SLIDE 2

Where do you go next?

slide-3
SLIDE 3

Mentoring!

slide-4
SLIDE 4

Research Hypothesis Evolutionay Coupling

slide-5
SLIDE 5

Evolutionay Coupling

slide-6
SLIDE 6

eROSE

Tom Zimmermann • Saarland University Peter Weißgerber • University of Trier Stephan Diehl • University of Trier Andreas Zeller • Saarland University

Reengineering of Software Evolution

slide-7
SLIDE 7
slide-8
SLIDE 8

Developers who changed this function also changed...

slide-9
SLIDE 9

eROSE: Guiding Developers

Purchase History

Customers who bought this item also bought...

Version Archive

Developers who changed this function also changed...

slide-10
SLIDE 10

What Can eROSE do?

Suggest and predict likely changes

slide-11
SLIDE 11

What Can eROSE do?

Prevent errors due to incomplete changes.

slide-12
SLIDE 12

What Can eROSE do?

Detect coupling undetectable by program analysis.

slide-13
SLIDE 13

Evolutionary Coupling in GNU DDD

slide-14
SLIDE 14

ddd directory Icons Libraries Patches Tests

Evolutionary Coupling in GNU DDD

slide-15
SLIDE 15

Evolutionary Coupling

slide-16
SLIDE 16

What can eROSE do?

slide-17
SLIDE 17
slide-18
SLIDE 18
slide-19
SLIDE 19

User inserts a new preference into the field fkeys[].

slide-20
SLIDE 20

User inserts a new preference into the field fkeys[].

slide-21
SLIDE 21

User inserts a new preference into the field fkeys[]. User inserts a new preference into the field fkeys[].

slide-22
SLIDE 22
slide-23
SLIDE 23

eROSE suggests further locations.

slide-24
SLIDE 24

http://www.st.cs.uni-sb.de/softevo/erose/

slide-25
SLIDE 25
slide-26
SLIDE 26

eROSE prevents incomplete changes.

slide-27
SLIDE 27

eROSE Architecture

  • 1. Preprocess CVS Archive.
  • 2. Mine association rules between entities.
slide-28
SLIDE 28

Processing CVS data

slide-29
SLIDE 29

Processing CVS data

slide-30
SLIDE 30

Processing CVS data

  • 1. Comparing files
  • 2. Building transactions
slide-31
SLIDE 31

Mapping Changes to Entities

r1 r2

slide-32
SLIDE 32

Mapping Changes to Entities

A() C() E() D() B()

r1 r2

Parse r1 for entities

slide-33
SLIDE 33

Mapping Changes to Entities

A() C() E() D() B() A() B() E() F() D()

r1 r2

Parse r1 for entities Parse r2 for entities

slide-34
SLIDE 34

Mapping Changes to Entities

A() C() E() D() B() A() B() E() F() D()

r1 r2

Parse r1 for entities Parse r2 for entities diff diff diff diff gone new

slide-35
SLIDE 35

CVS Transactions

New Developer

slide-36
SLIDE 36

CVS Transactions

New Developer

user changes files

slide-37
SLIDE 37

CVS Transactions

Project Files (changed)

New Developer

user changes files local copy changed

slide-38
SLIDE 38

CVS Transactions

Project Files (changed)

New Developer

user changes files local copy changed

CVS Server

Project Files (changed)

local copy changed

slide-39
SLIDE 39

CVS Transactions

Project Files (changed)

New Developer

user changes files local copy changed

CVS Server

Project Files (changed)

local copy changed

T r a n s a c t i

  • n
slide-40
SLIDE 40

Infer Transactions: Time Windows

All changes by the same developer, with the same message, made at the same time belong to one transaction.

A:1.3 B:1.2 C:1.4 D:1.3 E:1.5 same author + same log message

Fixed Time Window ∀δi : ∀δj : | time (δi) − time (δj) | ≤ T

A:1.3 B:1.2 C:1.4 D:1.3 E:1.5 same author + same log message

Sliding Time Window ∀δi : ∃δj : | time (δi) − time (δj) | ≤ T

200 seconds 200 seconds

slide-41
SLIDE 41

Infer Transactions: Time Windows

All changes by the same developer, with the same message, made at the same time belong to one transaction.

A:1.3 B:1.2 C:1.4 D:1.3 E:1.5 same author + same log message

Fixed Time Window ∀δi : ∀δj : | time (δi) − time (δj) | ≤ T

A:1.3 B:1.2 C:1.4 D:1.3 E:1.5 same author + same log message

Sliding Time Window ∀δi : ∃δj : | time (δi) − time (δj) | ≤ T

200 seconds 200 seconds

slide-42
SLIDE 42

Building Transactions

CVS

150,000

slide-43
SLIDE 43

Building Transactions

CVS

150,000

createGeneralPage() createT extComparePage() fKeys[] initDefaults() buildnotes_compare.html PatchMessages.properties plugin.properties

2003-02-19 (aweinand): fixed #13332

slide-44
SLIDE 44

Building Transactions

CVS

150,000

createGeneralPage() createT extComparePage() fKeys[] initDefaults() buildnotes_compare.html PatchMessages.properties plugin.properties

2003-02-19 (aweinand): fixed #13332

same author + message + time

slide-45
SLIDE 45

From Transactions to Rules

{alter(field, fkeys[],...)} ⇒ {

}

alter(method, initDefaults(),...), alter(file, plug.properties,...),

Example Rule association rule r is a pair (x1, x2) where x1 is the antecedent and x2 is the consequent

slide-46
SLIDE 46

Entities

An entity is a triple (c, i, p) where c is the syntactic category, i is the identifier p is the parent entity

slide-47
SLIDE 47

Entities

An entity is a triple (c, i, p) where c is the syntactic category, i is the identifier p is the parent entity Example (method, initDefaults(), (class, Comp, (file, Comp.java, ...))) c i p

slide-48
SLIDE 48

Types of Operations

slide-49
SLIDE 49

Types of Operations

alter(e)

slide-50
SLIDE 50

Types of Operations

alter(e) add_to(e)

slide-51
SLIDE 51

Types of Operations

alter(e) add_to(e) del_from(e)

slide-52
SLIDE 52

Mining Associations

slide-53
SLIDE 53

Mining Associations

EROSE finds past transactions

slide-54
SLIDE 54

Mining Associations

fKeys[] initDefaults() ... plugin.properties

#104223

fKeys[] initDefaults() ... plugin.properties

#756

fKeys[] initDefaults() ... plugin.properties

#6721

fKeys[] initDefaults() ... plugin.properties

#21078

fKeys[] initDefaults() ... plugin.properties

#42432

fKeys[] initDefaults() ... plugin.properties

#51345

fKeys[] initDefaults() ... plugin.properties

#59998

fKeys[] initDefaults() ... plugin.properties

#71003

fKeys[] initDefaults() ...

#87264

fKeys[] initDefaults() ... plugin.properties

#91220

fKeys[] initDefaults() ... plugin.properties

#101823

EROSE finds past transactions

slide-55
SLIDE 55
slide-56
SLIDE 56
slide-57
SLIDE 57

Support & Confidence

slide-58
SLIDE 58

Support & Confidence

slide-59
SLIDE 59

Support & Confidence

transactions where fkeys[] was altered

slide-60
SLIDE 60

Support & Confidence

transactions where fkeys[] was altered transactions where initDefaults() and plug.properties were altered

slide-61
SLIDE 61

Support & Confidence

Support = 11 Confidence = 10/11 = 0.909

transactions where fkeys[] was altered transactions where initDefaults() and plug.properties were altered

slide-62
SLIDE 62

Applying Rules

Situation ∑ = {alter(field, fkeys[],...)} apply (∑)

R (∑⇒x2) ∈ R

= ∪ x2

i.e., the set of suggestions for a situation ∑ and rules R is defined as the union of the consequents of all matching rules.

{

}

alter(method, initDefaults(),...), alter(file, plug.properties,...),

apply (∑) =

R

slide-63
SLIDE 63

Applying Rules

{

}

alter(field, keys[],...), alter(method, init.Defaults(),...)

∑ =

{

}

alter(file, plug.properties(),...), alter(file, build.html,...),

apply (∑) =

R

slide-64
SLIDE 64

Applying Rules

{

}

alter(field, keys[],...), alter(method, init.Defaults(),...)

∑ =

{

}

alter(file, plug.properties(),...), alter(file, build.html,...),

apply (∑) =

R

eRose can build rules on the fly.

slide-65
SLIDE 65

Computing Association Rules

eROSE uses the Apriori Algorithm to compute rules. Takes several days to generate rule set, but eROSE has

  • ptimisations built it.
  • 1. Constrained Antecedents (builds rules on the fly)
  • 2. Single Consequents (∑⇒{e})
slide-66
SLIDE 66

Some Rule Examples

Coupling in GCC Compiler {alter(type, processor_cost (file, i386.h,...))} ⇒ {alter(var, i386_cost, (file, i386.c,...))} {alter(var, i486_cost, (file, i386.c,...))} {alter(var, k6_cost, (file, i386.c,...))} {alter(var, pentium_cost, (file, i386.c,...))} {alter(var, pentiumpro_cost, (file, i386.c,...))} ∑ =

slide-67
SLIDE 67

Some Rule Examples

PostGRES Documentation {alter(file, createuser.sgml, ...)), ⇒ ∑ = {alter(file, dropuser.sgml, ...)), {alter(file, createdb.sgml, ...)), {alter(file, dropdb.sgml, ...)),

slide-68
SLIDE 68

PostgreSQL

Evaluation

jEdit KOffice GIMP

slide-69
SLIDE 69

PostgreSQL

Evaluation

jEdit KOffice GIMP EROSE predicts 33% of all changed entities. (files: 44%)

slide-70
SLIDE 70

PostgreSQL

Evaluation

jEdit KOffice GIMP EROSE predicts 33% of all changed entities. (files: 44%) In 70% of all transactions, EROSE’s topmost three suggestions contain a changed entity.

slide-71
SLIDE 71

PostgreSQL

Evaluation

jEdit KOffice GIMP EROSE predicts 33% of all changed entities. (files: 44%) In 70% of all transactions, EROSE’s topmost three suggestions contain a changed entity. EROSE learns quickly (within 30 days).

slide-72
SLIDE 72

History Required

slide-73
SLIDE 73

Software Development Artefacts

slide-74
SLIDE 74

Software Development Artefacts

Source Code

slide-75
SLIDE 75

Software Development Artefacts

Email Source Code

slide-76
SLIDE 76

Software Development Artefacts

Bug Database Email Requirements CVS Archive Discussion Forums Test Suites Source Code

slide-77
SLIDE 77

Software Development Artefacts

Bug Database Email Requirements CVS Archive Discussion Forums Test Suites Source Code

slide-78
SLIDE 78

Artefact Types

Source File Versions Change Tasks Messages Other Documents

slide-79
SLIDE 79

Relationship Types

File Versions Change Tasks

Messages

Documents

similar to documents check-in package reply to similar to writes writes posts works on implements about

slide-80
SLIDE 80

Relationship Types

File Versions Change Tasks

Messages

Documents

similar to documents check-in package reply to similar to writes writes posts works on implements about

slide-81
SLIDE 81

Relationship Types

File Versions Change Tasks

Messages

Documents

similar to documents check-in package reply to similar to writes writes posts works on implements about

slide-82
SLIDE 82

Relationship Types

File Versions Change Tasks

Messages

Documents

similar to documents check-in package reply to similar to writes writes posts works on implements about

Hipikat infers links by combining information contained within project artefacts and metainformation about artefacts from different information sources.

slide-83
SLIDE 83

Relationship Types

File Versions Change Tasks

Messages

Documents

similar to documents check-in package reply to similar to writes writes posts works on implements about

Hipikat infers links by combining information contained within project artefacts and metainformation about artefacts from different information sources.

slide-84
SLIDE 84

Hipikat Client-Server Protocol

slide-85
SLIDE 85

Hipikat Client-Server Protocol

Artefact Database

slide-86
SLIDE 86

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

slide-87
SLIDE 87

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Update

slide-88
SLIDE 88

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Update

monitors

slide-89
SLIDE 89

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Update Insert artefact

monitors

slide-90
SLIDE 90

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Update Insert artefact

monitors

slide-91
SLIDE 91

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Update Insert artefact

monitors

slide-92
SLIDE 92

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Update Inserts links Insert artefact

monitors

slide-93
SLIDE 93

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Update Inserts links Insert artefact

monitors

slide-94
SLIDE 94

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Update Inserts links Insert artefact

Query monitors

slide-95
SLIDE 95

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Selection Update Inserts links Insert artefact

Query monitors

slide-96
SLIDE 96

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Selection Follows links Update Inserts links Insert artefact

Query monitors

slide-97
SLIDE 97

Hipikat Client-Server Protocol

Artefact Database

web

Mail/News

CVS

Identification Listen for new artefacts Selection Follows links Update Inserts links Insert artefact

Query

Related artefacts

monitors

slide-98
SLIDE 98

Update

Update

  • has a separate sub-modules to handle different

types of data, e.g. CVS and Bugzilla.

  • New and changed artefacts are inserted into

Artefact database.

  • Change listeners are notified.
slide-99
SLIDE 99

Identification

Identification

slide-100
SLIDE 100

Identification

Identification Log Matcher

slide-101
SLIDE 101

Identification

Identification Activity Matcher Log Matcher

slide-102
SLIDE 102

Identification

Identification Activity Matcher Text Similarity Matcher Log Matcher

slide-103
SLIDE 103

Identification

Identification Activity Matcher Text Similarity Matcher Log Matcher CVS Check-in Package Matcher

slide-104
SLIDE 104

Identification

Identification Activity Matcher Text Similarity Matcher Log Matcher CVS Check-in Package Matcher

Thread Matcher

slide-105
SLIDE 105

Selection

Selection

slide-106
SLIDE 106

Hipikat Client (Eclipse Plug-in)

slide-107
SLIDE 107

Evaluation

The Eclipse Newcomer Study

Newcomers

  • Is the tool helpful to them?
  • When and from which artefacts will they query?
  • How to they evaluate and utilise recommendations?
slide-108
SLIDE 108

Evaluation

The Eclipse Newcomer Study

Newcomers

  • Is the tool helpful to them?
  • When and from which artefacts will they query?
  • How to they evaluate and utilise recommendations?

Experienced

slide-109
SLIDE 109

Summary

eROSE: Guiding Developers

Purchase History

Customers who bought this item also bought...

Version Archive

Developers who changed this function also changed...

Hipikat Client-Server Protocol

Artefact Database

web Mail/News

CVS

Identification Listen for new artefacts Selection Follows links Update Inserts links Insert artefact Query Related artefacts monitors

A Recommender System A Recommender System?