Modern software has to evolve to meet the needs of stakeholders; but the nature and scope of this evolution is difficult to anticipate and manage. In this paper, we examine techniques which can discover interesting patterns of evolution in large object-oriented systems. To locate patterns, we use clustering to group together classes which change in the same manner at the same time. Then, we use dynamic time warping to find if a group of classes is similar to another when we ignore the exact moment when changes occur. Groups that exhibit distinctive evolution properties are potential candidates for new evolution patterns. Finally, the pertinence and usefulness of the candidates is determined by perusal of the release notes and the architecture. In a study of two industrial open-source libraries, we discovered four new types of change patterns. These new patterns are useful in that they can be associated with welldefined maintenance activities such as restructurings and bug-fixes.
Stéphane Vaucher, Houari A. Sahraoui, Jean