Abstract

Gang of Four (GoF) design patterns are widely approved solutions for recurring software design problems, and their benefits to software quality are extensively studied. However, the occurrence of bad smells in design patterns increases the crisis of degenerating design patterns’ structure and behavior. Their occurrences are detrimental to the benefits of design patterns and they influence software sustainability by increasing maintenance costs and energy consumption. Despite the destructive roles of bad smells in such designs, there are an absence of studies systematically reviewing bad smells of GoF design patterns. This study systematically reviews a 10-year state of the art sample, identifying 16 studies investigating this phenomenon. Following a thorough evaluation of the full contents, we observed that the occurrence of bad smells have been investigated in proportion to four granularity levels of analysis: Design level, category level, pattern level, and role level. We identified 28 bad smells, categorized under code smells and grime symptoms, and emphasized their relationship with GoF pattern types and categories. The utilization of design pattern bad smell detection approaches and datasets were also discussed. Consequently, we observed that the research phenomenon is growing intensively, with a prominent focus of studies analyzing code smell occurrences rather than grime occurrences, at various granularity levels. Finally, we uncovered research gaps and areas with significant potentials for future research.

Highlights

  • We discovered that all 16 studies focused on the pattern level, out of which eight studies focused on the role level, four studies on the design level, and only two studies on the category level

  • Based on the analysis of the design pattern bad smells (DBS) studies, we discovered that DBS can be recognized by their bad smell types, their occurrence degree according to DBS granularity levels (DBGL), and their occurrences concerning the Gang of Four (GoF) design pattern

  • Referring to the first research question (RQ1), our findings indicate that DBS occurrence has been extensively studied recently with objectives linked to four DBGL

Read more

Summary

Introduction

Many software developers use object-oriented design patterns in their systems design owing to their traits of reusability, maintainability, and extension capability to forthcoming versions. Their application could eliminate the emergence of defects and faults-proneness in their source code [1,2,3]. Design patterns are considered a result of good programming practice, primarily aiming to provide solutions in resolving common software problems [4] They encapsulate the experiences of expert developers as quoted by Freeman: “Instead of code reuse, with patterns you get experience reuse” [5].

Results
Discussion
Conclusion
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