Architecture Anti-Patterns: Automatically Detectable Violations of Design Principles

Ran Mo, Yuanfang Cai, Rick Kazman, Lu Xiao, Qiong Feng

Research output: Contribution to journalArticlepeer-review

31 Scopus citations

Abstract

In large-scale software systems, error-prone or change-prone files rarely stand alone. They are typically architecturally connected and their connections usually exhibit architecture problems causing the propagation of error-proneness or change-proneness. In this paper, we propose and empirically validate a suite of architecture anti-patterns that occur in all large-scale software systems and are involved in high maintenance costs. We define these architecture anti-patterns based on fundamental design principles and Baldwin and Clark's design rule theory. We can automatically detect these anti-patterns by analyzing a project's structural relationships and revision history. Through our analyses of 19 large-scale software projects, we demonstrate that these architecture anti-patterns have significant impact on files' bug-proneness and change-proneness. In particular, we show that 1) files involved in these architecture anti-patterns are more error-prone and change-prone; 2) the more anti-patterns a file is involved in, the more error-prone and change-prone it is; and 3) while all of our defined architecture anti-patterns contribute to file's error-proneness and change-proneness, Unstable Interface and Crossing contribute the most by far.

Original languageEnglish
Article number8691586
Pages (from-to)1008-1028
Number of pages21
JournalIEEE Transactions on Software Engineering
Volume47
Issue number5
DOIs
StatePublished - 1 May 2021

Keywords

  • Software architecture
  • software maintenance
  • software quality

Fingerprint

Dive into the research topics of 'Architecture Anti-Patterns: Automatically Detectable Violations of Design Principles'. Together they form a unique fingerprint.

Cite this