Using Metrics to Identify Design Using Metrics to Identify Design Patterns in Object-Oriented Software Patterns in Object-Oriented Software Patterns in Object-Oriented Software Patterns in Object-Oriented Software G. G. Antoniol Antoniol EPM
Outline � Motivations; Motivations; � Design patterns concepts; Design patterns concepts; � Design patterns recovery approach; Design patterns recovery approach; � Experimental results; Experimental results; � Conclusions. Conclusions. EPM
Motivations � Program comprehension; Program comprehension; � Aid in maintenance; Aid in maintenance; � Design � Design Design-implementation compliance check; Design-implementation compliance check; implementation compliance check; implementation compliance check; � Design quality evaluation. Design quality evaluation. EPM
Design Patterns � Reusable, well Reusable, well-known known Proxy Pattern solutions to common solutions to common Subject Proxy design problems; design problems; op() op() � Categories: Categories: RealSub -> op() � structural structural ; RealSub � creational creational op() Refers � behavioral. behavioral. EPM
Pattern/Motif/Architecture � Motif is just an instance Motif is just an instance in a code of a trait, act, in a code of a trait, act, � Pattern also means Pattern also means feature something we feature something we intent, consequences, … intent, consequences, … observe similar in nature observe similar in nature to a DP to a DP to a DP to a DP � The pattern encompasses The pattern encompasses � Actually we observe the Actually we observe the a lot more then structure a lot more then structure micro micro-architecture and architecture and or behaviour or behaviour related motifs pointing related motifs pointing to DP to DP � Motif intent may never Motif intent may never be known be known EPM
Approach � Metrics based multi Metrics based multi-stage recovery process for stage recovery process for structural design patterns; structural design patterns; � Conservative recovery process; � Conservative recovery process; Conservative recovery process; Conservative recovery process; � Uniform representation of design and code Uniform representation of design and code using a design description language; using a design description language; � Experimented on industrial and public Experimented on industrial and public-domain domain C++ applications. C++ applications. EPM
Old Metric Based Recovery Process EPM
A META-Level Design/Code AOL Representation CLASS Subject � AOL: a design AOL: a design OPERATIONS description language; description language; PUBLIC op(); CLASS RealSub OPERATIONS � Captures OO design Captures OO design PUBLIC op(); PUBLIC op(); concepts from design concepts from design CLASS Proxy OPERATIONS and/or code; and/or code; PUBLIC op(); GENERALIZATION Subject � UML UML-based; based; SUBCLASSES Realsub, Proxy; � StP/OMT StP/OMT - AOL AOL RELATION Refers ROLES translator; translator; CLASS Proxy MULT one, CLASS RealSub MULT one � C++ C++ - AOL translator. AOL translator. EPM
Computed Metrics � Private, public, protected methods and Private, public, protected methods and attributes attributes � Relation number: Relation number: Relation number: Relation number: � association association � aggregation aggregation � inheritance inheritance � Depth of the inheritance tree, number of Depth of the inheritance tree, number of children ... children ... EPM
Multi-Stage Pattern Recovery R � Given a design pattern Given a design pattern p = ( < e ,..., e > , ) 1 k � Pattern Recovery: check constraints on all Pattern Recovery: check constraints on all dispositions of n classes k by k. dispositions of n classes k by k. dispositions of n classes k by k. dispositions of n classes k by k. Complexity: O n k ( ) � Complexity: EPM
Metrics-based stage � Software metrics allows to effectively prune the search Software metrics allows to effectively prune the search space by means of class metrics and class pairs space by means of class metrics and class pairs shortest path; shortest path; � First kind of constraints: First kind of constraints: � single class level metrics; single class level metrics; � Output: Output: � a set of class candidate sets for each pattern searched. a set of class candidate sets for each pattern searched. EPM
Metrics-based Stage: continued M m m =< ,..., > R p = ( < e ,..., e > , ) p 1 k 1 k [ ] C = { x | x ∈ D , m ∈ M : ∀ m ∈ m , m x ≥ m } i p i , j i i , j i ij Example: Proxy . <Sub,RealSub,Proxy>, k=3. Suppose collected metrics are: kids nbr, father nbr, association nbr [ ] [ ] [ ] > M =< 2,0,0 , 0 , 1 , 0 , 0 , 1 , 1 Proxy < c c , , c >∈ Proxy ( D ) only 1 2 3 if # kids ( c ) 2 # inh ( c ) 1 # inh ( c ) 1 #assoc(c ) 1 ≥ ≥ ≥ ≥ 1 2 3 3 EPM
Metrics-based Stage: Shortest Path � Second kind of constraint: topology based; Second kind of constraint: topology based; � Class pairs shortest path; Class pairs shortest path; � Given a class: the remaining pattern � Given a class: the remaining pattern Given a class: the remaining pattern Given a class: the remaining pattern constituents must be reachable in a number of constituents must be reachable in a number of steps constrained by the pattern structure; steps constrained by the pattern structure; R � Output: reduced candidate sets Output: reduced candidate sets j EPM
Topology Constraint EPM
Shortest Path Equations y ∈ C Let be the smallest set given build C min min ( ) R y | x C : ∀ ∈ i i i ( , ) ShPath x y = ShPath ( e , e ) i min R = { < r ( y ),.., y ,.., r ( y ) > ∧ y ∈ C ∧ r ( y ) ∈ R ( y )} 1 n min i i EPM
Exact Structural Constraints Exact design pattern relations are verified on reduced candidate sets. Let R ⊆ R s be the pattern subset of structural relations: R S = { x | x =< x ,..., x >∈ R ∧ ∀ r ∈ : 1 n s ⇒ ( ,..., ) ( ,..., )} r e e r x x p t p t EPM
Delegation Stage � A class may implement an operation by calling A class may implement an operation by calling a methods of another class (to which it is a methods of another class (to which it is associated) thus it delegates the responsibility associated) thus it delegates the responsibility associated) thus it delegates the responsibility associated) thus it delegates the responsibility to it to it � Method calls of candidate classes are analyzed Method calls of candidate classes are analyzed to verify delegation; to verify delegation; � Often not applicable to design since method Often not applicable to design since method calls is always not documented. calls is always not documented. EPM
Limitations of the approach � Code to AOL translation is affected by inherent Code to AOL translation is affected by inherent ambiguities in language implementation of ambiguities in language implementation of associations and aggregations see C++ ; associations and aggregations see C++ ; � Heuristics example: Heuristics example: � associations: object pointer/reference data member or associations: object pointer/reference data member or method formal parameter; method formal parameter; � aggregations: object instance or array data member, class aggregations: object instance or array data member, class template argument; template argument; � Solution: search also Solution: search also soft soft patterns, where aggregations patterns, where aggregations are substituted by associations. are substituted by associations. EPM
Experiment: Public-Domain Sw � Design pattern recovery from code; Design pattern recovery from code; � 6 C++ applications, ranging from 5 to 127KLOC for a 6 C++ applications, ranging from 5 to 127KLOC for a total size of 328KLOC; total size of 328KLOC; � Not explicitly designed using patterns; Not explicitly designed using patterns; � Reduction effectiveness of the three stages: Reduction effectiveness of the three stages: � metrics metrics-based: 3 based: 3-4 orders of magnitude; 4 orders of magnitude; � structural: 1 structural: 1-2 orders of magnitude; 2 orders of magnitude; � delegation: 2 delegation: 2-3 times. 3 times. EPM
Recommend
More recommend