Software Metrics Metamodel
# Software Metrics Metamodel

The OMG Structured Metrics Metamodel (SMM) specification defines a standard Metrics Metamodel. It is a publicly available specification from the Object Management Group (OMG). SMM specifies a metamodel for defining, representing and exchanging both measures and measurement information related to any structured information model, such as the OMG Meta Object Facility (MOF™) standard, defining an XMI interchange format between metric extraction tools. It is used to maintain metrics by a number of other OMG specifications such as the Knowledge Discovery Metamodel and the Value Delivery Metamodel.

## Key concepts

The SMM standard includes elements representing the concepts to express a wide range of diversified measures:

* Measures denote the re-usable definitions of how measurements are calculated.
* Measurements are the results of applying measures, via observations.
* Libraries maintain measures and their related information, such as characteristics and units-of-measure, providing re-use in different contexts.

## Measures

SMM specifies the representation of measures without detailing the representation of the entities measured.

SMM defines representations for:

* Direct measures that are taken directly against a measurand. Examples include counts and named measures such as McCabe’s cyclomatic complexity or gross domestic product. Values may be imported or queried via SMM operations.
* Aggregate measures that are calculated from base measurements on features of a measurand. SMM operations specify the feature retrieval. Vote totals, volumes, and net profits can be defined as aggregate measures.
* Transmuting measures that rescale, grade or rank base measurements of a measurand. Fahrenheit to Celsius is a rescaling; clothes sizes of small, medium and large are grades; and customer satisfaction units derived from delivery time is a ranking.

## Measurement

The process of extracting metrics, requires a SMM tool to apply the measures to an observation scope that hold one or more models. This tool will produce a graph containing measurements, that maps to the measure graph. On this graph every node corresponds to the result of a measure on a measurand. Therefore, measures are mapped to 0 or more measurements where 0 indicates that no measurands corresponding to the scope of the measure were found.

## Observations

The SMM allows for multiple measurement graphs to be stored. Whenever a measurement graph is produced, it is associated to an observation that is dated and tagged with information describing the tool used to extract the metrics. Observations exist to be passed to metric reporting tools that can provide additional features like visualization and statistical control.

