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 ]

PackageTCCCACCaCeAIDV
de.jos110050.0%100.0%0.0%1
de.jos.game21171050.0%58.999996%9.0%1
de.jos.game.actions118361427.000002%70.0%3.0%1
de.jos.game.actions.cleanup97231122.0%79.0%1.0%1
de.jos.game.actions.permanent76151214.0%71.0%15.000001%1
de.jos.game.aspect32111333.0%93.0%26.0%1
de.jos.game.aspect.plugins54111020.0%91.0%11.0%1
de.jos.game.exceptions110110.0%50.0%50.0%1
de.jos.game.loader4222350.0%60.000004%10.0%1
de.jos.game.logic1613372219.0%76.0%5.0%1
de.jos.game.music330140.0%80.0%20.0%1
de.jos.game.objects1010011140.0%56.0%44.0%1
de.jos.game.objects.buttons252321178.0%94.0%2.0%1
de.jos.game.objects.screen1614252612.0%84.0%4.0%1
de.jos.game.objects.state2111250.0%67.0%17.0%1
de.jos.game.xml550840.0%33.0%67.0%1
de.jos.game.xml.converter220150.0%83.0%17.0%1

Packages

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

de.jos

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
050.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.TestScore
Nonede.jos.game
de.jos.game.objects
java.io
java.lang
junit.framework

de.jos.game

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
71050.0%58.999996%9.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.Constants
de.jos.game.TestSprite
de.jos
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects
de.jos.game.objects.screen
com.golden.gamedev
com.golden.gamedev.engine
de.jos.game.loader
de.jos.game.objects
de.jos.game.objects.screen
java.awt
java.lang
java.util
org.springframework.beans.factory.xml
org.springframework.core.io

de.jos.game.actions

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
61427.000002%70.0%3.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.actions.AbstractAction
de.jos.game.actions.LayerConstants
de.jos.game.actions.SpecialActionEvent
de.jos.game.actions.ActionBulletMoving
de.jos.game.actions.ActionComparator
de.jos.game.actions.ActionComparatorTest
de.jos.game.actions.ActionContainer
de.jos.game.actions.ActionFadeBullets
de.jos.game.actions.ActionScrollInOut
de.jos.game.actions.ActionScrollInOut$State
de.jos.game.actions.ActionTextFader
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects.buttons
de.jos.game.objects.screen
com.golden.gamedev
com.golden.gamedev.object
com.golden.gamedev.object.sprite
de.jos.game
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.logic
de.jos.game.objects
java.awt
java.io
java.lang
java.util
junit.framework
org.apache.commons.lang

de.jos.game.actions.cleanup

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
31122.0%79.0%1.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.actions.cleanup.AbstractCleanupAction
de.jos.game.actions.cleanup.CleanupActionAbstractBulletMoving
de.jos.game.actions.cleanup.CleanupActionBulletMovingInfinite
de.jos.game.actions.cleanup.CleanupActionBulletMovingPuzzle
de.jos.game.actions.cleanup.CleanupActionLevelAdvancement
de.jos.game.actions.cleanup.CleanupActionNone
de.jos.game.actions.cleanup.CleanupActionScore
de.jos.game.actions.cleanup.CleanupInfiniteGameOverAction
de.jos.game.actions.cleanup.CleanupPuzzleGameOverAction
de.jos.game.actions
de.jos.game.actions.permanent
de.jos.game.logic
de.jos.game
de.jos.game.actions
de.jos.game.actions.permanent
de.jos.game.logic
de.jos.game.objects
de.jos.game.xml
java.io
java.lang
java.util
org.apache.commons.lang
org.apache.commons.logging

de.jos.game.actions.permanent

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
51214.0%71.0%15.000001%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.actions.permanent.SpecialEventPermanent
de.jos.game.actions.permanent.AbstractPermanentAction
de.jos.game.actions.permanent.ActionCanister
de.jos.game.actions.permanent.ActionCountdown
de.jos.game.actions.permanent.ActionMoveStatistics
de.jos.game.actions.permanent.ActionPuzzleSolvedCheck
de.jos.game.actions.permanent.ActionStatistics
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects.buttons
com.golden.gamedev
com.golden.gamedev.object
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.exceptions
de.jos.game.logic
de.jos.game.objects
de.jos.game.xml
java.awt
java.lang
java.util
org.apache.commons.lang

de.jos.game.aspect

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
11333.0%93.0%26.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.aspect.DebugConsoleAware
de.jos.game.aspect.ArchitectureAspect
de.jos.game.aspect.DebugConsole
de.jos.game.objects.screen
com.golden.gamedev.engine
com.golden.gamedev.object
de.jos.game.aspect.plugins
de.jos.game.objects
de.jos.game.objects.screen
java.awt
java.awt.event
java.io
java.lang
java.lang.annotation
java.util
org.apache.commons.lang
org.aspectj.lang

de.jos.game.aspect.plugins

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
11020.0%91.0%11.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.aspect.plugins.DebugPlugin
de.jos.game.aspect.plugins.CanisterPlugin
de.jos.game.aspect.plugins.CanisterPlugin$CanisterCommand
de.jos.game.aspect.plugins.LevelPlugin
de.jos.game.aspect.plugins.ScorePlugin
de.jos.game.aspect
de.jos.game
de.jos.game.actions
de.jos.game.actions.permanent
de.jos.game.logic
de.jos.game.objects
de.jos.game.objects.screen
de.jos.game.xml
java.lang
java.util
org.apache.commons.lang

de.jos.game.exceptions

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
110.0%50.0%50.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.game.exceptions.NeedsToBeOverriddenException
de.jos.game.actions.permanent
java.lang

de.jos.game.loader

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2350.0%60.000004%10.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.loader.AbstractGameLoader
de.jos.game.loader.IGameLoader
de.jos.game.loader.GameLoaderJava2D
de.jos.game.loader.GameLoaderOpenGL
de.jos.game
de.jos.game.objects.screen
com.golden.gamedev
java.awt
java.lang

de.jos.game.logic

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
72219.0%76.0%5.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.logic.AbstractGameBoard
de.jos.game.logic.AbstractGameLogic
de.jos.game.logic.LevelLoader
de.jos.game.logic.AbstractGameLogic$Direction
de.jos.game.logic.AbstractGameLogic$RenderedButton
de.jos.game.logic.BoardUtils
de.jos.game.logic.CombinationUtils
de.jos.game.logic.InfiniteGameBoard
de.jos.game.logic.InfiniteGameBoardTest
de.jos.game.logic.InfiniteGameBoardTest$CustomInfiniteGameBoard
de.jos.game.logic.InfiniteGameLogic
de.jos.game.logic.LevelLoaderXStream
de.jos.game.logic.NInARowValidator
de.jos.game.logic.NInARowValidatorTest
de.jos.game.logic.PuzzleGameBoard
de.jos.game.logic.PuzzleGameLogic
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.aspect.plugins
de.jos.game.objects
de.jos.game.objects.buttons
de.jos.game.objects.screen
com.golden.gamedev
com.golden.gamedev.engine
com.golden.gamedev.object
com.golden.gamedev.object.background
com.thoughtworks.xstream
com.thoughtworks.xstream.io.xml
de.jos.game
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.objects
de.jos.game.objects.screen
de.jos.game.xml
de.jos.game.xml.converter
java.awt
java.io
java.lang
java.util
junit.framework
org.apache.commons.lang
org.apache.commons.lang.math
org.apache.commons.logging

de.jos.game.music

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
140.0%80.0%20.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.game.music.MusicManager
de.jos.game.music.Player
de.jos.game.music.Player$BackgroundMusicThread
de.jos.game.objects.screen
ibxm
java.io
java.lang
javax.sound.sampled

de.jos.game.objects

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
11140.0%56.0%44.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.game.objects.Bullet
de.jos.game.objects.Bullet$State
de.jos.game.objects.Canister
de.jos.game.objects.CombinationComparatorTest
de.jos.game.objects.Countdown
de.jos.game.objects.Position
de.jos.game.objects.ResourceContainer
de.jos.game.objects.ScoreCalculator
de.jos.game.objects.SimplifiedBullet
de.jos.game.objects.SimplifiedBullet$BulletSize
de.jos
de.jos.game
de.jos.game.actions
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.aspect
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects.buttons
de.jos.game.objects.screen
de.jos.game.xml
com.golden.gamedev.object
com.golden.gamedev.object.background
com.golden.gamedev.object.sprite
de.jos.game
de.jos.game.logic
de.jos.game.xml
java.awt
java.awt.image
java.io
java.lang
java.util
junit.framework
org.apache.commons.lang.builder
org.springframework.beans.factory.xml

de.jos.game.objects.buttons

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1178.0%94.0%2.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.objects.buttons.ButtonClickCallback
de.jos.game.objects.buttons.GameButton
de.jos.game.objects.buttons.BackButton
de.jos.game.objects.buttons.BackButton$BackButtonClickCallback
de.jos.game.objects.buttons.CreditsButton
de.jos.game.objects.buttons.CreditsButton$CreditsButtonClickCallback
de.jos.game.objects.buttons.GameButton$Action
de.jos.game.objects.buttons.HelpButton
de.jos.game.objects.buttons.HelpButton$HelpButtonClickCallback
de.jos.game.objects.buttons.InfiniteButton
de.jos.game.objects.buttons.InfiniteButton$InfiniteModeButtonClickCallback
de.jos.game.objects.buttons.NextButton
de.jos.game.objects.buttons.NextButton$NextButtonClickCallback
de.jos.game.objects.buttons.PreviousButton
de.jos.game.objects.buttons.PreviousButton$PreviousButtonClickCallback
de.jos.game.objects.buttons.PuzzleButton
de.jos.game.objects.buttons.PuzzleButton$PuzzleModeButtonClickCallback
de.jos.game.objects.buttons.PuzzleLevelButton
de.jos.game.objects.buttons.PuzzleLevelButton$PuzzleLevelButtonClickCallback
de.jos.game.objects.buttons.QuitButton
de.jos.game.objects.buttons.QuitButton$QuitButtonClickCallback
de.jos.game.objects.buttons.RestartButton
de.jos.game.objects.buttons.RestartButton$RestartButtonClickCallback
de.jos.game.objects.buttons.UndoButton
de.jos.game.objects.buttons.UndoButton$UndoButtonClickCallback
de.jos.game.objects.screen
com.golden.gamedev
com.golden.gamedev.engine
com.golden.gamedev.gui
com.golden.gamedev.object
de.jos.game.actions
de.jos.game.actions.permanent
de.jos.game.logic
de.jos.game.objects
de.jos.game.objects.screen
de.jos.game.xml
java.awt
java.awt.image
java.io
java.lang
java.util
org.apache.commons.lang.builder
org.apache.commons.logging

de.jos.game.objects.screen

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
52612.0%84.0%4.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.objects.screen.AbstractGameObject
de.jos.game.objects.screen.MultiPageScreen
de.jos.game.objects.screen.CombinationScreen
de.jos.game.objects.screen.CombinationScreen$1
de.jos.game.objects.screen.CombinationScreen$CombinationInfoLine
de.jos.game.objects.screen.CreditsScreen
de.jos.game.objects.screen.HelpScreen
de.jos.game.objects.screen.IntroScreen
de.jos.game.objects.screen.IntroScreen$IntroThread
de.jos.game.objects.screen.IntroScreen$IntroThread$BulletColor
de.jos.game.objects.screen.PushinGLMain
de.jos.game.objects.screen.PuzzleLevelScreen
de.jos.game.objects.screen.Screen
de.jos.game.objects.screen.StartScreen
de.jos.game.objects.screen.TestScreen
de.jos.game.objects.screen.TheGame
de.jos.game
de.jos.game.aspect
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects.buttons
com.golden.gamedev
com.golden.gamedev.engine
com.golden.gamedev.gui
com.golden.gamedev.gui.toolkit
com.golden.gamedev.object
com.golden.gamedev.object.background
de.jos.game
de.jos.game.actions
de.jos.game.aspect
de.jos.game.loader
de.jos.game.logic
de.jos.game.music
de.jos.game.objects
de.jos.game.objects.buttons
de.jos.game.objects.state
de.jos.game.xml
java.awt
java.awt.image
java.io
java.lang
java.util
org.apache.commons.lang
org.apache.commons.logging
org.springframework.beans.factory.config
org.springframework.beans.factory.xml
org.springframework.core.io

de.jos.game.objects.state

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1250.0%67.0%17.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
de.jos.game.objects.state.PuzzleLevelStateChangedListener
de.jos.game.objects.state.PuzzleLevelState
de.jos.game.objects.screen
java.lang
java.util

de.jos.game.xml

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
840.0%33.0%67.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.game.xml.Action
de.jos.game.xml.Colors
de.jos.game.xml.Combination
de.jos.game.xml.Combination$CombinationComparator
de.jos.game.xml.Level
de.jos.game.actions.cleanup
de.jos.game.actions.permanent
de.jos.game.aspect.plugins
de.jos.game.logic
de.jos.game.objects
de.jos.game.objects.buttons
de.jos.game.objects.screen
de.jos.game.xml.converter
de.jos.game.objects
java.io
java.lang
java.util

de.jos.game.xml.converter

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
150.0%83.0%17.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonede.jos.game.xml.converter.ActionConverter
de.jos.game.xml.converter.ColorsConverter
de.jos.game.logic
com.thoughtworks.xstream.converters
com.thoughtworks.xstream.io
de.jos.game.xml
java.lang
java.util

Cycles

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

PackagePackage Dependencies
de.josde.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.gamede.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.actionsde.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.actions.cleanupde.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.actions.permanentde.jos.game.actions
de.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.aspectde.jos.game.aspect.plugins
de.jos.game.actions.permanent
de.jos.game.actions
de.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.aspect.pluginsde.jos.game.actions.permanent
de.jos.game.actions
de.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.logicde.jos.game.objects
de.jos.game.logic
de.jos.game.objectsde.jos.game.logic
de.jos.game.objects
de.jos.game.objects.buttonsde.jos.game.objects.screen
de.jos.game.objects.buttons
de.jos.game.objects.screende.jos.game.objects.buttons
de.jos.game.objects.screen
de.jos.game.xmlde.jos.game.objects
de.jos.game.logic
de.jos.game.objects
de.jos.game.xml.converterde.jos.game.xml
de.jos.game.objects
de.jos.game.logic
de.jos.game.objects

Explanation

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

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

TermDescription
Number of ClassesThe number of concrete and abstract classes (and interfaces) in the package is an indicator of the extensibility of the package.
Afferent CouplingsThe number of other packages that depend upon classes within the package is an indicator of the package's responsibility.
Efferent CouplingsThe number of other packages that the classes in the package depend upon is an indicator of the package's independence.
AbstractnessThe 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.
InstabilityThe 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.
DistanceThe 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.
CyclesPackages 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.