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
net.sf.juoserver.api2902966100.0%50.0%50.0%1
net.sf.juoserver.configuration220060.0%100.0%0.0%1
net.sf.juoserver.controller5232560.000004%71.0%31.0%1
net.sf.juoserver.data110040.0%100.0%0.0%1
net.sf.juoserver.files14140070.0%100.0%0.0%1
net.sf.juoserver.model31292456.0%56.0%38.0%1
net.sf.juoserver.networking65111117.0%92.0%8.0%1
net.sf.juoserver.protocol767330164.0%100.0%4.0%1

Packages

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

net.sf.juoserver.api

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
66100.0%50.0%50.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.juoserver.api.ClientHandler
net.sf.juoserver.api.ClientHandlerFactory
net.sf.juoserver.api.ClientMovementTracker
net.sf.juoserver.api.Coded
net.sf.juoserver.api.Configuration
net.sf.juoserver.api.Decodable
net.sf.juoserver.api.Encoder
net.sf.juoserver.api.FileReadersFactory
net.sf.juoserver.api.GenericFileEntryEncoder
net.sf.juoserver.api.GenericFileReader
net.sf.juoserver.api.IdxFileEntry
net.sf.juoserver.api.IdxFileEntryEncoder
net.sf.juoserver.api.IdxFileReader
net.sf.juoserver.api.IndexedFileReader
net.sf.juoserver.api.Manageable
net.sf.juoserver.api.MapFileReader
net.sf.juoserver.api.MapLocation
net.sf.juoserver.api.MapTile
net.sf.juoserver.api.Message
net.sf.juoserver.api.MessageCompressor
net.sf.juoserver.api.MessageDecoder
net.sf.juoserver.api.MessageDecoderProvider
net.sf.juoserver.api.MessageReader
net.sf.juoserver.api.MessageReaderFactory
net.sf.juoserver.api.ProtocolController
net.sf.juoserver.api.Server
net.sf.juoserver.api.SkillsFileEntry
net.sf.juoserver.api.SkillsMulFileReader
net.sf.juoserver.api.UOObject
Nonenet.sf.juoserver.configuration
net.sf.juoserver.controller
net.sf.juoserver.files
net.sf.juoserver.model
net.sf.juoserver.networking
net.sf.juoserver.protocol
java.io
java.lang
java.lang.annotation
java.net
java.nio
java.util

net.sf.juoserver.configuration

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
060.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.juoserver.configuration.ConfigurationException
net.sf.juoserver.configuration.ConfigurationImpl
Nonejava.io
java.lang
java.util
javax.swing
net.sf.juoserver.api
org.apache.log4j

net.sf.juoserver.controller

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2560.000004%71.0%31.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.juoserver.controller.Controller
net.sf.juoserver.controller.ControllerFactory
net.sf.juoserver.controller.IntercomListener
net.sf.juoserver.controller.Intercom
net.sf.juoserver.controller.IntercomException
net.sf.juoserver.networking
net.sf.juoserver.protocol
java.lang
java.util
java.util.concurrent
net.sf.juoserver.api
net.sf.juoserver.model

net.sf.juoserver.data

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
040.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.juoserver.data.DataManagerImpl
Nonejava.lang
java.util
net.sf.juoserver.model
net.sf.juoserver.networking

net.sf.juoserver.files

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
070.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.juoserver.files.BaseIdxFileReader
net.sf.juoserver.files.CustomizationHelper
net.sf.juoserver.files.FileReaderException
net.sf.juoserver.files.FileReadersFactoryImpl
net.sf.juoserver.files.IdxFileEntryImpl
net.sf.juoserver.files.MapFileReaderImpl
net.sf.juoserver.files.MapFileReaderImpl$1
net.sf.juoserver.files.MapTileImpl
net.sf.juoserver.files.MulFileReader
net.sf.juoserver.files.SkillsFileEntryImpl
net.sf.juoserver.files.SkillsIdxFileEntryEncoder
net.sf.juoserver.files.SkillsIdxFileReader
net.sf.juoserver.files.SkillsMulFileEntryEncoder
net.sf.juoserver.files.SkillsMulFileReaderImpl
Nonejava.io
java.lang
java.nio
java.util
net.sf.juoserver.api
org.apache.commons.codec.binary
org.apache.log4j

net.sf.juoserver.model

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
456.0%56.0%38.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.juoserver.model.Core
net.sf.juoserver.model.ItemVisitor
net.sf.juoserver.model.Account
net.sf.juoserver.model.CharacterStatus
net.sf.juoserver.model.City
net.sf.juoserver.model.ClientFeature
net.sf.juoserver.model.ClientFlag
net.sf.juoserver.model.Clilocs
net.sf.juoserver.model.Container
net.sf.juoserver.model.CoreImpl
net.sf.juoserver.model.CoreImpl$1
net.sf.juoserver.model.Direction
net.sf.juoserver.model.EnumUtils
net.sf.juoserver.model.Flag
net.sf.juoserver.model.Item
net.sf.juoserver.model.Layer
net.sf.juoserver.model.LightLevel
net.sf.juoserver.model.LoadException
net.sf.juoserver.model.MessageType
net.sf.juoserver.model.Mobile
net.sf.juoserver.model.Mobile$1
net.sf.juoserver.model.Notoriety
net.sf.juoserver.model.PlayingCharacter
net.sf.juoserver.model.RaceFlag
net.sf.juoserver.model.Season
net.sf.juoserver.model.ServerInfo
net.sf.juoserver.model.SexRace
net.sf.juoserver.model.Skill
net.sf.juoserver.model.SkillLockFlag
net.sf.juoserver.model.Skills
net.sf.juoserver.model.StatusFlag
net.sf.juoserver.controller
net.sf.juoserver.data
net.sf.juoserver.networking
net.sf.juoserver.protocol
java.io
java.lang
java.net
java.util
net.sf.juoserver.api

net.sf.juoserver.networking

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
11117.0%92.0%8.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.juoserver.networking.DataManager
net.sf.juoserver.networking.ClientHandlerFactoryImpl
net.sf.juoserver.networking.ClientHandlerImpl
net.sf.juoserver.networking.ClientThreadsManager
net.sf.juoserver.networking.ClientThreadsManager$1
net.sf.juoserver.networking.ServerImpl
net.sf.juoserver.data
java.io
java.lang
java.net
java.nio
java.util
java.util.concurrent
net.sf.juoserver.api
net.sf.juoserver.controller
net.sf.juoserver.model
org.apache.log4j
org.springframework.context.support

net.sf.juoserver.protocol

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
0164.0%100.0%4.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.juoserver.protocol.AbstractMessage
net.sf.juoserver.protocol.MegaClilocResponse
net.sf.juoserver.protocol.Subcommand
net.sf.juoserver.protocol.BadDecodableException
net.sf.juoserver.protocol.CharacterDraw
net.sf.juoserver.protocol.CharacterList
net.sf.juoserver.protocol.CharacterSelect
net.sf.juoserver.protocol.CharacterWarmode
net.sf.juoserver.protocol.ClasspathMessageDecoderProvider
net.sf.juoserver.protocol.ClasspathMessageDecoderProvider$1
net.sf.juoserver.protocol.ClientFeatures
net.sf.juoserver.protocol.ClientMovementTrackerImpl
net.sf.juoserver.protocol.ClientVersion
net.sf.juoserver.protocol.ClilocMessage
net.sf.juoserver.protocol.ControllerFactoryImpl
net.sf.juoserver.protocol.ControllerImpl
net.sf.juoserver.protocol.ControllerImpl$1
net.sf.juoserver.protocol.DefaultMessageReader
net.sf.juoserver.protocol.DeleteItem
net.sf.juoserver.protocol.DoubleClick
net.sf.juoserver.protocol.DragItem
net.sf.juoserver.protocol.DrawContainer
net.sf.juoserver.protocol.DrawGamePlayer
net.sf.juoserver.protocol.DropItem
net.sf.juoserver.protocol.GeneralInformation
net.sf.juoserver.protocol.GeneralInformation$1
net.sf.juoserver.protocol.GeneralInformation$ClientLanguage
net.sf.juoserver.protocol.GeneralInformation$ClientType
net.sf.juoserver.protocol.GeneralInformation$EnableMapDiff
net.sf.juoserver.protocol.GeneralInformation$ScreenSize
net.sf.juoserver.protocol.GeneralInformation$SetCursorHueSetMap
net.sf.juoserver.protocol.GeneralInformation$SubcommandType
net.sf.juoserver.protocol.GetPlayerStatus
net.sf.juoserver.protocol.GetPlayerStatus$PlayerStatusRequest
net.sf.juoserver.protocol.Huffman
net.sf.juoserver.protocol.ItemManager
net.sf.juoserver.protocol.LoginComplete
net.sf.juoserver.protocol.LoginConfirm
net.sf.juoserver.protocol.LoginReject
net.sf.juoserver.protocol.LoginReject$LoginRejectReasons
net.sf.juoserver.protocol.LoginRequest
net.sf.juoserver.protocol.LoginSeed
net.sf.juoserver.protocol.LookRequest
net.sf.juoserver.protocol.MegaClilocRequest
net.sf.juoserver.protocol.MegaClilocResponse$1
net.sf.juoserver.protocol.MegaClilocResponse$ItemMegaClilocResponse
net.sf.juoserver.protocol.MegaClilocResponse$MobileMegaClilocResponse
net.sf.juoserver.protocol.MessageReaderException
net.sf.juoserver.protocol.MessagesUtils
net.sf.juoserver.protocol.MoveRequest
net.sf.juoserver.protocol.MovementAck
net.sf.juoserver.protocol.MovementReject
net.sf.juoserver.protocol.ObjectInfo
net.sf.juoserver.protocol.ObjectRevision
net.sf.juoserver.protocol.OverallLightLevel
net.sf.juoserver.protocol.Packets
net.sf.juoserver.protocol.Paperdoll
net.sf.juoserver.protocol.PersonalLightLevel
net.sf.juoserver.protocol.PickUpItem
net.sf.juoserver.protocol.PingPong
net.sf.juoserver.protocol.ProtocolException
net.sf.juoserver.protocol.RevisionUtils
net.sf.juoserver.protocol.SeasonalInformation
net.sf.juoserver.protocol.SelectServer
net.sf.juoserver.protocol.ServerConnect
net.sf.juoserver.protocol.ServerList
net.sf.juoserver.protocol.ServerLoginRequest
net.sf.juoserver.protocol.SkillLock
net.sf.juoserver.protocol.SkillUpdate
net.sf.juoserver.protocol.SkillUpdate$SkillUpdateType
net.sf.juoserver.protocol.SpyOnClient
net.sf.juoserver.protocol.StatusBarInfo
net.sf.juoserver.protocol.UnicodeSpeech
net.sf.juoserver.protocol.UnicodeSpeechRequest
net.sf.juoserver.protocol.UpdatePlayer
net.sf.juoserver.protocol.WearItem
Nonejava.io
java.lang
java.lang.reflect
java.net
java.nio
java.nio.charset
java.util
java.util.concurrent
net.sf.juoserver.api
net.sf.juoserver.controller
net.sf.juoserver.model
org.apache.commons.codec
org.apache.commons.codec.binary
org.apache.commons.lang
org.apache.log4j
org.scannotation

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.

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.