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.jmonit 5 3 2 10 7 40.0% 41.0% 19.0% 1
org.jmonit.events 7 4 3 6 5 43.0% 45.0% 12.0% 1
org.jmonit.features 11 10 1 1 13 9.0% 93.0% 2.0% 1
org.jmonit.log 6 5 1 6 6 17.0% 50.0% 33.0% 1
org.jmonit.monitors 3 2 1 1 7 33.0% 88.0% 21.0% 1
org.jmonit.reporting 5 1 4 2 6 80.0% 75.0% 55.0% 1
org.jmonit.repositories 2 1 1 1 8 50.0% 89.0% 39.0% 1
org.jmonit.spi 5 0 5 5 4 100.0% 44.0% 44.0% 1
org.jmonit.support.aop 1 1 0 0 4 0.0% 100.0% 0.0% 1
org.jmonit.support.java13.java.lang 11 11 0 0 2 0.0% 100.0% 0.0% 1
org.jmonit.support.java13.java.sql 2 2 0 0 1 0.0% 100.0% 0.0% 1
org.jmonit.support.jaxrpc 1 1 0 0 9 0.0% 100.0% 0.0% 1
org.jmonit.support.jdbc 7 7 0 0 9 0.0% 100.0% 0.0% 1
org.jmonit.util 1 1 0 1 1 0.0% 50.0% 50.0% 1
org.jmonit.web 8 8 0 0 11 0.0% 100.0% 0.0% 1

Packages

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

org.jmonit

Afferent Couplings Efferent Couplings Abstractness Instability Distance
10 7 40.0% 41.0% 19.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.Monitor
org.jmonit.Repository
org.jmonit.Monitoring
org.jmonit.Probe
org.jmonit.Stopwatch
org.jmonit.events
org.jmonit.features
org.jmonit.monitors
org.jmonit.reporting
org.jmonit.repositories
org.jmonit.spi
org.jmonit.support.aop
org.jmonit.support.jaxrpc
org.jmonit.support.jdbc
org.jmonit.web
java.lang
java.util
org.jmonit.events
org.jmonit.features
org.jmonit.log
org.jmonit.repositories
org.jmonit.spi

org.jmonit.events

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 5 43.0% 45.0% 12.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.events.MonitoringEvent
org.jmonit.events.MonitoringEventBus
org.jmonit.events.MonitoringEventListener
org.jmonit.events.DataMonitoredEvent
org.jmonit.events.DefaultMonitoringEventBus
org.jmonit.events.ExecutionEvent
org.jmonit.events.HttpRequestServed
org.jmonit
org.jmonit.features
org.jmonit.monitors
org.jmonit.repositories
org.jmonit.spi
org.jmonit.web
java.lang
java.util
java.util.concurrent
javax.servlet.http
org.jmonit

org.jmonit.features

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 13 9.0% 93.0% 2.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.features.AbstractFeature
org.jmonit.features.Concurrency
org.jmonit.features.Concurrency$1
org.jmonit.features.DefaultPluginManager
org.jmonit.features.HttpStatus
org.jmonit.features.HttpStatus$1
org.jmonit.features.LastValues
org.jmonit.features.LocalStopwatch
org.jmonit.features.LocalStopwatch$1
org.jmonit.features.Statistics
org.jmonit.features.Statistics$1
org.jmonit
java.io
java.lang
java.lang.reflect
java.net
java.util
java.util.concurrent
java.util.concurrent.atomic
javax.servlet.http
org.jmonit
org.jmonit.events
org.jmonit.log
org.jmonit.reporting
org.jmonit.spi

org.jmonit.log

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 6 17.0% 50.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.log.Log
org.jmonit.log.CommonsLoggingLogger
org.jmonit.log.ConsoleLogger
org.jmonit.log.Java14Logger
org.jmonit.log.Log4jLogger
org.jmonit.log.NullLogger
org.jmonit
org.jmonit.features
org.jmonit.monitors
org.jmonit.repositories
org.jmonit.support.jaxrpc
org.jmonit.web
java.io
java.lang
java.util.logging
org.apache.commons.logging
org.apache.log4j
org.jmonit.util

org.jmonit.monitors

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 7 33.0% 88.0% 21.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.monitors.AbstractMonitor
org.jmonit.monitors.DefaultMonitor
org.jmonit.monitors.NullMonitor
org.jmonit.repositories
java.lang
java.util
java.util.concurrent
org.jmonit
org.jmonit.events
org.jmonit.log
org.jmonit.spi

org.jmonit.reporting

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 6 80.0% 75.0% 55.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.reporting.AbstractRenderer
org.jmonit.reporting.Renderer
org.jmonit.reporting.Visitable
org.jmonit.reporting.Visitor
org.jmonit.reporting.JSonRenderer
org.jmonit.features
org.jmonit.web
java.io
java.lang
java.lang.reflect
java.text
java.util
org.jmonit

org.jmonit.repositories

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 8 50.0% 89.0% 39.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.repositories.AbstractRepository
org.jmonit.repositories.DefaultRepository
org.jmonit
java.lang
java.util
java.util.concurrent
org.jmonit
org.jmonit.events
org.jmonit.log
org.jmonit.monitors
org.jmonit.spi

org.jmonit.spi

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 4 100.0% 44.0% 44.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.jmonit.spi.Factory
org.jmonit.spi.Plugin
org.jmonit.spi.PluginManager
org.jmonit.spi.PluginManagerAware
org.jmonit.spi.RepositoryAware
None org.jmonit
org.jmonit.features
org.jmonit.monitors
org.jmonit.repositories
org.jmonit.web
java.lang
java.util
org.jmonit
org.jmonit.events

org.jmonit.support.aop

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.support.aop.PerformanceInterceptor
None java.lang
java.lang.reflect
org.aopalliance.intercept
org.jmonit

org.jmonit.support.java13.java.lang

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.support.java13.java.lang._Boolean
org.jmonit.support.java13.java.lang._Byte
org.jmonit.support.java13.java.lang._Class
org.jmonit.support.java13.java.lang._Double
org.jmonit.support.java13.java.lang._Float
org.jmonit.support.java13.java.lang._Integer
org.jmonit.support.java13.java.lang._Long
org.jmonit.support.java13.java.lang._Short
org.jmonit.support.java13.java.lang._String
org.jmonit.support.java13.java.lang._StringBuffer
org.jmonit.support.java13.java.lang._ThreadLocal
None java.lang
java.util

org.jmonit.support.java13.java.sql

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 1 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.support.java13.java.sql.NClob
org.jmonit.support.java13.java.sql.SQLXML
None java.lang

org.jmonit.support.jaxrpc

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.support.jaxrpc.JaxRpcMonitoringHandler
None java.lang
java.util
javax.xml.namespace
javax.xml.rpc.handler
javax.xml.rpc.handler.soap
javax.xml.soap
org.jmonit
org.jmonit.log
org.w3c.dom

org.jmonit.support.jdbc

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.support.jdbc.JdbcMonitor
org.jmonit.support.jdbc.MonitoredCallableStatement
org.jmonit.support.jdbc.MonitoredConnection
org.jmonit.support.jdbc.MonitoredDataSource
org.jmonit.support.jdbc.MonitoredPreparedStatement
org.jmonit.support.jdbc.MonitoredResultSet
org.jmonit.support.jdbc.MonitoredStatement
None java.io
java.lang
java.lang.reflect
java.math
java.net
java.sql
java.util
javax.sql
org.jmonit

org.jmonit.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 1 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.util.RuntimeAdaptable
org.jmonit.log
java.lang

org.jmonit.web

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 11 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.jmonit.web.JMonitFilter
org.jmonit.web.JMonitFilterWithWebUI
org.jmonit.web.MimeUtils
org.jmonit.web.MonitoredHttpServletResponse
org.jmonit.web.MonitorsIterator
org.jmonit.web.RestServlet
org.jmonit.web.RestServlet2
org.jmonit.web.VisitableMonitor
None java.io
java.lang
java.lang.reflect
java.util
javax.servlet
javax.servlet.http
org.jmonit
org.jmonit.events
org.jmonit.log
org.jmonit.reporting
org.jmonit.spi

Cycles

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

Package Package Dependencies
org.jmonit org.jmonit.events
org.jmonit
org.jmonit.events org.jmonit
org.jmonit.events
org.jmonit.features org.jmonit.events
org.jmonit
org.jmonit.events
org.jmonit.monitors org.jmonit.events
org.jmonit
org.jmonit.events
org.jmonit.reporting org.jmonit
org.jmonit.events
org.jmonit
org.jmonit.repositories org.jmonit
org.jmonit.events
org.jmonit
org.jmonit.spi org.jmonit.events
org.jmonit
org.jmonit.events
org.jmonit.support.aop org.jmonit
org.jmonit.events
org.jmonit
org.jmonit.support.jaxrpc org.jmonit
org.jmonit.events
org.jmonit
org.jmonit.support.jdbc org.jmonit
org.jmonit.events
org.jmonit
org.jmonit.web org.jmonit.events
org.jmonit
org.jmonit.events

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.