JDepend

Generate design quality metrics for Java packages
Download

JDepend Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Freeware
  • Price:
  • FREE
  • Publisher Name:
  • Clarkware Consulting Inc
  • Publisher web site:
  • http://clarkware.com
  • Operating Systems:
  • Mac OS X
  • File Size:
  • 295 KB

JDepend Tags


JDepend Description

Generate design quality metrics for Java packages JDepend is a free and open source application that traverses Java class file directories and generates design quality metrics for each Java package.JDepend allows you to automatically measure the quality of a design in terms of its extensibility, reusability, and maintainability to manage package dependencies effectively. JDepend traverses Java class file directories and generates design quality metrics for each Java package, including:· Number of Classes and InterfacesThe 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 CyclesPackage dependency cycles are reported along with the hierarchical paths of packages participating in package dependency cycles.NOTE: JDepend is licensed and distributed under the terms of the BSD License. Requirements: · Java Limitations: · Cyclic dependency detection may not report all cycles reachable from a given package. The detection algorithm stops once any given cycle is detected. If the same cycle is reachable from another package, the cycle may be reported more than once. In general, you want to aggressively remove any cycles. · JDepend does not collect source code complexity metrics. If you are interested in collecting these types of metrics, the JavaNCSS tool referenced in the Resources section is recommended. · The design quality metrics generated by JDepend are imperfect. They are intended to be used to pragmatically and responsibly measure design quality in a relative sense, rather than as a yard stick for all designs. · Java interfaces are treated as equals with Java abstract classes. In other words, although there are practical design advantages to using interfaces in concert with abstract classes, JDepend treats them uniformly in the calculation of abstractness. Likewise, abstract classes that implement interfaces are counted as abstract classes, in addition to their interface, regardless of whether they are always referenced outside the package as their interface type. · JDepend does not currently support the calculation of Ca and Ce in terms of the number of classes inside a package that have afferent or efferent couplings to classes inside other packages. Rather, JDepend calculates Ca and Ce strictly in terms of the number of packages with which a package has afferent or efferent couplings, based on the collective analysis of all imported packages. This deviates slightly from the original Ca and Ce definitions proposed by Robert Martin. What's New in This Release: · Includes the Module Dependencies fixture for FitNesse · Declared components now include an implicit trailing ".". For example, if you want to treat all sub-packages beneath the "com.foo" package as a component, use java jdepend.textui.JDepend -components com.foo /path/to/classes. · Added a version number to the JAR file.


JDepend Related Software