7. McCabe = 21
NOM 0
= 102
3 ,00
75
=
C
LO
Metrics Queries Visualizations ...
{ {
{ {
}
}
}
} { }
8. McCabe = 21
NOM 0
= 102
3 ,00
75
=
C
LO
Metrics Queries Visualizations ...
{ {
{ {
}
}
}
} { }
9. Metrics compress systems into numbers.
NOM
number of methods
LOC
number of lines of code
CYCLO
McCabe cyclomatic complexity
TCC
tight class cohesion
...
Lorentz, Kidd, 1994
Chidamber, 1994
McCabe 1977
10. McCabe = 21
NOM 0
= 102
3 ,00
75
=
C
LO
Metrics Queries Visualizations ...
{ {
{ {
}
}
}
} { }
12. Detection Strategies are metric-based queries to
detect design ïŹaws. Lanza, Marinescu 2006
Rule 1
METRIC 1 > Threshold 1
AND Quality problem
Rule 2
METRIC 2 < Threshold 2
13. 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
Lanza, Marinescu, 2006
24. Code City shows where your code lives.
Wettel, Lanza, 2007
classes are buildings grouped in quarters of packages
25. Trace Signals reveal similar execution traces.
Kuhn, Greevy 2006
lines show traces and colors denote concepts
26. Feature Views show how features cover classes.
Greevy etal, 2006
boxes are features and squares
are classes colored by activity
addFolder addPage
27. Object Dependencies show how features depend
on each other. Lienhard etal, 2007
Open Join Channel
Connect Send Message
dependencies between objects and their age measured in features
28. Object Flow shows how objects move through
the system. Lienhard etal, 2007
objects ïŹowing
through other objects
29. Hierarchy Evolution reveals evolution patterns.
Girba etal, 2005
histories of classes and of their inheritances
30. Evolution Radar shows co-change relationships.
DâAmbros, Lanza 2006
one package and its co-change relationships
39. Dynamix
... Instance Activation
FAMIX
... Class Method
40. Dynamix ObjectFlow
... Instance Activation ... Alias
FAMIX
... Class Method
41. Dynamix ObjectFlow
... Instance Activation ... Alias
FAMIX Dude
... Class Method ... Duplication
42. Dynamix ObjectFlow
... Instance Activation ... Alias
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
43. BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
44. BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
Hismo
Class Method
...
History History
45. BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
Subversion Hismo
File File Class Method
... ...
History Version History History
46. BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
Subversion Hismo ...
File File Class Method
... ... ...
History Version History History
47. BugsLife Dynamix ObjectFlow
... Bug Activity
FAMIX is now ...
more than a
Instance Activation ... Alias
language independent meta-model
CVS FAMIX Dude
File File
... ... Class Method ... Duplication
History Version
Subversion Hismo ...
File File Class Method
... ... ...
History Version History History
48. BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Core Dude
File File
... ... Class Method ... Duplication
History Version
Subversion Hismo ...
File File Class Method
... ... ...
History Version History History
49. FAMIX
BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
CVS FAMIX Core Dude
File File
... ... Class Method ... Duplication
History Version
Subversion Hismo ...
File File Class Method
... ... ...
History Version History History
50. FAMIX
BugsLife Dynamix ObjectFlow
... Bug Activity ... Instance Activation ... Alias
We are now working on FAMIX 3.0.
CVS FAMIX Core Dude
File File
... ... Class Method ... Duplication
History Version
Would you like to join?
Subversion Hismo ...
File File Class Method
... ... ...
History Version History History