Metric Results

[summary] [packages] [cycles] [explanations]

The following document contains the results of a JDepend metric analysis. The various metrics are defined at the bottom of this document.

Summary

[summary] [packages] [cycles] [explanations]

Package Total
Classes
Abstract
Classes
Concrete
Classes
Afferent
Couplings
Efferent
Couplings
Abstractness Instability Distance
org.troublescope 7 2 5 3 6 29% 67% 5%
org.troublescope.evaluation 7 1 6 2 4 14% 67% 19%
org.troublescope.knowledgebase 4 0 4 0 0 0% 0% 100%
org.troublescope.resolution 7 1 6 0 3 14% 100% 14%
org.troublescope.tools 1 0 1 0 3 0% 100% 0%
org.troublescope.ui 1 1 0 1 2 100% 67% 67%
org.troublescope.ui.text 1 0 1 0 1 0% 100% 0%
org.troublescope.util 2 0 2 3 3 0% 50% 50%
org.troublescope.web 1 0 1 0 0 0% 0% 100%
junit.framework No stats available: package referenced, but not analyzed.
org.apache.commons.betwixt No stats available: package referenced, but not analyzed.
org.apache.commons.betwixt.io No stats available: package referenced, but not analyzed.
org.apache.commons.betwixt.strategy No stats available: package referenced, but not analyzed.
org.apache.commons.digester No stats available: package referenced, but not analyzed.
org.apache.commons.io No stats available: package referenced, but not analyzed.
org.apache.commons.lang.exception No stats available: package referenced, but not analyzed.
org.apache.commons.logging No stats available: package referenced, but not analyzed.
org.apache.tools.ant No stats available: package referenced, but not analyzed.
org.apache.velocity.context No stats available: package referenced, but not analyzed.
org.apache.velocity.texen.ant No stats available: package referenced, but not analyzed.

Packages

[summary] [packages] [cycles] [explanations]

org.troublescope.evaluation

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 4 14% 67% 19%
Abstract Classes Concrete Classes Used by Packages Uses Packages
EvaluationTest
Evaluation
EvaluationErrorsException
EvaluationException
EvaluationResults
TestSuite
TestSuiteConfig
org.troublescope
org.troublescope.ui
junit.framework
org.apache.commons.logging
org.troublescope
org.troublescope.util

org.troublescope.knowledgebase

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Answer
Category
KnowledgeBase
Question
None None

org.troublescope.resolution

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 14% 100% 14%
Abstract Classes Concrete Classes Used by Packages Uses Packages
ProblemResolution
AntProblemResolution
DelegatingProblemResolution
RegistryEntry
ResolutionException
ResolutionRegistry
ResolutionResult
None org.apache.tools.ant
org.troublescope
org.troublescope.util

org.troublescope.tools

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None TroubleScopeJnlpTask
None org.apache.tools.ant
org.apache.velocity.context
org.apache.velocity.texen.ant

org.troublescope.ui

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 100% 67% 67%
Abstract Classes Concrete Classes Used by Packages Uses Packages
TroubleshootingClient
None org.troublescope.ui.text
org.troublescope
org.troublescope.evaluation

org.troublescope.ui.text

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None TextTroubleshootingClient
None org.troublescope.ui

org.troublescope.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 3 0% 50% 50%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None BetwixtUtils
NameValuePair
org.troublescope
org.troublescope.evaluation
org.troublescope.resolution
org.apache.commons.betwixt
org.apache.commons.betwixt.io
org.apache.commons.betwixt.strategy

org.troublescope.web

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None TSClientServlet
None None

Cycles

[summary] [packages] [cycles] [explanations]

Package Cyclic Dependencies
org.troublescope org.troublescope.evaluation
org.troublescope
org.troublescope.evaluation org.troublescope
org.troublescope.evaluation
org.troublescope.resolution org.troublescope
org.troublescope.evaluation
org.troublescope
org.troublescope.ui org.troublescope
org.troublescope.evaluation
org.troublescope
org.troublescope.ui.text org.troublescope.ui
org.troublescope
org.troublescope.evaluation
org.troublescope

Explanations

[summary] [packages] [cycles] [explanations]

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

Term Description
Number of Classes The number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent Couplings The number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent Couplings The number of other packages that the classes in the package depend upon is an indicator of the package's independence.
Abstractness 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 The ratio of efferent coupling (Ce) to total coupling (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 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.
Cycles Packages participating in a package dependency cycle are in a deadly embrace with respect to reusability and their release cycle. Package dependency cycles can be easily identified by reviewing the textual reports of dependency cycles. Once these dependency cycles have been identified with JDepend, they can be broken by employing various object-oriented techniques.