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
org.opendaylight.ovsdb.lib 11 4 7 3 14 64.0% 82.0% 46.0% 1
org.opendaylight.ovsdb.lib.error 10 10 0 3 2 0.0% 40.0% 60.000004% 1
org.opendaylight.ovsdb.lib.impl 10 10 0 1 18 0.0% 95.0% 5.0% 1
org.opendaylight.ovsdb.lib.jsonrpc 9 8 1 3 20 11.0% 87.0% 2.0% 1
org.opendaylight.ovsdb.lib.message 13 10 3 5 12 23.0% 71.0% 6.0% 1
org.opendaylight.ovsdb.lib.notation 12 12 0 7 7 0.0% 50.0% 50.0% 1
org.opendaylight.ovsdb.lib.notation.json 17 17 0 2 13 0.0% 87.0% 13.0% 1
org.opendaylight.ovsdb.lib.operations 15 13 2 3 8 13.0% 73.0% 14.0% 1
org.opendaylight.ovsdb.lib.schema 14 11 3 7 13 21.0% 65.0% 14.0% 1
org.opendaylight.ovsdb.lib.schema.typed 6 3 3 2 10 50.0% 83.0% 33.0% 1

Packages

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

org.opendaylight.ovsdb.lib

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 14 64.0% 82.0% 46.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.EchoServiceCallbackFilters
org.opendaylight.ovsdb.lib.LockAquisitionCallback
org.opendaylight.ovsdb.lib.LockStolenCallback
org.opendaylight.ovsdb.lib.MonitorCallBack
org.opendaylight.ovsdb.lib.OvsdbClient
org.opendaylight.ovsdb.lib.OvsdbConnection
org.opendaylight.ovsdb.lib.OvsdbConnectionListener
org.opendaylight.ovsdb.lib.MonitorHandle
org.opendaylight.ovsdb.lib.OvsdbConnectionInfo
org.opendaylight.ovsdb.lib.OvsdbConnectionInfo$ConnectionType
org.opendaylight.ovsdb.lib.OvsdbConnectionInfo$SocketConnectionType
org.opendaylight.ovsdb.lib.impl
org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.operations
com.google.common.util.concurrent
io.netty.channel
io.netty.handler.ssl
java.io
java.lang
java.net
java.security.cert
java.util
javax.net.ssl
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.operations
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed

org.opendaylight.ovsdb.lib.error

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 2 0.0% 40.0% 60.000004%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.opendaylight.ovsdb.lib.error.BadSchemaException
org.opendaylight.ovsdb.lib.error.ColumnSchemaNotFoundException
org.opendaylight.ovsdb.lib.error.InvalidEncodingException
org.opendaylight.ovsdb.lib.error.ParsingException
org.opendaylight.ovsdb.lib.error.SchemaVersionMismatchException
org.opendaylight.ovsdb.lib.error.TableSchemaNotFoundException
org.opendaylight.ovsdb.lib.error.TyperException
org.opendaylight.ovsdb.lib.error.UnexpectedResultException
org.opendaylight.ovsdb.lib.error.UnsupportedArgumentException
org.opendaylight.ovsdb.lib.error.UnsupportedMethodException
org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed
java.lang
org.opendaylight.ovsdb.lib.notation

org.opendaylight.ovsdb.lib.impl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 18 0.0% 95.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.opendaylight.ovsdb.lib.impl.ChannelConnectionHandler
org.opendaylight.ovsdb.lib.impl.OvsdbClientImpl$1
org.opendaylight.ovsdb.lib.impl.OvsdbClientImpl$2
org.opendaylight.ovsdb.lib.impl.OvsdbClientImpl$CallbackContext
org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService$1
org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService$1HandleNewPassiveSslRunner
org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService$2
org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService$3
org.opendaylight.ovsdb.lib.impl.OvsdbConnectionService$4
org.opendaylight.ovsdb.lib.impl.StalePassiveConnectionService$1
org.opendaylight.ovsdb.lib.jsonrpc
com.google.common.util.concurrent
io.netty.channel
io.netty.channel.socket
io.netty.handler.codec.string
io.netty.handler.ssl
io.netty.handler.timeout
io.netty.util
io.netty.util.concurrent
java.lang
java.net
java.util
java.util.concurrent
javax.net.ssl
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.schema
org.slf4j

org.opendaylight.ovsdb.lib.jsonrpc

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 20 11.0% 87.0% 2.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.jsonrpc.Params
org.opendaylight.ovsdb.lib.jsonrpc.ExceptionHandler
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpc10Request
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpc10Response
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcDecoder
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcEncoder
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcEndpoint$CallContext
org.opendaylight.ovsdb.lib.jsonrpc.JsonRpcServiceBinderHandler
org.opendaylight.ovsdb.lib.jsonrpc.JsonUtils
org.opendaylight.ovsdb.lib.impl
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.schema
com.fasterxml.jackson.core
com.fasterxml.jackson.core.io
com.fasterxml.jackson.core.json
com.fasterxml.jackson.core.util
com.fasterxml.jackson.databind
com.google.common.base
com.google.common.collect
com.google.common.util.concurrent
io.netty.buffer
io.netty.channel
io.netty.handler.codec
io.netty.handler.timeout
java.io
java.lang
java.lang.reflect
java.util
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.impl
org.slf4j

org.opendaylight.ovsdb.lib.message

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 12 23.0% 71.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.message.OvsdbRPC
org.opendaylight.ovsdb.lib.message.OvsdbRPC$Callback
org.opendaylight.ovsdb.lib.message.Response
org.opendaylight.ovsdb.lib.message.EchoResponse
org.opendaylight.ovsdb.lib.message.MonitorRequest
org.opendaylight.ovsdb.lib.message.MonitorRequestBuilder
org.opendaylight.ovsdb.lib.message.MonitorSelect
org.opendaylight.ovsdb.lib.message.TableUpdate
org.opendaylight.ovsdb.lib.message.TableUpdate$RowUpdate
org.opendaylight.ovsdb.lib.message.TableUpdates
org.opendaylight.ovsdb.lib.message.TransactBuilder
org.opendaylight.ovsdb.lib.message.TransactResponse
org.opendaylight.ovsdb.lib.message.UpdateNotification
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.impl
org.opendaylight.ovsdb.lib.notation.json
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed
com.fasterxml.jackson.annotation
com.fasterxml.jackson.databind
com.google.common.collect
com.google.common.util.concurrent
java.lang
java.util
org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.notation.json
org.opendaylight.ovsdb.lib.operations
org.opendaylight.ovsdb.lib.schema
org.slf4j

org.opendaylight.ovsdb.lib.notation

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 7 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.opendaylight.ovsdb.lib.notation.Column
org.opendaylight.ovsdb.lib.notation.Condition
org.opendaylight.ovsdb.lib.notation.Function
org.opendaylight.ovsdb.lib.notation.Mutation
org.opendaylight.ovsdb.lib.notation.Mutator
org.opendaylight.ovsdb.lib.notation.OvsdbMap
org.opendaylight.ovsdb.lib.notation.OvsdbSet
org.opendaylight.ovsdb.lib.notation.ReferencedRow
org.opendaylight.ovsdb.lib.notation.ResultSet
org.opendaylight.ovsdb.lib.notation.Row
org.opendaylight.ovsdb.lib.notation.UUID
org.opendaylight.ovsdb.lib.notation.Version
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation.json
org.opendaylight.ovsdb.lib.operations
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed
com.fasterxml.jackson.databind
com.google.common.collect
java.lang
java.util
java.util.regex
org.opendaylight.ovsdb.lib.notation.json
org.opendaylight.ovsdb.lib.schema

org.opendaylight.ovsdb.lib.notation.json

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 13 0.0% 87.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.opendaylight.ovsdb.lib.notation.json.ConditionSerializer
org.opendaylight.ovsdb.lib.notation.json.Converter
org.opendaylight.ovsdb.lib.notation.json.Converter$1
org.opendaylight.ovsdb.lib.notation.json.Converter$AtomDeser
org.opendaylight.ovsdb.lib.notation.json.Converter$MapConverter
org.opendaylight.ovsdb.lib.notation.json.Converter$MapDeser
org.opendaylight.ovsdb.lib.notation.json.Converter$SetConverter
org.opendaylight.ovsdb.lib.notation.json.Converter$SetDeser
org.opendaylight.ovsdb.lib.notation.json.Converter$UpdateNotificationConverter
org.opendaylight.ovsdb.lib.notation.json.Converter$UpdateNotificationDeser
org.opendaylight.ovsdb.lib.notation.json.MutationSerializer
org.opendaylight.ovsdb.lib.notation.json.OvsdbMapSerializer
org.opendaylight.ovsdb.lib.notation.json.OvsdbSetSerializer
org.opendaylight.ovsdb.lib.notation.json.OvsdbTypesIdResolver
org.opendaylight.ovsdb.lib.notation.json.RowSerializer
org.opendaylight.ovsdb.lib.notation.json.UUIDSerializer
org.opendaylight.ovsdb.lib.notation.json.UUIDStringConverter
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
com.fasterxml.jackson.annotation
com.fasterxml.jackson.core
com.fasterxml.jackson.databind
com.fasterxml.jackson.databind.jsontype.impl
com.fasterxml.jackson.databind.node
com.fasterxml.jackson.databind.type
com.fasterxml.jackson.databind.util
java.io
java.lang
java.util
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema

org.opendaylight.ovsdb.lib.operations

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 8 13.0% 73.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.operations.ConditionalOperation
org.opendaylight.ovsdb.lib.operations.Operation
org.opendaylight.ovsdb.lib.operations.Abort
org.opendaylight.ovsdb.lib.operations.Assert
org.opendaylight.ovsdb.lib.operations.Comment
org.opendaylight.ovsdb.lib.operations.Commit
org.opendaylight.ovsdb.lib.operations.Delete
org.opendaylight.ovsdb.lib.operations.Insert
org.opendaylight.ovsdb.lib.operations.Mutate
org.opendaylight.ovsdb.lib.operations.OperationResult
org.opendaylight.ovsdb.lib.operations.Operations
org.opendaylight.ovsdb.lib.operations.Select
org.opendaylight.ovsdb.lib.operations.TransactionBuilder
org.opendaylight.ovsdb.lib.operations.Update
org.opendaylight.ovsdb.lib.operations.Where
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.schema
com.google.common.collect
com.google.common.util.concurrent
java.lang
java.util
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed

org.opendaylight.ovsdb.lib.schema

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 13 21.0% 65.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.schema.BaseType
org.opendaylight.ovsdb.lib.schema.ColumnType
org.opendaylight.ovsdb.lib.schema.TableSchema
org.opendaylight.ovsdb.lib.schema.BaseType$BooleanBaseType
org.opendaylight.ovsdb.lib.schema.BaseType$IntegerBaseType
org.opendaylight.ovsdb.lib.schema.BaseType$RealBaseType
org.opendaylight.ovsdb.lib.schema.BaseType$StringBaseType
org.opendaylight.ovsdb.lib.schema.BaseType$UuidBaseType
org.opendaylight.ovsdb.lib.schema.BaseType$UuidBaseType$RefType
org.opendaylight.ovsdb.lib.schema.ColumnSchema
org.opendaylight.ovsdb.lib.schema.ColumnType$AtomicColumnType
org.opendaylight.ovsdb.lib.schema.ColumnType$KeyValuedColumnType
org.opendaylight.ovsdb.lib.schema.DatabaseSchema
org.opendaylight.ovsdb.lib.schema.GenericTableSchema
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.impl
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.notation.json
org.opendaylight.ovsdb.lib.operations
org.opendaylight.ovsdb.lib.schema.typed
com.fasterxml.jackson.databind
com.fasterxml.jackson.databind.node
com.google.common.collect
com.google.common.reflect
java.lang
java.lang.reflect
java.util
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.operations
org.slf4j

org.opendaylight.ovsdb.lib.schema.typed

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 10 50.0% 83.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.opendaylight.ovsdb.lib.schema.typed.TypedBaseTable
org.opendaylight.ovsdb.lib.schema.typed.TypedColumn
org.opendaylight.ovsdb.lib.schema.typed.TypedTable
org.opendaylight.ovsdb.lib.schema.typed.MethodType
org.opendaylight.ovsdb.lib.schema.typed.TyperUtils
org.opendaylight.ovsdb.lib.schema.typed.TyperUtils$1
org.opendaylight.ovsdb.lib
org.opendaylight.ovsdb.lib.operations
com.google.common.base
com.google.common.reflect
java.lang
java.lang.annotation
java.lang.reflect
java.util
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.message
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema

Cycles

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

Package Package Dependencies
org.opendaylight.ovsdb.lib org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.error org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.impl org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.jsonrpc org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.message org.opendaylight.ovsdb.lib.jsonrpc
org.opendaylight.ovsdb.lib.error
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.notation org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.notation.json org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.operations org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.schema.typed org.opendaylight.ovsdb.lib.notation
org.opendaylight.ovsdb.lib.schema
org.opendaylight.ovsdb.lib.notation

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.