How History Justifies System Architecture (or Not)

  • Authors:
  • Thomas Zimmermann;Stephan Diehl;Andreas Zeller

  • Affiliations:
  • -;-;-

  • Venue:
  • IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
  • Year:
  • 2003

Quantified Score

Hi-index 0.00

Visualization

Abstract

The revision history of a software system conveys important information about how and why the system evolved in time. The revision history can also tell us which parts of the system are coupled by common changes: "Whenever the database schema was changed, the sqlquery() method was altered, too." This "evolutionary" coupling can be compared with the coupling as imposed by the system architecture; differences indicate anomalies which may be subject to restructuring.Our ROSE prototype analyzes fine-grained coupling between software entities as indicated by common changes. It turns out that common changes are a good indicator for modularity, that evolutionary coupling should be determined between syntactical entities (rather than files or modules), and that common changes can indicate coupling between software entities and non-program artifacts that is unavailable to the analysis of a single version.