Tudor Gîrbawww.tudorgirba.com
Assessing software systems
2002
PhD
2002 2005
PhD
2002 2005 2009
PostDoc
PhD
2002 2005 2009
PostDoc
Consultant
www.sw-eng.ch
forward engineering
}
{
}
{
}
{
}
{
forward engineering
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
forward engineering
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse e
ngin
eerin
g
= complex }
{
}
{
}
{}
{
}
{
= complex, large}
{
}
{
}
{}
{
}
{
= 250’000 lines of code
= 250’000 lines of code
* 2 = 500’000 seconds
= 250’000 lines of code
* 2 = 500’000 seconds
/ 3600 ~ 140 hours
= 250’000 lines of code
* 2 = 500’000 seconds
/ 3600 ~ 140 hours
/ 8 ~ 18 days
= 250’000 lines of code
* 2 = 500’000 seconds
/ 3600 ~ 140 hours
/ 8 ~ 18 days
/ 20 ~ 1 month
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
Metric ValueLOC 148‘760
NOM 14‘915
NOC 2’089
CYCLO 30‘073
CALLS 151287
FANOUT 85909
AHH 0.12
... ...
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
Lanza, Marinescu 2006
A God Class centralizes too much intelligence
ATFD > FEW
Class uses directly more than a
few attributes of other classes
WMC ! VERY HIGH
Functional complexity of the
class is very high
TCC < ONE THIRD
Class cohesion is low
AND GodClass
Lanza, Marinescu 2006
Significant duplication goes beyond just one line
Significant Duplication
Chain
SDC ! 2x(FEW+1)+1
Duplication chain has at least a
size of two relevant exact clones
SEC > FEW
Exact clones are longer than a
few lines of code
LB " FEW
Distance between clones is not
more than a few lines of code
AND
Significant
Duplication
SEC > AVERAGE(LOC/Operation)
Significant standalone
exact clone
Significant Duplication Chain
OR
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
How do programs look like today?
A picture tells
a thousand words
proximity
enclosure
connectivity
similarity
closure
continuity
A picture tells
a thousand words
Not all pictures tell a
thousand words
System Complexity shows class hierarchies
Lanza, Ducasse 2003
Ducasse etal 2006
Distribution Mapshows propertiesover structure
Greevy etal 2007
Feature Map relates features to packages
Wettel, Lanza 2007
CodeCity shows where your code lives
Wettel 2008
and where your flaws live
Duplications shown side by side
forward engineering
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse e
ngin
eerin
g
forward engineering
actual development}
{
}
{
}
{
}
{}
{
}
{
}
{}
{
}
{
reve
rse e
ngin
eerin
g
reve
rse
engi
neer
ing
Girba etal 2005
Hierarchy Evolution reveals evolution patterns
Girba etal 2005
Ownership Map reveals patterns in CVS
Balint etal 2006
Clone Evolution shows who copied from whom
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
...
moose.unibe.ch
}
{
}
{
}
{}
{
}
{
McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
...
Software assessment is
more than fancy tools
}
{
}
{
}
{}
{
}
{
...McCabe = 21
LOC = 75
3,000
NOM = 102classes select: #isGod
Tudor Gîrbawww.tudorgirba.com
creativecommons.org/licenses/by/3.0/