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.workflow 17 5 12 6 3 71.0% 33.0% 4.0% 1
org.apache.commons.workflow.base 10 7 3 4 7 30.000002% 64.0% 6.0% 1
org.apache.commons.workflow.core 29 29 0 2 6 0.0% 75.0% 25.0% 1
org.apache.commons.workflow.demo 1 1 0 0 7 0.0% 100.0% 0.0% 1
org.apache.commons.workflow.io 6 6 0 2 8 0.0% 80.0% 20.0% 1
org.apache.commons.workflow.util 4 4 0 3 3 0.0% 50.0% 50.0% 1
org.apache.commons.workflow.web 12 12 0 0 12 0.0% 100.0% 0.0% 1

Packages

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

org.apache.commons.workflow

Afferent Couplings Efferent Couplings Abstractness Instability Distance
6 3 71.0% 33.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.workflow.Activity
org.apache.commons.workflow.Block
org.apache.commons.workflow.Context
org.apache.commons.workflow.ContextListener
org.apache.commons.workflow.Descriptor
org.apache.commons.workflow.Descriptors
org.apache.commons.workflow.Iterator
org.apache.commons.workflow.Owner
org.apache.commons.workflow.Registry
org.apache.commons.workflow.Scope
org.apache.commons.workflow.ScopeListener
org.apache.commons.workflow.Step
org.apache.commons.workflow.BlockState
org.apache.commons.workflow.ContextEvent
org.apache.commons.workflow.ScopeEvent
org.apache.commons.workflow.StepException
org.apache.commons.workflow.WorkflowException
org.apache.commons.workflow.base
org.apache.commons.workflow.core
org.apache.commons.workflow.demo
org.apache.commons.workflow.io
org.apache.commons.workflow.util
org.apache.commons.workflow.web
java.lang
java.util
org.apache.commons.jxpath

org.apache.commons.workflow.base

Afferent Couplings Efferent Couplings Abstractness Instability Distance
4 7 30.000002% 64.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.workflow.base.BaseBlock
org.apache.commons.workflow.base.BaseStep
org.apache.commons.workflow.base.DescriptorStep
org.apache.commons.workflow.base.BaseActivity
org.apache.commons.workflow.base.BaseContext
org.apache.commons.workflow.base.BaseContextBean
org.apache.commons.workflow.base.BaseDescriptor
org.apache.commons.workflow.base.BaseRegistry
org.apache.commons.workflow.base.BaseRuleSet
org.apache.commons.workflow.base.BaseScope
org.apache.commons.workflow.core
org.apache.commons.workflow.demo
org.apache.commons.workflow.io
org.apache.commons.workflow.web
java.lang
java.util
org.apache.commons.collections
org.apache.commons.digester
org.apache.commons.jxpath
org.apache.commons.workflow
org.apache.commons.workflow.util

org.apache.commons.workflow.core

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.workflow.core.AndStep
org.apache.commons.workflow.core.BreakStep
org.apache.commons.workflow.core.CallStep
org.apache.commons.workflow.core.ConstructStep
org.apache.commons.workflow.core.ContinueStep
org.apache.commons.workflow.core.CoreRuleSet
org.apache.commons.workflow.core.DuplicateStep
org.apache.commons.workflow.core.ExitStep
org.apache.commons.workflow.core.GetStep
org.apache.commons.workflow.core.GotoStep
org.apache.commons.workflow.core.IfAnyStep
org.apache.commons.workflow.core.IfNotAnyStep
org.apache.commons.workflow.core.IfNotStep
org.apache.commons.workflow.core.IfStep
org.apache.commons.workflow.core.InvokeStep
org.apache.commons.workflow.core.LoadStep
org.apache.commons.workflow.core.NotAndStep
org.apache.commons.workflow.core.NotOrStep
org.apache.commons.workflow.core.OrStep
org.apache.commons.workflow.core.PopStep
org.apache.commons.workflow.core.PutStep
org.apache.commons.workflow.core.RemoveStep
org.apache.commons.workflow.core.StringStep
org.apache.commons.workflow.core.SuspendStep
org.apache.commons.workflow.core.SwapStep
org.apache.commons.workflow.core.WhileAnyStep
org.apache.commons.workflow.core.WhileNotAnyStep
org.apache.commons.workflow.core.WhileNotStep
org.apache.commons.workflow.core.WhileStep
org.apache.commons.workflow.demo
org.apache.commons.workflow.web
java.lang
java.lang.reflect
java.util
org.apache.commons.digester
org.apache.commons.workflow
org.apache.commons.workflow.base

org.apache.commons.workflow.demo

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.workflow.demo.Main
None java.io
java.lang
org.apache.commons.digester
org.apache.commons.workflow
org.apache.commons.workflow.base
org.apache.commons.workflow.core
org.apache.commons.workflow.io

org.apache.commons.workflow.io

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 8 0.0% 80.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.workflow.io.DisplayStep
org.apache.commons.workflow.io.GetStep
org.apache.commons.workflow.io.IoRuleSet
org.apache.commons.workflow.io.PeekStep
org.apache.commons.workflow.io.ReadStep
org.apache.commons.workflow.io.WriteStep
org.apache.commons.workflow.demo
org.apache.commons.workflow.web
java.io
java.lang
java.net
java.util
org.apache.commons.digester
org.apache.commons.workflow
org.apache.commons.workflow.base
org.apache.commons.workflow.util

org.apache.commons.workflow.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 3 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.workflow.util.ContextSupport
org.apache.commons.workflow.util.MapEntry
org.apache.commons.workflow.util.ScopeSupport
org.apache.commons.workflow.util.WorkflowUtils
org.apache.commons.workflow.base
org.apache.commons.workflow.io
org.apache.commons.workflow.web
java.lang
java.util
org.apache.commons.workflow

org.apache.commons.workflow.web

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 12 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.workflow.web.ActivityServlet
org.apache.commons.workflow.web.DemoBean
org.apache.commons.workflow.web.ForwardStep
org.apache.commons.workflow.web.GotoStep
org.apache.commons.workflow.web.HttpSessionScope
org.apache.commons.workflow.web.IncludeResponse23
org.apache.commons.workflow.web.IncludeStep23
org.apache.commons.workflow.web.PopulateStep
org.apache.commons.workflow.web.ServletContextScope
org.apache.commons.workflow.web.ServletRequestScope
org.apache.commons.workflow.web.WebContext
org.apache.commons.workflow.web.WebRuleSet
None java.io
java.lang
java.util
javax.servlet
javax.servlet.http
org.apache.commons.beanutils
org.apache.commons.digester
org.apache.commons.workflow
org.apache.commons.workflow.base
org.apache.commons.workflow.core
org.apache.commons.workflow.io
org.apache.commons.workflow.util

Cycles

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

There are no cyclic dependencies.

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.