A software metric for coherence of class roles in Java programs

  • Authors:
  • Sami Mäkelä;Ville Leppänen

  • Affiliations:
  • University of Turku and TUCS, Yliopisto, Finland;University of Turku and TUCS, Yliopisto, Finland

  • Venue:
  • Proceedings of the 5th international symposium on Principles and practice of programming in Java
  • Year:
  • 2007

Quantified Score

Hi-index 0.00

Visualization

Abstract

The purpose of software metrics is to measure the quality of programs. The results can be for example used to predict maintenance costs or improve code quality. An emerging view is that if software metrics are going to be used to improve quality, they must help in finding code that should be refactored. Often refactoring or applying a design pattern is related to the role of the class to be refactored. In client-based metrics, a project gives the class a context. These metrics measure, how a class is used by other classes in the context. We present a new client-based metric LCIC (Lack of Coherence in Clients), which analyses, if the class being measured has a coherent set of roles in the program. Interfaces represent the roles of classes. If a class does not have a coherent set of roles, it should be refactored, or a new interface should be defined for the class. We have implemented a tool for measuring the metric LCIC for Java projects in the Eclipse environment. We calculated LCIC values for classes of several open source projects. We compare these results with results of other related metrics, and inspect the measured classes to find out, what kind of refactorings are needed. We also analyse the relation of different design patterns and refactorings to our metric. Our experiments reveal the usefulness of client-based metrics to improve the quality of code.