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.smartlab.web.auth5546922816.0%93.0%10.0%1
net.smartlab.web.auth.aspects440080.0%100.0%0.0%1
net.smartlab.web.auth.handlers2925412814.0%97.0%10.0%1

Packages

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

net.smartlab.web.auth

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
22816.0%93.0%10.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.smartlab.web.auth.AbstractUserAction
net.smartlab.web.auth.AuditHandler
net.smartlab.web.auth.AuthenticationHandler
net.smartlab.web.auth.AuthenticationHandlerTest
net.smartlab.web.auth.AuthorizationHandler
net.smartlab.web.auth.Handler
net.smartlab.web.auth.RegistrationHandler
net.smartlab.web.auth.Subject
net.smartlab.web.auth.SubjectAction
net.smartlab.web.auth.ActionFilter
net.smartlab.web.auth.AuthenticationException
net.smartlab.web.auth.AuthorizationException
net.smartlab.web.auth.Credentials
net.smartlab.web.auth.CredentialsTest
net.smartlab.web.auth.Domain
net.smartlab.web.auth.DomainTest
net.smartlab.web.auth.Group
net.smartlab.web.auth.GroupAction
net.smartlab.web.auth.GroupFactory
net.smartlab.web.auth.GroupFactoryTest
net.smartlab.web.auth.GroupTest
net.smartlab.web.auth.NotValidTag
net.smartlab.web.auth.NotValidTagTest
net.smartlab.web.auth.Permission
net.smartlab.web.auth.PermissionAction
net.smartlab.web.auth.PermissionFactory
net.smartlab.web.auth.PermissionFactoryTest
net.smartlab.web.auth.PermissionTest
net.smartlab.web.auth.Privilege
net.smartlab.web.auth.PrivilegeTest
net.smartlab.web.auth.RegisterAction
net.smartlab.web.auth.RegistrationHandler$1
net.smartlab.web.auth.Role
net.smartlab.web.auth.RoleAction
net.smartlab.web.auth.RoleFactory
net.smartlab.web.auth.RoleTest
net.smartlab.web.auth.Scope
net.smartlab.web.auth.Scope$Type
net.smartlab.web.auth.ScopeTest
net.smartlab.web.auth.ScopeTypeFactory
net.smartlab.web.auth.SessionListener
net.smartlab.web.auth.SubjectFactory
net.smartlab.web.auth.SubjectFactoryTest
net.smartlab.web.auth.SubjectTest
net.smartlab.web.auth.SubjectTest$1
net.smartlab.web.auth.SubjectTest$Stub
net.smartlab.web.auth.User
net.smartlab.web.auth.User$Status
net.smartlab.web.auth.UserAction
net.smartlab.web.auth.UserFactory
net.smartlab.web.auth.UserFactoryTest
net.smartlab.web.auth.UserTest
net.smartlab.web.auth.ValidTag
net.smartlab.web.auth.ValidTagTest
net.smartlab.web.auth.WriteTag
net.smartlab.web.auth.aspects
net.smartlab.web.auth.handlers
com.mockrunner.mock.web
com.mockrunner.tag
java.io
java.lang
java.lang.reflect
java.net
java.util
javax.servlet
javax.servlet.http
javax.servlet.jsp
javax.servlet.jsp.tagext
junit.framework
net.smartlab.config
net.smartlab.web
net.smartlab.web.auth.handlers
net.smartlab.web.page
net.smartlab.web.test
org.apache.commons.beanutils
org.apache.commons.codec.binary
org.apache.commons.lang.builder
org.apache.commons.logging
org.apache.struts.action
org.apache.struts.taglib
org.apache.struts.taglib.bean
org.apache.struts.taglib.logic
org.dbunit.database
org.hibernate
org.hibernate.criterion

net.smartlab.web.auth.aspects

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
080.0%100.0%0.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
Nonenet.smartlab.web.auth.aspects.AuditInterceptor
net.smartlab.web.auth.aspects.MethodAuthorizationInterceptor
net.smartlab.web.auth.aspects.MethodAuthorizationInterceptorTest
net.smartlab.web.auth.aspects.TagAuthorizationInterceptor
Nonejava.lang
java.lang.reflect
junit.framework
net.smartlab.web
net.smartlab.web.auth
org.apache.commons.logging
org.jboss.aop.advice
org.jboss.aop.joinpoint

net.smartlab.web.auth.handlers

Afferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
12814.0%97.0%10.0%
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
net.smartlab.web.auth.handlers.AbstractAssociationRegistrationHandler
net.smartlab.web.auth.handlers.AbstractHandlerTestCase
net.smartlab.web.auth.handlers.AbstractRegistrationHandler
net.smartlab.web.auth.handlers.AbstractlVerifierRegistrationHandler
net.smartlab.web.auth.handlers.BusinessObjectAssociationRegistrationHandler
net.smartlab.web.auth.handlers.CaptchaRegistrationHandler
net.smartlab.web.auth.handlers.CaptchaRegistrationHandler$1
net.smartlab.web.auth.handlers.CaptchaRegistrationHandler$Captcha
net.smartlab.web.auth.handlers.CaptchaRegistrationHandler$Servlet
net.smartlab.web.auth.handlers.CaptchaRegistrationHandlerServletTest
net.smartlab.web.auth.handlers.CaptchaRegistrationHandlerTest
net.smartlab.web.auth.handlers.ChainHandler
net.smartlab.web.auth.handlers.ConcurrencyHandler
net.smartlab.web.auth.handlers.DateTimeHandler
net.smartlab.web.auth.handlers.DateTimeHandler$CronPattern
net.smartlab.web.auth.handlers.DateTimeHandlerCronPatternTest
net.smartlab.web.auth.handlers.DateTimeHandlerTest
net.smartlab.web.auth.handlers.EmailVerifierRegistrationHandler
net.smartlab.web.auth.handlers.EmailVerifierRegistrationHandler$tmpPageContext
net.smartlab.web.auth.handlers.MailSender
net.smartlab.web.auth.handlers.MailSender$1
net.smartlab.web.auth.handlers.ModalAuthenticationHandler
net.smartlab.web.auth.handlers.PasswordAuthenticationHandler
net.smartlab.web.auth.handlers.PasswordAuthenticationHandlerTest
net.smartlab.web.auth.handlers.PasswordDigestAuthenticationHandler
net.smartlab.web.auth.handlers.PasswordDigestAuthenticationHandlerTest
net.smartlab.web.auth.handlers.ScopeMethodAuthorizationHandler
net.smartlab.web.auth.handlers.StateGraph
net.smartlab.web.auth.handlers.StateNode
net.smartlab.web.auth
com.meterware.httpunit
com.meterware.servletunit
java.awt
java.awt.font
java.awt.geom
java.awt.image
java.io
java.lang
java.net
java.security
java.util
javax.imageio
javax.mail
javax.mail.internet
javax.servlet
javax.servlet.http
javax.servlet.jsp.el
javax.swing
junit.framework
net.smartlab.config
net.smartlab.web
net.smartlab.web.auth
org.apache.commons.beanutils
org.apache.commons.codec.binary
org.apache.commons.el
org.apache.commons.el.parser
org.apache.commons.logging
org.apache.struts.mock

Cycles

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

PackagePackage Dependencies
net.smartlab.web.authnet.smartlab.web.auth.handlers
net.smartlab.web.auth
net.smartlab.web.auth.aspectsnet.smartlab.web.auth
net.smartlab.web.auth.handlers
net.smartlab.web.auth
net.smartlab.web.auth.handlersnet.smartlab.web.auth
net.smartlab.web.auth.handlers

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.