User Tools

Site Tools


pom

This is an old revision of the document!


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:

  • computeMetricsFromDirectory
  • computeMetricsFromEclipse
  • computeMetricsFromJARs

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: 2018/03/04 02:53 (external edit)