Interfaces are recognized as an important mechanism to define contracts governing interactions between semi-independent software modules. Well-designed interfaces significantly reduce software complexity and ease maintainability by fostering modularization, hiding implementation details and minimizing the impact caused by changes in the software implementation. However, designing good interfaces is not a trivial task. The presence of interface design defects often yield increased development cost, lower code quality and reduced development productivity. Despite their importance, currently there are only a few research efforts that investigate the quality of interface design. In this paper, we identify and characterize common interface design anomalies and illustrate them via examples taken from well-known open source applications. In order to quantify the presence of interface design anomalies and estimate their impact on the interface design quality, as well on the software quality attributes, such as maintainability, we conduct an empirical study covering 9 open source projects. Building on our empirical results, we develop a set of recommendations to improve interface design.
The authors in @cite_17 investigated the suitability of existing source code metrics to classify Software interfaces into change-prone and not change-prone. The metrics used in the study were Chidamber and Kemerer (CK) metrics, interface complexity and usage metrics and the IUC metric. They empirically evaluated their model for predicting change-prone Software interfaces by investigating the correlation between metrics and the number of changes in interfaces of ten Software open-source systems. The paper concluded that most of the CK metrics are not sound for interfaces and only perform well for predicting change-prone concrete and abstract classes. Therefore this confirms the claim that interfaces need to be treated separately. The IUC metric exhibits the strongest correlation with the number of interface changed. Hence IUC can improve the performance of prediction models for classifying Software interfaces into change-prone and not change-prone.
@cite_17
2125121913
Recent empirical studies have investigated the use of source code metrics to predict the change- and defect-proneness of source code files and classes. While results showed strong correlations and good predictive power of these metrics, they do not distinguish between interface, abstract or concrete classes. In particular, interfaces declare contracts that are meant to remain stable during the evolution of a software system while the implementation in concrete classes is more likely to change. This paper aims at investigating to which extent the existing source code metrics can be used for predicting change-prone Java interfaces. We empirically investigate the correlation between metrics and the number of fine-grained source code changes in interfaces of ten Java open-source systems. Then, we evaluate the metrics to calculate models for predicting change-prone Java interfaces. Our results show that the external interface cohesion metric exhibits the strongest correlation with the number of source code changes. This metric also improves the performance of prediction models to classify Java interfaces into change-prone and not change-prone.