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.apache.commons.net 10 6 4 13 6 40.0% 32.0% 28.0% 1
org.apache.commons.net.bsd 3 3 0 0 6 0.0% 100.0% 0.0% 1
org.apache.commons.net.chargen 2 2 0 0 4 0.0% 100.0% 0.0% 1
org.apache.commons.net.daytime 2 2 0 0 4 0.0% 100.0% 0.0% 1
org.apache.commons.net.discard 2 2 0 1 3 0.0% 75.0% 25.0% 1
org.apache.commons.net.echo 2 2 0 0 3 0.0% 100.0% 0.0% 1
org.apache.commons.net.finger 1 1 0 1 3 0.0% 75.0% 25.0% 1
org.apache.commons.net.ftp 15 12 3 1 13 20.0% 93.0% 13.0% 1
org.apache.commons.net.ftp.parser 18 14 4 1 6 22.0% 86.0% 8.0% 1
org.apache.commons.net.io 13 12 1 7 5 8.0% 42.0% 51.0% 1
org.apache.commons.net.nntp 13 12 1 0 5 8.0% 100.0% 8.0% 1
org.apache.commons.net.ntp 6 5 1 0 7 17.0% 100.0% 17.0% 1
org.apache.commons.net.pop3 5 5 0 0 6 0.0% 100.0% 0.0% 1
org.apache.commons.net.smtp 7 7 0 0 6 0.0% 100.0% 0.0% 1
org.apache.commons.net.telnet 14 12 2 0 4 14.0% 100.0% 14.0% 1
org.apache.commons.net.tftp 10 8 2 0 6 20.0% 100.0% 20.0% 1
org.apache.commons.net.time 2 2 0 0 4 0.0% 100.0% 0.0% 1
org.apache.commons.net.util 4 4 0 2 5 0.0% 71.0% 29.0% 1
org.apache.commons.net.whois 1 1 0 0 3 0.0% 100.0% 0.0% 1

Packages

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

org.apache.commons.net

Afferent Couplings Efferent Couplings Abstractness Instability Distance
13 6 40.0% 32.0% 28.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.DatagramSocketClient
org.apache.commons.net.DatagramSocketFactory
org.apache.commons.net.ProtocolCommandListener
org.apache.commons.net.SocketClient
org.apache.commons.net.DefaultDatagramSocketFactory
org.apache.commons.net.DefaultSocketFactory
org.apache.commons.net.MalformedServerReplyException
org.apache.commons.net.PrintCommandListener
org.apache.commons.net.ProtocolCommandEvent
org.apache.commons.net.ProtocolCommandSupport
org.apache.commons.net.bsd
org.apache.commons.net.chargen
org.apache.commons.net.daytime
org.apache.commons.net.discard
org.apache.commons.net.finger
org.apache.commons.net.ftp
org.apache.commons.net.nntp
org.apache.commons.net.ntp
org.apache.commons.net.pop3
org.apache.commons.net.smtp
org.apache.commons.net.telnet
org.apache.commons.net.tftp
org.apache.commons.net.time
java.io
java.lang
java.net
java.util
javax.net
org.apache.commons.net.util

org.apache.commons.net.bsd

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.apache.commons.net.bsd.RCommandClient
org.apache.commons.net.bsd.RExecClient
org.apache.commons.net.bsd.RLoginClient
None java.io
java.lang
java.net
javax.net
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.chargen

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 org.apache.commons.net.chargen.CharGenTCPClient
org.apache.commons.net.chargen.CharGenUDPClient
None java.io
java.lang
java.net
org.apache.commons.net

org.apache.commons.net.daytime

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 org.apache.commons.net.daytime.DaytimeTCPClient
org.apache.commons.net.daytime.DaytimeUDPClient
None java.io
java.lang
java.net
org.apache.commons.net

org.apache.commons.net.discard

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.net.discard.DiscardTCPClient
org.apache.commons.net.discard.DiscardUDPClient
org.apache.commons.net.echo
java.io
java.net
org.apache.commons.net

org.apache.commons.net.echo

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.net.echo.EchoTCPClient
org.apache.commons.net.echo.EchoUDPClient
None java.io
java.net
org.apache.commons.net.discard

org.apache.commons.net.finger

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 3 0.0% 75.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.net.finger.FingerClient
org.apache.commons.net.whois
java.io
java.lang
org.apache.commons.net

org.apache.commons.net.ftp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 13 20.0% 93.0% 13.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.ftp.Configurable
org.apache.commons.net.ftp.FTPFileEntryParser
org.apache.commons.net.ftp.FTPFileEntryParserImpl
org.apache.commons.net.ftp.FTP
org.apache.commons.net.ftp.FTPClient
org.apache.commons.net.ftp.FTPClientConfig
org.apache.commons.net.ftp.FTPCommand
org.apache.commons.net.ftp.FTPConnectionClosedException
org.apache.commons.net.ftp.FTPFile
org.apache.commons.net.ftp.FTPListParseEngine
org.apache.commons.net.ftp.FTPReply
org.apache.commons.net.ftp.FTPSClient
org.apache.commons.net.ftp.FTPSCommand
org.apache.commons.net.ftp.FTPSSocketFactory
org.apache.commons.net.ftp.FTPSTrustManager
org.apache.commons.net.ftp.parser
java.io
java.lang
java.net
java.security
java.security.cert
java.text
java.util
java.util.regex
javax.net
javax.net.ssl
org.apache.commons.net
org.apache.commons.net.ftp.parser
org.apache.commons.net.io

org.apache.commons.net.ftp.parser

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 6 22.0% 86.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.ftp.parser.ConfigurableFTPFileEntryParserImpl
org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory
org.apache.commons.net.ftp.parser.FTPTimestampParser
org.apache.commons.net.ftp.parser.RegexFTPFileEntryParserImpl
org.apache.commons.net.ftp.parser.CompositeFileEntryParser
org.apache.commons.net.ftp.parser.DefaultFTPFileEntryParserFactory
org.apache.commons.net.ftp.parser.EnterpriseUnixFTPEntryParser
org.apache.commons.net.ftp.parser.FTPTimestampParserImpl
org.apache.commons.net.ftp.parser.MVSFTPEntryParser
org.apache.commons.net.ftp.parser.NTFTPEntryParser
org.apache.commons.net.ftp.parser.NetwareFTPEntryParser
org.apache.commons.net.ftp.parser.OS2FTPEntryParser
org.apache.commons.net.ftp.parser.OS400FTPEntryParser
org.apache.commons.net.ftp.parser.ParserInitializationException
org.apache.commons.net.ftp.parser.UnixFTPEntryParser
org.apache.commons.net.ftp.parser.VMSFTPEntryParser
org.apache.commons.net.ftp.parser.VMSVersioningFTPEntryParser
org.apache.commons.net.ftp.parser.VMSVersioningFTPEntryParser$NameVersion
org.apache.commons.net.ftp
java.io
java.lang
java.text
java.util
java.util.regex
org.apache.commons.net.ftp

org.apache.commons.net.io

Afferent Couplings Efferent Couplings Abstractness Instability Distance
7 5 8.0% 42.0% 51.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.io.CopyStreamListener
org.apache.commons.net.io.CopyStreamAdapter
org.apache.commons.net.io.CopyStreamEvent
org.apache.commons.net.io.CopyStreamException
org.apache.commons.net.io.DotTerminatedMessageReader
org.apache.commons.net.io.DotTerminatedMessageWriter
org.apache.commons.net.io.FromNetASCIIInputStream
org.apache.commons.net.io.FromNetASCIIOutputStream
org.apache.commons.net.io.SocketInputStream
org.apache.commons.net.io.SocketOutputStream
org.apache.commons.net.io.ToNetASCIIInputStream
org.apache.commons.net.io.ToNetASCIIOutputStream
org.apache.commons.net.io.Util
org.apache.commons.net.bsd
org.apache.commons.net.ftp
org.apache.commons.net.nntp
org.apache.commons.net.pop3
org.apache.commons.net.smtp
org.apache.commons.net.telnet
org.apache.commons.net.tftp
java.io
java.lang
java.net
java.util
org.apache.commons.net.util

org.apache.commons.net.nntp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 8.0% 100.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.nntp.Threadable
org.apache.commons.net.nntp.Article
org.apache.commons.net.nntp.ArticlePointer
org.apache.commons.net.nntp.NNTP
org.apache.commons.net.nntp.NNTPClient
org.apache.commons.net.nntp.NNTPCommand
org.apache.commons.net.nntp.NNTPConnectionClosedException
org.apache.commons.net.nntp.NNTPReply
org.apache.commons.net.nntp.NewGroupsOrNewsQuery
org.apache.commons.net.nntp.NewsgroupInfo
org.apache.commons.net.nntp.SimpleNNTPHeader
org.apache.commons.net.nntp.ThreadContainer
org.apache.commons.net.nntp.Threader
None java.io
java.lang
java.util
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.ntp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 7 17.0% 100.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.ntp.NtpV3Packet
org.apache.commons.net.ntp.NTPUDPClient
org.apache.commons.net.ntp.NtpUtils
org.apache.commons.net.ntp.NtpV3Impl
org.apache.commons.net.ntp.TimeInfo
org.apache.commons.net.ntp.TimeStamp
None java.io
java.lang
java.lang.ref
java.net
java.text
java.util
org.apache.commons.net

org.apache.commons.net.pop3

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.apache.commons.net.pop3.POP3
org.apache.commons.net.pop3.POP3Client
org.apache.commons.net.pop3.POP3Command
org.apache.commons.net.pop3.POP3MessageInfo
org.apache.commons.net.pop3.POP3Reply
None java.io
java.lang
java.security
java.util
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.smtp

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.apache.commons.net.smtp.RelayPath
org.apache.commons.net.smtp.SMTP
org.apache.commons.net.smtp.SMTPClient
org.apache.commons.net.smtp.SMTPCommand
org.apache.commons.net.smtp.SMTPConnectionClosedException
org.apache.commons.net.smtp.SMTPReply
org.apache.commons.net.smtp.SimpleSMTPHeader
None java.io
java.lang
java.net
java.util
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.telnet

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 4 14.0% 100.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.telnet.TelnetNotificationHandler
org.apache.commons.net.telnet.TelnetOptionHandler
org.apache.commons.net.telnet.EchoOptionHandler
org.apache.commons.net.telnet.InvalidTelnetOptionException
org.apache.commons.net.telnet.SimpleOptionHandler
org.apache.commons.net.telnet.SuppressGAOptionHandler
org.apache.commons.net.telnet.Telnet
org.apache.commons.net.telnet.TelnetClient
org.apache.commons.net.telnet.TelnetCommand
org.apache.commons.net.telnet.TelnetInputStream
org.apache.commons.net.telnet.TelnetOption
org.apache.commons.net.telnet.TelnetOutputStream
org.apache.commons.net.telnet.TerminalTypeOptionHandler
org.apache.commons.net.telnet.WindowSizeOptionHandler
None java.io
java.lang
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.tftp

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 6 20.0% 100.0% 20.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
org.apache.commons.net.tftp.TFTPPacket
org.apache.commons.net.tftp.TFTPRequestPacket
org.apache.commons.net.tftp.TFTP
org.apache.commons.net.tftp.TFTPAckPacket
org.apache.commons.net.tftp.TFTPClient
org.apache.commons.net.tftp.TFTPDataPacket
org.apache.commons.net.tftp.TFTPErrorPacket
org.apache.commons.net.tftp.TFTPPacketException
org.apache.commons.net.tftp.TFTPReadRequestPacket
org.apache.commons.net.tftp.TFTPWriteRequestPacket
None java.io
java.lang
java.net
java.util
org.apache.commons.net
org.apache.commons.net.io

org.apache.commons.net.time

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 org.apache.commons.net.time.TimeTCPClient
org.apache.commons.net.time.TimeUDPClient
None java.io
java.net
java.util
org.apache.commons.net

org.apache.commons.net.util

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 0.0% 71.0% 29.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.net.util.ListenerList
org.apache.commons.net.util.SubnetUtils
org.apache.commons.net.util.SubnetUtils$1
org.apache.commons.net.util.SubnetUtils$SubnetInfo
org.apache.commons.net
org.apache.commons.net.io
java.io
java.lang
java.util
java.util.concurrent
java.util.regex

org.apache.commons.net.whois

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 3 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None org.apache.commons.net.whois.WhoisClient
None java.io
java.lang
org.apache.commons.net.finger

Cycles

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

Package Package Dependencies
org.apache.commons.net.ftp org.apache.commons.net.ftp.parser
org.apache.commons.net.ftp
org.apache.commons.net.ftp.parser org.apache.commons.net.ftp
org.apache.commons.net.ftp.parser

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.