Skip to Main Content
It is an increasingly accepted fact that software development is a non-linear activity with inherently feedback driven processes. In such a development environment, however, it is important that major structural changes in the design and/or architecture of a software system under development are introduced with care and documented accordingly. In order to give developers appropriate tools that can identify such changes, we need to have a good understanding how software systems evolve over time so that evolutionary anomalies can be automatically detected. In this paper, we present recurring high-level structural and evolutionary patterns that we have observed in a number of public-domain object-oriented software systems and define a simple predictive model that can aid developers in detecting structural changes and as a consequence, improve the underlying development processes.