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 Total

Classes
Abstract

Classes
Concrete

Classes
Afferent

Couplings
Efferent

Couplings
Abstractness Instability Distance
jrre 12 0 12 18 13 0% 42% 58%
jrre.api.java.io 1 0 1 3 0 0% 0% 100%
jrre.api.java.lang 5 0 5 9 5 0% 36% 64%
jrre.api.java.lang.reflect 7 0 7 5 3 0% 38% 62%
jrre.classloader 1 0 1 1 6 0% 86% 14%
jrre.classloader.classfile 1 0 1 1 12 0% 92% 8%
jrre.classloader.classfile.access_flags 4 1 3 3 0 25% 0% 75%
jrre.classloader.classfile.attributes 11 0 11 3 3 0% 50% 50%
jrre.classloader.classfile.pool_entries 12 1 11 7 0 8% 0% 92%
jrre.event 8 1 7 2 1 12% 33% 54%
jrre.gui 16 0 16 1 3 0% 75% 25%
jrre.instructionset 2 1 1 16 0 50% 0% 50%
jrre.instructionset.comparison 3 0 3 1 3 0% 75% 25%
jrre.instructionset.controlflow 17 0 17 1 3 0% 75% 25%
jrre.instructionset.exceptions 1 0 1 1 2 0% 67% 33%
jrre.instructionset.math 11 0 11 1 3 0% 75% 25%
jrre.instructionset.methodinvocation 6 0 6 2 8 0% 80% 20%
jrre.instructionset.objects 12 0 12 2 5 0% 71% 29%
jrre.instructionset.pop 1 0 1 1 2 0% 67% 33%
jrre.instructionset.pop.localvariable 12 0 12 1 3 0% 75% 25%
jrre.instructionset.push 14 0 14 2 5 0% 71% 29%
jrre.instructionset.push.localvariables 14 0 14 1 3 0% 75% 25%
jrre.instructionset.typecasting 1 0 1 2 5 0% 71% 29%
jrre.nativesystem 1 0 1 1 0 0% 0% 100%
jrre.types 7 1 6 12 1 14% 8% 78%
jrre.unittests 10 0 10 0 7 0% 100% 0%
jrre.unittests.datastructures 8 0 8 0 2 0% 100% 0%
junit.framework No stats available: package referenced, but not analyzed.

Packages

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

jrre.api.java.io

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None OutputStream

jrre.api.java.lang

jrre.unittests

jrre.unittests.datastructures

None

jrre.classloader

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 6 0% 86% 14%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None ClassLoader

jrre

jrre

jrre.api.java.lang

jrre.api.java.lang.reflect

jrre.classloader.classfile.access_flags

jrre.classloader.classfile.attributes

jrre.classloader.classfile.pool_entries

jrre.classloader.classfile.access_flags

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 0 25% 0% 75%
Abstract Classes Concrete Classes Used by Packages Uses Packages
AccessFlags

ClassAccessFlags

FieldAccessFlags

MethodAccessFlags

jrre.api.java.lang.reflect

jrre.classloader

jrre.instructionset.methodinvocation

None

jrre.event

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 1 12% 33% 54%
Abstract Classes Concrete Classes Used by Packages Uses Packages
VMEventListener

OperandStackEvent

PopOperandEvent

PopStackFrameEvent

PushOperandEvent

PushStackFrameEvent

VMEvent

VMEventDispatcher

jrre

jrre.gui

jrre.instructionset

jrre.gui

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Console

ControlGui

ControlPanel

GraphPaperLayout

JRREGUI

JavaStackFrameGui

MethodAreaGui

NativeMethodAreaGui

NativeStackFrameGui

ObjectAreaGui

OperandFrameGui

OperandStackGUI

Script

StackFrameGUI

TextEditor

WindowDestroyer

jrre

jrre

jrre.api.java.lang

jrre.event

jrre.instructionset.comparison

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None FCmpg

FCmpl

LCmp

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.types

jrre.instructionset.controlflow

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Goto

If_Icmpge

If_Icmpgt

If_Icmple

If_Icmplt

If_Icmpne

If_acmpeq

If_acmpne

If_icmpeq

Ifeq

Ifge

Ifgt

Ifle

Iflt

Ifne

Ifnonnull

Ifnull

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.types

jrre.instructionset.exceptions

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 0% 67% 33%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None AThrow

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.instructionset.math

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None DMul

F2I

FMul

I2F

IAdd

IDiv

IInc

IMul

INeg

IShl

ISub

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.types

jrre.instructionset.objects

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 0% 71% 29%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None ANewArray

ArrayLength

CAStore

GetField

GetStatic

InstanceOf

MonitorEnter

MonitorExit

New

NewArray

PutField

PutStatic

jrre

jrre.classloader.classfile

jrre

jrre.api.java.lang

jrre.classloader.classfile.pool_entries

jrre.instructionset

jrre.types

jrre.instructionset.pop

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 2 0% 67% 33%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Pop

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.instructionset.pop.localvariable

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None AStore

AStore_0

AStore_1

AStore_2

AStore_3

FStore_2

IAStore

IStore

IStore_0

IStore_1

IStore_2

IStore_3

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.types

jrre.instructionset.push

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 0% 71% 29%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None AConst_null

BIPush

Dup

Dup_x1

FConst_0

IConst_0

IConst_1

IConst_2

IConst_3

IConst_4

IConst_5

IConst_m1

LConst_0

Ldc

jrre

jrre.classloader.classfile

jrre

jrre.api.java.lang

jrre.classloader.classfile.pool_entries

jrre.instructionset

jrre.types

jrre.instructionset.push.localvariables

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0% 75% 25%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None ALoad

ALoad_0

ALoad_1

ALoad_2

ALoad_3

CALoad

FLoad_0

FLoad_2

IALoad

ILoad

ILoad_0

ILoad_1

ILoad_2

ILoad_3

jrre.classloader.classfile

jrre

jrre.instructionset

jrre.types

jrre.instructionset.typecasting

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 0% 71% 29%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None CheckCast

jrre

jrre.classloader.classfile

jrre

jrre.api.java.lang

jrre.classloader.classfile.pool_entries

jrre.instructionset

jrre.types

jrre.nativesystem

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 0 0% 0% 100%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None NativeMethodTable

jrre.instructionset.methodinvocation

None

jrre.unittests

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Algorithems

JRRERunner

LinkedList

LoopsAndBranches

MathmaticsTest

Node

ObjectsTest

Simple

StringManipulations

StringTest

None jrre

jrre.api.java.io

jrre.api.java.lang

jrre.api.java.lang.reflect

jrre.instructionset

jrre.types

junit.framework

jrre.unittests.datastructures

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 2 0% 100% 0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None Algorithems

ArrayManipulations

LinkedList

LoopsAndBranches

Queue

QuickSorter

Simple

StringManipulations

None jrre.api.java.io

jrre.api.java.lang

Cycles

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

Package Cyclic Dependencies
jrre jrre.types

jrre

jrre.api.java.lang jrre.types

jrre

jrre.types

jrre.api.java.lang.reflect jrre.classloader.classfile.attributes

jrre.classloader.classfile

jrre.instructionset.methodinvocation

jrre

jrre.types

jrre

jrre.classloader jrre.classloader.classfile.attributes

jrre.classloader.classfile

jrre.instructionset.methodinvocation

jrre

jrre.types

jrre

jrre.classloader.classfile jrre.instructionset.methodinvocation

jrre

jrre.types

jrre

jrre.classloader.classfile.attributes jrre.classloader.classfile

jrre.instructionset.methodinvocation

jrre

jrre.types

jrre

jrre.gui jrre

jrre.types

jrre

jrre.instructionset.comparison jrre.types

jrre

jrre.types

jrre.instructionset.controlflow jrre

jrre.types

jrre

jrre.instructionset.exceptions jrre

jrre.types

jrre

jrre.instructionset.math jrre.types

jrre

jrre.types

jrre.instructionset.methodinvocation jrre

jrre.types

jrre

jrre.instructionset.objects jrre.types

jrre

jrre.types

jrre.instructionset.pop jrre

jrre.types

jrre

jrre.instructionset.pop.localvariable jrre

jrre.types

jrre

jrre.instructionset.push jrre.types

jrre

jrre.types

jrre.instructionset.push.localvariables jrre

jrre.types

jrre

jrre.instructionset.typecasting jrre.types

jrre

jrre.types

jrre.types jrre

jrre.types

jrre.unittests jrre.types

jrre

jrre.types

jrre.unittests.datastructures jrre.api.java.lang

jrre.types

jrre

jrre.types

Explanations

[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.