2005-10-01 07:06:46 +00:00

115 lines
4.4 KiB
XML

<?xml version="1.0"?>
<!--
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<document>
<properties>
<title>Maven JDepend Plug-in</title>
<author email="jason@zenplex.com">Jason van Zyl</author>
</properties>
<body>
<section name="Maven JDepend Plug-in">
<p>
This plug-in produces a metrics report using
<a href="http://www.clarkware.com/software/JDepend.html">JDepend</a>.
</p>
<p>
JDepend 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.
</p>
<p>
Metrics for each Java package include:
</p>
<ul>
<li><b>Number of Classes and Interfaces</b>
<p>
The number of concrete and abstract classes (and interfaces) in the
package is an indicator of the extensibility of the package.
</p>
</li>
<li><b>Afferent Couplings (Ca)</b>
<p>
The number of other packages that depend upon classes within
the package is an indicator of the package's responsibility.
</p>
</li>
<li><b>Efferent Couplings (Ce)</b>
<p>
The number of other packages that the classes in the package depend
upon is an indicator of the package's independence.
</p>
</li>
<li><b>Abstractness (A)</b>
<p>
The ratio of the number of abstract classes (and interfaces)
in the analyzed package to the total number of classes in
the analyzed package.
</p>
<p>
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.
</p>
</li>
<li><b>Instability (I)</b>
<p>
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.
</p>
<p>
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.
</p>
</li>
<li><b>Distance from the Main Sequence (D)</b>
<p>
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.
</p>
<p>
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).
</p>
<p>
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.
</p>
</li>
<li><b>Package Dependency Cycles</b>
<p>
Package dependency cycles are reported along with the hierarchical
paths of packages participating in package dependency cycles.
</p>
</li>
</ul>
</section>
</body>
</document>