Metric Results

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

The following document contains the results of a JDependmetric 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
javaxml2 1 0 1 0 1 0% 100% 0%
org.apache.james.core 2 1 1 1 0 50% 0% 50%
org.apache.james.smtpserver 3 0 3 1 0 0% 0% 100%
org.apache.james.util 17 2 15 1 3 12% 75% 13%
org.apache.james.util.watchdog 6 3 3 1 1 50% 50% 0%
org.apache.mailet 11 9 2 1 0 82% 0% 18%
org.hedwig.core 19 7 12 0 1 37% 100% 37%
org.masukomi.aspirin.core 9 1 8 1 11 11% 92% 3%
org.masukomi.aspirin.core.dnsserver 1 0 1 1 2 0% 67% 33%
org.masukomi.aspirin.filters 2 0 2 1 3 0% 75% 25%
org.masukomi.prefs 2 0 2 3 4 0% 57% 43%
org.masukomi.tools.utils 1 0 1 1 0 0% 0% 100%
cirrus.hibernate No stats available: package referenced, but not analyzed.
org.apache.av alon.cornerstone.services.scheduler No stats available: package referenced, but not analyzed.
org.apache.crimson.tree No stats available: package referenced, but not analyzed.
org.apache.oro.text.perl No stats available: package referenced, but not analyzed.
org.w3c.dom No stats available: package referenced, but not analyzed.
org.xbill.DNS No stats available: package referenced, but not analyzed.
org.xml.sax No stats available: package referenced, but not analyzed.
sun.io No stats available: package referenced, but not analyzed.
sun.security.action No stats available: package referenced, but not analyzed.

Packages

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

javaxml2

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None DOMSerializer
None org.w3c.dom

org.apache.james.core

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 50% 0% 50%
Abstract Classes Concrete Classes Used by Packages Uses Packages
MimeMessageSource
MailHeaders
org.masukomi.aspirin.core
None

org.apache.james.smtpserver

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None MessageSizeException
SMTPInputStream
SizeLimitedInputStream
org.masukomi.aspirin.core
None

org.apache.james.util.watchdog

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 1 50% 50% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
Watchdog
WatchdogFactory
WatchdogTarget
BytesReadResetInputStream
BytesWrittenResetOutputStream
SchedulerWatchdogFactory
org.masukomi.aspirin.core
org.apache.avalon.cornerstone.services.scheduler

org.apache.mailet

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 82% 0% 18%
Abstract Classes Concrete Classes Used by Packages Uses Packages
GenericMailet
GenericMatcher
GenericRecipientMatcher
Mail
Mailet
MailetConfig
MailetContext
Matcher
MatcherConfig
MailAddress
MailetException
org.masukomi.aspirin.cor e
None

org.hedwig.core

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 37% 100% 37%
Abstract Classes Concrete Classes Used by Packages Uses Packages
AbstractRule
FetchListener
Fetcher
IAttribute
IEnvelope
IPart
Rule
Attribute
DataManager
Envelope
FetchManager
HedwigUser
MailAccount
MailFetcher
MimeEnvelope
Part
PermanentFileStorage
RemoteAccount
SmartFolder
None cirrus.hibernate

org.masukomi.aspirin.core.dnsserver

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 0% 67% 33%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None DNSServer
org.masukomi.aspirin.core
org.masukomi.prefs
org.xbill.DNS

org.masukomi.aspirin.filters

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None RelayHostsFilter
SendOrStoreFilter
org.masukomi.aspirin.core
org.masukomi.aspirin.core
org.masukomi.prefs
org.w3c.dom

org.masukomi.prefs

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 4 0% 57% 43%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None XMLClassPreferences
XMLPreferences
org.masukomi.aspirin.core
org.masukomi.aspirin.core.dnsserver
org.masukomi.aspirin.filters
org.apache.crimson.tree
org.masukomi.tools.utils
org.w3c.dom
org.xml.sax

org.masukomi.tools.utils

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None HashtableOfHashtables
org.masukomi.prefs
None

Cycles

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

Package Cyclic Dependencies
org.masukomi.aspirin.core org.masukomi.aspirin.filters
org.masukomi.aspirin.core
org.masukomi.aspirin.filters org.masukomi.aspirin.core
org.masukomi.aspirin.filters

Explanations

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

The following ex planations 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.