Provides metrics and range classes for the model. This package details the available range types and metric types.

The Metric superclass is subclassed by ActualMetric and DerivedMetric. In this model, an ActualMetric holds any metrics data, whereas a DerivedMetric acts as a proxy to another metric so that metrics data does not have to be duplicated.

Five different range methods are provided under the abstract Range superclass. IntegerRange describes the most simple case, a range between two integer values. RealRange provides the same functionality; however, real numbers are an acceptable input. The other three types of range all use maps to store the ranges, they have a common superclass MappedRange. OrderedNominalRange is the simplest of these implementations, this range simply consists of a set of Integer to String pairings. CompositeIntegerRange and CompositeRealRange allow ranges, IntegerRange and RealRange respectively, to be mapped to String values. This allows a specific range of values to be specified in a certain manner. (E.g. LOC in a method, Good 1-15, Ok 16-20, Bad 21-1000 - using CompositeIntegerRange)