In this paper, we present an approach that examines the evolution of code stored in source control repositories. The technique identifies Change Clusters, which can help managers to classify different code change activities as either a software maintenance or a new development. Furthermore, identifying the variations in Change Clusters over time exposes trends in the development of a software system. We present a case study that uses a sequence of Change Clusters to track the evolution of the PostgreSQL software project. Our case study demonstrates that our technique reveals interesting patterns about the progress of code development within each release of PostgreSQL. We show that the increase in the number of clusters not only identifies the areas where development has occurred, but also reflects the amount of structural change in code. We also compare how the Change Clusters vary over time in order to make generalizations about the focus of development.
['Jay Kothari', 'Trip Denton', 'Ali Shokoufandeh', 'Spiros Mancoridis', 'Ahmed E. Hassan']
Studying the Evolution of Software Systems Using Change Clusters