ABSTRACT
Bad Smells are symptoms that appear in the source code of a software system and may indicate a structural problem that requires code refactoring. Design patterns are solutions known as good practices that help building software systems with high quality and flexibility. Intuitively, it is possible to assume that the use of design patterns might avoid bad smells. Intriguingly, some recent studies have pointed out that this assumption is not true. This paper presents a systematic literature mapping of studies that investigate the relationship between design patterns and bad smells. We identified 16 papers which were categorized into three different approaches: impact on software quality, refactoring and co-occurrence. Amongst these three approaches, the co-occurrence relationship is the less explored in the literature. In addition, we identified that studies focusing on co-occurrence between design patterns and bad smells have generally analyzed the relationship between the GOF design patterns and bad smells described by Fowler and Beck. In this context, the Command design pattern was identified as the one with greater relationship with bad smells.
- Rakesh Agrawal, Tomasz Imieliński, and Arun Swami. 1993. Mining Association Rules Between Sets of Items in Large Databases. SIGMOD Rec. 22 (1993), 207--216. Google ScholarDigital Library
- Giuliano Antoniol and Yann-Gaël Guéhéneuc. 2008. DeMIMA: A Multilayered Approach for Design Pattern Identification. IEEE Transactions on Software Engineering 34 (2008), 667--684. Google ScholarDigital Library
- Sergey Brin, Rajeev Motwani, Jeffrey D. Ullman, and Shalom Tsur. 1997. Dynamic Itemset Counting and Implication Rules for Market Basket Data. SIGMOD Rec. 26 (1997), 255--264. Google ScholarDigital Library
- William H. Brown, Raphael C. Malveau, Hays W. "Skip" McCormick, and Thomas J. Mowbray. 1998. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis (1st ed.). John Wiley & Sons, Inc., New York, USA. Google ScholarDigital Library
- Bruno Cardoso and Eduardo Figueiredo. 2014. Co-Occurrence of Design Patterns and Bad Smells in Software Systems: A Systematic Literature Review. In Proceedings of the 11th Workshop on Software Modularity. 82--93. Google ScholarDigital Library
- Bruno Cardoso and Eduardo Figueiredo. 2015. Co-Occurrence of Design Patterns and Bad Smells in Software Systems: An Exploratory Study. In 11st SBSI. 347--354. Google ScholarDigital Library
- Aikaterini Christopoulou, E. A. Giakoumakis, Vassilis E. Zafeiris, and Vasiliki Soukara. 2012. Automated refactoring to the Strategy design pattern. Information and Software Technology 54, 11 (2012), 1202--1214. Google ScholarDigital Library
- F. A. Fontana, M. Zanoni, A. Marino, and M. V. Mäntylä. 2013. Code Smell Detection: Towards a Machine Learning-Based Approach. In 2013 IEEE International Conference on Software Maintenance. 396--399. Google ScholarDigital Library
- Martin Fowler. 2015. CallSuper. https://martinfowler.com/bliki/CallSuper.html. (2015). Accessed March 2017.Google Scholar
- M. Fowler and K. Beck. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley. Google ScholarDigital Library
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. 1994. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing. Google ScholarDigital Library
- Clemente Izurieta and James M. Bieman. 2013. A multiple case study of design pattern decay, grime, and rot in evolving software systems. Software Quality Journal 21, 2 (2013), 289--323. Google ScholarDigital Library
- Fehmi Jaafar, Yann-Gaël Guéhéneuc, Sylvie Hamel, and Foutse Khomh. 2013. Analysing Anti-patterns Static Relationships with Design Patterns. Electronic Communications of the EASST 59 (2013).Google Scholar
- Fehmi Jaafar, Yann Gueheneuc, Sylvie Hamel, Foutse Khomh, and Mohammad Zulkernine. 2016. Evaluating the impact of design pattern and anti-pattern dependencies on changes and faults. Empirical Software Engineering (2016), 896--931. Google ScholarDigital Library
- Foutse Khomh and Yann-Gael Gueheneuce. 2008. Do Design Patterns Impact Software Quality Positively?. In Proceedings of the 2008 12th European Conference on Software Maintenance and Reengineering. 274--278. Google ScholarDigital Library
- Barbara Kitchenham and Stuart Charters. 2007. Guidelines for performing Systematic Literature Reviews in Software Engineering. Technical Report EBSE 2007--001. Keele University and Durham University Joint Report. http://www.dur.ac.uk/ebse/resources/Systematic-reviews-5-8.pdfGoogle Scholar
- Michele Lanza and Radu Marinescu. 2006. Object-Oriented Metrics in Practice. Springer-Verlag N. Y. Google ScholarDigital Library
- W.a Liu, Z.-G.a b Hu, H.-T.b Liu, and L.b Yang. 2014. Automated pattern-directed refactoring for complex conditional statements. Journal of Central South University 21, 5 (2014), 1935--1945.Google ScholarCross Ref
- William B. McNatt and James M. Bieman. 2001. Coupling of Design Patterns: Common Practices and Their Benefits. In Proceedings of the 25th International Computer Software and Applications Conference on Invigorating Software Development. 574--579. Google ScholarDigital Library
- Naouel Moha, Yann-Gael Gueheneuc, Laurence Duchien, and Anne-Francoise Le Meur. 2010. DECOR: A Method for the Specification and Detection of Code and Design Smells. IEEE Trans. Softw. Eng. 36, 1 (Jan. 2010), 20--36. Google ScholarDigital Library
- Nadia Nahar and Kazi Sakib. 2015. Automatic recommendation of software design patterns using anti-patterns in the design phase: A case study on abstract factory. In CEUR Workshop Proc. 9--16.Google Scholar
- Nadia Nahar and Kazi Sakib. 2016. ACDPR: A Recommendation System for the Creational Design Patterns Using Anti-patterns. In IEEE 23rd SANER. 4--7.Google Scholar
- David J. Sheskin. 2007. Handbook of Parametric and Nonparametric Statistical Procedures (4 ed.). Chapman & Hall/CRC. Google ScholarDigital Library
- D. Speicher. 2013. Code Quality Cultivation. Communications in Computer and Information Science 348 (2013), 334--349.Google ScholarCross Ref
- Nikolaos Tsantalis, Theodoros Chaikalis, and Alexander Chatzigeorgiou. 2008. JDeodorant: Identification and Removal of Type-Checking Bad Smells. In Proc. of the 12th CSMR. 329--331. Google ScholarDigital Library
- Nikolaos Tsantalis, Alexander Chatzigeorgiou, George Stephanides, and Spyros T Halkidis. 2006. Design pattern detection using similarity scoring. Software Engineering, IEEE Transactions on 32, 11 (2006), 896--909. Google ScholarDigital Library
- Marek Vokac. 2004. Defect frequency and design patterns: An empirical study of industrial code. IEEE Transactions on Software Engineering 30, 12 (2004), 904--917. Google ScholarDigital Library
- B. C. Wagey, B. Hendradjaya, and M. S. Mardiyanto. 2015. A proposal of software maintainability model using co- de smell measurement. In ICoDSE. 25--30.Google Scholar
- Bartosz Walter and Tarek Alkhaeir. 2016. The relationship between design patterns and code smells: An exploratory study. Information and Software Technology (2016), 127--142. Google ScholarDigital Library
- Peter Wendorff. 2001. Assessment of Design Patterns During Software Reengineering: Lessons Learned from a Large Commercial Project. In 5th CSMR. 77--84. Google ScholarDigital Library
- Claes Wohlin. 2014. Guidelines for Snowballing in Systematic Literature Studies and a Replication in Software Engineering. In 18th EASE. 1--10. Google ScholarDigital Library
- Aiko Yamashita and Leon Moonen. 2013. To What Extent Can Maintenance Problems Be Predicted by Code Smell Detection? - An Empirical Study. Inf. Softw. Technol. 55, 12 (Dec. 2013), 2223--2242. Google ScholarDigital Library
- Vassilis E. Zafeiris, Sotiris H. Poulias, N.A. Diamantidis, and E.A. Giakoumakis. 2017. Automated refactoring of super-class method invocations to the Template Method design pattern. Information and Software Technology (2017), 19--35.Google Scholar
Index Terms
- A systematic literature mapping on the relationship between design patterns and bad smells
Recommendations
Oracles of Bad Smells: a Systematic Literature Review
SBES '20: Proceedings of the XXXIV Brazilian Symposium on Software EngineeringA bad smell is an evidence of a design problem that may be harmful to the software maintenance. Several studies have been carried out to aid the identification of bad smells, by defining approaches or tools. Usually, the evaluation of these studies' ...
Analyzing the Impact of Refactoring on Bad Smells
SBES '20: Proceedings of the XXXIV Brazilian Symposium on Software EngineeringRefactoring aims to remove bad smells and increase software maintainability by improving the software structure without changing its behavior. However, some studies show that refactoring tools may introduce new bad smells into the source code, but to the ...
The relationship between design patterns and code smells
Context-Design patterns represent recommended generic solutions to various design problems, whereas code smells are symptoms of design issues that could hinder further maintenance of a software system. We can intuitively expect that both concepts are ...
Comments