Modeling History to Understand Software Evolution With Hismo 2008-02-25 - Presentation Transcript
Modeling History
to Understand Software Evolution
Tudor Gîrba
www.tudorgirba.com
Modeling History
to Understand Software Evolution
Inauguraldissertation der
Philosophisch-naturwissenschaftlichen
Fakultät der Universität Bern
vorgelegt von
Tudor Gîrba
von Rumänien
Leiter der Arbeit:
Prof. Dr. Stéphane Ducasse
Prof. Dr. Oscar Nierstrasz
Institut für Informatik und
angewandte Mathematik
}
}
{
{
}
}
{
{
g
rin
ee
gin
en
d
ar
rw
fo
fo
rw
ar
d
en
gin
ee
rin
g
{ {
{ { { {
} { {
}
} actual development } }
} { } } }
fo
rw
g
rin
ar
ee
d
gin
en
gin
en
ee
se
rin
erv
g
re
{ {
{ { { {
} { {
}
} actual development } }
} { } } }
{
{
} }
}
{
{
{
}
}
re
v er
se
en
gin
ee
rin
g
reverse engineering
fo
actual development rw
ar
d
en
gin
ee
rin
g
{
{
}
}
{
{
}
}
Most often time is put on the horizontal
and a property on the vertical axis.
Lehman etal, 2001
Evolution Matrix shows how classes evolve.
Time is still on the horizontal axis.
Lanza, Ducasse, 2002
Co-change analysis recovers hidden dependencies.
Time is the lines.
Gall etal, 2003
Evolution information can be
mapped on structural information.
Eick etal, 2002
Eick etal, 2002
es?
niqu
tech
Lehman etal, 2001 ese
ll th
da te a
om mo
we acc
can
ow
H
...
Lanza, Ducasse, 2002
Gall etal, 2003
sh
ort
int
er
me
zzo
What is a model?
sh
ort
int
er
me
zzo
A model is a simplification of the subject,
and its purpose is to answer some particular
questions aimed towards the subject.
Bezivin, Gerbe, 2001
sh
ort
int
er
me
zzo
what is a meta-model?
sh
ort
int
er
me
zzo
a meta-model is
a model that makes statements about
what can be expressed in valid models.
Seidewitz, 2003
sh
ort
int
er
me
zzo
a good meta-model
allows for succinct
expression of analyses.
Eick etal, 2002
es?
niqu
tech
Lehman etal, 2001 ese
ll th
da te a
om mo
we acc
can
ow
H
...
Lanza, Ducasse, 2002
Gall etal, 2003
Evolution Matrix shows class changes.
Lanza, Ducasse, 2004
Idle
class
Pulsar
class
Supernova
class
attributes
White dwarf
class methods Class
Evolution Matrix shows class changes.
Lanza, Ducasse, 2004
Idle
class
Pulsar
class
Supernova
class
attributes
White dwarf
class methods Class
Evolution Matrix shows class changes.
Lanza, Ducasse, 2004
Idle
class
entity.
st c lass
Pulsar
da s fir
class
mo dele
to be
needs
Supernova tio n
class Evolu
attributes
White dwarf
class methods Class
Evolution Matrix shows class changes.
Lanza, Ducasse, 2004
Idle
class
Pulsar
class
Supernova
class
attributes
White dwarf
class methods Class
Evolution Matrix shows class changes.
Idle
class history
Pulsar
class history
Supernova
class history
ClassHistory
White dwarf isPulsar
class history isIdle
...
System
Version
Class
Version
System
Version
Class Class
History Version
System System
History Version
Class Class
History Version
System System
History Version
Class Class
History Version
System System
History Version
en tity.
st c lass 200
5
ya s fir Gir ba,
tor
l s his
m ode
H ismo
Class Class
History Version
Measuring Yesterday’s Time-based
history Weather Detection Strategies
1 2 3
4 5 6
Visualizing the evolution Detecting How developers
of hierarchies co-change patterns drive evolution
Measuring history
1
What changed? When did it change? ...
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
Evolution of
Number of Methods LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n
LENOM(C) = 4 + 2 + 1 + 0 = 7
1 5 3 4 4
Latest Evolution of
Number of Methods LENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 2i-n
Earliest Evolution of
Number of Methods EENOM(C) = ∑ |NOMi(C)-NOMi-1(C)| 22-i
-3 -2 -1 0
LENOM(C) = 42 + 22 + 12 + 02 = 1.5
1 5 3 4 4
EENOM(C) = 4 20 + 2 2-1 + 1 2-2 + 0 2-3 = 5.25
ENOM LENOM EENOM
balanced changer 7 3.5 3.25
late changer 7 5.75 1.37
3 1 2
dead stable 0 0 0
early changer 7 1.25 5.25
ENOM LENOM EENOM
balanced changer 7 3.5 3.25
late changer 7 tity 5.75 nts. 1.37
en ureme
lass eas
st c gh m
s fir rou 3
y a th 1 2
r
H isto rison
co mpa
deadsstable
ena ble 0 0 0
early changer 7 1.25 5.25
History can be measured in many ways.
Evolution Number of Methods
Stability Number of Lines of Code
Historical Max of Cyclomatic Complexity
Growth Trend Number of Modules
... ...
Yesterday’s weather
2
The recently changed parts are likely to change in the
near future.
Common wisdom
The recently changed parts are likely to change in the
near future.
ally?
Common wisdom
re
re they
A
30% 90%
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 present
Overall Yesterday’s Weather shows the localization of
changed in time. Girba etal, 2004
hit hit hit
YW = 3 / 8 = 37%
hit hit hit hit hit hit hit
YW = 7 / 8 = 87%
Time-based
Detection Strategies
3
Detection Strategies are metric-based queries to
detect design flaws. Lanza, Marinescu 2006
Rule 1
METRIC 1 > Threshold 1
AND Quality problem
Rule 2
METRIC 2 < Threshold 2
Example: a God Class centralizes too much
intelligence in the system.
Class uses directly more than a
few attributes of other classes
ATFD > FEW
Functional complexity of the
class is very high
AND GodClass
WMC ! VERY HIGH
Class cohesion is low
TCC < ONE THIRD
Example: a God Class centralizes too much
intelligence in the system.
Class uses directly more than a
few attributes of other classes
ATFD > FEW
tab le?
f it is s
wh
Functional complexity of the at i
ut,
class is very high
B AND GodClass
WMC ! VERY HIGH
Class cohesion is low
TCC < ONE THIRD
History-based Detection Strategies take evolution
into account. Ratiu etal, 2004
God Class
in the last version
isGodClass(last)
AND Harmless God Class
Stable throughout
the history
Stability > 90%
History-based Detection Strategies take evolution
into account. Ratiu etal, 2004
me.
God Class
in the last version
sa
ed the
isGodClass(last)
eat
e tr
pace ar
an ds AND Harmless God Class
e
Tim
Stable throughout
the history
Stability > 90%
Visualizing the evolution
of hierarchies
4
What happens with inheritance?
A A A A A
B C B C B C B B
D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5
History contains too much data.
A A A A A A A A A A A A A A A A A A A A
B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B
D D D E D D D E D D D E D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5
A A A A A A A A A A A A A A A A A A A A
B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B
D D D E D D D E D D D E D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5
A A A A A A A A A A A A A A A A A A A A
B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B
D D D E D D D E D D D E D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5
A A A A A A A A A A A A A A A A A A A A
B C B C B C B B B C B C B C B B B C B C B C B B B C B C B C B B
D D D E D D D E D D D E D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5 ver .1 ver. 2 ver. 3 ver. 4 ver. 5
System System
History Version
Class Class
History Version
System System
History Version
Inheritance
Version
Class Class
History Version
System System
History Version
Inheritance Inheritance
History Version
Class Class
History Version
A A A A A
B C B C B C B B
D D D E
ver .1 ver. 2 ver. 3 ver. 4 ver. 5
A is persistent, B is stable, C was removed, E is newborn ...
Hierarchy Evolution View encapsulates time.
Girba etal, 2005
A
changed
methods
changed
age
lines
C B
Removed
Removed
D E
A is persistent, B is stable, C was removed, E is newborn ...
Hierarchy Evolution View reveals patterns.
Girba etal, 2005
ntity .
ss e aph
t cla a gr
firs to
as ing
tory mapp
His les
e nab
Identifying co-change
patterns
5
1 2 3 4 5 6
A
A
B
B E
C
D
E C D
Gall etal, ‘98
Co-change patterns are n-ary relationships.
1 2 3 4 5 6
A
B
C
D
Version
E
1 2 3 4 5 6
A
B
C
D
Version
E changed
1 2 3 4 5 6
A History
changed(i)
B
C
D
Version
E changed
What is Concept Analysis?
1 2 3 4 5 6
A
B
C
D
E
{A, B, C, D, E}
1 2 3 4 5 6 Ø
A {A, D, B} {A, E, C, D}
{2} {6}
B
{D, B} {A, D} {A, E, C}
C FCA
{2, 4} {2, 6} {5, 6}
D
{D} {A} {C}
E {2, 4, 6} {2, 5, 6} {3, 5, 6}
Ø
{1, 2, 3, 4, 5, 6}
{A, B, C, D, E}
1 2 3 4 5 6 Ø
A {A, D, B} {A, E, C, D}
{2} {6}
B
{D, B} {A, D} {A, E, C}
C FCA
{2, 4} {2, 6} {5, 6}
D
{D} {A} {C}
E {2, 4, 6} {2, 5, 6} {3, 5, 6}
Ø
{1, 2, 3, 4, 5, 6}
Girba etal, 2007
Parallel Inheritance
add simultaneously children to several classes
Shotgun Surgery
change several classes simultaneously, but do not add methods
{A, B, C, D, E}
1 2 3 4 5 6 Ø
A {A, D, B} {A, E, C, D}
{2} {6}
B
{D, B} {A, D} {A, E, C}
C FCA
{2, 4} {2, 6} {5, 6}
D
{D} {A} {C}
E {2, 4, 6} {2, 5, 6} {3, 5, 6}
Ø
{1, 2, 3, 4, 5, 6}
{A, B, C, D, E}
1 2 3 4 5 6 Ø
A {A, D, B} {A, E, C, D}
{2} {6}
tity
B
s en A.
st clas {D, B}
FC
firFCA g to{2, 4} {A, D} {A, E, C}
y as appin
C {2, 6} {5, 6}
stor s m
Hi ble
D
ena {D} {A} {C}
E {2, 4, 6} {2, 5, 6} {3, 5, 6}
Ø
{1, 2, 3, 4, 5, 6}
How developers drive
software evolution
6
CVS shows activity.
Who is responsible for this?
Who is responsible for this?
Alphabetical order is no order.
The Hausdorf metric can be used to compute the
similarity between commits.
A
d(A, B) = ∑ min2{ | a - b | b in B }
a in A
B
Alphabetical order is no order.
Ownership Map reveals development patterns.
Girba etal, 2006
Ownership Map reveals development patterns.
Girba etal, 2006
tity anges.
s en c ch
clas listi
rst ho
as fi out
tory ing ab
His son
les rea
enab
Measuring Yesterday’s Time-based
history Weather Detection Strategies
1 2 3
4 5 6
Visualizing the evolution Detecting How developers
of hierarchies co-change patterns drive evolution
System System
History Version
Inheritance Inheritance
History Version
Class Class
History Version
History Version
History Version
History Version
History Version
en tity.
st c lass 200
5
as fir Gir ba,
his tory History Version
mo dels
Hi smo
History Version
Modeling History
to Understand Software Evolution
Inauguraldissertation der
Philosophisch-naturwissenschaftlichen
Fakultät der Universität Bern
vorgelegt von
Tudor Gîrba
von Rumänien
Leiter der Arbeit:
Prof. Dr. Stéphane Ducasse
Prof. Dr. Oscar Nierstrasz
Institut für Informatik und
angewandte Mathematik
www.tudorgirba.com
Over the past three decades, more and more research more
Over the past three decades, more and more research has been spent on understanding software evolution. However, the approaches developed so far rely on ad-hoc models, or on too specific meta-models, and thus, it is difficult to reuse or compare their results. We argue for the need of an explicit and generic meta-model that recognizes evolution as an explicit phenomenon and models it as a first class entity. Our solution is to encapsulate the evolution in the explicit notion of history as a sequence of versions, and to build a meta-model around these notions called Hismo. To show the usefulness of our meta-model we exercise its different characteristics by building several reverse engineering applications. less
0 comments
Post a comment