Home Publications Research Teaching Contact

Assessing the Quality of Evolving Haskell Systems by Measuring Structural Inequality

Sander Kamps, Bastiaan Heeren, and Johan Jeuring

Software metrics are used to measure the quality of a software system, and to understand the evolution of the system's quality over time. In this paper we report on an empirical study that investigates whether structural degradation in Haskell systems is related to decreasing software quality. For our study we use three metrics that measure internal attributes at the level of Haskell modules: intra-modular complexity (cohesion), inter-modular complexity (coupling), and module size. For these metrics, we calculate the Gini coeicient, which is a measure of the inequality in a distribution of values within a certain population, and the deviation of the population’s central tendency from an empirically established ideal value. We develop a method to track the evolution, and measure the correlation between the calculated system-level information and post-release defects.

The results show that: (1) post-release defects are signiicantly correlated with the degree of inequality between the size of modules, (2) the inequality measure is able to indicate signiicant structural shifts in Haskell source code, and (3) the deviation of a population’s central tendency from an ideal value can serve as a benchmark to evaluate the structural characteristics of a Haskell system. The results, however, do not show that a combined measure for inequality and ideal value deviation increases the ability to indicate the defect proneness of Haskell source code.

In Proceedings of the 13th ACM SIGPLAN International Symposium on Haskell, Haskell 2020, pages 67-79, 2020.

Full paper