Next: Locality of Data ( Up: Coupling Previous: Data Abstraction Coupling (
Instability ( )
Works with all
instances of a common meta-model, regardless if they where
produced with the Java or the UML front-end. It does not
relay on relations since it uses existing metric values for
its calculation. By defining a view containing only packages
as elements, the metric definition can ignore classes,
methods and fields as part of its description, since the
relations originating from them are not relevant.
- Description
- Instability between packages (I) measures the ratio between the outgoing and the total number of in- and outgoing couplings from classes inside the package from/to classes outside the package (coupling to classes external classes of the package, uses I definition of coupling). Each class counts only once. Zero if the package does not contain any classes or if external classes are not used by the package's classes. I is primarily applicable to object-oriented systems.
- Scope
- Package
- View
-
- Grammar
- Relations
- Mapping
:
- Definition
-
The value of a package
is
defined:
- Scale
- Absolute.
- Domain
- Rationale in .
- Highly Related Software Quality Properties
-
- Re-Usability 2.4
-
is negatively influenced by coupling.
- Understandability for Reuse 2.4.1:
-
A part of a system that has a high (outgoing)
efferent coupling may be highly inversely related
to understandability, since it uses other parts
of the system which need to be understood as
well.
Understandability decreases with increasing I.
- Attractiveness 2.4.4:
-
Parts that have a high (outgoing) efferent
coupling may be highly inversely related to
attractiveness, since they are using other parts
of the system which need to be understood as
well, and represent dependencies.
Attractiveness decreases with increasing I.
- Maintainability 2.6
-
decreases with increasing I.
- Analyzability 2.6.1:
-
Parts that have a high (outgoing) efferent
coupling may be highly inversely related to
analyzability, since they are using other parts
of the system which need to be analyzed as well.
Analyzability decreases with increasing I.
- Changeability 2.6.2:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
changeability, since they are using other parts
of the system which might need to be changed as
well.
Changeability decreases with increasing I.
- Stability 2.6.3:
-
Parts of a system showing a high afferent
(ingoing) coupling from other system parts may be
inversely related to stability, since other parts
are affected by them. Parts showing a high
(outgoing) efferent coupling may be inversely
related to stability, since they are using other
parts of the system, which are can affect them.
Stability decreases with increasing I.
- Testability 2.6.4:
-
Parts that have a high (outgoing) efferent
coupling may be highly inversely related to
testability, since they are using other parts of
the system which increase the number of possible
test paths.
Testability decreases with increasing I.
- Portability 2.7
-
decreases with increasing I.
- Adaptability 2.7.1:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
adaptability, since they are using other parts of
the system which might need to be adapted as
well.
Adaptability decreases with increasing I.
- Related Software Quality Properties
-
- Functionality 2.1
-
is both negatively and positively influenced by
coupling.
- Interoperability 2.1.3:
-
Parts that have a high (outgoing) efferent
coupling may be directly related to
interoperability, since they are
using/interacting with other parts of the system.
Interoperability might increase with increasing I.
- Security 2.1.4:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to security,
since they can be affected by security problems
in other parts of the system.
Security might decrease with increasing I.
- Reliability 2.2
-
might decrease with increasing I.
- Fault-tolerance 2.2.2:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
fault-tolerance, since they can be affected by
faults in other parts of the system.
Fault-Tolerance might decrease with increasing I.
- Recoverability 2.2.3:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
recoverability, since their data is distributed
in other parts of the system making their
recovery difficult.
Recoverability might decrease with increasing I.
- Re-Usability 2.4
-
might decrease with increasing I.
- Learnability for Reuse 2.4.2:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
learnability, since they are using other parts of
the system which need to be understood as well.
Learnability might decrease with increasing I.
- Operability for Reuse - Programmability 2.4.3:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to
learnability, since they are using other parts of
the system, which represent dependencies.
Programmability might decrease with increasing I.
- Efficiency 2.5
-
might decrease with increasing I.
- Time Behavior 2.5.1:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to time
behavior, since they are using other parts of the
system, thus execution during test or operation
does not stay local, but might involve huge parts
of the system.
Time behavior might get worse with increasing I.
- Resource Utilization 2.5.2:
-
Parts that have a high (outgoing) efferent
coupling may be inversely related to resource
utilization, since they are using other parts of
the system, thus execution during test or
operation does not stay local, but might involve
huge parts of the system.
Resource utilization might get worse with increasing I.
- References
-
- I is discussed in [16],
- it is implemented in the VizzAnalyzer Metrics Suite.
- Since
- Compendium 1.0
Next: Locality of Data ( Up: Coupling Previous: Data Abstraction Coupling (