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.apache.commons.monitoring 17 5 12 10 4 71.0% 29.0% 1.0% 1
org.apache.commons.monitoring.aop 5 3 2 1 5 40.0% 83.0% 23.0% 1
org.apache.commons.monitoring.impl.monitors 4 2 2 2 5 50.0% 71.0% 21.0% 1
org.apache.commons.monitoring.impl.repositories 5 2 3 3 7 60.000004% 70.0% 30.000002% 1
org.apache.commons.monitoring.impl.stopwatches 2 2 0 1 3 0.0% 75.0% 25.0% 1
org.apache.commons.monitoring.impl.values 5 4 1 1 4 20.0% 80.0% 0.0% 1
org.apache.commons.monitoring.listeners 6 4 2 2 7 33.0% 78.0% 11.0% 1
org.apache.commons.monitoring.reporting 15 10 5 2 7 33.0% 78.0% 11.0% 1
org.apache.commons.monitoring.reporting.web 4 4 0 0 9 0.0% 100.0% 0.0% 1
org.apache.commons.monitoring.servlet 3 3 0 1 9 0.0% 90.0% 10.0% 1
org.apache.commons.monitoring.servlet.jsp 10 9 1 0 6 10.0% 100.0% 10.0% 1
org.apache.commons.monitoring.spring 6 5 1 0 9 17.0% 100.0% 17.0% 1
org.apache.commons.monitoring.support.java13.java.io 1 1 0 0 2 0.0% 100.0% 0.0% 1
org.apache.commons.monitoring.support.java13.java.lang 10 9 1 0 2 10.0% 100.0% 10.0% 1
org.apache.commons.monitoring.support.java13.java.util 1 1 0 0 2 0.0% 100.0% 0.0% 1

Packages

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

org.apache.commons.monitoring

Afferent Couplings Efferent Couplings Abstractness Instability Distance
10 4 71.0% 29.0% 1.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.Composite
org.apache.commons.monitoring.Counter
org.apache.commons.monitoring.Gauge
org.apache.commons.monitoring.Monitor
org.apache.commons.monitoring.Monitor$Listener
org.apache.commons.monitoring.Monitor$Observable
org.apache.commons.monitoring.Repository
org.apache.commons.monitoring.Repository$Listener
org.apache.commons.monitoring.Repository$Observable
org.apache.commons.monitoring.StatValue
org.apache.commons.monitoring.StatValue$Listener
org.apache.commons.monitoring.StopWatch
org.apache.commons.monitoring.ExecutionStack
org.apache.commons.monitoring.Monitor$Key
org.apache.commons.monitoring.Monitoring
org.apache.commons.monitoring.Role
org.apache.commons.monitoring.Unit
org.apache.commons.monitoring.aop
org.apache.commons.monitoring.impl.monitors
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring.impl.stopwatches
org.apache.commons.monitoring.impl.values
org.apache.commons.monitoring.listeners
org.apache.commons.monitoring.reporting
org.apache.commons.monitoring.reporting.web
org.apache.commons.monitoring.servlet
org.apache.commons.monitoring.servlet.jsp
java.lang
java.util
java.util.concurrent
org.apache.commons.monitoring.impl.repositories

org.apache.commons.monitoring.aop

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 40.0% 83.0% 23.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.aop.AbstractPerformanceInterceptor
org.apache.commons.monitoring.aop.MonitorNameExtractor
org.apache.commons.monitoring.aop.AopPerformanceInterceptor
org.apache.commons.monitoring.aop.CommonsProxyPerformanceInterceptor
org.apache.commons.monitoring.aop.DefaultMonitorNameExtractor
org.apache.commons.monitoring.spring
java.lang
java.lang.reflect
org.aopalliance.intercept
org.apache.commons.monitoring
org.apache.commons.proxy

org.apache.commons.monitoring.impl.monitors

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 50.0% 71.0% 21.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.impl.monitors.AbstractMonitor
org.apache.commons.monitoring.impl.monitors.ObservableMonitor
org.apache.commons.monitoring.impl.monitors.CompositeValuesMonitor
org.apache.commons.monitoring.impl.monitors.CreateValuesOnDemandMonitor
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring.listeners
java.lang
java.util
java.util.concurrent
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.values

org.apache.commons.monitoring.impl.repositories

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 7 60.000004% 70.0% 30.000002%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.impl.repositories.AbstractRepository
org.apache.commons.monitoring.impl.repositories.CreateMonitorsOnDemandRepository
org.apache.commons.monitoring.impl.repositories.ObservableRepository
org.apache.commons.monitoring.impl.repositories.ConfigurableImplementationsRepository
org.apache.commons.monitoring.impl.repositories.DefaultRepository
org.apache.commons.monitoring
org.apache.commons.monitoring.listeners
org.apache.commons.monitoring.servlet
java.lang
java.lang.reflect
java.util
java.util.concurrent
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.monitors
org.apache.commons.monitoring.impl.stopwatches

org.apache.commons.monitoring.impl.stopwatches

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.monitoring.impl.stopwatches.DefaultStopWatch
org.apache.commons.monitoring.impl.stopwatches.ExecutionStopWatch
org.apache.commons.monitoring.impl.repositories
java.io
java.lang
org.apache.commons.monitoring

org.apache.commons.monitoring.impl.values

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 20.0% 80.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.impl.values.AbstractStatValue
org.apache.commons.monitoring.impl.values.CompositeCounter
org.apache.commons.monitoring.impl.values.CompositeGauge
org.apache.commons.monitoring.impl.values.ThreadSafeCounter
org.apache.commons.monitoring.impl.values.ThreadSafeGauge
org.apache.commons.monitoring.impl.monitors
java.lang
java.util
java.util.concurrent
org.apache.commons.monitoring

org.apache.commons.monitoring.listeners

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 7 33.0% 78.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.listeners.Detachable
org.apache.commons.monitoring.listeners.ThresholdListener
org.apache.commons.monitoring.listeners.EmpyMonitor
org.apache.commons.monitoring.listeners.HistorizedRepositoryDecorator
org.apache.commons.monitoring.listeners.SecondaryMonitor
org.apache.commons.monitoring.listeners.SecondaryRepository
org.apache.commons.monitoring.reporting
org.apache.commons.monitoring.servlet
java.io
java.lang
java.util
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.monitors
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring.reporting

org.apache.commons.monitoring.reporting

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 7 33.0% 78.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.reporting.AbstractPeriodicLogger
org.apache.commons.monitoring.reporting.AbstractRenderer
org.apache.commons.monitoring.reporting.Renderer
org.apache.commons.monitoring.reporting.Renderer$Options
org.apache.commons.monitoring.reporting.SelectorPeriodicLogger
org.apache.commons.monitoring.reporting.AbstractRenderer$1
org.apache.commons.monitoring.reporting.Context
org.apache.commons.monitoring.reporting.FlotRenderer
org.apache.commons.monitoring.reporting.FlotRenderer$1
org.apache.commons.monitoring.reporting.HtmlRenderer
org.apache.commons.monitoring.reporting.JsonRenderer
org.apache.commons.monitoring.reporting.OptionsSupport
org.apache.commons.monitoring.reporting.Selector
org.apache.commons.monitoring.reporting.TxtRenderer
org.apache.commons.monitoring.reporting.XmlRenderer
org.apache.commons.monitoring.listeners
org.apache.commons.monitoring.reporting.web
java.io
java.lang
java.lang.reflect
java.text
java.util
org.apache.commons.monitoring
org.apache.commons.monitoring.listeners

org.apache.commons.monitoring.reporting.web

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.apache.commons.monitoring.reporting.web.HttpSerlvetRequestOptions
org.apache.commons.monitoring.reporting.web.MonitoringServlet
org.apache.commons.monitoring.reporting.web.NiceHtmlRenderer
org.apache.commons.monitoring.reporting.web.WebUIServlet
None java.io
java.lang
java.util
java.util.concurrent
javax.servlet
javax.servlet.http
org.apache.commons.monitoring
org.apache.commons.monitoring.reporting
org.apache.commons.monitoring.servlet

org.apache.commons.monitoring.servlet

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 9 0.0% 90.0% 10.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.monitoring.servlet.MonitoringFilter
org.apache.commons.monitoring.servlet.MonitoringListener
org.apache.commons.monitoring.servlet.ServletContextUtil
org.apache.commons.monitoring.reporting.web
java.io
java.lang
java.util
java.util.concurrent
javax.servlet
javax.servlet.http
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring.listeners

org.apache.commons.monitoring.servlet.jsp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 6 10.0% 100.0% 10.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.servlet.jsp.AbstractSelectTag
org.apache.commons.monitoring.servlet.jsp.CategoriesTag
org.apache.commons.monitoring.servlet.jsp.RolesTag
org.apache.commons.monitoring.servlet.jsp.StartTag
org.apache.commons.monitoring.servlet.jsp.StartTagTei
org.apache.commons.monitoring.servlet.jsp.StatValueTag
org.apache.commons.monitoring.servlet.jsp.StopTag
org.apache.commons.monitoring.servlet.jsp.SubsystemsTag
org.apache.commons.monitoring.servlet.jsp.TagUtils
org.apache.commons.monitoring.servlet.jsp.UnitTag
None java.io
java.lang
java.util
javax.servlet.jsp
javax.servlet.jsp.tagext
org.apache.commons.monitoring

org.apache.commons.monitoring.spring

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 9 17.0% 100.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.spring.MonitoringAdviceFactory$MonitoringConfigSource
org.apache.commons.monitoring.spring.AspectJMonitoringAutoProxyCreator
org.apache.commons.monitoring.spring.BeanNameMonitoringAutoProxyCreator
org.apache.commons.monitoring.spring.MonitoringAdviceFactory
org.apache.commons.monitoring.spring.MonitoringNamespaceHandler
org.apache.commons.monitoring.spring.PointcutMonitoringAutoProxyCreator
None java.lang
java.util
org.aopalliance.aop
org.apache.commons.monitoring.aop
org.springframework.aop
org.springframework.aop.aspectj
org.springframework.aop.framework.autoproxy
org.springframework.aop.support
org.springframework.beans.factory.xml

org.apache.commons.monitoring.support.java13.java.io

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.apache.commons.monitoring.support.java13.java.io._FileWriter
None java.io
java.lang

org.apache.commons.monitoring.support.java13.java.lang

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 10.0% 100.0% 10.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.monitoring.support.java13.java.lang.CharSequence_
org.apache.commons.monitoring.support.java13.java.lang._Boolean
org.apache.commons.monitoring.support.java13.java.lang._Byte
org.apache.commons.monitoring.support.java13.java.lang._Class
org.apache.commons.monitoring.support.java13.java.lang._Double
org.apache.commons.monitoring.support.java13.java.lang._Float
org.apache.commons.monitoring.support.java13.java.lang._Integer
org.apache.commons.monitoring.support.java13.java.lang._Long
org.apache.commons.monitoring.support.java13.java.lang._Short
org.apache.commons.monitoring.support.java13.java.lang._String
None java.lang
java.util

org.apache.commons.monitoring.support.java13.java.util

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.apache.commons.monitoring.support.java13.java.util._Collections
None java.lang
java.util

Cycles

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

Package Package Dependencies
org.apache.commons.monitoring org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.aop org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.monitors org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring.impl.stopwatches org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.values org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.listeners org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.reporting org.apache.commons.monitoring.listeners
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.reporting.web org.apache.commons.monitoring.reporting
org.apache.commons.monitoring.listeners
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.servlet org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.servlet.jsp org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring
org.apache.commons.monitoring.spring org.apache.commons.monitoring.aop
org.apache.commons.monitoring
org.apache.commons.monitoring.impl.repositories
org.apache.commons.monitoring

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.