next up previous
Next: Number Of Children ( Up: Inheritance Previous: Inheritance


Depth of Inheritance Tree ($ DIT$ )

Works with all instances of a common meta-model, regardless of whether they were produced with the Java or the UML front-end. The respective extends (Java) or generalization (UML) relations expressing the inheritance between two classes are mapped onto relations of type inheritance in the common meta-model (and the DIT specific view).
Handle
$ DIT$
Description
Depth of Inheritance Tree (DIT) is the maximum length of a path from a class to a root class in the inheritance structure of a system. DIT measures how many super-classes can affect a class. DIT is only applicable to object-oriented systems.
Scope
Class
View
$ {V}^{DIT} = ({G}^{DIT}, {R}^{DIT})$
  • Grammar $ {G}^{DIT} = (\{\textrm{class}^{DIT}\}, \emptyset, \textrm{class}^{DIT})$
  • Relations $ {R}^{DIT}: \{\textrm{inheritance}^{DIT} : \textrm{class}^{DIT} \times \textrm{class}^{DIT}\}$
  • Mapping $ \alpha^{DIT}$:
    $\displaystyle \alpha^{DIT}(\textrm{Class})$ $\displaystyle \mapsto$ $\displaystyle \textrm{class}^{DIT}$  
    $\displaystyle \alpha^{DIT}(\textrm{Inheritance})$ $\displaystyle \mapsto$ $\displaystyle \textrm{inheritance}^{DIT}$  

Definition
The $ DIT$value of a class $ c \in class^{DIT}$is defined as:
$\displaystyle P(c)$ $\displaystyle =$ $\displaystyle pred^*(c, \textrm{inheritance}^{DIT})$  
    $\displaystyle \textit{-\hspace{1pt}- set of classes, c inherits from directly or indirectly}$  
$\displaystyle DIT(c)$ $\displaystyle =$ $\displaystyle max(dist(c,P(c)))$  

Scale
Absolute.
Domain
Integers $ \in 0..\infty$.
Highly Related Software Quality Properties
 
Re-Usability 2.4
is both negatively and positively influenced by attributed assess with DIT.
Understandability for Reuse 2.4.1:
Understanding if a class is suitable for reuse depends on the size of its interface. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to analyze it.

Understandability declines with increasing DIT.

Learnability for Reuse 2.4.2:
Learning how to use a class depends on the size of its interface. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to analyze it.

Learnability declines with increasing DIT.

Operability for Reuse - Programmability 2.4.3:
How well a class can be integrated depends on the size of its interface. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to analyze it.

Programmability declines with increasing DIT.

Attractiveness 2.4.4:
Attractiveness of a class depends on the size of the potentially reused code. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes.

Attractiveness increases with increasing DIT.

Maintainability 2.6
declines with increasing DIT.
Analyzability 2.6.1:
The effort and time for diagnosis of deficiencies or causes of failures in a class, or for identification of parts to be modified is related to the number of methods of the class. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to analyze it.

Analyzability declines with increasing DIT.

Changeability 2.6.2:
Changing a class requires prior understanding, which, in turn, is more complicated for classes with many methods. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to understand it.

Changeability declines with increasing DIT.

Testability 2.6.4:
Complete testing requires coverage of all execution paths. The number of possible execution paths of a class increases with the number of methods and their control flow complexity. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Due to late binding, super-class methods need to be tested again in the sub-class context. This makes it it potentially harder to test classes deep down in the classes hierarchy.

Testability declines with increasing DIT.

Portability 2.7
declines with increasing DIT.
Adaptability 2.7.1:
As for changeability 2.6.2, the size of software has a direct impact. Classes that are deep down in the classes hierarchy potentially inherit many methods from super-classes. Moreover, the definitions of inherited methods are not local to the class making it even harder to analyze it.

Adaptability declines with increasing DIT.

Replaceablity 2.7.4:
The substitute of a component must imitate its interface. Large interfaces are difficult to check for substitutability and to actually substitute. Interface size increases for classes that are deep down in the classes hierarchy.

Replaceablity decline with increasing DIT.

Related Software Quality Properties
 
Functionality 2.1
might increase with increasing DIT.
Interoperability 2.1.3:
Relating DIT to interoperability requires to be able to locate hierarchy (sub-)structures of a system responsible for interoperability. A high DIT in these hierarchy (sub-)structures might indicate a better ability to interact.

Interoperability might increase with increasing DIT.

Security 2.1.4:
Relating DIT to security requires to be able to locate hierarchy (sub-)structures of a system responsible for interoperability. A high DIT in these hierarchy (sub-)structures might indicate a higher security.

Security might increase with increasing DIT.

Reliability 2.2
is both positively and negatively influenced by attributes assessed with DIT.
Maturity 2.2.1:
Due to reduced analyzability 2.6.1 and testability 2.6.4, bugs mights be left in the software. Therefore, also maturity may be influenced negatively by DIT.

Maturity might decline with increasing DIT.

Fault-tolerance 2.2.2:
Relating DIT to fault-tolerance requires to be able to locate hierarchy (sub-)structures of a system responsible for interoperability. A high DIT in these hierarchy (sub-)structures might indicate a better ability to interact.

Fault-Tolerance might increase with increasing DIT.

Recoverability 2.2.3:
Relating DIT to recoverability requires to be able to locate hierarchy (sub-)structures of a system responsible for interoperability. A high DIT in these hierarchy (sub-)structures might indicate a higher recoverability.

Recoverability might increase with increasing DIT.

Efficiency 2.5
might decline with increasing DIT.
Time Behavior 2.5.1:
Static size might indicate a higher execution time due to increased number of instruction cache misses, long jumps, etc. Classes inheriting many attributes are potentially large. Moreover, late binding requires indirect calls and prevents optimizations in the context of the caller.

Time behavior might get worse with increasing DIT.

Resource Utilization 2.5.2:
Static size might indicate a higher memory utilization.

Resource utilization might get worse with increasing DIT.

Maintainability 2.6
declines with increasing DIT.
Stability 2.6.3:
Due to reduced analyzability 2.6.1 and testability 2.6.4, also stability may be influenced negatively by size.

Stability might decline with increasing DIT.

References
 
  • DIT is extensively discussed and evaluated in [5,6,3,14,2,1,7,11,12,10,4,21,17,19],
  • DIT is implemented in the VizzAnalyzer Metrics Suite.
Since
Compendium 1.0

next up previous
Next: Number Of Children ( Up: Inheritance Previous: Inheritance
Copyright © 2008-2009, ARiSA AB. Phone: +46-(0)470 70 8495 Email: info@arisa.se Valid CSS! Valid XHTML 1.0 Transitional