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
info.magnolia.ui.framework 5 5 0 0 6 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.action 46 43 3 0 44 7.0% 100.0% 7.0% 1
info.magnolia.ui.framework.app 16 16 0 2 35 0.0% 95.0% 5.0% 1
info.magnolia.ui.framework.app.embedded 4 3 1 0 11 25.0% 100.0% 25.0% 1
info.magnolia.ui.framework.app.stub 4 4 0 1 12 0.0% 92.0% 8.0% 1
info.magnolia.ui.framework.availability 6 6 0 0 13 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.availability.shorthandrules 7 7 0 1 12 0.0% 92.0% 8.0% 1
info.magnolia.ui.framework.command 2 2 0 0 17 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.config 1 1 0 0 4 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.context 1 0 1 2 5 100.0% 71.0% 71.0% 1
info.magnolia.ui.framework.favorite 2 2 0 0 5 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.i18n 1 1 0 0 13 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.message 14 11 3 3 15 21.0% 83.0% 5.0% 1
info.magnolia.ui.framework.overlay 11 10 1 3 10 9.0% 77.0% 14.0% 1
info.magnolia.ui.framework.setup 5 5 0 0 16 0.0% 100.0% 0.0% 1
info.magnolia.ui.framework.shell 6 5 1 0 19 17.0% 100.0% 17.0% 1
info.magnolia.ui.framework.task 4 3 1 0 13 25.0% 100.0% 25.0% 1

Packages

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

info.magnolia.ui.framework

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 info.magnolia.ui.framework.AdmincentralNodeTypes
info.magnolia.ui.framework.AdmincentralNodeTypes$Favorite
info.magnolia.ui.framework.AdmincentralNodeTypes$FavoriteGroup
info.magnolia.ui.framework.AdmincentralNodeTypes$SystemMessage
info.magnolia.ui.framework.UiFrameworkModule
None info.magnolia.module
info.magnolia.ui.api.app.launcherlayout
info.magnolia.ui.api.app.registry
info.magnolia.ui.dialog.registry
info.magnolia.ui.form.fieldtype.registry
java.lang

info.magnolia.ui.framework.action

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 44 7.0% 100.0% 7.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.action.AbstractMultiItemAction
info.magnolia.ui.framework.action.AbstractRepositoryAction
info.magnolia.ui.framework.action.AbstractVersionAction
info.magnolia.ui.framework.action.AbstractCommandAction
info.magnolia.ui.framework.action.AbstractCommandAction$CommandActionTriggerListener
info.magnolia.ui.framework.action.AbstractCommandAction$CommandActionTriggerListener$1
info.magnolia.ui.framework.action.AbstractMultiItemAction$1
info.magnolia.ui.framework.action.AbstractVersionAction$1
info.magnolia.ui.framework.action.ActivationAction
info.magnolia.ui.framework.action.ActivationActionDefinition
info.magnolia.ui.framework.action.AddFolderActionDefinition
info.magnolia.ui.framework.action.AddNodeAction
info.magnolia.ui.framework.action.AddNodeActionDefinition
info.magnolia.ui.framework.action.AddPropertyAction
info.magnolia.ui.framework.action.AddPropertyActionDefinition
info.magnolia.ui.framework.action.ConfirmationAction
info.magnolia.ui.framework.action.ConfirmationAction$1
info.magnolia.ui.framework.action.ConfirmationActionDefinition
info.magnolia.ui.framework.action.DeactivationAction
info.magnolia.ui.framework.action.DeactivationActionDefinition
info.magnolia.ui.framework.action.DeleteAction
info.magnolia.ui.framework.action.DeleteActionDefinition
info.magnolia.ui.framework.action.DeleteItemAction
info.magnolia.ui.framework.action.DeleteItemAction$1
info.magnolia.ui.framework.action.DeleteItemActionDefinition
info.magnolia.ui.framework.action.DownloadBinaryAction
info.magnolia.ui.framework.action.DownloadBinaryAction$1
info.magnolia.ui.framework.action.DownloadBinaryActionDefinition
info.magnolia.ui.framework.action.DuplicateNodeAction
info.magnolia.ui.framework.action.DuplicateNodeActionDefinition
info.magnolia.ui.framework.action.ExportAction
info.magnolia.ui.framework.action.ExportAction$1
info.magnolia.ui.framework.action.ExportAction$DeleteOnCloseFileInputStream
info.magnolia.ui.framework.action.ExportActionDefinition
info.magnolia.ui.framework.action.MarkNodeAsDeletedAction
info.magnolia.ui.framework.action.MarkNodeAsDeletedActionDefinition
info.magnolia.ui.framework.action.OpenCreateDialogAction
info.magnolia.ui.framework.action.OpenCreateDialogAction$1
info.magnolia.ui.framework.action.OpenCreateDialogActionDefinition
info.magnolia.ui.framework.action.OpenEditDialogAction
info.magnolia.ui.framework.action.OpenEditDialogAction$1
info.magnolia.ui.framework.action.OpenEditDialogActionDefinition
info.magnolia.ui.framework.action.OpenLocationAction
info.magnolia.ui.framework.action.OpenLocationActionDefinition
info.magnolia.ui.framework.action.ZipUploadActionDefinition
info.magnolia.ui.framework.action.ZipUploadDialogAction
None com.google.common.collect
com.vaadin.data
com.vaadin.data.util
com.vaadin.server
info.magnolia.cms.core
info.magnolia.cms.core.version
info.magnolia.cms.exchange
info.magnolia.cms.security
info.magnolia.commands
info.magnolia.commands.chain
info.magnolia.commands.impl
info.magnolia.context
info.magnolia.event
info.magnolia.i18nsystem
info.magnolia.jcr
info.magnolia.jcr.util
info.magnolia.module
info.magnolia.objectfactory
info.magnolia.ui.api.action
info.magnolia.ui.api.app
info.magnolia.ui.api.context
info.magnolia.ui.api.event
info.magnolia.ui.api.location
info.magnolia.ui.api.message
info.magnolia.ui.api.overlay
info.magnolia.ui.dialog.definition
info.magnolia.ui.dialog.formdialog
info.magnolia.ui.form
info.magnolia.ui.framework.message
info.magnolia.ui.vaadin.integration.contentconnector
info.magnolia.ui.vaadin.integration.jcr
info.magnolia.ui.vaadin.overlay
java.io
java.lang
java.lang.reflect
java.text
java.util
java.util.concurrent.atomic
javax.jcr
org.apache.commons.io
org.apache.commons.lang3
org.apache.jackrabbit.value
org.quartz
org.slf4j

info.magnolia.ui.framework.app

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 35 0.0% 95.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.app.AppControllerImpl
info.magnolia.ui.framework.app.AppControllerImpl$1
info.magnolia.ui.framework.app.AppInstanceControllerImpl
info.magnolia.ui.framework.app.AppInstanceControllerImpl$1
info.magnolia.ui.framework.app.AppInstanceControllerImpl$2
info.magnolia.ui.framework.app.AppInstanceControllerImpl$SubAppDetails
info.magnolia.ui.framework.app.BaseApp
info.magnolia.ui.framework.app.BaseSubApp
info.magnolia.ui.framework.app.DefaultAppView
info.magnolia.ui.framework.app.DefaultAppView$1
info.magnolia.ui.framework.app.DefaultAppView$2
info.magnolia.ui.framework.app.DefaultAppView$3
info.magnolia.ui.framework.app.DefaultLocationHistoryMapper
info.magnolia.ui.framework.app.SubAppActionExecutor
info.magnolia.ui.framework.app.SubAppContextImpl
info.magnolia.ui.framework.app.SubAppContextImpl$1
info.magnolia.ui.framework.app.embedded
info.magnolia.ui.framework.app.stub
com.google.inject.binder
com.google.inject.name
com.google.inject.util
com.vaadin.server
com.vaadin.ui
info.magnolia.event
info.magnolia.i18nsystem
info.magnolia.module
info.magnolia.monitoring
info.magnolia.objectfactory
info.magnolia.objectfactory.configuration
info.magnolia.objectfactory.guice
info.magnolia.registry
info.magnolia.ui.api.action
info.magnolia.ui.api.app
info.magnolia.ui.api.app.launcherlayout
info.magnolia.ui.api.app.registry
info.magnolia.ui.api.context
info.magnolia.ui.api.location
info.magnolia.ui.api.message
info.magnolia.ui.api.overlay
info.magnolia.ui.api.shell
info.magnolia.ui.api.view
info.magnolia.ui.framework.app.stub
info.magnolia.ui.framework.context
info.magnolia.ui.framework.message
info.magnolia.ui.framework.overlay
info.magnolia.ui.vaadin.overlay
info.magnolia.ui.vaadin.tabsheet
java.lang
java.util
java.util.concurrent
org.apache.commons.lang3
org.slf4j
org.vaadin.cssinject

info.magnolia.ui.framework.app.embedded

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 11 25.0% 100.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.app.embedded.EmbeddedPageView
info.magnolia.ui.framework.app.embedded.EmbeddedPageSubApp
info.magnolia.ui.framework.app.embedded.EmbeddedPageSubAppDescriptor
info.magnolia.ui.framework.app.embedded.EmbeddedPageViewImpl
None com.vaadin.server
com.vaadin.ui
info.magnolia.context
info.magnolia.ui.api.app
info.magnolia.ui.api.app.registry
info.magnolia.ui.api.location
info.magnolia.ui.api.view
info.magnolia.ui.framework.app
java.lang
org.apache.commons.lang3
org.slf4j

info.magnolia.ui.framework.app.stub

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 12 0.0% 92.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.app.stub.ExceptionMessage
info.magnolia.ui.framework.app.stub.FailedAppStub
info.magnolia.ui.framework.app.stub.FailedSubAppStub
info.magnolia.ui.framework.app.stub.StubView
info.magnolia.ui.framework.app
com.vaadin.shared.ui.label
com.vaadin.ui
info.magnolia.i18nsystem
info.magnolia.ui.api.app
info.magnolia.ui.api.location
info.magnolia.ui.api.message
info.magnolia.ui.api.view
info.magnolia.ui.framework.app
info.magnolia.ui.vaadin.tabsheet
info.magnolia.util
java.lang
org.apache.commons.lang3.exception

info.magnolia.ui.framework.availability

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 13 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.availability.AvailabilityCheckerImpl
info.magnolia.ui.framework.availability.HasVersionsRule
info.magnolia.ui.framework.availability.IsDeletedRule
info.magnolia.ui.framework.availability.IsNotDeletedRule
info.magnolia.ui.framework.availability.IsNotVersionedRule
info.magnolia.ui.framework.availability.IsVersionRule
None info.magnolia.cms.core.version
info.magnolia.jcr.util
info.magnolia.objectfactory
info.magnolia.ui.api.availability
info.magnolia.ui.framework.availability.shorthandrules
info.magnolia.ui.vaadin.integration.contentconnector
info.magnolia.ui.vaadin.integration.jcr
java.lang
java.util
javax.jcr
javax.jcr.version
org.apache.commons.lang3
org.slf4j

info.magnolia.ui.framework.availability.shorthandrules

Afferent Couplings Efferent Couplings Abstractness Instability Distance
1 12 0.0% 92.0% 8.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.availability.shorthandrules.AccessGrantedRule
info.magnolia.ui.framework.availability.shorthandrules.JcrNodeTypesAllowedRule
info.magnolia.ui.framework.availability.shorthandrules.JcrNodesAllowedRule
info.magnolia.ui.framework.availability.shorthandrules.JcrPropertiesAllowedRule
info.magnolia.ui.framework.availability.shorthandrules.JcrRootAllowedRule
info.magnolia.ui.framework.availability.shorthandrules.MultipleItemsAllowedRule
info.magnolia.ui.framework.availability.shorthandrules.WritePermissionRequiredRule
info.magnolia.ui.framework.availability
info.magnolia.cms.security
info.magnolia.cms.security.operations
info.magnolia.context
info.magnolia.jcr.util
info.magnolia.ui.api.availability
info.magnolia.ui.vaadin.integration.jcr
java.lang
java.util
javax.jcr
org.apache.commons.collections
org.apache.commons.lang3
org.slf4j

info.magnolia.ui.framework.command

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 17 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.command.ImportZipCommand
info.magnolia.ui.framework.command.ImportZipCommand$1
None info.magnolia.cms.beans.config
info.magnolia.cms.core
info.magnolia.commands.impl
info.magnolia.context
info.magnolia.i18nsystem
info.magnolia.jcr.util
info.magnolia.ui.form.field.upload
java.io
java.lang
java.util
javax.jcr
org.apache.commons.collections
org.apache.commons.compress.archivers.zip
org.apache.commons.io
org.apache.commons.lang3
org.slf4j
org.vaadin.easyuploads

info.magnolia.ui.framework.config

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 info.magnolia.ui.framework.config.UiConfig
None info.magnolia.ui.api.action.config
info.magnolia.ui.dialog.config
info.magnolia.ui.form.config
java.lang

info.magnolia.ui.framework.context

Afferent Couplings Efferent Couplings Abstractness Instability Distance
2 5 100.0% 71.0% 71.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.context.AbstractUIContext
None info.magnolia.ui.framework.app
info.magnolia.ui.framework.shell
info.magnolia.ui.api.context
info.magnolia.ui.api.overlay
info.magnolia.ui.api.view
info.magnolia.ui.framework.overlay
java.lang

info.magnolia.ui.framework.favorite

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 5 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.favorite.FavoriteStore
info.magnolia.ui.framework.favorite.FavoriteStore$1
None info.magnolia.cms.security
info.magnolia.context
java.lang
javax.jcr
org.apache.jackrabbit.commons

info.magnolia.ui.framework.i18n

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 13 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.i18n.DefaultI18NAuthoringSupport
None com.vaadin.data
com.vaadin.ui
info.magnolia.cms.i18n
info.magnolia.link
info.magnolia.objectfactory
info.magnolia.ui.api.i18n
info.magnolia.ui.form.field.transformer
info.magnolia.ui.form.field.transformer.basic
info.magnolia.ui.vaadin.integration.jcr
java.lang
java.util
javax.jcr
org.apache.commons.lang3

info.magnolia.ui.framework.message

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 15 21.0% 83.0% 5.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.message.MessageEventHandler
info.magnolia.ui.framework.message.MessagesManager
info.magnolia.ui.framework.message.MessagesManager$MessageListener
info.magnolia.ui.framework.message.LocalMessageDispatcher
info.magnolia.ui.framework.message.MessageEvent
info.magnolia.ui.framework.message.MessageStore
info.magnolia.ui.framework.message.MessageStore$1
info.magnolia.ui.framework.message.MessageStore$2
info.magnolia.ui.framework.message.MessageStore$3
info.magnolia.ui.framework.message.MessageStore$4
info.magnolia.ui.framework.message.MessageStore$5
info.magnolia.ui.framework.message.MessageStore$6
info.magnolia.ui.framework.message.MessagesManagerImpl
info.magnolia.ui.framework.message.Node2MapUtil
info.magnolia.ui.framework.action
info.magnolia.ui.framework.app
info.magnolia.ui.framework.shell
com.google.common.collect
com.vaadin.server
info.magnolia.cms.security
info.magnolia.context
info.magnolia.event
info.magnolia.jcr.node2bean
info.magnolia.jcr.util
info.magnolia.objectfactory
info.magnolia.ui.api.message
java.lang
java.util
javax.inject
javax.jcr
org.apache.jackrabbit.commons
org.slf4j

info.magnolia.ui.framework.overlay

Afferent Couplings Efferent Couplings Abstractness Instability Distance
3 10 9.0% 77.0% 14.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.overlay.OverlayPresenter
info.magnolia.ui.framework.overlay.OverlayPresenter$1
info.magnolia.ui.framework.overlay.OverlayPresenter$2
info.magnolia.ui.framework.overlay.OverlayPresenter$3
info.magnolia.ui.framework.overlay.OverlayPresenter$4
info.magnolia.ui.framework.overlay.OverlayPresenter$5
info.magnolia.ui.framework.overlay.OverlayPresenter$6
info.magnolia.ui.framework.overlay.OverlayPresenter$7
info.magnolia.ui.framework.overlay.OverlayPresenter$8
info.magnolia.ui.framework.overlay.OverlayPresenter$9
info.magnolia.ui.framework.overlay.ViewAdapter
info.magnolia.ui.framework.app
info.magnolia.ui.framework.context
info.magnolia.ui.framework.shell
com.vaadin.event
com.vaadin.server
com.vaadin.shared.ui.label
com.vaadin.ui
info.magnolia.objectfactory
info.magnolia.ui.api.overlay
info.magnolia.ui.api.view
info.magnolia.ui.vaadin.dialog
info.magnolia.ui.vaadin.icon
java.lang

info.magnolia.ui.framework.setup

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 16 0.0% 100.0% 0.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
None info.magnolia.ui.framework.setup.ReplaceMultiLinkFieldDefinitionTask
info.magnolia.ui.framework.setup.ReplaceSaveModeTypeFieldDefinitionTask
info.magnolia.ui.framework.setup.SetWritePermissionForActionsTask
info.magnolia.ui.framework.setup.UiFrameworkModuleVersionHandler
info.magnolia.ui.framework.setup.UiFrameworkModuleVersionHandler$RenameLegacyI18nNodeIfExistingTask
None info.magnolia.i18nsystem.setup
info.magnolia.jcr.util
info.magnolia.module
info.magnolia.module.delta
info.magnolia.nodebuilder
info.magnolia.nodebuilder.task
info.magnolia.ui.dialog.action
info.magnolia.ui.dialog.setup.migration
info.magnolia.ui.form.field.definition
info.magnolia.ui.form.field.factory
info.magnolia.ui.form.field.transformer.multi
java.lang
java.util
javax.jcr
org.apache.commons.lang3
org.slf4j

info.magnolia.ui.framework.shell

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 19 17.0% 100.0% 17.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.shell.ShellImpl$ShellAppLocationProvider
info.magnolia.ui.framework.shell.ShellImpl
info.magnolia.ui.framework.shell.ShellImpl$1
info.magnolia.ui.framework.shell.ShellImpl$2
info.magnolia.ui.framework.shell.ShellImpl$3
info.magnolia.ui.framework.shell.ShellImpl$4
None com.vaadin.ui
info.magnolia.cms.security
info.magnolia.context
info.magnolia.event
info.magnolia.ui.api.app
info.magnolia.ui.api.location
info.magnolia.ui.api.message
info.magnolia.ui.api.overlay
info.magnolia.ui.api.shell
info.magnolia.ui.api.view
info.magnolia.ui.framework.context
info.magnolia.ui.framework.message
info.magnolia.ui.framework.overlay
info.magnolia.ui.vaadin.gwt.client.shared.magnoliashell
info.magnolia.ui.vaadin.magnoliashell
info.magnolia.ui.vaadin.magnoliashell.viewport
java.lang
java.util
org.apache.commons.lang3

info.magnolia.ui.framework.task

Afferent Couplings Efferent Couplings Abstractness Instability Distance
0 13 25.0% 100.0% 25.0%
Abstract Classes Concrete Classes Used by Packages Uses Packages
info.magnolia.ui.framework.task.TaskEventDispatcher
info.magnolia.ui.framework.task.LocalTaskDispatcher
info.magnolia.ui.framework.task.LocalTaskDispatcher$1
info.magnolia.ui.framework.task.LocalTaskDispatcherManager
None com.google.common.collect
com.vaadin.server
info.magnolia.cms.security
info.magnolia.context
info.magnolia.event
info.magnolia.objectfactory
info.magnolia.task
info.magnolia.task.event
java.lang
java.util
javax.inject
org.apache.commons.lang3
org.slf4j

Cycles

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

Package Package Dependencies
info.magnolia.ui.framework.app info.magnolia.ui.framework.app.stub
info.magnolia.ui.framework.app
info.magnolia.ui.framework.app.embedded info.magnolia.ui.framework.app
info.magnolia.ui.framework.app.stub
info.magnolia.ui.framework.app
info.magnolia.ui.framework.app.stub info.magnolia.ui.framework.app
info.magnolia.ui.framework.app.stub

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.