This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
pom [2014/01/10 06:35] yann |
pom [2025/01/15 21:40] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== POM ====== | ====== 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. | + | 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: |
+ | * Unary or binary, depending on whether they take as input one or two [[padl|IFirstClassEntity(ies)]]; | ||
+ | * Context dependent or independent, depending on whether they can be computed by considering given [[padl|IFirstClassEntity(ies)]] independently of the rest of the model. | ||
- | ===== Metrics definitions ===== | + | ===== Metrics Definition ===== |
^ Names ^ Definitions ^ | ^ Names ^ Definitions ^ | ||
- | | ACAIC | Ancestor Class-Attribute Import Coupling | | | + | | ACAIC | Ancestor Class-Attribute Import Coupling | |
| ACMIC | Ancestors Class-Method Import Coupling | | | ACMIC | Ancestors Class-Method Import Coupling | | ||
| AID | Average Inheritance Depth of an entity | | | AID | Average Inheritance Depth of an entity | | ||
Line 79: | Line 81: | ||
| 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). | | | 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). | | ||
- | ===== Computing Metrics ===== | + | ===== 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: | 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: | ||
Line 85: | Line 87: | ||
* ''computeMetricsFromEclipse'' | * ''computeMetricsFromEclipse'' | ||
* ''computeMetricsFromJARs'' | * ''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''. | + | 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]]. |