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 TC CC AC Ca Ce A I D V
net.sf.bluecove 46 42 4 4 16 9.0% 80.0% 11.0% 1
net.sf.bluecove.awt 86 84 2 1 16 2.0% 94.0% 4.0% 1
net.sf.bluecove.se 10 10 0 3 13 0.0% 81.0% 19.0% 1
net.sf.bluecove.swing 21 21 0 1 10 0.0% 91.0% 9.0% 1
net.sf.bluecove.tests 11 11 0 1 8 0.0% 89.0% 11.0% 1
net.sf.bluecove.util 14 11 3 4 6 21.0% 60.000004% 19.0% 1

Packages

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

net.sf.bluecove

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 16 9.0% 80.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.sf.bluecove.CanShutdown
net.sf.bluecove.ConnectionHolder
net.sf.bluecove.Consts
net.sf.bluecove.TestResponderClientConnection
net.sf.bluecove.BlueCoveTestCanvas
net.sf.bluecove.BlueCoveTestCanvas$1
net.sf.bluecove.BlueCoveTestConfigurationForm
net.sf.bluecove.BlueCoveTestConfigurationForm$1
net.sf.bluecove.BlueCoveTestConfigurationForm$ConfigurationComponent
net.sf.bluecove.BlueCoveTestMIDlet
net.sf.bluecove.CommunicationData
net.sf.bluecove.CommunicationTester
net.sf.bluecove.CommunicationTester$1
net.sf.bluecove.CommunicationTesterL2CAP
net.sf.bluecove.Configuration
net.sf.bluecove.ConnectionHolderL2CAP
net.sf.bluecove.ConnectionHolderStream
net.sf.bluecove.FailureLog
net.sf.bluecove.OBEXTestAuthenticator
net.sf.bluecove.RemoteDeviceIheritance
net.sf.bluecove.RemoteDeviceInfo
net.sf.bluecove.ServiceRecordTester
net.sf.bluecove.Switcher
net.sf.bluecove.SwitcherTck
net.sf.bluecove.TestClientBluetoothInquirer
net.sf.bluecove.TestClientConfig
net.sf.bluecove.TestConcurrent
net.sf.bluecove.TestConcurrent$1
net.sf.bluecove.TestConcurrent$ServicesSearchClientsThread
net.sf.bluecove.TestOBEXCilent
net.sf.bluecove.TestResponderClient
net.sf.bluecove.TestResponderClient$ClientConnectionTread
net.sf.bluecove.TestResponderClientL2CAP
net.sf.bluecove.TestResponderClientRFCOMM
net.sf.bluecove.TestResponderCommon
net.sf.bluecove.TestResponderServer
net.sf.bluecove.TestResponderServer$ServerConnectionRunnable
net.sf.bluecove.TestResponderServerL2CAP
net.sf.bluecove.TestResponderServerL2CAP$ServerConnectionTread
net.sf.bluecove.TestResponderServerOBEX
net.sf.bluecove.TestResponderServerOBEX$1
net.sf.bluecove.TestResponderServerOBEX$NoTimeWrapper
net.sf.bluecove.TestResponderServerOBEX$NoTimeWrapper$1
net.sf.bluecove.TestResponderServerOBEX$RequestHandler
net.sf.bluecove.TestStatus
net.sf.bluecove.TestTimeOutMonitor
net.sf.bluecove.awt
net.sf.bluecove.se
net.sf.bluecove.swing
net.sf.bluecove.tests
BluetoothTCKAgent
OBEXTCKAgent
java.io
java.lang
java.util
javax.bluetooth
javax.microedition.io
javax.microedition.lcdui
javax.obex
junit.framework
net.sf.bluecove.se
net.sf.bluecove.tests
net.sf.bluecove.util
org.bluecove.tester.log
org.bluecove.tester.me
org.bluecove.tester.util

net.sf.bluecove.awt

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 16 2.0% 94.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.sf.bluecove.awt.ActionListenerRunnable
net.sf.bluecove.awt.OkCancelDialog
net.sf.bluecove.awt.BorderPanel
net.sf.bluecove.awt.ClientConnectionDialog
net.sf.bluecove.awt.ClientConnectionDialog$1
net.sf.bluecove.awt.ClientConnectionDialog$10
net.sf.bluecove.awt.ClientConnectionDialog$11
net.sf.bluecove.awt.ClientConnectionDialog$12
net.sf.bluecove.awt.ClientConnectionDialog$13
net.sf.bluecove.awt.ClientConnectionDialog$14
net.sf.bluecove.awt.ClientConnectionDialog$2
net.sf.bluecove.awt.ClientConnectionDialog$3
net.sf.bluecove.awt.ClientConnectionDialog$4
net.sf.bluecove.awt.ClientConnectionDialog$5
net.sf.bluecove.awt.ClientConnectionDialog$6
net.sf.bluecove.awt.ClientConnectionDialog$7
net.sf.bluecove.awt.ClientConnectionDialog$8
net.sf.bluecove.awt.ClientConnectionDialog$9
net.sf.bluecove.awt.ClientConnectionDialog$ConnectionMonitor
net.sf.bluecove.awt.ClientConnectionThread
net.sf.bluecove.awt.ClientConnectionThread$1
net.sf.bluecove.awt.ConfigurationDialog
net.sf.bluecove.awt.ConfigurationDialog$1
net.sf.bluecove.awt.ConfigurationDialog$2
net.sf.bluecove.awt.ConfigurationDialog$3
net.sf.bluecove.awt.ConfigurationDialog$ConfigurationComponent
net.sf.bluecove.awt.Main
net.sf.bluecove.awt.Main$1
net.sf.bluecove.awt.Main$10
net.sf.bluecove.awt.Main$11
net.sf.bluecove.awt.Main$12
net.sf.bluecove.awt.Main$13
net.sf.bluecove.awt.Main$14
net.sf.bluecove.awt.Main$15
net.sf.bluecove.awt.Main$16
net.sf.bluecove.awt.Main$17
net.sf.bluecove.awt.Main$18
net.sf.bluecove.awt.Main$19
net.sf.bluecove.awt.Main$2
net.sf.bluecove.awt.Main$20
net.sf.bluecove.awt.Main$21
net.sf.bluecove.awt.Main$22
net.sf.bluecove.awt.Main$23
net.sf.bluecove.awt.Main$24
net.sf.bluecove.awt.Main$25
net.sf.bluecove.awt.Main$26
net.sf.bluecove.awt.Main$27
net.sf.bluecove.awt.Main$28
net.sf.bluecove.awt.Main$29
net.sf.bluecove.awt.Main$3
net.sf.bluecove.awt.Main$30
net.sf.bluecove.awt.Main$31
net.sf.bluecove.awt.Main$32
net.sf.bluecove.awt.Main$33
net.sf.bluecove.awt.Main$34
net.sf.bluecove.awt.Main$35
net.sf.bluecove.awt.Main$36
net.sf.bluecove.awt.Main$37
net.sf.bluecove.awt.Main$38
net.sf.bluecove.awt.Main$39
net.sf.bluecove.awt.Main$4
net.sf.bluecove.awt.Main$40
net.sf.bluecove.awt.Main$41
net.sf.bluecove.awt.Main$42
net.sf.bluecove.awt.Main$43
net.sf.bluecove.awt.Main$44
net.sf.bluecove.awt.Main$45
net.sf.bluecove.awt.Main$5
net.sf.bluecove.awt.Main$6
net.sf.bluecove.awt.Main$7
net.sf.bluecove.awt.Main$8
net.sf.bluecove.awt.Main$9
net.sf.bluecove.awt.Main$AwtLogUpdater
net.sf.bluecove.awt.ObexClientConnectionDialog
net.sf.bluecove.awt.ObexClientConnectionDialog$1
net.sf.bluecove.awt.ObexClientConnectionDialog$2
net.sf.bluecove.awt.ObexClientConnectionDialog$3
net.sf.bluecove.awt.ObexClientConnectionDialog$4
net.sf.bluecove.awt.ObexClientConnectionDialog$5
net.sf.bluecove.awt.ObexClientConnectionDialog$6
net.sf.bluecove.awt.ObexClientConnectionDialog$ObexConnectionMonitor
net.sf.bluecove.awt.ObexClientConnectionThread
net.sf.bluecove.awt.OkCancelDialog$1
net.sf.bluecove.awt.OkCancelDialog$2
net.sf.bluecove.awt.OkCancelDialog$3
net.sf.bluecove.awt.ServiceRecords
net.sf.bluecove.se
com.intel.bluetooth
java.awt
java.awt.event
java.io
java.lang
java.lang.reflect
java.text
java.util
javax.bluetooth
javax.microedition.io
javax.obex
net.sf.bluecove
net.sf.bluecove.se
net.sf.bluecove.util
org.bluecove.tester.log
org.bluecove.tester.util

net.sf.bluecove.se

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 13 0.0% 81.0% 19.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.sf.bluecove.se.BlueCoveLoggerAppender
net.sf.bluecove.se.BlueCoveSpecific
net.sf.bluecove.se.Console
net.sf.bluecove.se.FileStorage
net.sf.bluecove.se.JavaSECommon
net.sf.bluecove.se.LocalDeviceManager
net.sf.bluecove.se.LoggerJavaSEAppender
net.sf.bluecove.se.Main
net.sf.bluecove.se.RemoteDeviceManager
net.sf.bluecove.se.UIHelper
net.sf.bluecove
net.sf.bluecove.awt
net.sf.bluecove.swing
com.intel.bluetooth
java.awt
java.io
java.lang
java.text
java.util
javax.bluetooth
net.sf.bluecove
net.sf.bluecove.awt
net.sf.bluecove.swing
net.sf.bluecove.util
org.bluecove.tester.log
org.bluecove.tester.util

net.sf.bluecove.swing

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 10 0.0% 91.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.sf.bluecove.swing.Main
net.sf.bluecove.swing.Main$1
net.sf.bluecove.swing.Main$10
net.sf.bluecove.swing.Main$11
net.sf.bluecove.swing.Main$12
net.sf.bluecove.swing.Main$13
net.sf.bluecove.swing.Main$14
net.sf.bluecove.swing.Main$15
net.sf.bluecove.swing.Main$16
net.sf.bluecove.swing.Main$17
net.sf.bluecove.swing.Main$18
net.sf.bluecove.swing.Main$19
net.sf.bluecove.swing.Main$2
net.sf.bluecove.swing.Main$3
net.sf.bluecove.swing.Main$4
net.sf.bluecove.swing.Main$5
net.sf.bluecove.swing.Main$6
net.sf.bluecove.swing.Main$7
net.sf.bluecove.swing.Main$8
net.sf.bluecove.swing.Main$9
net.sf.bluecove.swing.Main$AwtLogUpdater
net.sf.bluecove.se
java.awt
java.awt.event
java.lang
java.util
javax.swing
javax.swing.text
net.sf.bluecove
net.sf.bluecove.se
org.bluecove.tester.log
org.bluecove.tester.util

net.sf.bluecove.tests

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 8 0.0% 89.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None net.sf.bluecove.tests.L2TrafficGenerator
net.sf.bluecove.tests.L2TrafficGenerator$1
net.sf.bluecove.tests.L2TrafficGenerator$2
net.sf.bluecove.tests.L2TrafficGenerator$Config
net.sf.bluecove.tests.RfTrafficGenerator
net.sf.bluecove.tests.RfTrafficGenerator$1
net.sf.bluecove.tests.RfTrafficGenerator$2
net.sf.bluecove.tests.RfTrafficGenerator$Config
net.sf.bluecove.tests.TwoThreadsPerConnection
net.sf.bluecove.tests.TwoThreadsPerConnection$1
net.sf.bluecove.tests.TwoThreadsPerConnection$WriteTread
net.sf.bluecove
java.io
java.lang
javax.bluetooth
junit.framework
net.sf.bluecove
net.sf.bluecove.util
org.bluecove.tester.log
org.bluecove.tester.util

net.sf.bluecove.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 6 21.0% 60.000004% 19.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
net.sf.bluecove.util.BluetoothTypesInfo
net.sf.bluecove.util.CollectionUtils$IsComparable
net.sf.bluecove.util.Storage
net.sf.bluecove.util.BluetoothTypesInfo$DeviceClassConsts
net.sf.bluecove.util.BluetoothTypesInfo$UUIDConsts
net.sf.bluecove.util.BooleanVar
net.sf.bluecove.util.CollectionUtils
net.sf.bluecove.util.CountStatistic
net.sf.bluecove.util.IntVar
net.sf.bluecove.util.J2MEStringTokenizer
net.sf.bluecove.util.StorageRMS
net.sf.bluecove.util.StringVar
net.sf.bluecove.util.TimeStatistic
net.sf.bluecove.util.ValueHolder
net.sf.bluecove
net.sf.bluecove.awt
net.sf.bluecove.se
net.sf.bluecove.tests
java.lang
java.util
javax.bluetooth
javax.microedition.rms
org.bluecove.tester.log
org.bluecove.tester.util

Cycles

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

Package Package Dependencies
net.sf.bluecove net.sf.bluecove.tests
net.sf.bluecove
net.sf.bluecove.awt net.sf.bluecove
net.sf.bluecove.tests
net.sf.bluecove
net.sf.bluecove.se net.sf.bluecove
net.sf.bluecove.tests
net.sf.bluecove
net.sf.bluecove.swing net.sf.bluecove
net.sf.bluecove.tests
net.sf.bluecove
net.sf.bluecove.tests net.sf.bluecove
net.sf.bluecove.tests

Explanation

[ 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.