Package | TC | CC | AC | Ca | Ce | A | I | D | V |
---|---|---|---|---|---|---|---|---|---|
net.sf.juoserver.api | 29 | 0 | 29 | 6 | 6 | 100.0% | 50.0% | 50.0% | 1 |
net.sf.juoserver.configuration | 2 | 2 | 0 | 0 | 6 | 0.0% | 100.0% | 0.0% | 1 |
net.sf.juoserver.controller | 5 | 2 | 3 | 2 | 5 | 60.000004% | 71.0% | 31.0% | 1 |
net.sf.juoserver.data | 1 | 1 | 0 | 0 | 4 | 0.0% | 100.0% | 0.0% | 1 |
net.sf.juoserver.files | 14 | 14 | 0 | 0 | 7 | 0.0% | 100.0% | 0.0% | 1 |
net.sf.juoserver.model | 31 | 29 | 2 | 4 | 5 | 6.0% | 56.0% | 38.0% | 1 |
net.sf.juoserver.networking | 6 | 5 | 1 | 1 | 11 | 17.0% | 92.0% | 8.0% | 1 |
net.sf.juoserver.protocol | 76 | 73 | 3 | 0 | 16 | 4.0% | 100.0% | 4.0% | 1 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
6 | 6 | 100.0% | 50.0% | 50.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses 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 | None | net.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 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
0 | 6 | 0.0% | 100.0% | 0.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
None | net.sf.juoserver.configuration.ConfigurationException net.sf.juoserver.configuration.ConfigurationImpl | None | java.io java.lang java.util javax.swing net.sf.juoserver.api org.apache.log4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
2 | 5 | 60.000004% | 71.0% | 31.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses 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 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
0 | 4 | 0.0% | 100.0% | 0.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
None | net.sf.juoserver.data.DataManagerImpl | None | java.lang java.util net.sf.juoserver.model net.sf.juoserver.networking |
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 | net.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 | None | java.io java.lang java.nio java.util net.sf.juoserver.api org.apache.commons.codec.binary org.apache.log4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
4 | 5 | 6.0% | 56.0% | 38.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses 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 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
1 | 11 | 17.0% | 92.0% | 8.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses 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 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
0 | 16 | 4.0% | 100.0% | 4.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses 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 | None | java.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 |
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. |