Software package metrics

Software package metrics

This article describes various software package metrics. They have been mentioned by Robert Cecil Martin in his "Agile Software Development: Principles, Patterns, and Practices" book (2002).

The term "software package", as it is used here, refers to a group of related classes (in the field of object-oriented programming).

* 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 other packages that depend upon classes within the package is an indicator of the package's responsibility.
* Efferent Couplings (Ce): The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
* 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 instable package.
* Distance from the Main Sequence (D): The perpendicular distance of a package from the idealized line 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 (x=0, y=1) or completely concrete and instable (x=1, y=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

* Inversion of Control – a method to reduce coupling, also known as the "Dependency Inversion Principle" (Martin 2002:127).

References

*cite book
author = Robert Cecil Martin
year = 2002
title = Agile Software Development: Principles, Patterns and Practices
publisher = Pearson Education
id = ISBN 0-13-597444-5

External links

* [http://www.parlezuml.com/metrics/OO%20Design%20Principles%20&%20Metrics.pdf OO Metrics] tutorial explains package metrics with examples
* [http://www.virtualmachinery.com/jhawkprod.htm JHawk] - Java Metrics tool, All the most important code metrics. Eclipse, stand alone and command line versions
* [http://www.ndepend.com/ NDepend] - .NET application that supports the package dependency metrics.
* [http://clarkware.com/software/JDepend.html JDepend] - Java application that supports the package dependency metrics.
* [http://www.stan4j.com/ STAN] - Structure Analysis for Java. Eclipse integrated and standalone visual dependency analysis, quality metrics and reporting.
* [http://www.campwoodsw.com/sourcemonitor.html SourceMonitor] - Something for C++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6)


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • Software metric — A software metric is a measure of some property of a piece of software or its specifications.Since quantitative methods have proved so powerful in the other sciences, computer science practitioners and theoreticians have worked hard to bring… …   Wikipedia

  • Sustainability metrics and indices — Sustainable development indicators (SDI) have the potential to turn the generic concept of sustainability into action. Today, however, we are far from achieving this potential. We can t currently find a standardized set of indicators and several… …   Wikipedia

  • Income inequality metrics — The concept of inequality is distinct from that of poverty[1] and fairness. Income inequality metrics or income distribution metrics are used by social scientists to measure the distribution of income, and economic inequality among the… …   Wikipedia

  • Steam (software) — Steampowered redirects here. For the steam engine, see Steam engine. Steam …   Wikipedia

  • Robert Cecil Martin — Known colloquially as Uncle Bob , Robert Cecil Martin has been a software professional since 1970 and an international software consultant since 1990. In 2001, he led the group that created Agile software development from Extreme programming… …   Wikipedia

  • Microsoft Visual Studio — Visual Studio 2010 SP1 editing a WPF application Developer(s) …   Wikipedia

  • CCU Delivery — Customer Configuration Updating (CCU) is a production method developed by researchers of the Utrecht University. This method should help product software developers in structuring the process of providing customers with new versions of products… …   Wikipedia

  • Capability Maturity Model — The Capability Maturity Model (CMM) is a process capability maturity model which aids in the definition and understanding of an organization s processes .The CMM was first described in Managing the Software Process by Watts Humphrey, [cite book… …   Wikipedia

  • Acquisition Initiation (ISPL) — Acquisition initiation is the first process within the Information Services Procurement Library and is executed by the customer organization, intending to procure Information Services.Two main activities lie within this process: the making of the …   Wikipedia

  • Quantitative comparative linguistics — is a branch of comparative linguistics that applies mathematical models to the problem of classifying language relatedness. This includes the use of computational phylogenetics and cladistics to define an optimal tree (or network) to represent a… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”