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.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call