A Study of the Time Dependence of Code Changes

  • Authors:
  • Omar Alam;Bram Adams;Ahmed E. Hassan

  • Affiliations:
  • -;-;-

  • Venue:
  • WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
  • Year:
  • 2009

Quantified Score

Hi-index 0.01

Visualization

Abstract

Much of modern software development consists of building on older changes. Older periods provide the structure (e.g., functions and data types) on which changes in future periods will build. Given a particular period in the lifetime of a project, one can determine prior periods on which it builds, and future periods which build on it. Using this knowledge, managers can identify foundational periods in the lifetime of a project, which provide the structural foundation for a large number of future periods. A good understanding and detailed documentation of events and decisions in such foundational periods is essential for the smooth evolution of a project.This paper examines how changes build on older changes by measuring the time dependence between code changes. Using our approach, we can create time dependence relations between periods and study the characteristics of such dependence relations. We apply our approach on two large open source projects, PostgreSQL and FreeBSD. We find that foundational periods are periods with huge restructurings, important new features or large imports of external source code. We also find that a project, as it ages, either progressively depends on older periods or cycles between depending on old and new periods.