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
Next revision Both sides next revision
pom [2010/03/11 22:32]
ptidejteam created
pom [2014/02/19 07:55]
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: 2019/10/06 20:37 (external edit)