1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( [email protected] )...
-
Upload
wyatt-coffin -
Category
Documents
-
view
213 -
download
1
Transcript of 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( [email protected] )...
![Page 1: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/1.jpg)
1
A Graph-Based Metamodelfor Object-Oriented
Software Metrics
A Graph-Based Metamodelfor Object-Oriented
Software Metrics
Tom Mens ([email protected])
Postdoctoral Fellow – Fund for Scientific Research (Flanders)
Vrije Universiteit Brussel, Belgium
![Page 2: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/2.jpg)
2ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
GoalGoal
use graphs as an underlying formalism/representation to define a formal framework for OO metrics independent of
the programming language (e.g., Smalltalk, Java, or C++) the life-cycle phase (e.g., design or implementation)
identify a minimal set of primitive functions to cover an as wide variety of OO metrics as possible
implement open and customisable metrics tools easy to add new OO metrics easy to incorporate new language features easy to use and customise at different levels of abstraction
![Page 3: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/3.jpg)
3ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
ApproachApproach
top-down improve existing metrics tools
CodeCrawler SoulMetrics
bottom-up develop generic graph-based formalism
validate on a variety of OO metrics suites on a significant number of different programs
![Page 4: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/4.jpg)
4ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Tool support: CodeCrawlerTool support: CodeCrawler
a language independent reverse engineering tool combines metrics and software visualization based on the FAMIX language-independent metamodel implemented in VisualWorks 3.0 Smalltalk runs on every major platform
![Page 5: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/5.jpg)
6ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Tool support: CodeCrawlerTool support: CodeCrawler
![Page 6: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/6.jpg)
7ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Tool support: SoulMetricsTool support: SoulMetrics
a generic logic-programming-based metrics tool defined in SOUL, a logic meta-programming environment on top of Smalltalk VisualWorks 7 a collection of logic predicates fully integrated in the Smalltalk GUI (browser) runs on every major platform
![Page 7: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/7.jpg)
8ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Tool support: SoulMetricsTool support: SoulMetrics
![Page 8: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/8.jpg)
10ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Tool support: SoulMetricsTool support: SoulMetrics
![Page 9: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/9.jpg)
11ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Represent software as graphsRepresent software as graphs
Directed attributed multi-graphs
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 10: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/10.jpg)
12ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
pred: Node PF(Node) predecessor nodes
succ: Node PF(Node) successor nodes
fanIn: Node PF(Edge) incoming edges
fanOut: Node PF(Edge) outgoing edges
path: Node Node PF(Edge) edge paths
+ iterative versions predi, pred+, pred*, succi, succ+, succ*
![Page 11: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/11.jpg)
13ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
pred(c4)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 12: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/12.jpg)
14ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
succ(c4)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 13: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/13.jpg)
15ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
fanIn(c3)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 14: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/14.jpg)
16ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
fanOut(c3)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 15: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/15.jpg)
17ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Primitive graph functionsPrimitive graph functions
path(c2,c)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 16: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/16.jpg)
18ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Qualified graph functionsQualified graph functions
pred: NodeNodeConstraintEdgeConstraint PF(Node) idem for predi, pred+, pred*, succi, succ+, succ*
fanIn: NodeEdgeConstraint PF(Edge) idem for fanOut
path: NodeNodeNodeConstraintEdgeConstraint PF(Edge+)
begin is defined in terms of pred* calculates all nodes that have no predecessors
end is defined in terms of succ* calculates all nodes that have no successors
![Page 17: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/17.jpg)
19ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Qualified graph functionsQualified graph functions
fanIn(c,isNoUsesEdge)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 18: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/18.jpg)
20ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Qualified graph functionsQualified graph functions
pred(c,isClassNode,isUsesEdge)
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 19: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/19.jpg)
21ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Object-oriented inheritance metricsObject-oriented inheritance metrics
Let nNode such that isClassNode(n)subclasses(n) := pred(n,isClassNode,isInheritsEdge)
descendants(n) := pred+(n,isClassNode,isInheritsEdge)
leafClasses(n) := start(n,isClassNode,isInheritsEdge)
inheritanceToRoot(n) := path(n,m,isClassNode,isInheritsEdge)
mend(n,isClassNode,isInheritsEdge)
NOS(n) = |subclasses(n)|
NOD(n) = |descendants(n)|
NOL(n) = |leafClasses(n)|
DIT(n) = average(inheritanceToRoot(n),map(length))
![Page 20: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/20.jpg)
22ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Object-oriented inheritance metricsObject-oriented inheritance metrics
subclasses(c) NOS(c)=2
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 21: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/21.jpg)
23ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Object-oriented inheritance metricsObject-oriented inheritance metrics
descendants(c) NOD(c)=4
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 22: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/22.jpg)
24ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Object-oriented inheritance metricsObject-oriented inheritance metrics
leafClasses(c) NOL(c)=2
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 23: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/23.jpg)
25ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Object-oriented inheritance metricsObject-oriented inheritance metrics
inheritanceToRoot(c2) DIT(c2)=2
publicclassc4
protectedclassc3
privateclassc1
protectedclassc2
publicclass
c
e6uses
e3uses
e4uses
publicpackage
p1e1
uses
e8inherits
e5uses private
packagep2
e2imports
e7inherits
e12uses
e9inherits
e10inherits
e11inherits
![Page 24: 1 A Graph-Based Metamodel for Object-Oriented Software Metrics Tom Mens( tom.mens@vub.ac.be ) tom.mens@vub.ac.be Postdoctoral Fellow – Fund for Scientific.](https://reader035.fdocuments.in/reader035/viewer/2022070307/551a721a5503463e778b6059/html5/thumbnails/24.jpg)
26ICGT, 10 October 2002, Barcelona © Tom Mens, Vrije Universiteit Brussel
Ratio MetricsRatio Metrics
MethodHidingFactor(n)= 1 – Ratio(succ,isMethodNode,isPublicNode,isContainsEdge)(n)
= 1- |succ(n,isMethodNodeisPublicNode,isContainsEdge)|
|succ(n,isMethodNode,isContainsEdge)|
AbstractSubclassRatio(n)= 1 – Ratio(pred,isClassNode,isAbstractNode,isInheritsEdge)(n)
LeafclassRatio(n)= 1 – Ratio(pred*,isClassNode,isInheritanceLeaf,isInheritsEdge)(n)