Comparison of Occurrence of Design Smells in Desktop and Mobile Applications

Design smells are symptoms of poor solutions to recurring design problems in a software system. Those symptoms have a direct negative impact on software quality by making it difficult to comprehend and maintain. In this paper we compare the occurrence of design smells between different technological ecosystems: windows/desktop and android/mobile. This knowledge is significant for various software maintenance activities such as program quality assurance and refactoring. To supplement previous findings, our study aimed at (a) understanding if and how the relationship among design smells differs across windows and mobile applications and (b) determining the groups of design smells that tend to occur frequently together and the magnitude of their occurrence in windows and mobile applications. In this study, we explored the use of statistics and unsupervised learning on a dataset consisting of twelve (12) Javabased open-source projects mined from GitHub. We identified fifteen (15) most frequent design smells across desktop and mobile applications. Additionally, a clustering technique revealed which groups of design smells that often co-occur. Specifically, {SpeculativeGenerality, SwissArmyKnife} and {LongParameterList, ClassDataShouldBePrivate} are observed to occur frequently together in desktop and mobile applications.

[1]  Satwinder Singh,et al.  Influence of Anti-Patterns on Software Maintenance: A Review , 2015 .

[2]  Gabriele Bavota,et al.  On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation , 2018, Empirical Software Engineering.

[3]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[4]  Andrea De Lucia,et al.  Investigating code smell co-occurrences using association rule learning: A replicated study , 2017, 2017 IEEE Workshop on Machine Learning Techniques for Software Quality Evaluation (MaLTeSQuE).

[5]  Ghulam Rasool,et al.  Evaluation of design pattern recovery tools , 2011, WCIT.

[6]  Hui Liu,et al.  Deep Learning Based Feature Envy Detection , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[7]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[8]  Lijun Liu,et al.  Software smell detection based on machine learning and its empirical study , 2020, Target Recognition and Artificial Intelligence Summit Forum.

[9]  Romain Rouvoy,et al.  On Adopting Linters to Deal with Performance Concerns in Android Apps , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[10]  Glauco de Figueiredo Carneiro,et al.  The Impact of Code Smells on Software Bugs: A Systematic Literature Review , 2018, Inf..

[11]  Satwinder Singh,et al.  Detecting Software Bad Smells from Software Design Patterns using Machine Learning Algorithms , 2018 .

[12]  G. Saranya,et al.  Model level code smell detection using EGAPSO based on similarity measures , 2017, Alexandria Engineering Journal.

[13]  Diomidis Spinellis,et al.  A survey on software smells , 2018, J. Syst. Softw..

[14]  Foutse Khomh,et al.  A Machine-learning Based Ensemble Method For Anti-patterns Detection , 2019, J. Syst. Softw..

[15]  Abbas Javan Jafari,et al.  Bad smell detection using quality metrics and refactoring opportunities , 2020, J. Softw. Evol. Process..

[16]  Yann-Gaël Guéhéneuc,et al.  Ptidej: A Flexible Reverse Engineering Tool Suite , 2007, ICSM.

[17]  Rebecca Wirfs-Brock Characterizing classes , 2006, IEEE Software.

[18]  Yi Liu,et al.  Reducing the Large Class Code Smell by Applying Design Patterns , 2019, 2019 IEEE International Conference on Electro Information Technology (EIT).

[19]  Andrea De Lucia,et al.  Detecting code smells using machine learning techniques: Are we there yet? , 2018, 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[20]  Iftekhar Ahmed,et al.  Understanding Code Smells in Android Applications , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[21]  Romain Rouvoy,et al.  Code Smells in iOS Apps: How Do They Compare to Android? , 2017, 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[22]  Salman Abdul Moiz,et al.  An Approach to Suggest Code Smell Order for Refactoring , 2019 .

[23]  Foutse Khomh,et al.  Do Code Smells Impact the Effort of Different Maintenance Programming Activities? , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[24]  Peter Taraba,et al.  Clustering for Binary Featured Datasets , 2017, Transactions on Engineering Technologies.

[25]  Amandeep Kaur,et al.  A Systematic Literature Review on Empirical Analysis of the Relationship Between Code Smells and Software Quality Attributes , 2019, Archives of Computational Methods in Engineering.

[26]  Asif Imran Design Smell Detection and Analysis for Open Source Java Software , 2019, 2019 IEEE International Conference on Software Maintenance and Evolution (ICSME).