In this thesis we address the problem of identifying where, in successful software systems, maintenance effort tends to be devoted. By examining a larger data set of open source systems we show that maintenance effort is, in general, spent on addition of new classes. Interestingly, efforts to base new code on stable classes will make those classes less stable as they need to be modified to meet the needs of the new clients. This thesis advances the state of the art in terms of our understanding of how evolving software systems grow and change. We propose an innovative method to better understand growth dynamics in evolving software systems. Rather than relying on the commonly used method of analysing aggregate system size growth over time, we analyze how the probability distribution of a range of software metrics change over time. Using this approach we find that the process of evolution typically drives the popular classes within a software system to gain additional clients over time and the increase in popularity makes these classes change-prone. Furthermore, we show that once a set of classes have been released, they resist change and the modifications that they do undergo are in general, small adaptations rather than substantive rework. The methods we developed to analyze evolution can be used to detect releases with systemic and architectural changes as well as identify presence of machine generated code. Finally, we also extend the body of knowledge with respect to validation of the Laws of Software Evolution as postulated by Lehman. We find consistent support for the applicability of the following laws of software evolution: first law Continuing Change, third law Self Regulation, fifth law Conservation of Familiarity, and the sixth law Continuing Growth. However, our analysis was unable to find evidence to support the other laws.
History
Thesis type
Thesis (PhD)
Thesis note
A thesis presented for the degree of Doctor of Philosophy, Swinburne University of Technology, 2010.