next up previous
Next: Coupling Up: Inheritance Previous: Depth of Inheritance Tree


Number Of Children ($ NOC$ )

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 NOC specific view).
Handle
$ NOC$
Description
$ NOC$is the number of immediate subclasses (children) subordinated to a class (parent) in the class hierarchy. $ NOC$measures how many classes inherit directly methods or fields from a super-class. $ NOC$is only applicable to object-oriented systems.
Scope
Class
View
$ {V}^{NOC} = ({G}^{NOC}, {R}^{NOC})$
  • Grammar $ {G}^{NOC} = (\{\textrm{class}^{NOC}\}, \emptyset, \textrm{class}^{NOC})$
  • Relations $ {R}^{NOC}: \{\textrm{inheritance}^{NOC} : \textrm{class}^{NOC} \times \textrm{class}^{NOC}\}$
  • Mapping $ \alpha^{NOC}$:
    $\displaystyle \alpha^{NOC}(\textrm{Class})$ $\displaystyle \mapsto$ $\displaystyle \textrm{class}^{NOC}$  
    $\displaystyle \alpha^{NOC}(\textrm{Inheritance})$ $\displaystyle \mapsto$ $\displaystyle \textrm{inheritance}^{NOC}$  

Definition
The $ NOC$value of a class $ c \in class^{NOC}$is defined as:

$\displaystyle NOC(c) := \left\vert succ(c, \textrm{inheritance}^{NOC}) \right\vert $
Scale
Absolute.
Domain
Integers $ \in 0..\infty$.
Highly Related Software Quality Properties
 
Re-Usability 2.4
is positively influenced by attributes assessed with NOC.
Understandability for Reuse 2.4.1:
Understanding a class is supported if it has a high number of children. First numerous children show directly a high re-use (re-usability) of the class under concern. Further with numerous children exist many examples on how to re-use the class, which helps to understand weather a class is suitable, and how it can be re-used for a particular tasks.

Understandability increases with increasing NOC.

Learnability for Reuse 2.4.1:
Learning (acquiring and memorizing knowledge) how to (re-)use a class by extending it is influenced by the number of children the class under concern has. A high number of children, that is many re-using child classes, allows acquiring versatile knowledge on how to re-use a particular class in different situations. This supports through redundancy memorizing the knowledge about how to re-use a particular class.

Learnability increases with a increasing NOC.

Operability for Reuse 2.4.1:
Understanding if a class can be integrated and controlled by software engineers/developers depends on the number of children a class has. A high number of children indicates that a particular class is well integrated into an existing software system. This means, that it is suitable for several different tasks, self-descriptive since there exist many examples on its usage, having a higher error tolerance, since it is involved each time one of its children is tested.

Operability increases with increasing NOC.

Attractiveness for Reuse 2.4.1:
A class having a higher number of children appears more attractive to the software engineer/developer. It is a eye-catcher in a class diagram or other representations since it stands out by having many children. Associated assumptions could be, that the class is stable, since it is tested each time a child is tested, that is well documented and understood, since it has been extended so often, that it is easier to understand, since there are many examples of usage, that it helps to understand the children, if the parent class has been understood, that is plays a central role in the design, since many classes extend its functionality.

Attractiveness increases with increasing NOC.

Maintainability 2.6
is negatively and positively influenced by attributes assessed with NOC.
Changeability 2.6:
A class having a higher number of children has a lower changeability. The effort spent on modification, fault removal or environmental change is increased, since many child classes are extending its functionality, depending on the parent class. The side effects of modifications are harder to predict. Fault removal effects child classes. The need for environmental change has to consider the child classes.

Changeability decreases with increasing NOC.

Portability 2.7
is negatively influenced by attributes assessed with NOC.
Replaceability 2.7:
A class having a higher number of children is difficult to replace. The children are dependent on it, by extending specific functionality and can depend on certain functionality the parent class provides. It is difficult to find another class satisfying these specific needs, allowing to replace the parent class.

Replaceability decreases with increasing NOC.

Related Software Quality Properties
 
Reliability 2.2
is positively influenced by attributes assessed with $ NOC$.
Maturity 2.2.1:
A class having a higher number of children has a high maturity. The frequency of failure by faults is low, since the many faults have been identified in the various ways the child classes interact with the parents. The parent class is heavily used, since it is used each time a child class is used.

Maturity increases with increasing NOC.

Maintainability 2.6
is positively and negatively influenced by attributes assessed with NOC.
Analysability 2.6.1:
To analyze a class having a higher number of children requires higher effort. Diagnosis of deficiencies or causes of failures involves the children of a parent class. They have access to the functionality and data provided by a class and have to be involved in the analysis. Identifying parts in a parent class which need to be modified requires the analysis of all child classes, which are effected by the modification. To analyze a class completely it is also necessary to look at its children to be able to have the complete picture.

Analysability decreases with increasing NOC.

Stability 2.6.3:
A class having a higher number of children bears a higher risk of unexpected effect of modification. Child classes are re-using parent classes in various ways. They are directly effected by modifications making it difficult to predict how stable a class or software product would be after modification.

Stability decreases with increasing NOC.

Testability 2.6.4:
A class having a higher number of children requires a higher effort for validating the modified software. All depending child classes need to be included in the tests as well, since modifications in the parent class have direct impact on the extending child classes. The amount of designed and implemented autonomous test aid functions and test complexity is increased.

Testability decreases with increasing NOC.

Portability 2.7
is negatively influenced by attributes assessed with NOC.
Adaptability 2.7.1:
A class having a higher number of children is difficult adapt to different specified environments. The children are dependent on it, by extending specific functionality and can depend on certain functionality the parent class provides. Adapting the parent class to a new environment, can make it unsuitable for the children, requiring adaptation in them as well.

Adaptability decreases with increasing NOC.

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

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