Design Quality Indicators (DQIs) are the base metrics used to calculate the 6 Architecture Quality Indicators (AQIs) we calculate for object-oriented languages.


Average Number of Ancestors

ANA - Abstraction

Average number of classes in the inheritance tree for each class.


Measure of Aggregation

MOA - Composition

Count of number of attributes whose type is user defined classes.


Direct Access Metric

DAM - Encapsulation

Ratio of the number of private and protected attributes to the total number of attributes in the class.


Cohesion Among Methods of Class

CAM - Cohesion

This metric computes the relatedness among methods of a class based upon the parameter list of the methods. The metric is computed using the summation of the intersection of parameters of a method with the maximum independent set of all parameter types in the class. A metric value close to 1.0 is preferred. (Range 0 to 1)


Class Interface Size

CIS - Messaging

Number of public methods in a class.


Measure of Functional Abstraction

MFA - Inheritance

Ratio of the number of inherited methods per the total number of methods within a class.


Direct Class Coupling

DCC - Coupling

Number of other classes a class relates to, either through a shared attribute or a parameter in a method.


Design Size in Classes

DSC - DesignSize

Total number of classes in the design.


Number of Methods

NOM - Complexity

Number of methods declared in a class.


Number of Hierarchies

NOH - Hierarchies

Total number of “root” classes in the design.


Number of Polymorphic Methods

NOP - Polymorphism

Any method that can be used by a class and its descendants. Counts of the number of methods in a class excluding private, static, and final ones.


See how these metrics are used to calculate high-level Architecture Quality Indicators here


Further reading

J. Bansiya ; C.G. Davis  "A hierarchical model for object-oriented design quality assessment" IEEE 2002

To obtain a copy of the paper contact us