Studying Software Evolution Using the Time Dependence of Code Changes
MetadataShow full item record
Constructing software bears many similarities to constructing buildings. In a building project, each floor builds on the previous structures (walls of the previous floors) with some structures being more foundational (i.e. essential) for other structures and some periods of construction being more foundational (i.e. critical) to the final structure. In a software project, each change builds on the structures created by prior changes with some changes creating foundational structure and with some time periods of changes being more foundational than others. This thesis is inspired by this similarity between constructing buildings and constructing software. The thesis makes use of the similarity to study the evolution of software projects. In particular, we develop the concept of time dependence between code changes to study software evolution through empirical studies on two large open source projects (PostgreSQL and FreeBSD) with more than 25 years of development history. We show that time dependence can be used to study how changes build on prior changes and the impact of this building process on the quality of a project. We show how a development period impacts the development of future periods in a project. We also show how a subsystem (module) of a project builds on other subsystems and we identify the subsystems that have high impact on a project's development. Using this knowledge, managers can better monitor the progress of the projects and better plan for future changes.