User Tools

Site Tools


pom

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pom [2014/01/10 06:36]
yann
pom [2017/09/06 01:54]
Line 1: Line 1:
-====== POM ====== 
  
-POM stands for Primitives, Operations, Metrics and is a framework built to compute software metrics on PADL models. A paper introducing POM has been published by [[http://​www.ptidej.net/​publications/​Author/​ZAIDI-F.php|Zaidi,​ Guéhéneuc,​ and Sahraoui]] and can be used as reference. 
- 
-===== Metrics Definition ===== 
- 
-^ Names ^ Definitions ^ 
-| ACAIC | Ancestor Class-Attribute Import Coupling | 
-| ACMIC | Ancestors Class-Method Import Coupling | 
-| AID | Average Inheritance Depth of an entity | 
-| ANA | Average number of entities from which an entity inherits informations wrt. to the total number of entities in a model | 
-| CAM | Relatedness among methods of an entity based on the parameter list of its 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 | 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 wrt. all its fields | 
-| connectivity | Number of couples of methods that use each other | 
-| CP | Number of packages that depend on the package containing the entity | 
-| DAM | Ratio of the number of private (and protected) fields wrt. the total number of fields declared in an entity | 
-| 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 | Descendants Class-Method Export Coupling of one entity | 
-| DIT | Depth of Inheritance Tree of an entity | 
-| DSC | Number of top-level entities in a model | 
-| EIC | Number of inheritance relationships in which super-entities are in external packages | 
-| EIP | Number of inheritance relationships where the super-entity is in the package containing the entity and the sub-entites is in another package | 
-| FanOut | Number of methods and fields used by one entity | 
-| ICHClass | 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 | Lack of COhesion in Methods of an entity | 
-| LCOM2 | Lack of COhesion in Methods of an entity | 
-| LCOM5 | Lack of COhesion in Methods of an entity | 
-| LOC | Sum of the numbers of lines of code in the methods of an entity | 
-| McCabe | Sum of the cyclomatic complexities of the operations of an entity | 
-| MFA | Ratio of the number of methods inherited by an entity wrt. the number of methods accessible by member methods of the entity | 
-| MLOCsum | Sum of the numbers of lines of code in the methods of an entity. Same as LOC | 
-| MOA | Number of data declarations whose types are user-defined entities | 
-| NAD | Number of Attributes Declared by an entity | 
-| NADextended | Number of Attributes Declared by an entity and in its member entities | 
-| NCM | Number of Changed Methods of an entity wrt. its hierarchy | 
-| NCP | Number of Classes Package containing an entity, i.e., the "​depth"​ of the package containment | 
-| NMA | Number of Methods Added by an entity wrt. its hierarchy | 
-| NMD | Number of Methods Declared by an entity | 
-| NMDextended | Number of Methods Declared by an entity and its member entities | 
-| NMI | Number of Methods Inherited by an entity. Constructors or not considered as method, they are not counted in the result of the metric | 
-| 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 | Number Of Fields declared by an entity | 
-| NOH | Number Of Hierarchies in a model | 
-| NOM | Number Of Methods declared by an entity | 
-| NOP | Number Of Parents of an entity | 
-| NOParam | Number of parameters of the methods of an entity | 
-| NOPM | Number Of Polymorphic Methods in an entity wrt. its hierarchy | 
-| 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 one entity (out-going coupling only, from the entity). Same as CBOoutgoing | 
-| PIIR | Number of inheritance relationships existing between entities in the package containing an entity | 
-| PP | Number of provider packages of the package containing an entity | 
-| REIP | EIP divided by the sum of PIIR and EIP | 
-| RFC | Response for class: number of methods of an entity and of methods of other entities that are invoked by the methods of the entity | 
-| RFCextended | Response for class: number of methods of an entity and of methods of other entities that are invoked by the methods of the entity plus number of methods declared by that entity | 
-| RFP | Number of references from entities belonging to other packages to entities belonging to the package containing an 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 | Number of references from entities in the package containing an entity to entities in other packages | 
-| SIX | Specialisation IndeX of an entity | 
-| TestCaseLOC | Number of lines of code of all the methods of a test case | 
-| TLOC | Number of lines of code of all the methods of an entity. Same as LOC | 
-| VGSum | Sum of the cyclomatic complexities of the operations of an entity. Same as McCabe | 
-| WMC1 | Weight of an entity considering the complexity of each of its method as being 1. (Default constructors are considered even if not explicitely declared) | 
-| WMCinvocations | Weight of an entity considering the complexity of each of its method as being the numbers of invocations that they perform. (Default constructors are considered even if not explicitely declared). | 
-| WMCmccabe | Weight of an entity considering the complexity of each of its method as being their McCabe cyclomatic complexity. (Default constructors are considered even if not explicitely declared). | 
- 
-===== Metrics Computation ===== 
- 
-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.txt · Last modified: 2017/09/06 01:54 (external edit)