Package | TC | CC | AC | Ca | Ce | A | I | D | V |
---|---|---|---|---|---|---|---|---|---|
org.opendaylight.ovsdb.hwvtepsouthbound | 18 | 18 | 0 | 5 | 43 | 0.0% | 90.0% | 10.0% | 1 |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation | 2 | 1 | 1 | 3 | 6 | 50.0% | 67.0% | 17.0% | 1 |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration | 5 | 5 | 0 | 1 | 17 | 0.0% | 94.0% | 6.0% | 1 |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.connection | 1 | 1 | 0 | 0 | 10 | 0.0% | 100.0% | 0.0% | 1 |
org.opendaylight.ovsdb.hwvtepsouthbound.transact | 39 | 31 | 8 | 2 | 32 | 21.0% | 94.0% | 15.000001% | 1 |
org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md | 25 | 22 | 3 | 1 | 29 | 12.0% | 97.0% | 9.0% | 1 |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
5 | 43 | 0.0% | 90.0% | 10.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
None | org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionInstance org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionManager$1 org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionManager$2 org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionManager$ConnectionReconciliationTriggers org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepConnectionManager$HwvtepDeviceEntityOwnershipListener org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepDataChangeListener org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepDataChangeListener$1 org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepDeviceInfo$DeviceData org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepDeviceInfo$DeviceDataStatus org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepMonitorCallback org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSchemaConstants org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSchemaConstants$HWVTEPSCHEMATABLES org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundConstants org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundMapper org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundProvider$HwvtepsbPluginInstanceEntityOwnershipListener org.opendaylight.ovsdb.hwvtepsouthbound.HwvtepSouthboundUtil org.opendaylight.ovsdb.hwvtepsouthbound.InstanceIdentifierCodec |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.connection org.opendaylight.ovsdb.hwvtepsouthbound.transact org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md |
com.google.common.base com.google.common.collect com.google.common.net com.google.common.util.concurrent java.io java.lang java.net java.util java.util.concurrent org.opendaylight.controller.md.sal.binding.api org.opendaylight.controller.md.sal.common.api.clustering org.opendaylight.controller.md.sal.common.api.data org.opendaylight.controller.sal.core.api.model org.opendaylight.mdsal.binding.dom.codec.api org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration org.opendaylight.ovsdb.hwvtepsouthbound.transact org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.lib org.opendaylight.ovsdb.lib.error org.opendaylight.ovsdb.lib.message org.opendaylight.ovsdb.lib.notation org.opendaylight.ovsdb.lib.operations org.opendaylight.ovsdb.lib.schema org.opendaylight.ovsdb.lib.schema.typed org.opendaylight.ovsdb.schema.hardwarevtep org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021 org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node org.opendaylight.yangtools.concepts org.opendaylight.yangtools.yang.binding org.opendaylight.yangtools.yang.data.api org.opendaylight.yangtools.yang.data.impl.codec org.opendaylight.yangtools.yang.data.util org.opendaylight.yangtools.yang.model.api org.slf4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
3 | 6 | 50.0% | 67.0% | 17.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.ReconciliationTask |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.ReconciliationTaskManager |
org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.connection |
com.google.common.base java.lang java.util.concurrent org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.yangtools.yang.binding org.slf4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
1 | 17 | 0.0% | 94.0% | 6.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
None | org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration.DataObjectModificationImpl org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration.DataTreeModificationImpl org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration.HwvtepReconciliationManager org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration.HwvtepReconciliationTask org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration.SwitchConfigOperationalChangeGetter |
org.opendaylight.ovsdb.hwvtepsouthbound |
com.google.common.collect java.lang java.util org.opendaylight.controller.md.sal.binding.api org.opendaylight.controller.md.sal.common.api.data org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation org.opendaylight.ovsdb.hwvtepsouthbound.transact org.opendaylight.ovsdb.lib org.opendaylight.ovsdb.utils.mdsal.utils org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node org.opendaylight.yangtools.concepts org.opendaylight.yangtools.yang.binding org.slf4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
0 | 10 | 0.0% | 100.0% | 0.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
None | org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.connection.ConnectionReconciliationTask |
None | java.io java.lang java.net java.util.concurrent.atomic org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation org.opendaylight.ovsdb.lib org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901 org.opendaylight.yangtools.yang.binding org.slf4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
2 | 32 | 21.0% | 94.0% | 15.000001% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
org.opendaylight.ovsdb.hwvtepsouthbound.transact.AbstractTransactCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependentJob org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependentJob$ConfigWaitingJob org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependentJob$OpWaitingJob org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactInvoker org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter$DependencyGetter |
org.opendaylight.ovsdb.hwvtepsouthbound.transact.AbstractTransactCommand$1 org.opendaylight.ovsdb.hwvtepsouthbound.transact.AbstractTransactCommand$2 org.opendaylight.ovsdb.hwvtepsouthbound.transact.DependencyQueue$1 org.opendaylight.ovsdb.hwvtepsouthbound.transact.HwvtepOperationalState org.opendaylight.ovsdb.hwvtepsouthbound.transact.LogicalSwitchRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.LogicalSwitchRemoveCommand$1 org.opendaylight.ovsdb.hwvtepsouthbound.transact.LogicalSwitchUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsLocalRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsLocalRemoveCommand$MacDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsLocalUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsRemoteRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsRemoteUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.McastMacsRemoteUpdateCommand$McastMacUnMetDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.PhysicalPortRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.PhysicalPortUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.PhysicalSwitchRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.PhysicalSwitchUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactCommandAggregator$1 org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactInvokerImpl org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactUtils org.opendaylight.ovsdb.hwvtepsouthbound.transact.TransactUtils$1 org.opendaylight.ovsdb.hwvtepsouthbound.transact.TunnelRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.TunnelUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsLocalRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsLocalRemoveCommand$MacDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsLocalUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsRemoteRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsRemoteUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transact.UcastMacsRemoteUpdateCommand$UcastMacUnMetDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter$ConfigDependencyGetter org.opendaylight.ovsdb.hwvtepsouthbound.transact.UnMetDependencyGetter$InTransitDependencyGetter |
org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration |
com.google.common.base com.google.common.collect com.google.common.util.concurrent java.lang java.lang.reflect java.util java.util.concurrent org.apache.commons.lang3.tuple org.opendaylight.controller.md.sal.binding.api org.opendaylight.controller.md.sal.common.api.data org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.lib.error org.opendaylight.ovsdb.lib.notation org.opendaylight.ovsdb.lib.operations org.opendaylight.ovsdb.lib.schema org.opendaylight.ovsdb.lib.schema.typed org.opendaylight.ovsdb.schema.hardwarevtep org.opendaylight.ovsdb.utils.mdsal.utils org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715 org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.tunnel.attributes org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021 org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node org.opendaylight.yangtools.yang.binding org.slf4j |
Afferent Couplings | Efferent Couplings | Abstractness | Instability | Distance |
---|---|---|---|---|
1 | 29 | 12.0% | 97.0% | 9.0% |
Abstract Classes | Concrete Classes | Used by Packages | Uses Packages |
---|---|---|---|
org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.AbstractTransactionCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionInvoker |
org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.GlobalUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepGlobalRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepLogicalSwitchRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepLogicalSwitchUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepMacEntriesRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepManagerRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepManagerUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepMcastMacsLocalUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepMcastMacsRemoteUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepOperationalCommandAggregator org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalLocatorRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalLocatorUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalPortRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalPortUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalSwitchRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepPhysicalSwitchUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepTunnelRemoveCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepTunnelUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepUcastMacsLocalUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.HwvtepUcastMacsRemoteUpdateCommand org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionInvokerImpl org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md.TransactionInvokerImpl$1 |
org.opendaylight.ovsdb.hwvtepsouthbound |
com.google.common.base com.google.common.collect com.google.common.util.concurrent java.lang java.util java.util.concurrent org.opendaylight.controller.md.sal.binding.api org.opendaylight.controller.md.sal.common.api.data org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.lib.message org.opendaylight.ovsdb.lib.notation org.opendaylight.ovsdb.lib.schema org.opendaylight.ovsdb.lib.schema.typed org.opendaylight.ovsdb.schema.hardwarevtep org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715 org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.managers org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.locator.set.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical.port.attributes org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.tunnel.attributes org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021 org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node org.opendaylight.yangtools.yang.binding org.slf4j |
Package | Package Dependencies |
---|---|
org.opendaylight.ovsdb.hwvtepsouthbound | org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.hwvtepsouthbound |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation | org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.hwvtepsouthbound |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.configuration | org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.hwvtepsouthbound |
org.opendaylight.ovsdb.hwvtepsouthbound.reconciliation.connection | org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.hwvtepsouthbound |
org.opendaylight.ovsdb.hwvtepsouthbound.transact | org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md org.opendaylight.ovsdb.hwvtepsouthbound |
org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md | org.opendaylight.ovsdb.hwvtepsouthbound org.opendaylight.ovsdb.hwvtepsouthbound.transactions.md |
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. |