How History Justifies System Architecture (or Not) – IWPSE 2003

by Thomas Zimmermann, Stephan Diehl, Andreas Zeller

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.

Download as PDF.
See also:


Thomas Zimmermann, Stephan Diehl, Andreas Zeller. How History Justifies System Architecture (or Not). In Proceedings of the 6th International Workshop on Principles of Software Evolution (IWPSE 2003), Helsinki, Finland, September 2003, pp. 73-83.

BibTeX Entry

    title = "How History Justifies System Architecture (or Not)",
    author = "Thomas Zimmermann and Stephan Diehl and Andreas Zeller",
    year = "2003",
    month = "September",
    booktitle = "Proceedings of the 6th International Workshop on Principles of Software Evolution",
    location = "Helsinki, Finland",
    pages = "73--83",
    publisher = "IEEE Computer Society",
    ISBN = "0769519032",