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.chain 6 0 6 7 4 100.0% 36.0% 36.0% 1
org.apache.commons.chain.config 5 5 0 1 5 0.0% 83.0% 17.0% 1
org.apache.commons.chain.generic 5 4 1 1 4 20.0% 80.0% 0.0% 1
org.apache.commons.chain.impl 10 10 0 2 6 0.0% 75.0% 25.0% 1
org.apache.commons.chain.web 7 4 3 3 11 43.0% 79.0% 21.0% 1
org.apache.commons.chain.web.faces 3 3 0 0 5 0.0% 100.0% 0.0% 1
org.apache.commons.chain.web.portlet 9 9 0 0 5 0.0% 100.0% 0.0% 1
org.apache.commons.chain.web.servlet 16 16 0 0 8 0.0% 100.0% 0.0% 1

Packages

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

org.apache.commons.chain

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 4 100.0% 36.0% 36.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.chain.Catalog
org.apache.commons.chain.CatalogFactory
org.apache.commons.chain.Chain
org.apache.commons.chain.Command
org.apache.commons.chain.Context
org.apache.commons.chain.Filter
None org.apache.commons.chain.config
org.apache.commons.chain.generic
org.apache.commons.chain.impl
org.apache.commons.chain.web
org.apache.commons.chain.web.faces
org.apache.commons.chain.web.portlet
org.apache.commons.chain.web.servlet
java.lang
java.util
org.apache.commons.chain.impl
org.apache.commons.logging

org.apache.commons.chain.config

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 5 0.0% 83.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.chain.config.ConfigCatalogRule
org.apache.commons.chain.config.ConfigDefineRule
org.apache.commons.chain.config.ConfigParser
org.apache.commons.chain.config.ConfigRegisterRule
org.apache.commons.chain.config.ConfigRuleSet
org.apache.commons.chain.web
java.lang
java.net
org.apache.commons.chain
org.apache.commons.digester
org.xml.sax

org.apache.commons.chain.generic

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.chain.generic.DispatchCommand
org.apache.commons.chain.generic.CopyCommand
org.apache.commons.chain.generic.DispatchLookupCommand
org.apache.commons.chain.generic.LookupCommand
org.apache.commons.chain.generic.RemoveCommand
org.apache.commons.chain.web.servlet
java.lang
java.lang.reflect
java.util
org.apache.commons.chain

org.apache.commons.chain.impl

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 6 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.chain.impl.CatalogBase
org.apache.commons.chain.impl.CatalogFactoryBase
org.apache.commons.chain.impl.ChainBase
org.apache.commons.chain.impl.ContextBase
org.apache.commons.chain.impl.ContextBase$1
org.apache.commons.chain.impl.ContextBase$EntrySetImpl
org.apache.commons.chain.impl.ContextBase$EntrySetIterator
org.apache.commons.chain.impl.ContextBase$MapEntryImpl
org.apache.commons.chain.impl.ContextBase$ValuesImpl
org.apache.commons.chain.impl.ContextBase$ValuesIterator
org.apache.commons.chain
org.apache.commons.chain.web
java.beans
java.io
java.lang
java.lang.reflect
java.util
org.apache.commons.chain

org.apache.commons.chain.web

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 11 43.0% 79.0% 21.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.chain.web.AbstractGetLocaleCommand
org.apache.commons.chain.web.AbstractSetLocaleCommand
org.apache.commons.chain.web.WebContext
org.apache.commons.chain.web.ChainListener
org.apache.commons.chain.web.ChainResources
org.apache.commons.chain.web.ChainServlet
org.apache.commons.chain.web.MapEntry
org.apache.commons.chain.web.faces
org.apache.commons.chain.web.portlet
org.apache.commons.chain.web.servlet
java.io
java.lang
java.net
java.util
javax.servlet
javax.servlet.http
org.apache.commons.chain
org.apache.commons.chain.config
org.apache.commons.chain.impl
org.apache.commons.digester
org.apache.commons.logging

org.apache.commons.chain.web.faces

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.chain.web.faces.FacesGetLocaleCommand
org.apache.commons.chain.web.faces.FacesSetLocaleCommand
org.apache.commons.chain.web.faces.FacesWebContext
None java.util
javax.faces.component
javax.faces.context
org.apache.commons.chain
org.apache.commons.chain.web

org.apache.commons.chain.web.portlet

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.chain.web.portlet.PortletApplicationScopeMap
org.apache.commons.chain.web.portlet.PortletGetLocaleCommand
org.apache.commons.chain.web.portlet.PortletInitParamMap
org.apache.commons.chain.web.portlet.PortletParamMap
org.apache.commons.chain.web.portlet.PortletParamValuesMap
org.apache.commons.chain.web.portlet.PortletRequestScopeMap
org.apache.commons.chain.web.portlet.PortletSessionScopeMap
org.apache.commons.chain.web.portlet.PortletSetLocaleCommand
org.apache.commons.chain.web.portlet.PortletWebContext
None java.lang
java.util
javax.portlet
org.apache.commons.chain
org.apache.commons.chain.web

org.apache.commons.chain.web.servlet

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 8 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.chain.web.servlet.ChainProcessor
org.apache.commons.chain.web.servlet.PathInfoMapper
org.apache.commons.chain.web.servlet.RequestParameterMapper
org.apache.commons.chain.web.servlet.ServletApplicationScopeMap
org.apache.commons.chain.web.servlet.ServletCookieMap
org.apache.commons.chain.web.servlet.ServletGetLocaleCommand
org.apache.commons.chain.web.servlet.ServletHeaderMap
org.apache.commons.chain.web.servlet.ServletHeaderValuesMap
org.apache.commons.chain.web.servlet.ServletInitParamMap
org.apache.commons.chain.web.servlet.ServletParamMap
org.apache.commons.chain.web.servlet.ServletParamValuesMap
org.apache.commons.chain.web.servlet.ServletPathMapper
org.apache.commons.chain.web.servlet.ServletRequestScopeMap
org.apache.commons.chain.web.servlet.ServletSessionScopeMap
org.apache.commons.chain.web.servlet.ServletSetLocaleCommand
org.apache.commons.chain.web.servlet.ServletWebContext
None java.io
java.lang
java.util
javax.servlet
javax.servlet.http
org.apache.commons.chain
org.apache.commons.chain.generic
org.apache.commons.chain.web

Cycles

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

Package Package Dependencies
org.apache.commons.chain org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.config org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.generic org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.impl org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain.web org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.web.faces org.apache.commons.chain.web
org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.web.portlet org.apache.commons.chain.web
org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain
org.apache.commons.chain.web.servlet org.apache.commons.chain.web
org.apache.commons.chain
org.apache.commons.chain.impl
org.apache.commons.chain

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.