Polymorphism is an essential feature of the object-oriented paradigm. However, polymorphism induces hidden forms of class dependencies, which may impact software quality. In this paper, we define and empirically investigate the quality impact of polymorphism on OO design. We define measures of two main aspects of polymorphic behaviors provided by the C++ language: polymorphism based on compile time linking decisions (overloading functions for example) and polymorphism based on run-time binding decisions (virtual functions for example). Then, we validate our measures by evaluating their impact on class fault-proneness, a software quality attribute. The results show that our measures are capturing different dimensions than LOC a size measure, as well as they are significant predictors of fault proneness. In fact, we show that they constitute a good complement to the existing OO design measures.
['Saida Benlarbi', 'Walcélio L. Melo']
Polymorphism measures for early risk prediction