What history can tell us

Post on 10-May-2015

576 views 0 download

Tags:

description

I used this set of slides for a talk I gave at the Qualimetrie Club, Paris on June 2009.

Transcript of What history can tell us

what history can tell us

Tudor Gîrbawww.tudorgirba.com

2002

PhD2002 2005

PhD2002 2005 2009

PostDoc

PhD2002 2005 2009

PostDoc

Consultant

www.sw-eng.ch

}

{

}

{

}

{

}

{

forw

ard

engi

neer

ing

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

forw

ard

engi

neer

ing

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

forw

ard

engi

neer

ing

reverse engineering

Lanza, Ducasse 2003

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

forw

ard

engi

neer

ing

reve

rse

engi

neer

ing

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

forw

ard

engi

neer

ing

reve

rse

engi

neer

ing

reve

rse

engi

neer

ing

Lehman etal, 2001

Wu etal, 2004

commit

time

Lanza, Ducasse, 2002

Evolution Matrix shows changes in classes

Idle class

Pulsar class

Supernova class

White dwarf class

Lanza, Ducasse, 2002

what is the meta-model?

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

complex, large

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

}

{

}

{

}

{}

{

}

{

what is the meta-model?

to Understand Software Evolution

Modeling History

vorgelegt von

Tudor Gîrba

von Rumänien

Inauguraldissertation der Philosophisch-naturwissenschaftlichen

Fakultät der Universität Bern

Leiter der Arbeit:

Prof. Dr. Stéphane DucasseProf. Dr. Oscar Nierstrasz

Institut für Informatik und angewandte Mathematik

Idleclass

Pulsarclass

Supernovaclass

White dwarfclass

Class

attributes

methods

Idleclass

Pulsarclass

Supernovaclass

White dwarfclass

Class

attributes

methods

Idleclass history

Pulsarclass history

Supernovaclass history

White dwarfclass history

ClassHistory

isPulsarisIdle

ClassVersion

SystemVersion

ClassVersion

ClassHistory

SystemVersion

ClassVersion

ClassHistory

SystemVersion

SystemHistory

ClassVersion

ClassHistory

SystemVersion

SystemHistory

VersionHistory

VersionHistory

VersionHistory

VersionHistoryHismo models history explicitlyGirba 2005

2 4 3 5 7

2 2 3 4 9

2 2 1 2 3

2 2 2 2 2

1 5 3 4 4

what changed? when, how?

1 5 3 4 4

4 2 1 0+++ = 7=

LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-nEvolution ofNumber of Methods

LENOM(C)

Gîrba etal 2004

Gîrba etal 2004

1 5 3 4 4

LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n

LENOM(C) 4 2-3 2 2-2 1 2-1 0 20+++ = 1.5=

EENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 22-i

Latest Evolution ofNumber of Methods

Earliest Evolution ofNumber of Methods

EENOM(C) 4 20 2 2-1 1 2-2 0 2-3+++ = 5.25=

ENOM LENOM EENOM

7 3.5 3.25

7 5.75 1.37

3 1 2

0 0 0

7 1.25 5.25

2 4 3 5 7

2 2 3 4 9

2 2 1 2 3

2 2 2 2 2

1 5 3 4 4

ENOM LENOM EENOM

7 3.5 3.25

7 5.75 1.37

3 1 2

0 0 0

7 1.25 5.25

balanced changer

late changer

dead stable

early changer

ENOM LENOM EENOM

7 3.5 3.25

7 5.75 1.37

3 1 2

0 0 0

7 1.25 5.25

balanced changer

late changer

dead stable

early changer

History can be measured

Evolution

Stability

Historical Max

Growth Trend

...

Number of Methods

Number of Lines of Code

Cyclomatic Complexity

Number of Modules

...

of

common wisdom: recently changed parts are likely to change in the near future

common wisdom: recently changed parts are likely to change in the near future

really?

30% 90%

present

present

past

present

past future

present

past future

present

past future

present

past future

prediction hit

present

past future

YesterdayWeatherHit(present):

past:=histories.topLENOM(start, present)

future:=histories.topEENOM(present, end)

past.intersectWith(future).notEmpty()

prediction hit

Yesterday’s Weather shows the localization of change

hit hit hit

YW = 3 / 8 = 37%

hit hit hit hit hit hit hit

YW = 7 / 8 = 87%

Girba etal, 2004

Detection Strategies are metric-based queriesto detect design flaws

God Class:

class.ATFD() > FEW &

class.WMC() >= VERY HIGH &

class.TCC() < ONE THIRD

what if it is stable?

God Class:

class.ATFD() > FEW &

class.WMC() >= VERY HIGH &

class.TCC() < ONE THIRD

Ratiu etal, 2004

Harmless God Class:

classhistory.last.isGodClass() &

classhistory.STABILITY(NOM) >= VERY HIGH

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

ClassVersion

ClassHistory

SystemVersion

SystemHistory

ClassVersion

ClassHistory

SystemVersion

SystemHistory

InheritanceVersion

InheritanceHistory

ClassVersion

ClassHistory

SystemVersion

SystemHistory

InheritanceVersion

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

A is persistent, B is stable, C was removed, E is newborn ...

Girba etal, 2005

ver .1 ver. 2 ver. 3 ver. 4 ver. 5

A A A A A

B B B B BC C C

D D D E

A

B

D

C

E

A is persistent, B is stable, C was removed, E is newborn ...

Girba etal, 2005

Hierarchy Evolution reveals evolution patterns

A

B

C

D

E

1 2 3 4 5 6

B E

C D

A

Gall etal, 1998

A

B

C

D

E

1 2 3 4 5 6

Version

A

B

C

D

E

1 2 3 4 5 6

changed

Version

changed(i)

HistoryA

B

C

D

E

1 2 3 4 5 6

changed

Version

A

B

C

D

E

1 2 3 4 5 6

{A, B, C, D, E}

Ø

{D, B}{2, 4}

{A, D}{2, 6}

{A, E, C}{5, 6}

{A, D, B}{2}

{A, E, C, D}{6}

{D}{2, 4, 6}

{A}{2, 5, 6}

{C}{3, 5, 6}

Ø{1, 2, 3, 4, 5, 6}

FCA

A

B

C

D

E

1 2 3 4 5 6

{A, B, C, D, E}

Ø

{D, B}{2, 4}

{A, D}{2, 6}

{A, E, C}{5, 6}

{A, D, B}{2}

{A, E, C, D}{6}

{D}{2, 4, 6}

{A}{2, 5, 6}

{C}{3, 5, 6}

Ø{1, 2, 3, 4, 5, 6}

FCA

A

B

C

D

E

1 2 3 4 5 6

Girba etal, 2007

Parallel Inheritanceadd simultaneously children to several classes

Shotgun Surgerychange several classes simultaneously, but do not add methods

actual development}

{

}

{

}

{

}

{}

{

}

{

}

{}

{

}

{

reve

rse

engi

neer

ing

forw

ard

engi

neer

ing

reve

rse

engi

neer

ing