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.argouml.language.java 1 1 0 7 1 0.0% 12.0% 88.0% 1
org.argouml.language.java.codesync 1 1 0 0 6 0.0% 100.0% 0.0% 1
org.argouml.language.java.codesync.ui 2 2 0 1 11 0.0% 92.0% 8.0% 1
org.argouml.language.java.cognitive.critics 4 4 0 0 10 0.0% 100.0% 0.0% 1
org.argouml.language.java.generator 2 2 0 0 18 0.0% 100.0% 0.0% 1
org.argouml.language.java.profile 3 3 0 0 8 0.0% 100.0% 0.0% 1
org.argouml.language.java.reveng 34 33 1 2 21 3.0% 91.0% 6.0% 1
org.argouml.language.java.reveng.classfile 34 30 4 1 21 12.0% 95.0% 7.0% 1
org.argouml.language.java.ui 6 6 0 0 20 0.0% 100.0% 0.0% 1

Packages

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

org.argouml.language.java

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 1 0.0% 12.0% 88.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.JavaModuleGlobals
org.argouml.language.java.codesync
org.argouml.language.java.cognitive.critics
org.argouml.language.java.generator
org.argouml.language.java.profile
org.argouml.language.java.reveng
org.argouml.language.java.reveng.classfile
org.argouml.language.java.ui
java.lang

org.argouml.language.java.codesync

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 org.argouml.language.java.codesync.CodeSyncJava
None java.lang
javax.swing
org.argouml.language.java
org.argouml.language.java.codesync.ui
org.argouml.moduleloader
org.argouml.ui

org.argouml.language.java.codesync.ui

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 11 0.0% 92.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.codesync.ui.CodeSyncJPanel
org.argouml.language.java.codesync.ui.CodeSyncTableModel
org.argouml.language.java.codesync
java.awt
java.lang
java.util
java.util.logging
javax.swing
javax.swing.table
org.argouml.application.api
org.argouml.kernel
org.argouml.model
org.argouml.ui
org.argouml.uml.generator

org.argouml.language.java.cognitive.critics

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 10 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.cognitive.critics.CrMultipleInheritance
org.argouml.language.java.cognitive.critics.CrMultipleRealization
org.argouml.language.java.cognitive.critics.CrReservedNameJava
org.argouml.language.java.cognitive.critics.InitJavaCritics
None java.lang
java.util
org.argouml.application.api
org.argouml.cognitive
org.argouml.cognitive.critics
org.argouml.language.java
org.argouml.model
org.argouml.moduleloader
org.argouml.uml.cognitive
org.argouml.uml.cognitive.critics

org.argouml.language.java.generator

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 18 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.generator.GeneratorJava
org.argouml.language.java.generator.GeneratorJava$1TagExtractor
None java.io
java.lang
java.util
java.util.logging
org.argouml.application.api
org.argouml.application.helpers
org.argouml.configuration
org.argouml.language.java
org.argouml.model
org.argouml.moduleloader
org.argouml.ocl
org.argouml.uml
org.argouml.uml.generator
org.argouml.uml.reveng
tudresden.ocl
tudresden.ocl.check.types
tudresden.ocl.parser.analysis
tudresden.ocl.parser.node

org.argouml.language.java.profile

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 8 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.profile.ModelUtils
org.argouml.language.java.profile.ProfileJava
org.argouml.language.java.profile.ProfileJava$1
None java.lang
java.net
java.util
java.util.logging
org.argouml.language.java
org.argouml.model
org.argouml.moduleloader
org.argouml.profile

org.argouml.language.java.reveng

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 21 3.0% 91.0% 6.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.argouml.language.java.reveng.Context
org.argouml.language.java.reveng.ClassifierContext
org.argouml.language.java.reveng.ClassifierNotFoundException
org.argouml.language.java.reveng.JavaImport
org.argouml.language.java.reveng.JavaImportSettings
org.argouml.language.java.reveng.JavaLexer
org.argouml.language.java.reveng.JavaLexer$DFA18
org.argouml.language.java.reveng.JavaLexer$DFA30
org.argouml.language.java.reveng.JavaParseException
org.argouml.language.java.reveng.JavaParser
org.argouml.language.java.reveng.JavaParser$DFA107
org.argouml.language.java.reveng.JavaParser$DFA115
org.argouml.language.java.reveng.JavaParser$DFA118
org.argouml.language.java.reveng.JavaParser$DFA124
org.argouml.language.java.reveng.JavaParser$DFA127
org.argouml.language.java.reveng.JavaParser$DFA137
org.argouml.language.java.reveng.JavaParser$DFA139
org.argouml.language.java.reveng.JavaParser$DFA82
org.argouml.language.java.reveng.JavaParser$annotationName_return
org.argouml.language.java.reveng.JavaParser$block_return
org.argouml.language.java.reveng.JavaParser$constructorBody_return
org.argouml.language.java.reveng.JavaParser$createdName_return
org.argouml.language.java.reveng.JavaParser$equalsVariableInitializer_return
org.argouml.language.java.reveng.JavaParser$primitiveType_return
org.argouml.language.java.reveng.JavaParser$qualifiedName_return
org.argouml.language.java.reveng.JavaParser$typeArguments_return
org.argouml.language.java.reveng.JavaParser$variableDeclaratorId_return
org.argouml.language.java.reveng.Modeller
org.argouml.language.java.reveng.OuterClassifierContext
org.argouml.language.java.reveng.PackageContext
org.argouml.language.java.reveng.ParameterDeclaration
org.argouml.language.java.reveng.ParseState
org.argouml.language.java.reveng.ParseStateException
org.argouml.language.java.reveng.UnsupportedJavaFeatureException
org.argouml.language.java.reveng.classfile
org.argouml.language.java.ui
java.io
java.lang
java.net
java.util
java.util.logging
java.util.regex
org.antlr.runtime
org.argouml.application.api
org.argouml.configuration
org.argouml.i18n
org.argouml.kernel
org.argouml.language.java
org.argouml.language.java.reveng.classfile
org.argouml.model
org.argouml.moduleloader
org.argouml.ocl
org.argouml.profile
org.argouml.taskmgmt
org.argouml.uml.reveng
org.argouml.uml.util
org.argouml.util

org.argouml.language.java.reveng.classfile

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 21 12.0% 95.0% 7.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.argouml.language.java.reveng.classfile.ClassfileTokenTypes
org.argouml.language.java.reveng.classfile.ClassfileTreeParserTokenTypes
org.argouml.language.java.reveng.classfile.Context
org.argouml.language.java.reveng.classfile.ParserUtils$AbstractLexer
org.argouml.language.java.reveng.classfile.ByteToken
org.argouml.language.java.reveng.classfile.ByteTokenStream
org.argouml.language.java.reveng.classfile.ClassfileImport
org.argouml.language.java.reveng.classfile.ClassfileParser
org.argouml.language.java.reveng.classfile.ClassfileTreeParser
org.argouml.language.java.reveng.classfile.ClassifierContext
org.argouml.language.java.reveng.classfile.ClassifierNotFoundException
org.argouml.language.java.reveng.classfile.JavaParseException
org.argouml.language.java.reveng.classfile.ObjectAST
org.argouml.language.java.reveng.classfile.OuterClassifierContext
org.argouml.language.java.reveng.classfile.PackageContext
org.argouml.language.java.reveng.classfile.ParseState
org.argouml.language.java.reveng.classfile.ParseStateException
org.argouml.language.java.reveng.classfile.ParserUtils
org.argouml.language.java.reveng.classfile.ParserUtils$ArrayTypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$ClassSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$ClassTypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$FieldDescriptorLexer
org.argouml.language.java.reveng.classfile.ParserUtils$FieldTypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$FormalTypeParameterLexer
org.argouml.language.java.reveng.classfile.ParserUtils$MethodDescriptorLexer
org.argouml.language.java.reveng.classfile.ParserUtils$MethodTypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$SimpleClassTypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$ThrowsSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$Token
org.argouml.language.java.reveng.classfile.ParserUtils$TypeSignatureLexer
org.argouml.language.java.reveng.classfile.ParserUtils$TypeVariableSignatureLexer
org.argouml.language.java.reveng.classfile.ShortAST
org.argouml.language.java.reveng.classfile.SimpleByteLexer
org.argouml.language.java.reveng.classfile.UnsupportedJavaFeatureException
org.argouml.language.java.reveng
antlr
antlr.collections
antlr.collections.impl
java.io
java.lang
java.net
java.util
java.util.jar
java.util.logging
java.util.regex
java.util.zip
org.antlr.runtime
org.argouml.kernel
org.argouml.language.java
org.argouml.language.java.reveng
org.argouml.model
org.argouml.moduleloader
org.argouml.profile
org.argouml.taskmgmt
org.argouml.uml.reveng
org.argouml.util

org.argouml.language.java.ui

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 20 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.argouml.language.java.ui.ActionRESequenceDiagram
org.argouml.language.java.ui.ActionRESequenceDiagramForOperation
org.argouml.language.java.ui.JavaSequencesMenu
org.argouml.language.java.ui.JavaTools
org.argouml.language.java.ui.RESequenceDiagramDialog
org.argouml.language.java.ui.SettingsTabJava
None java.awt
java.awt.event
java.lang
java.util
java.util.logging
javax.swing
org.antlr.runtime
org.argouml.application.api
org.argouml.i18n
org.argouml.kernel
org.argouml.language.java
org.argouml.language.java.reveng
org.argouml.model
org.argouml.moduleloader
org.argouml.profile
org.argouml.ui
org.argouml.ui.targetmanager
org.argouml.uml.diagram
org.argouml.uml.ui
org.argouml.util

Cycles

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

Package Package Dependencies
org.argouml.language.java.reveng org.argouml.language.java.reveng.classfile
org.argouml.language.java.reveng
org.argouml.language.java.reveng.classfile org.argouml.language.java.reveng
org.argouml.language.java.reveng.classfile
org.argouml.language.java.ui org.argouml.language.java.reveng
org.argouml.language.java.reveng.classfile
org.argouml.language.java.reveng

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.