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. Data gathering and analysis of the distribution of observations is an important prerequisite for predicting external qualities, and in particular software 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. Self-calibration strongly suggests that transformed metric values should be used for creating composite metrics. The transformed metrics are normally the log of the direct metric observations, and they are shown to be more meaningful than the original values.
Borrowing from the discipline of psychology, the research also suggests using method profiles as a visualizing and analysis technique which can be applied to the study of individual projects or categories of methods.
While both self-calibration and method profiles are very general and could in principle be applied to traditional programming languages, the focus of this research is on object-oriented languages using Java. The techniques are employed in a suite of ten numeric and five categorical metrics in a body of well over sixty thousand Java methods.
Classfile analyzer sources: (not yet)