User Tools

Site Tools


pom

Differences

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

Link to this comparison view

Next revision
Previous revision
pom [2010/03/11 22:32]
ptidejteam created
pom [2014/02/19 07:56]
yann
Line 1: Line 1:
-=== Metrics definitions ​===+====== POM ======
  
-ACAIC Ancestor Class-Attribute Import Coupling +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 can be a several kinds: 
-ACMIC Ancestors Class-Method Import Coupling +  * Unary or binary, depending on whether they take as input one or two [[padl|IFirstClassEntity(ies)]];​ 
-AID Average Inheritance Depth of an entity +  * Context dependent or independent,​ depending on whether they can be computed by considering given [[padl|IFirstClassEntity(ies)]] independently of the rest of the model. 
-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 +===== Metrics Definition ===== 
-CBOin Coupling Between Objects of one entity + 
-CBOout Coupling Between Objects of one entity +^ Names ^ Definitions ^ 
-CIS Counts ​the number ​of public methods in a class +ACAIC Ancestor Class-Attribute Import Coupling ​| 
-CLD Class to Leaf Depth of an entity. +ACMIC Ancestors Class-Method Import Coupling ​| 
-cohesionAttributes  +AID Average Inheritance Depth of an entity ​| 
-connectivity  +ANA | Average ​number of entities ​from which an entity ​inherits informations ​wrt. to the total number of entities in a model | 
-CP The number ​of packages that depend on the package containing entity +CAM | Relatedness ​among methods of an entity ​based on the parameter list of its methods ​| 
-DAM Returns the ratio of the number of private(protected) ​Attributes to the total number of Attributes ​declared in a class +| CBO | Coupling Between Objects of one entity ​| 
-DCAEC Returns the DCAEC (Descendants Class-Attribute Export Couplingof one entity +| CBOingoing | ​Coupling Between Objects of one entity ​(in-going coupling only, towards the entity) | 
-DCC Returns the number ​of classes a class is directly related to(by attribute declarations and message passing +| CBOoutgoing | Coupling Between Objects of one entity (out-going coupling only, from the entity) | 
-DCMEC Returns the DCMEC (Descendants Class-Method Export Couplingof one entity +| CIS | Number ​of public methods in a class | 
-DIT Returns the DIT (Depth of inheritance tree) of an entity. +CLD Class to Leaf Depth of an entity ​| 
-DSC Count of the total number of classes ​in the design +cohesionAttributes | Percentage of fields (declared and inherited) used by the declared methods of one entity wrt. all its fields | 
-EIC the number ​of inheritance relationships in which superclasses ​are in external packages +connectivity | Number of couples of methods that use each other | 
-EIP the number ​of inheritance relationships where the superclass ​is in the package containing entity and the subclass ​is in another package +CP | Number ​of packages that depend on the package containing ​the entity ​| 
-ICHClass Compute the complexity ​of an entity as the sum of the complexities of its declared and inherited methods +DAM | Ratio of the number of private (and protected) ​fields wrt. the total number of fields ​declared in an entity | 
-LCOM1 Returns ​the LCOM (Lack of COhesion in Methodsof an entity +DCAEC Descendants Class-Attribute Export Coupling of one entity ​| 
-LCOM2 Returns the LCOM (Lack of COhesion in Methodsof an entity +| DCCdesign | Number ​of classes ​that a class is directly related to (by attribute and parameter declarations) | 
-MFA The ratio of the number of methods inherited by a class to the number of methods accessible by member methods of the class +| DCCimplementation | Number of classes that a class is directly related to (by attribute declarations and message passing) | 
-MOA Count ​the number ​of data declarations whose types are user defined ​classes +DCMEC Descendants Class-Method Export Coupling of one entity ​| 
-NAD number ​of attributes declared +DIT Depth of Inheritance Tree of an entity ​| 
-NADExtended Number of attributes declared in a class and in its member ​classes +DSC | Number ​of top-level entities ​in a model | 
-NCM Returns the NCM (Number of Changed Methodsof an entity. +EIC | Number ​of inheritance relationships in which super-entities ​are in external packages ​| 
-NCP the ​number ​of classes ​package ​containing entity +EIP | Number ​of inheritance relationships where the super-entity ​is in the package containing ​the entity and the sub-entites ​is in another package ​| 
-NMA Returns the NMA (Number of New Methods) of an entity +| FanOut | Number of methods and fields used by one entity | 
-NMD number ​of methods declared +ICHClass | Complexity ​of an entity as the sum of the complexities of its declared and inherited methods ​| 
-NMDExtended Number of methods declared in the class and in its member ​classes +| IR | Number of calls from the methods of an entity to the methods and fields declared in its super-entities | 
-NMI Returns the NMI (Number of Methods Inherited) of an entity +| LCOM1 | ​Lack of COhesion in Methods of an entity ​| 
-NMO Returns the NMO (Number of Methods Overridden) of an entity +LCOM2 Lack of COhesion in Methods of an entity ​
-NOA Returns the NOA (Number Of Ancestorsof an entity +| LCOM5 | Lack of COhesion in Methods of an entity | 
-NOC Returns the NOC (Number Of Childrenof an entity +| LOC | Sum of the numbers of lines of code in the methods of an entity | 
-NOD Returns the NOD (Number ​Of Descendents) ​of an entity +| McCabe | Sum of the cyclomatic complexities of the operations of an entity | 
-NOH Count The number of class hierarchies ​in the design +MFA | Ratio of the number of methods inherited by an entity wrt. the number of methods accessible by member methods of the entity | 
-NOM Counts all methods defined in a class +| MLOCsum | Sum of the numbers of lines of code in the methods of an entity. Same as LOC | 
-NOP Returns the NOP (Number Of Parentsof an entity +| MOA | Number ​of data declarations whose types are user-defined ​entities | 
-NOParam Compute the average number ​of parameters of methods +NAD | Number ​of Attributes Declared by an entity | 
-NOPM Count of the Methods that can exhibit polymorphic behavior +| NADextended | ​Number of Attributes Declared by an entity ​and in its member ​entities | 
-PIIR The number ​of inheritance relationships existing between ​classes ​in the package containing entity +NCM Number of Changed Methods of an entity ​wrtits hierarchy | 
-PP The number ​of provider packages of the package containing entity +NCP | Number of Classes Package containing an entity, i.e., the "​depth" ​of the package ​containment | 
-REIP EIP divided by the sum of PIIR and EIP +NMA Number of Methods ​Added by an entity ​wrt. its hierarchy | 
-RFP the ​number of class references from classes ​belonging to other packages to classes ​belonging to the package containing entity +NMD | Number ​of Methods Declared by an entity | 
-RPII PIIR divided by the sum of PIIR and EIP. +| NMDextended | ​Number of Methods Declared by an entity ​and its member ​entities | 
-RRFP RFP divided by the sum of RFP and the number of internal class references +NMI Number of Methods Inherited ​by an entity. Constructors or not considered as method, they are not counted in the result of the metric | 
-RRTP RTP divided by the sum of RTP and the number of internal class references +NMO Number of Methods Overridden ​by an entity ​| 
-RTP The number ​of class references from classes ​in the package containing entity to classes ​in other packages +NOA Number Of Ancestors of an entity ​| 
-SIX Returns the SIX (Specialisation IndeXof an entity +NOC Number Of Children of an entity ​| 
-WMC1 Computes the weight ​of an entity considering ​the complexity ​of a method to be unity +NOD Number ​of descendents ​of an entity ​| 
-McCabe McCabe Complexity: ​Number of points ​of decision + 1 +| NOF | Number Of Fields declared by an entity | 
-CBO Coupling Between Objects ​of one entity +NOH | Number Of Hierarchies ​in a model | 
-LCOM5 Returns ​the LCOM (Lack of COhesion in Methods) ​of an entity +NOM | Number Of Methods declared by an entity | 
-WMC Computes ​the weight ​of an entity ​by computing ​the number ​of method invocations ​in each method ​+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''​. As other repositories,​ POM makes it easy [[repositories|to access the different kinds of metrics]].
pom.txt · Last modified: 2017/09/06 01:54 (external edit)