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.sat4j 9 7 2 0 15 22.0% 100.0% 22.0% 1
org.sat4j.core 11 10 1 10 5 9.0% 33.0% 58.0% 1
org.sat4j.minisat 1 1 0 1 10 0.0% 91.0% 9.0% 1
org.sat4j.minisat.constraints 11 9 2 2 7 18.0% 78.0% 4.0% 1
org.sat4j.minisat.constraints.card 3 3 0 1 6 0.0% 86.0% 14.0% 1
org.sat4j.minisat.constraints.cnf 15 11 4 3 5 27.000002% 62.0% 11.0% 1
org.sat4j.minisat.core 38 19 19 9 6 50.0% 40.0% 10.0% 1
org.sat4j.minisat.learning 9 7 2 2 3 22.0% 60.000004% 18.0% 1
org.sat4j.minisat.orders 12 11 1 2 6 8.0% 75.0% 17.0% 1
org.sat4j.minisat.restarts 4 4 0 2 2 0.0% 50.0% 50.0% 1
org.sat4j.minisat.uip 2 2 0 2 4 0.0% 67.0% 33.0% 1
org.sat4j.opt 3 2 1 1 4 33.0% 80.0% 13.0% 1
org.sat4j.reader 8 7 1 1 9 12.0% 90.0% 2.0% 1
org.sat4j.specs 11 3 8 13 3 73.0% 19.0% 9.0% 1
org.sat4j.tools 20 19 1 5 6 5.0% 55.0% 40.0% 1
org.sat4j.tools.xplain 5 4 1 0 5 20.0% 100.0% 20.0% 1

Packages

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

org.sat4j

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 15 22.0% 100.0% 22.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.AbstractLauncher
org.sat4j.AbstractOptimizationLauncher
org.sat4j.AbstractLauncher$1
org.sat4j.AbstractLauncher$2
org.sat4j.BasicLauncher
org.sat4j.ExitCode
org.sat4j.LightFactory
org.sat4j.Messages
org.sat4j.MoreThanSAT
None java.io
java.lang
java.net
java.util
org.sat4j.core
org.sat4j.minisat
org.sat4j.minisat.constraints
org.sat4j.minisat.core
org.sat4j.minisat.learning
org.sat4j.minisat.orders
org.sat4j.minisat.restarts
org.sat4j.minisat.uip
org.sat4j.reader
org.sat4j.specs
org.sat4j.tools

org.sat4j.core

Afferent Couplings Efferent Couplings Abstractness Instability Distance
10 5 9.0% 33.0% 58.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.core.ASolverFactory
org.sat4j.core.DefaultComparator
org.sat4j.core.LiteralsUtils
org.sat4j.core.ReadOnlyVec
org.sat4j.core.ReadOnlyVecInt
org.sat4j.core.Vec
org.sat4j.core.Vec$1
org.sat4j.core.VecInt
org.sat4j.core.VecInt$1
org.sat4j.core.VecInt$1$1
org.sat4j.core.VecInt$2
org.sat4j
org.sat4j.minisat
org.sat4j.minisat.constraints
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.core
org.sat4j.minisat.orders
org.sat4j.opt
org.sat4j.reader
org.sat4j.tools
org.sat4j.tools.xplain
java.io
java.lang
java.lang.reflect
java.util
org.sat4j.specs

org.sat4j.minisat

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 10 0.0% 91.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.sat4j.minisat.SolverFactory
org.sat4j
org.sat4j.core
org.sat4j.minisat.constraints
org.sat4j.minisat.core
org.sat4j.minisat.learning
org.sat4j.minisat.orders
org.sat4j.minisat.restarts
org.sat4j.minisat.uip
org.sat4j.opt
org.sat4j.specs
org.sat4j.tools

org.sat4j.minisat.constraints

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 7 18.0% 78.0% 4.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.minisat.constraints.AbstractCardinalityDataStructure
org.sat4j.minisat.constraints.AbstractDataStructureFactory
org.sat4j.minisat.constraints.CardinalityDataStructure
org.sat4j.minisat.constraints.CardinalityDataStructureYanMax
org.sat4j.minisat.constraints.CardinalityDataStructureYanMin
org.sat4j.minisat.constraints.ClausalDataStructureCB
org.sat4j.minisat.constraints.ClausalDataStructureCBWL
org.sat4j.minisat.constraints.ClausalDataStructureWL
org.sat4j.minisat.constraints.MixedDataStructureDanielCBWL
org.sat4j.minisat.constraints.MixedDataStructureDanielHT
org.sat4j.minisat.constraints.MixedDataStructureDanielWL
org.sat4j
org.sat4j.minisat
java.io
java.lang
org.sat4j.core
org.sat4j.minisat.constraints.card
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.core
org.sat4j.specs

org.sat4j.minisat.constraints.card

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 6 0.0% 86.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.sat4j.minisat.constraints.card.AtLeast
org.sat4j.minisat.constraints.card.MaxWatchCard
org.sat4j.minisat.constraints.card.MinWatchCard
org.sat4j.minisat.constraints
java.io
java.lang
java.math
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.core
org.sat4j.specs

org.sat4j.minisat.constraints.cnf

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 5 27.000002% 62.0% 11.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.minisat.constraints.cnf.BinaryClause
org.sat4j.minisat.constraints.cnf.Clauses
org.sat4j.minisat.constraints.cnf.HTClause
org.sat4j.minisat.constraints.cnf.WLClause
org.sat4j.minisat.constraints.cnf.CBClause
org.sat4j.minisat.constraints.cnf.LearntBinaryClause
org.sat4j.minisat.constraints.cnf.LearntHTClause
org.sat4j.minisat.constraints.cnf.LearntWLClause
org.sat4j.minisat.constraints.cnf.Lits
org.sat4j.minisat.constraints.cnf.MixableCBClause
org.sat4j.minisat.constraints.cnf.OriginalBinaryClause
org.sat4j.minisat.constraints.cnf.OriginalHTClause
org.sat4j.minisat.constraints.cnf.OriginalWLClause
org.sat4j.minisat.constraints.cnf.UnitClause
org.sat4j.minisat.constraints.cnf.UnitClauses
org.sat4j.minisat.constraints
org.sat4j.minisat.constraints.card
org.sat4j.minisat.learning
java.io
java.lang
org.sat4j.core
org.sat4j.minisat.core
org.sat4j.specs

org.sat4j.minisat.core

Afferent Couplings Efferent Couplings Abstractness Instability Distance
9 6 50.0% 40.0% 10.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.minisat.core.ActivityListener
org.sat4j.minisat.core.AssertingClauseGenerator
org.sat4j.minisat.core.ConflictTimer
org.sat4j.minisat.core.ConflictTimerAdapter
org.sat4j.minisat.core.Constr
org.sat4j.minisat.core.ConstrActivityListener
org.sat4j.minisat.core.DataStructureFactory
org.sat4j.minisat.core.ILits
org.sat4j.minisat.core.IOrder
org.sat4j.minisat.core.IPhaseSelectionStrategy
org.sat4j.minisat.core.Learner
org.sat4j.minisat.core.LearningStrategy
org.sat4j.minisat.core.Propagatable
org.sat4j.minisat.core.RestartStrategy
org.sat4j.minisat.core.Solver$ISimplifier
org.sat4j.minisat.core.Solver$LearnedConstraintsDeletionStrategy
org.sat4j.minisat.core.Undoable
org.sat4j.minisat.core.UnitPropagationListener
org.sat4j.minisat.core.VarActivityListener
org.sat4j.minisat.core.ActivityComparator
org.sat4j.minisat.core.ConflictTimerContainer
org.sat4j.minisat.core.Counter
org.sat4j.minisat.core.Heap
org.sat4j.minisat.core.IntQueue
org.sat4j.minisat.core.Pair
org.sat4j.minisat.core.SearchParams
org.sat4j.minisat.core.Solver
org.sat4j.minisat.core.Solver$1
org.sat4j.minisat.core.Solver$2
org.sat4j.minisat.core.Solver$3
org.sat4j.minisat.core.Solver$4
org.sat4j.minisat.core.Solver$4$1
org.sat4j.minisat.core.Solver$5
org.sat4j.minisat.core.Solver$5$1
org.sat4j.minisat.core.Solver$6
org.sat4j.minisat.core.Solver$7
org.sat4j.minisat.core.SolverStats
org.sat4j.minisat.core.VoidTracing
org.sat4j
org.sat4j.minisat
org.sat4j.minisat.constraints
org.sat4j.minisat.constraints.card
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.learning
org.sat4j.minisat.orders
org.sat4j.minisat.restarts
org.sat4j.minisat.uip
java.io
java.lang
java.lang.reflect
java.util
org.sat4j.core
org.sat4j.specs

org.sat4j.minisat.learning

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 3 22.0% 60.000004% 18.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.minisat.learning.AbstractLearning
org.sat4j.minisat.learning.LimitedLearning
org.sat4j.minisat.learning.ActiveLearning
org.sat4j.minisat.learning.ClauseOnlyLearning
org.sat4j.minisat.learning.FixedLengthLearning
org.sat4j.minisat.learning.MiniSATLearning
org.sat4j.minisat.learning.NoLearningButHeuristics
org.sat4j.minisat.learning.NoLearningNoHeuristics
org.sat4j.minisat.learning.PercentLengthLearning
org.sat4j
org.sat4j.minisat
java.lang
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.core

org.sat4j.minisat.orders

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 6 8.0% 75.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.minisat.orders.AbstractPhaserecordingSelectionStrategy
org.sat4j.minisat.orders.NegativeLiteralSelectionStrategy
org.sat4j.minisat.orders.PhaseCachingAutoEraseStrategy
org.sat4j.minisat.orders.PhaseInLastLearnedClauseSelectionStrategy
org.sat4j.minisat.orders.PositiveLiteralSelectionStrategy
org.sat4j.minisat.orders.PureOrder
org.sat4j.minisat.orders.RSATPhaseSelectionStrategy
org.sat4j.minisat.orders.RandomLiteralSelectionStrategy
org.sat4j.minisat.orders.RandomWalkDecorator
org.sat4j.minisat.orders.UserFixedPhaseSelectionStrategy
org.sat4j.minisat.orders.ValuedLit
org.sat4j.minisat.orders.VarOrderHeap
org.sat4j
org.sat4j.minisat
java.io
java.lang
java.util
org.sat4j.core
org.sat4j.minisat.core
org.sat4j.specs

org.sat4j.minisat.restarts

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 2 0.0% 50.0% 50.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.sat4j.minisat.restarts.ArminRestarts
org.sat4j.minisat.restarts.LubyRestarts
org.sat4j.minisat.restarts.MiniSATRestarts
org.sat4j.minisat.restarts.NoRestarts
org.sat4j
org.sat4j.minisat
java.lang
org.sat4j.minisat.core

org.sat4j.minisat.uip

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 4 0.0% 67.0% 33.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.sat4j.minisat.uip.DecisionUIP
org.sat4j.minisat.uip.FirstUIP
org.sat4j
org.sat4j.minisat
java.io
java.lang
org.sat4j.minisat.core
org.sat4j.specs

org.sat4j.opt

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 4 33.0% 80.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.opt.AbstractSelectorVariablesDecorator
org.sat4j.opt.MaxSatDecorator
org.sat4j.opt.MinOneDecorator
org.sat4j.minisat
java.lang
org.sat4j.core
org.sat4j.specs
org.sat4j.tools

org.sat4j.reader

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 9 12.0% 90.0% 2.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.reader.Reader
org.sat4j.reader.AAGReader
org.sat4j.reader.AIGReader
org.sat4j.reader.DimacsReader
org.sat4j.reader.EfficientScanner
org.sat4j.reader.InstanceReader
org.sat4j.reader.LecteurDimacs
org.sat4j.reader.ParseFormatException
org.sat4j
java.io
java.lang
java.math
java.net
java.util
java.util.zip
org.sat4j.core
org.sat4j.specs
org.sat4j.tools

org.sat4j.specs

Afferent Couplings Efferent Couplings Abstractness Instability Distance
13 3 73.0% 19.0% 9.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.specs.IConstr
org.sat4j.specs.IOptimizationProblem
org.sat4j.specs.IProblem
org.sat4j.specs.ISolver
org.sat4j.specs.IVec
org.sat4j.specs.IVecInt
org.sat4j.specs.IteratorInt
org.sat4j.specs.SearchListener
org.sat4j.specs.ContradictionException
org.sat4j.specs.Lbool
org.sat4j.specs.TimeoutException
org.sat4j
org.sat4j.core
org.sat4j.minisat
org.sat4j.minisat.constraints
org.sat4j.minisat.constraints.card
org.sat4j.minisat.constraints.cnf
org.sat4j.minisat.core
org.sat4j.minisat.orders
org.sat4j.minisat.uip
org.sat4j.opt
org.sat4j.reader
org.sat4j.tools
org.sat4j.tools.xplain
java.io
java.lang
java.util

org.sat4j.tools

Afferent Couplings Efferent Couplings Abstractness Instability Distance
5 6 5.0% 55.0% 40.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.tools.SolverDecorator
org.sat4j.tools.ConflictLevelTracing
org.sat4j.tools.ConstrGroup
org.sat4j.tools.DecisionLevelTracing
org.sat4j.tools.DecisionTracing
org.sat4j.tools.DimacsArrayReader
org.sat4j.tools.DimacsOutputSolver
org.sat4j.tools.DimacsStringSolver
org.sat4j.tools.DotSearchTracing
org.sat4j.tools.ExtendedDimacsArrayReader
org.sat4j.tools.GateTranslator
org.sat4j.tools.LearnedClauseSizeTracing
org.sat4j.tools.Minimal4CardinalityModel
org.sat4j.tools.Minimal4InclusionModel
org.sat4j.tools.ModelIterator
org.sat4j.tools.OptToSatAdapter
org.sat4j.tools.RemiUtils
org.sat4j.tools.SingleSolutionDetector
org.sat4j.tools.SolutionCounter
org.sat4j.tools.TextOutputTracing
org.sat4j
org.sat4j.minisat
org.sat4j.opt
org.sat4j.reader
org.sat4j.tools.xplain
java.io
java.lang
java.math
java.util
org.sat4j.core
org.sat4j.specs

org.sat4j.tools.xplain

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 20.0% 100.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.sat4j.tools.xplain.XplainStrategy
org.sat4j.tools.xplain.Pair
org.sat4j.tools.xplain.QuickXplainStrategy
org.sat4j.tools.xplain.ReplayXplainStrategy
org.sat4j.tools.xplain.Xplain
None java.lang
java.util
org.sat4j.core
org.sat4j.specs
org.sat4j.tools

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.