JDepend Analysis

Designed for use with JDepend and Ant.


Summary

[summary] [packages] [cycles] [explanations]
PackageTotal ClassesAbstract ClassesConcrete ClassesAfferent CouplingsEfferent CouplingsAbstractnessInstabilityDistance
org.deduced7835432110.450.050.51
org.deduced.analyzer1102110.330.33
org.deduced.analyzer.implementation514230.20.60.2
org.deduced.controller101003210.40.4
org.deduced.controller.implementation28523290.180.820
org.deduced.controller.rule514010.210.2
org.deduced.controller.typed6603110.250.25
org.deduced.controller.typed.implementation6061300.750.25
org.deduced.dynamic11110080.0910.09
org.deduced.filter12210120.170.670.17
org.deduced.framework8171180.120.950.07
org.deduced.implementation2102111100.080.92
org.deduced.rule624240.330.670
org.deduced.task2205110.170.17
org.deduced.task.implementation2022300.60.4
org.deduced.utilities20416800.200.8
org.deduced.validation211250.50.710.21
org.deduced.validation.model6603110.250.25
org.deduced.validation.model.implementation6061300.750.25
org.deduced.validation.validator7703110.250.25
org.deduced.validation.validator.implementation7071300.750.25
org.deduced.validation.validator.rule716120.140.670.19
org.deduced.xml14212130.140.750.11

Packages

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

org.deduced

Afferent Couplings: 21Efferent Couplings: 1Abstractness: 0.45Instability: 0.05Distance: 0.51
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.AbstractPropertyCollection
org.deduced.CollectionTypeInformation
org.deduced.DeducedApplicationLayer
org.deduced.DeducedControllerLayer
org.deduced.DeducedModelLayer
org.deduced.DeducedModelLayerExtension
org.deduced.DeducedProperty
org.deduced.DeducedSchemaLayer
org.deduced.DeductionRule
org.deduced.DeductionRuleAnalyzer
org.deduced.DocumentedCollection
org.deduced.EnabledPropertyCollection
org.deduced.EnumerationPropertyCollection
org.deduced.EnumerationPropertyType
org.deduced.FixedPropertyInstanceCollection
org.deduced.InstanceReference
org.deduced.ModelFactory
org.deduced.NameReferenceFinder
org.deduced.NamedPropertyCollection
org.deduced.Property
org.deduced.PropertyChangeEvent
org.deduced.PropertyCollection
org.deduced.PropertyCollectionListInstance
org.deduced.PropertyCollectionType
org.deduced.PropertyInstance
org.deduced.PropertyListener
org.deduced.PropertyPackage
org.deduced.PropertyType
org.deduced.RuleExecutionContext
org.deduced.SchemaAnalyzer
org.deduced.SchemaBasedApplicationLayer
org.deduced.StaticInstanceReference
org.deduced.TypeBasedModelFactory
org.deduced.ValidationModel
org.deduced.package-info
org.deduced.AbstractPropertyCollection$CheckParent
org.deduced.AbstractPropertyCollection$CollectionToDeleteMonitor
org.deduced.BasicTypes
org.deduced.ChangeType
org.deduced.DeducedConstant
org.deduced.DeducedUtilities
org.deduced.DefaultModelFactory
org.deduced.FixedDeducedProperty
org.deduced.FixedPropertyInstanceCollection$FixedPropertyListIterator
org.deduced.FixedPropertyInstanceCollection$FixedPropertyListValueIterator
org.deduced.IdPropertyMap
org.deduced.KeyFilteredPropertyListener
org.deduced.ListenTargetTracker
org.deduced.ModelCreationFailedException
org.deduced.NameReferenceFinderImplementation
org.deduced.PropertyChangeEventImplementation
org.deduced.PropertyCollectionAsKeySet
org.deduced.PropertyCollectionAsPropertyEntrySet
org.deduced.PropertyCollectionAsPropertyList
org.deduced.PropertyCollectionAsPropertyMap
org.deduced.PropertyCollectionAsValueList
org.deduced.PropertyCollectionAsValueMap
org.deduced.PropertyCollectionKeyIterator
org.deduced.PropertyCollectionListInstanceHolder
org.deduced.PropertyCollectionTypeHolder
org.deduced.PropertyImplementation
org.deduced.PropertyInstanceHolder
org.deduced.PropertyList
org.deduced.PropertyMap
org.deduced.PropertyMap$PropertyIterator
org.deduced.PropertyMap$ValueIterator
org.deduced.PropertyMapEntry
org.deduced.PropertyMapEntryIterator
org.deduced.PropertyPointer
org.deduced.PropertyTypeHolder
org.deduced.PropertyValueCollectionAsEntrySet
org.deduced.PropertyValueCollectionComparator
org.deduced.PropertyValueMapEntryIterator
org.deduced.RecursiveModelListener
org.deduced.Reference
org.deduced.ReferenceMap
org.deduced.RuleExecutionContextImplementation
org.deduced.ValueMapEntry
org.deduced.analyzer
org.deduced.analyzer.implementation
org.deduced.controller
org.deduced.controller.implementation
org.deduced.controller.rule
org.deduced.controller.typed
org.deduced.controller.typed.implementation
org.deduced.dynamic
org.deduced.filter
org.deduced.framework
org.deduced.implementation
org.deduced.rule
org.deduced.task
org.deduced.task.implementation
org.deduced.validation
org.deduced.validation.model
org.deduced.validation.model.implementation
org.deduced.validation.validator
org.deduced.validation.validator.implementation
org.deduced.validation.validator.rule
org.deduced.xml
org.deduced.utilities

org.deduced.analyzer

Afferent Couplings: 2Efferent Couplings: 1Abstractness: 1Instability: 0.33Distance: 0.33
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.analyzer.SingleItemListFilter
Noneorg.deduced.analyzer.implementation
org.deduced.framework
org.deduced

org.deduced.analyzer.implementation

Afferent Couplings: 2Efferent Couplings: 3Abstractness: 0.2Instability: 0.6Distance: 0.2
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.analyzer.implementation.package-info
org.deduced.analyzer.implementation.SchemaAnalyzerBuilder
org.deduced.analyzer.implementation.SchemaAnalyzerBuilder$SchemaListener
org.deduced.analyzer.implementation.SingleItemListFilterImplementation
org.deduced.analyzer.implementation.SingleListItemFilterImpl
org.deduced.controller.implementation
org.deduced.framework
org.deduced
org.deduced.analyzer
org.deduced.implementation

org.deduced.controller

Afferent Couplings: 3Efferent Couplings: 2Abstractness: 1Instability: 0.4Distance: 0.4
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.controller.ControllerFactory
org.deduced.controller.ControllerProvider
org.deduced.controller.DeducedControllerLayerExtension
org.deduced.controller.DefaultPropertyCollectionControllerModel
org.deduced.controller.DefaultPropertyControllerModel
org.deduced.controller.PropertyCollectionController
org.deduced.controller.PropertyCollectionControllerModel
org.deduced.controller.PropertyController
org.deduced.controller.PropertyControllerModel
org.deduced.controller.package-info
Noneorg.deduced.controller.implementation
org.deduced.dynamic
org.deduced.framework
org.deduced
org.deduced.task

org.deduced.controller.implementation

Afferent Couplings: 2Efferent Couplings: 9Abstractness: 0.18Instability: 0.82Distance: 0
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.controller.implementation.AbstractControllerFactory
org.deduced.controller.implementation.AbstractPropertyCollectionController
org.deduced.controller.implementation.ControllerUtilities$FileNameGenerator
org.deduced.controller.implementation.FlyWheelControllerFactory
org.deduced.controller.implementation.package-info
org.deduced.controller.implementation.CachedFlyWheelControllerProvider
org.deduced.controller.implementation.CachedFlyWheelControllerProvider$PropertyControllerKey
org.deduced.controller.implementation.CompileResult
org.deduced.controller.implementation.ControllerUtilities
org.deduced.controller.implementation.ControllerUtilities$1
org.deduced.controller.implementation.ControllerUtilities$DynamicFileNameGenerator
org.deduced.controller.implementation.ControllerUtilities$LocalClassLoader
org.deduced.controller.implementation.DeducedControllerLayerExtensionImplementation
org.deduced.controller.implementation.DefaultControllerFactory
org.deduced.controller.implementation.DefaultPropertyCollectionControllerModelImplementation
org.deduced.controller.implementation.DefaultPropertyControllerModelImplementation
org.deduced.controller.implementation.DirectControllerProvider
org.deduced.controller.implementation.DirectPropertyCollectionController
org.deduced.controller.implementation.DirectPropertyController
org.deduced.controller.implementation.FlyWheelControllerFactoryImplementation
org.deduced.controller.implementation.FlyWheelControllerProvider
org.deduced.controller.implementation.FlyWheelPropertyCollectionController
org.deduced.controller.implementation.FlyWheelPropertyCollectionControllerList
org.deduced.controller.implementation.FlyWheelPropertyController
org.deduced.controller.implementation.FlyWheelPropertyControllerList
org.deduced.controller.implementation.PropertyCollectionControllerModelImplementation
org.deduced.controller.implementation.PropertyControllerModelImplementation
org.deduced.controller.implementation.SimplePropertyCollectionController
org.deduced.dynamic
org.deduced.framework
org.deduced
org.deduced.analyzer.implementation
org.deduced.controller
org.deduced.implementation
org.deduced.rule
org.deduced.task
org.deduced.task.implementation
org.deduced.utilities
org.deduced.validation

org.deduced.controller.rule

Afferent Couplings: 0Efferent Couplings: 1Abstractness: 0.2Instability: 1Distance: 0.2
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.controller.rule.package-info
org.deduced.controller.rule.CollectionIsAddAvailableRule
org.deduced.controller.rule.CollectionIsDeleteAvailableRule
org.deduced.controller.rule.PropertyIsChangeableRule
org.deduced.controller.rule.PropertyIsRemoveableRule
Noneorg.deduced

org.deduced.controller.typed

Afferent Couplings: 3Efferent Couplings: 1Abstractness: 1Instability: 0.25Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.controller.typed.CollectionTypeControllerPackage
org.deduced.controller.typed.TypedCollectionController
org.deduced.controller.typed.TypedCollectionListController
org.deduced.controller.typed.TypedControllerPackage
org.deduced.controller.typed.TypedControllerSchema
org.deduced.controller.typed.TypedPropertyController
Noneorg.deduced.controller.typed.implementation
org.deduced.dynamic
org.deduced.framework
org.deduced

org.deduced.controller.typed.implementation

Afferent Couplings: 1Efferent Couplings: 3Abstractness: 0Instability: 0.75Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
None org.deduced.controller.typed.implementation.CollectionTypeControllerPackageImplementation
org.deduced.controller.typed.implementation.TypedCollectionControllerImplementation
org.deduced.controller.typed.implementation.TypedCollectionListControllerImplementation
org.deduced.controller.typed.implementation.TypedControllerPackageImplementation
org.deduced.controller.typed.implementation.TypedControllerSchemaImplementation
org.deduced.controller.typed.implementation.TypedPropertyControllerImplementation
org.deduced.framework
org.deduced
org.deduced.controller.typed
org.deduced.implementation

org.deduced.dynamic

Afferent Couplings: 0Efferent Couplings: 8Abstractness: 0.09Instability: 1Distance: 0.09
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.dynamic.package-info
org.deduced.dynamic.DynamicModelFactory
org.deduced.dynamic.DynamicModelFactory$ModelDeleteListener
org.deduced.dynamic.DynamicModelFactory$SchemaListener
org.deduced.dynamic.DynamicModelFactory$TypeExistenceCheck
org.deduced.dynamic.DynamicPropertyList
org.deduced.dynamic.DynamicPropertyMap
org.deduced.dynamic.DynamicUtilities
org.deduced.dynamic.FlyWheelDynamicPropertyCollectionController
org.deduced.dynamic.FlyWheelDynamicPropertyController
org.deduced.dynamic.FlyWheelTypeBasedControllerFactory
Noneorg.deduced
org.deduced.controller
org.deduced.controller.implementation
org.deduced.controller.typed
org.deduced.framework
org.deduced.implementation
org.deduced.task
org.deduced.utilities

org.deduced.filter

Afferent Couplings: 1Efferent Couplings: 2Abstractness: 0.17Instability: 0.67Distance: 0.17
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.filter.Filter
org.deduced.filter.package-info
org.deduced.filter.AndFilter
org.deduced.filter.CompareFilter
org.deduced.filter.EqualsFilter
org.deduced.filter.FilterEverythingFilter
org.deduced.filter.FilterNothingFilter
org.deduced.filter.InstanceOfFilter
org.deduced.filter.NotFilter
org.deduced.filter.OrFilter
org.deduced.filter.PropertyLinkedFilter
org.deduced.filter.SameFilter
org.deduced.rule
org.deduced
org.deduced.utilities

org.deduced.framework

Afferent Couplings: 1Efferent Couplings: 18Abstractness: 0.12Instability: 0.95Distance: 0.07
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.framework.package-info
org.deduced.framework.BaseSchema
org.deduced.framework.ControllerSchema
org.deduced.framework.DeducedModelLayerExtensionImplementation
org.deduced.framework.DefaultSchema
org.deduced.framework.FrameworkLoader
org.deduced.framework.RuleDeducedProperty
org.deduced.framework.RuleDeducedProperty$ParameterFetcher
org.deduced.dynamic
org.deduced
org.deduced.analyzer
org.deduced.analyzer.implementation
org.deduced.controller
org.deduced.controller.implementation
org.deduced.controller.typed
org.deduced.controller.typed.implementation
org.deduced.implementation
org.deduced.task
org.deduced.task.implementation
org.deduced.utilities
org.deduced.validation
org.deduced.validation.model
org.deduced.validation.model.implementation
org.deduced.validation.validator
org.deduced.validation.validator.implementation
org.deduced.validation.validator.rule
org.deduced.xml

org.deduced.implementation

Afferent Couplings: 11Efferent Couplings: 1Abstractness: 0Instability: 0.08Distance: 0.92
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
None org.deduced.implementation.CollectionTypeInformationImplementation
org.deduced.implementation.DeducedApplicationLayerImplementation
org.deduced.implementation.DeducedControllerLayerImplementation
org.deduced.implementation.DeducedModelLayerImplementation
org.deduced.implementation.DeducedSchemaLayerImplementation
org.deduced.implementation.DeductionRuleImplementation
org.deduced.implementation.DocumentedCollectionImplementation
org.deduced.implementation.EnabledPropertyCollectionImplementation
org.deduced.implementation.EnumerationPropertyCollectionImplementation
org.deduced.implementation.EnumerationPropertyTypeImplementation
org.deduced.implementation.InstanceReferenceImplementation
org.deduced.implementation.NamedPropertyCollectionImplementation
org.deduced.implementation.PropertyCollectionListInstanceImplementation
org.deduced.implementation.PropertyCollectionTypeImplementation
org.deduced.implementation.PropertyInstanceImplementation
org.deduced.implementation.PropertyPackageImplementation
org.deduced.implementation.PropertyTypeImplementation
org.deduced.implementation.SchemaAnalyzerImplementation
org.deduced.implementation.SchemaBasedApplicationLayerImplementation
org.deduced.implementation.StaticInstanceReferenceImplementation
org.deduced.implementation.ValidationModelImplementation
org.deduced.analyzer.implementation
org.deduced.controller.implementation
org.deduced.controller.typed.implementation
org.deduced.dynamic
org.deduced.framework
org.deduced.rule
org.deduced.task.implementation
org.deduced.validation
org.deduced.validation.model.implementation
org.deduced.validation.validator.implementation
org.deduced.xml
org.deduced

org.deduced.rule

Afferent Couplings: 2Efferent Couplings: 4Abstractness: 0.33Instability: 0.67Distance: 0
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.rule.DeductionRuleLibrary
org.deduced.rule.package-info
org.deduced.rule.AlwaysFalseRule
org.deduced.rule.AlwaysTrueRule
org.deduced.rule.CopyFirstParameterRule
org.deduced.rule.DeductionRuleLibrary$CompareResult
org.deduced.controller.implementation
org.deduced.validation.validator.rule
org.deduced
org.deduced.filter
org.deduced.implementation
org.deduced.utilities

org.deduced.task

Afferent Couplings: 5Efferent Couplings: 1Abstractness: 1Instability: 0.17Distance: 0.17
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.task.Task
org.deduced.task.TaskMonitor
Noneorg.deduced.controller
org.deduced.controller.implementation
org.deduced.dynamic
org.deduced.framework
org.deduced.task.implementation
org.deduced

org.deduced.task.implementation

Afferent Couplings: 2Efferent Couplings: 3Abstractness: 0Instability: 0.6Distance: 0.4
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
None org.deduced.task.implementation.TaskImplementation
org.deduced.task.implementation.TaskMonitorImplementation
org.deduced.controller.implementation
org.deduced.framework
org.deduced
org.deduced.implementation
org.deduced.task

org.deduced.utilities

Afferent Couplings: 8Efferent Couplings: 0Abstractness: 0.2Instability: 0Distance: 0.8
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.utilities.AbstractRunner
org.deduced.utilities.Runner
org.deduced.utilities.SystemExit
org.deduced.utilities.package-info
org.deduced.utilities.AssertUtilities
org.deduced.utilities.FileUtilities
org.deduced.utilities.HashCodeUtilities
org.deduced.utilities.IdentityReferenceMap
org.deduced.utilities.IdentityReferenceMap$IdentityReferenceEntry
org.deduced.utilities.InvokeNowRunner
org.deduced.utilities.LogFormatter
org.deduced.utilities.LogUtilities
org.deduced.utilities.NewThreadRunner
org.deduced.utilities.ObjectUtilities
org.deduced.utilities.OnDemandRunner
org.deduced.utilities.SwingInvokeAndWaitRunner
org.deduced.utilities.SwingInvokeLaterRunner
org.deduced.utilities.SystemExitImplementation
org.deduced.utilities.WeakList
org.deduced.utilities.WeakList$WeakIterator
org.deduced
org.deduced.controller.implementation
org.deduced.dynamic
org.deduced.filter
org.deduced.framework
org.deduced.rule
org.deduced.validation
org.deduced.xml
None

org.deduced.validation

Afferent Couplings: 2Efferent Couplings: 5Abstractness: 0.5Instability: 0.71Distance: 0.21
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.validation.package-info
org.deduced.validation.ValidationUtilities
org.deduced.controller.implementation
org.deduced.framework
org.deduced
org.deduced.implementation
org.deduced.utilities
org.deduced.validation.model
org.deduced.validation.validator

org.deduced.validation.model

Afferent Couplings: 3Efferent Couplings: 1Abstractness: 1Instability: 0.25Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.validation.model.LinkedValidationModel
org.deduced.validation.model.NullableValidationModel
org.deduced.validation.model.NumberValidationModel
org.deduced.validation.model.StringValidationModel
org.deduced.validation.model.TypeCreationValidationModel
org.deduced.validation.model.TypeReferenceValidationModel
Noneorg.deduced.framework
org.deduced.validation
org.deduced.validation.model.implementation
org.deduced

org.deduced.validation.model.implementation

Afferent Couplings: 1Efferent Couplings: 3Abstractness: 0Instability: 0.75Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
None org.deduced.validation.model.implementation.LinkedValidationModelImplementation
org.deduced.validation.model.implementation.NullableValidationModelImplementation
org.deduced.validation.model.implementation.NumberValidationModelImplementation
org.deduced.validation.model.implementation.StringValidationModelImplementation
org.deduced.validation.model.implementation.TypeCreationValidationModelImplementation
org.deduced.validation.model.implementation.TypeReferenceValidationModelImplementation
org.deduced.framework
org.deduced
org.deduced.implementation
org.deduced.validation.model

org.deduced.validation.validator

Afferent Couplings: 3Efferent Couplings: 1Abstractness: 1Instability: 0.25Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.validation.validator.ErrorMessageBasedValidator
org.deduced.validation.validator.NullableValidator
org.deduced.validation.validator.NumberValidator
org.deduced.validation.validator.StringValidator
org.deduced.validation.validator.TypeCreationValidator
org.deduced.validation.validator.TypeReferenceValidator
org.deduced.validation.validator.Validator
Noneorg.deduced.framework
org.deduced.validation
org.deduced.validation.validator.implementation
org.deduced

org.deduced.validation.validator.implementation

Afferent Couplings: 1Efferent Couplings: 3Abstractness: 0Instability: 0.75Distance: 0.25
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
None org.deduced.validation.validator.implementation.ErrorMessageBasedValidatorImplementation
org.deduced.validation.validator.implementation.NullableValidatorImplementation
org.deduced.validation.validator.implementation.NumberValidatorImplementation
org.deduced.validation.validator.implementation.StringValidatorImplementation
org.deduced.validation.validator.implementation.TypeCreationValidatorImplementation
org.deduced.validation.validator.implementation.TypeReferenceValidatorImplementation
org.deduced.validation.validator.implementation.ValidatorImplementation
org.deduced.framework
org.deduced
org.deduced.implementation
org.deduced.validation.validator

org.deduced.validation.validator.rule

Afferent Couplings: 1Efferent Couplings: 2Abstractness: 0.14Instability: 0.67Distance: 0.19
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.validation.validator.rule.package-info
org.deduced.validation.validator.rule.IsCreateTypeValidRule
org.deduced.validation.validator.rule.IsNullableValidRule
org.deduced.validation.validator.rule.IsNumberValidRule
org.deduced.validation.validator.rule.IsReferenceTypeValidRule
org.deduced.validation.validator.rule.IsStringValidRule
org.deduced.validation.validator.rule.SetIsValidBasedOnErrorMessageRule
org.deduced.framework
org.deduced
org.deduced.rule

org.deduced.xml

Afferent Couplings: 1Efferent Couplings: 3Abstractness: 0.14Instability: 0.75Distance: 0.11
Abstract ClassesConcrete ClassesUsed by PackagesUses Packages
org.deduced.xml.XmlFileParser
org.deduced.xml.package-info
org.deduced.xml.DecodeException
org.deduced.xml.DeducedXmlUtilities
org.deduced.xml.EncodeException
org.deduced.xml.XmlFileParserImplementation
org.deduced.xml.XmlModelDecoder
org.deduced.xml.XmlModelDecoder$CollectionToElementAssociation
org.deduced.xml.XmlModelDecoder$PropertyToElementAssociation
org.deduced.xml.XmlModelEncoder
org.deduced.xml.XmlModelEncoder$PackageSubObjectList
org.deduced.xml.XmlModelEncoder$ReferenceCollection
org.deduced.xml.XmlModelEncoder$TypeInstanceList
org.deduced.xml.XmlPropertyConstants
org.deduced.framework
org.deduced
org.deduced.implementation
org.deduced.utilities

Cycles

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

There are no cyclic dependancies.

Explanations

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

The following explanations are for quick reference and are lifted directly from the original JDepend documentation.

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.