Various software package metrics are used in
modular programming
Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functio ...
. They have been mentioned by
Robert Cecil Martin
Robert Cecil Martin (born 5 December 1952), colloquially called "Uncle Bob", is an American software engineer, instructor, and best-selling author. He is most recognized for developing many software design principles and for being a founder of ...
in his 2002 book ''Agile software development: principles, patterns, and practices''.
The term
software package here refers to a group of related
classes in
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
.
* Number of classes and interfaces: The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
*
Afferent couplings (Ca): The number of classes in other packages that depend upon classes within the package is an indicator of the package's responsibility.
Afferent couplings
Various software package metrics are used in modular programming. They have been mentioned by Robert Cecil Martin in his 2002 book ''Agile software development: principles, patterns, and practices''.
The term software package here refers to a gro ...
signal inward.
*
Efferent coupling
Efferent coupling is a coupling metric in software development. It measures the number of data types a class knows about.
This includes inheritance, interface implementation, parameter types, variable types, and exceptions.
This has also been r ...
s (Ce): The number of classes in other packages that the classes in a package depend upon is an indicator of the package's dependence on externalities.
Efferent couplings signal outward.
* Abstractness (A): The ratio of the number of abstract classes (and interfaces) in the analyzed package to the total number of classes in the analyzed package. The range for this metric is 0 to 1, with A=0 indicating a completely concrete package and A=1 indicating a completely abstract package.
* Instability (I): The ratio of efferent coupling (Ce) to total coupling (Ce + Ca) such that I = Ce / (Ce + Ca). This metric is an indicator of the package's resilience to change. The range for this metric is 0 to 1, with I=0 indicating a completely stable package and I=1 indicating a completely unstable package.
* Distance from the main sequence (D): The perpendicular distance of a package from the idealized line A + I = 1. D is calculated as D = , A + I - 1 , . This metric is an indicator of the package's balance between abstractness and stability. A package squarely on the main sequence is optimally balanced with respect to its abstractness and stability. Ideal packages are either completely abstract and stable (I=0, A=1) or completely concrete and unstable (I=1, A=0). The range for this metric is 0 to 1, with D=0 indicating a package that is coincident with the main sequence and D=1 indicating a package that is as far from the main sequence as possible.
* Package dependency cycles: Package dependency cycles are reported along with the hierarchical paths of packages participating in package dependency cycles.
See also
*
Dependency inversion principle
In object-oriented design, the dependency inversion principle is a specific methodology for loosely coupling software modules. When following this principle, the conventional dependency relationships established from high-level, policy-settin ...
– a method to reduce coupling (Martin 2002:127).
References
*
External links
OO Metricstutorial explains package metrics with examples, but gets the Instability index wrong; see page 262 of Martin's Agile Software Development: Principles, Patterns and Practices. Pearson Education. {{ISBN, 0-13-597444-5.
Software metrics
Object-oriented programming