Preparations for Y2K reminded the software engineering community of the extent to which long-lived software systems are embedded in our daily environments. As systems are maintained and enhanced throughout their lifecycles they appear to follow generalized behaviors described by the laws of software evolution. Within this context, however, there is some question of how and why systems may evolve differently. The objective of this work is to answer the question, do systems follow a set of identifiable evolutionary patterns? In this paper we characterize software evolution as software volatility, and examine the lifecycle evolution of 23 software systems. By using a series of mapping techniques and sequence analysis, we create volatility pattern vectors for each system. Factor analysis groups the 23 individual patterns into four clusters. Thus, we show by example that there are different patterns of system behavior within the context of software evolution.
Evelyn J. Barry, Chris F. Kemerer, Sandra Slaughte