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.mavenizer110410.0%20.0%80.0%1
net.sf.mavenizer.core330480.0%67.0%33.0%1
net.sf.mavenizer.core.dependencies2112250.0%50.0%0.0%1
net.sf.mavenizer.core.dependencies.asm440180.0%89.0%11.0%1
net.sf.mavenizer.core.loader7521729.0%88.0%16.0%1
net.sf.mavenizer.generators2111450.0%80.0%30.000002%1
net.sf.mavenizer.generators.maven.repository220090.0%100.0%0.0%1
net.sf.mavenizer.generators.maven.repository.unit4311325.0%75.0%0.0%1
net.sf.mavenizer.io.reader2110550.0%100.0%50.0%1
net.sf.mavenizer.io.writer2110750.0%100.0%50.0%1

Packages

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

net.sf.mavenizer

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
410.0%20.0%80.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.mavenizer.MavenizerException
net.sf.mavenizer.core
net.sf.mavenizer.generators
net.sf.mavenizer.io.reader
net.sf.mavenizer.io.writer
java.lang

net.sf.mavenizer.core

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
480.0%67.0%33.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.mavenizer.core.BuildingException
net.sf.mavenizer.core.Jar
net.sf.mavenizer.core.Mavenizer
net.sf.mavenizer.core.dependencies
net.sf.mavenizer.core.dependencies.asm
net.sf.mavenizer.core.loader
net.sf.mavenizer.io.writer
java.io
java.lang
java.util
net.sf.mavenizer
net.sf.mavenizer.core.dependencies
net.sf.mavenizer.core.dependencies.asm
net.sf.mavenizer.core.loader
org.apache.commons.logging

net.sf.mavenizer.core.dependencies

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
2250.0%50.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.core.dependencies.JarClassDependencyFinder
net.sf.mavenizer.core.dependencies.DependencyFinderException
net.sf.mavenizer.core
net.sf.mavenizer.core.dependencies.asm
java.lang
net.sf.mavenizer.core

net.sf.mavenizer.core.dependencies.asm

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
180.0%89.0%11.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.mavenizer.core.dependencies.asm.AsmJarClassDependencyFinder
net.sf.mavenizer.core.dependencies.asm.AsmJarClassDependencyFinder$1
net.sf.mavenizer.core.dependencies.asm.AsmJarClassDependencyFinder$2
net.sf.mavenizer.core.dependencies.asm.AsmJarClassDependencyFinder$3
net.sf.mavenizer.core
java.io
java.lang
java.util
net.sf.mavenizer.analyser.asm
net.sf.mavenizer.analyser.bytecode
net.sf.mavenizer.analyser.scanner
net.sf.mavenizer.core
net.sf.mavenizer.core.dependencies

net.sf.mavenizer.core.loader

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1729.0%88.0%16.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.core.loader.JarIdBuilder
net.sf.mavenizer.core.loader.JarLoader
net.sf.mavenizer.core.loader.DefaultJarIdBuilder
net.sf.mavenizer.core.loader.DefaultJarLoader
net.sf.mavenizer.core.loader.FilenameVersionExtractor
net.sf.mavenizer.core.loader.LoadingException
net.sf.mavenizer.core.loader.PackageMerger
net.sf.mavenizer.core
java.io
java.lang
java.util
java.util.jar
java.util.regex
net.sf.mavenizer.core
org.apache.commons.logging

net.sf.mavenizer.generators

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1450.0%80.0%30.000002%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.generators.Generator
net.sf.mavenizer.generators.GenerationException
net.sf.mavenizer.generators.maven.repository
java.io
java.lang
net.sf.mavenizer
net.sf.mavenizer.model

net.sf.mavenizer.generators.maven.repository

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
090.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.sf.mavenizer.generators.maven.repository.MavenRepositoryGenerator
net.sf.mavenizer.generators.maven.repository.PomWriter
Nonejava.io
java.lang
java.util
net.sf.mavenizer.generators
net.sf.mavenizer.generators.maven.repository.unit
net.sf.mavenizer.model
org.apache.commons.logging
org.apache.maven.model
org.apache.maven.model.io.xpp3

net.sf.mavenizer.generators.maven.repository.unit

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
1325.0%75.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.generators.maven.repository.unit.UnitFile
net.sf.mavenizer.generators.maven.repository.unit.UnitArtifact
net.sf.mavenizer.generators.maven.repository.unit.UnitJar
net.sf.mavenizer.generators.maven.repository.unit.UnitPom
net.sf.mavenizer.generators.maven.repository
java.io
java.lang
net.sf.mavenizer.model

net.sf.mavenizer.io.reader

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
0550.0%100.0%50.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.io.reader.MavenizerProjectReader
net.sf.mavenizer.io.reader.DefaultMavenizerProjectReader
Nonejava.io
java.lang
javax.xml.bind
net.sf.mavenizer
net.sf.mavenizer.model

net.sf.mavenizer.io.writer

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
0750.0%100.0%50.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.sf.mavenizer.io.writer.MavenizerProjectWriter
net.sf.mavenizer.io.writer.DefaultMavenizerProjectWriter
Nonejava.io
java.lang
java.util
javax.xml.bind
net.sf.mavenizer
net.sf.mavenizer.core
net.sf.mavenizer.model

Cycles

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

PackagePackage Dependencies
net.sf.mavenizer.corenet.sf.mavenizer.core.loader
net.sf.mavenizer.core
net.sf.mavenizer.core.dependenciesnet.sf.mavenizer.core
net.sf.mavenizer.core.loader
net.sf.mavenizer.core
net.sf.mavenizer.core.dependencies.asmnet.sf.mavenizer.core
net.sf.mavenizer.core.loader
net.sf.mavenizer.core
net.sf.mavenizer.core.loadernet.sf.mavenizer.core
net.sf.mavenizer.core.loader
net.sf.mavenizer.io.writernet.sf.mavenizer.core
net.sf.mavenizer.core.loader
net.sf.mavenizer.core

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.