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
com.intel.bluetooth 6 5 1 3 11 17.0% 79.0% 5.0% 1
org.bluecove.socket 9 8 1 0 4 11.0% 100.0% 11.0% 1
org.bluez 33 27 6 4 9 18.0% 69.0% 13.0% 1
org.bluez.dbus 5 1 4 1 5 80.0% 83.0% 63.0% 1
org.bluez.v3 49 42 7 2 8 14.0% 80.0% 6.0% 1
org.bluez.v4 24 19 5 1 9 21.0% 90.0% 11.0% 1

Packages

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

com.intel.bluetooth

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 11 17.0% 79.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
com.intel.bluetooth.BluetoothStackBlueZDBusConsts
com.intel.bluetooth.BlueZServiceRecordXML
com.intel.bluetooth.BluetoothStackBlueZDBus
com.intel.bluetooth.BluetoothStackBlueZDBus$1
com.intel.bluetooth.BluetoothStackBlueZDBus$DiscoveryData
com.intel.bluetooth.BluetoothStackBlueZDBusNativeTests
org.bluez
org.bluez.v3
org.bluez.v4
cx.ath.matthew.unix
java.io
java.lang
java.util
javax.bluetooth
javax.xml.parsers
org.bluez
org.freedesktop.dbus
org.freedesktop.dbus.exceptions
org.w3c.dom
org.xml.sax

org.bluecove.socket

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 11.0% 100.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.bluecove.socket.LocalSocketImpl$LocalSocketOptions
org.bluecove.socket.Credentials
org.bluecove.socket.LocalServerSocket
org.bluecove.socket.LocalSocket
org.bluecove.socket.LocalSocketAddress
org.bluecove.socket.LocalSocketImpl
org.bluecove.socket.LocalSocketImpl$1
org.bluecove.socket.LocalSocketImpl$LocalSocketInputStream
org.bluecove.socket.LocalSocketImpl$LocalSocketOutputStream
None java.io
java.lang
java.net
java.nio.channels

org.bluez

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 9 18.0% 69.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.bluez.Adapter
org.bluez.BlueZAPI
org.bluez.BlueZAPI$DeviceInquiryListener
org.bluez.BlueZAPIFactory
org.bluez.Error
org.bluez.Manager
org.bluez.Error$AlreadyConnected
org.bluez.Error$AlreadyExists
org.bluez.Error$AuthenticationCanceled
org.bluez.Error$AuthenticationFailed
org.bluez.Error$AuthenticationRejected
org.bluez.Error$AuthenticationTimeout
org.bluez.Error$Canceled
org.bluez.Error$ConnectionAttemptFailed
org.bluez.Error$DeviceUnreachable
org.bluez.Error$DoesNotExist
org.bluez.Error$Failed
org.bluez.Error$InProgress
org.bluez.Error$InvalidArguments
org.bluez.Error$NoSuchAdapter
org.bluez.Error$NoSuchService
org.bluez.Error$NotAuthorized
org.bluez.Error$NotAvailable
org.bluez.Error$NotConnected
org.bluez.Error$NotInProgress
org.bluez.Error$NotReady
org.bluez.Error$NotSupported
org.bluez.Error$OutOfMemory
org.bluez.Error$Rejected
org.bluez.Error$RepeatedAttempts
org.bluez.Error$RequestDeferred
org.bluez.Error$UnknwownMethod
org.bluez.Error$UnsupportedMajorClass
com.intel.bluetooth
org.bluez.dbus
org.bluez.v3
org.bluez.v4
com.intel.bluetooth
java.io
java.lang
java.util
org.bluez.v3
org.bluez.v4
org.freedesktop
org.freedesktop.dbus
org.freedesktop.dbus.exceptions

org.bluez.dbus

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 80.0% 83.0% 63.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.bluez.dbus.DBusProperties
org.bluez.dbus.DBusProperties$DBusProperty
org.bluez.dbus.DBusProperties$PropertiesAccess
org.bluez.dbus.DBusProperties$PropertyEnum
org.bluez.dbus.DBusProperties$DBusPropertyAccessType
org.bluez.v4
java.lang
java.lang.annotation
java.util
org.bluez
org.freedesktop.dbus

org.bluez.v3

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 8 14.0% 80.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.bluez.v3.Adapter
org.bluez.v3.AuthorizationAgent
org.bluez.v3.Database
org.bluez.v3.Manager
org.bluez.v3.PasskeyAgent
org.bluez.v3.Security
org.bluez.v3.Service
org.bluez.v3.Adapter$BondingCreated
org.bluez.v3.Adapter$BondingRemoved
org.bluez.v3.Adapter$DiscoverableTimeoutChanged
org.bluez.v3.Adapter$DiscoveryCompleted
org.bluez.v3.Adapter$DiscoveryStarted
org.bluez.v3.Adapter$MinorClassChanged
org.bluez.v3.Adapter$ModeChanged
org.bluez.v3.Adapter$NameChanged
org.bluez.v3.Adapter$PeriodicDiscoveryStarted
org.bluez.v3.Adapter$PeriodicDiscoveryStopped
org.bluez.v3.Adapter$RemoteAliasChanged
org.bluez.v3.Adapter$RemoteAliasCleared
org.bluez.v3.Adapter$RemoteClassUpdated
org.bluez.v3.Adapter$RemoteDeviceConnected
org.bluez.v3.Adapter$RemoteDeviceDisappeared
org.bluez.v3.Adapter$RemoteDeviceDisconnectRequested
org.bluez.v3.Adapter$RemoteDeviceDisconnected
org.bluez.v3.Adapter$RemoteDeviceFound
org.bluez.v3.Adapter$RemoteIdentifiersUpdated
org.bluez.v3.Adapter$RemoteNameFailed
org.bluez.v3.Adapter$RemoteNameRequested
org.bluez.v3.Adapter$RemoteNameUpdated
org.bluez.v3.Adapter$TrustAdded
org.bluez.v3.Adapter$TrustRemoved
org.bluez.v3.BlueZAPIV3
org.bluez.v3.BlueZAPIV3$1
org.bluez.v3.BlueZAPIV3$2
org.bluez.v3.BlueZAPIV3$3
org.bluez.v3.BlueZAPIV3$4
org.bluez.v3.BlueZAPIV3$5
org.bluez.v3.BlueZAPIV3$6
org.bluez.v3.BlueZAPIV3$7
org.bluez.v3.BlueZAPIV3$8
org.bluez.v3.Manager$AdapterAdded
org.bluez.v3.Manager$AdapterRemoved
org.bluez.v3.Manager$DefaultAdapterChanged
org.bluez.v3.Manager$ServiceAdded
org.bluez.v3.Manager$ServiceRemoved
org.bluez.v3.Service$Started
org.bluez.v3.Service$Stopped
org.bluez.v3.Service$TrustAdded
org.bluez.v3.Service$TrustRemoved
org.bluez
org.bluez.v4
com.intel.bluetooth
java.io
java.lang
java.util
org.bluez
org.freedesktop
org.freedesktop.dbus
org.freedesktop.dbus.exceptions

org.bluez.v4

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 9 21.0% 90.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.bluez.v4.Adapter
org.bluez.v4.Agent
org.bluez.v4.Device
org.bluez.v4.Manager
org.bluez.v4.Service
org.bluez.v4.Adapter$DeviceCreated
org.bluez.v4.Adapter$DeviceDisappeared
org.bluez.v4.Adapter$DeviceFound
org.bluez.v4.Adapter$DeviceRemoved
org.bluez.v4.Adapter$Properties
org.bluez.v4.Adapter$PropertyChanged
org.bluez.v4.BlueZAPIV4
org.bluez.v4.BlueZAPIV4$1
org.bluez.v4.BlueZAPIV4$2
org.bluez.v4.Device$DisconnectRequested
org.bluez.v4.Device$NodeCreated
org.bluez.v4.Device$NodeRemoved
org.bluez.v4.Device$Properties
org.bluez.v4.Device$PropertyChanged
org.bluez.v4.Manager$AdapterAdded
org.bluez.v4.Manager$AdapterRemoved
org.bluez.v4.Manager$DefaultAdapterChanged
org.bluez.v4.Manager$Properties
org.bluez.v4.Manager$PropertyChanged
org.bluez
com.intel.bluetooth
java.io
java.lang
java.util
org.bluez
org.bluez.dbus
org.bluez.v3
org.freedesktop.dbus
org.freedesktop.dbus.exceptions

Cycles

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

Package Package Dependencies
com.intel.bluetooth org.bluez
com.intel.bluetooth
org.bluez com.intel.bluetooth
org.bluez
org.bluez.dbus org.bluez
com.intel.bluetooth
org.bluez
org.bluez.v3 org.bluez
com.intel.bluetooth
org.bluez
org.bluez.v4 org.bluez.dbus
org.bluez
com.intel.bluetooth
org.bluez

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.