Abstract
Self-calibration is a new technique for the study of internal product metrics, sometime called “observations” and calibrating these against their frequency, or probability of occurring in common programming practice (CPP). Data gathering and analysis of the distribution of observations is an important prerequisite for predicting external qualities, and in particular sofrware complexity. The main virtue of our technique is that it eliminates the use of absolute values in decision-making, and allows gauging local values in comparison with a scale computed from a standard and global database. Method profiles are introduced as a visual means to compare individual projects or categories of methods against the CPP. Although the techniques are general and could in principle be applied to traditional programming languages, the focus of this paper is on object-oriented languages using Java. The techniques are employed in a suite of 17 metrics in a body of circa thirty thousand Java methods.