pom
This is an old revision of the document!
Table of Contents
POM
Metrics definitions
| Names | Definitions | |
|---|---|---|
| ACAIC | Ancestor Class-Attribute Import Coupling | |
| ACMIC | Ancestors Class-Method Import Coupling | |
| AID | Average Inheritance Depth of an entity | |
| ANA | Count the average number of classes from which a class inherits informations | |
| CAM | Computes the relatedness among methods of the class based upon the parameter list of the methods | |
| CBO | Coupling Between Objects of one entity | |
| CBOingoing | Coupling Between Objects of one entity (in-going coupling only, towards the entity) | |
| CBOoutgoing | Coupling Between Objects of one entity (out-going coupling only, from the entity) | |
| CIS | Counts the number of public methods in a class | |
| CLD | Class to Leaf Depth of an entity. | |
| cohesionAttributes | Percentage of fields (declared and inherited) used by the declared methods of one entity | |
| connectivity | Number of couples of methods that use each other | |
| CP | Number of packages that depend on the package containing entity | |
| DAM | Returns the ratio of the number of private(protected) Attributes to the total number of Attributes declared in a class | |
| DCAEC | Returns the DCAEC (Descendants Class-Attribute Export Coupling) of one entity | |
| DCCdesign | Number of classes that a class is directly related to (by attribute and parameter declarations) | |
| DCCimplementation | Number of classes that a class is directly related to (by attribute declarations and message passing) | |
| DCMEC | Returns the DCMEC (Descendants Class-Method Export Coupling) of one entity | |
| DIT | Returns the DIT (Depth of inheritance tree) of an entity. | |
| DSC | Total number of classes in a model | |
| EIC | Number of inheritance relationships in which superclasses are in external packages | |
| EIP | Number of inheritance relationships where the superclass is in the package containing entity and the subclass is in another package | |
| FanOut | Number of methods and fields used by one entity | |
| ICHClass | Compute the complexity of an entity as the sum of the complexities of its declared and inherited methods | |
| IR | Number of calls from the methods of an entity to the methods and fields declared in its super-entities | |
| LCOM1 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
| LCOM2 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
| LCOM5 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
| LOC | Returns the numbre of line of code in the methods of an entity | |
| McCabe | Returns the sum of the cyclomatic complexities of the operations of an entity | |
| MFA | Ratio of the number of methods inherited by a class to the number of methods accessible by member methods of the class | |
| MLOCsum | Returns the numbre of line of code in the methods of an entity. Same as LOC | |
| MOA | Count the number of data declarations whose types are user defined classes | |
| NAD | number of attributes declared | |
| NADextended | Number of attributes declared in a class and in its member classes | |
| NCM | Returns the NCM (Number of Changed Methods) of an entity. | |
| NCP | the number of classes package containing entity | |
| NMA | Returns the NMA (Number of New Methods) of an entity | |
| NMD | number of methods declared | |
| NMDextended | Number of methods declared in the class and in its member classes | |
| NMI | Number of methods inherited by an entity | |
| NMO | Number of methods overridden by an entity | |
| NOA | Number of ancestors of an entity | |
| NOC | Number of children of an entity | |
| NOD | Number of descendents of an entity | |
| NOF | ||
| NOH | Number of class hierarchies in a model | |
| NOM | Numer of all methods defined in an entity | |
| NOP | Number of parents of an entity | |
| NOParam | Number of parameters of the methods of an entity | |
| NOPM | Count of the Methods that can exhibit polymorphic behavior | |
| NOTC | Number of invocations of JUnit assert methods that occur in the code of a test case | |
| NOTI | Number of transitive invocation among methods of a class. See the Law of Demeter for a definition | |
| NPrM | Number protected members of an entity | |
| oneWayCoupling | Coupling between objects of an entity (outgoing only). Same as CBOoutgoing | |
| PIIR | The number of inheritance relationships existing between classes in the package containing entity | |
| PP | The number of provider packages of the package containing entity | |
| REIP | EIP divided by the sum of PIIR and EIP | |
| RFP | the number of class references from classes belonging to other packages to classes belonging to the package containing entity | |
| RPII | PIIR divided by the sum of PIIR and EIP. | |
| RRFP | RFP divided by the sum of RFP and the number of internal class references | |
| RRTP | RTP divided by the sum of RTP and the number of internal class references | |
| RTP | The number of class references from classes in the package containing entity to classes in other packages | |
| SIX | Returns the SIX (Specialisation IndeX) of an entity | |
| WMC1 | Computes the weight of an entity considering the complexity of a method to be unity | |
| McCabe | McCabe Complexity: Number of points of decision + 1 | |
| CBO | Coupling Between Objects of one entity | |
| LCOM5 | Returns the LCOM (Lack of COhesion in Methods) of an entity | |
| WMC | Computes the weight of an entity by computing the number of method invocations in each method |
Computing Metrics
Computing POM metrics using PADL is made easy by the helper class pom.helper.MetricsGenerator. After having installed CPL, PADL, and POM, just go into the POM Tests project and have a look at this class. It provides a main method with snippets of code to call one of the three methods:
computeMetricsFromDirectorycomputeMetricsFromEclipsecomputeMetricsFromJARs
which can be used to compute automatically metrics from various input sources. Also have a look at the constant array listing the metrics that must be computed or avoided: METRICS_TO_AVOID and METRICS_TO_COMPUTE.
pom.1389333366.txt.gz · Last modified: (external edit)
