A multiple case study of design pattern decay, grime, and rot in evolving software systems

  • Authors:
  • Clemente Izurieta;James M. Bieman

  • Affiliations:
  • Department of Computer Science, Montana State University, Bozeman, USA 59717;Department of Computer Science, Colorado State University, Fort Collins, USA 80523

  • Venue:
  • Software Quality Control
  • Year:
  • 2013

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software designs decay as systems, uses, and operational environments evolve. Decay can involve the design patterns used to structure a system. Classes that participate in design pattern realizations accumulate grime--non-pattern-related code. Design pattern realizations can also rot, when changes break the structural or functional integrity of a design pattern. Design pattern rot can prevent a pattern realization from fulfilling its responsibilities, and thus represents a fault. Grime buildup does not break the structural integrity of a pattern but can reduce system testability and adaptability. This research examined the extent to which software designs actually decay, rot, and accumulate grime by studying the aging of design patterns in three successful object-oriented systems. We generated UML models from the three implementations and employed a multiple case study methodology to analyze the evolution of the designs. We found no evidence of design pattern rot in these systems. However, we found considerable evidence of pattern decay due to grime. Dependencies between design pattern components increased without regard for pattern intent, reducing pattern modularity, and decreasing testability and adaptability. The study of decay and grime showed that the grime that builds up around design patterns is mostly due to increases in coupling.