The Rise of Android Code Smells: Who is to Blame?

The rise of mobile apps as new software systems led to the emergence of new development requirements regarding performance. Development practices that do not respect these requirements can seriously hinder app performances and impair user experience, they qualify as code smells. Mobile code smells are generally associated with inexperienced developers who lack knowledge about the framework guidelines. However, this assumption remains unverified and there is no evidence about the role played by developers in the accrual of mobile code smells. In this paper, we therefore study the contributions of developers related to Android code smells. To support this study, we propose Sniffer, an open-source toolkit that mines Git repositories to extract developers' contributions as code smell histories. Using Sniffer, we analysed 255k commits from the change history of 324 Android apps. We found that the ownership of code smells is spread across developers regardless of their seniority. There are no distinct groups of code smell introducers and removers. Developers who introduce and remove code smells are mostly the same.

[1]  A.E. Hassan,et al.  The road ahead for Mining Software Repositories , 2008, 2008 Frontiers of Software Maintenance.

[2]  Andy Zaidman,et al.  Evaluating the Lifespan of Code Smells using Software Repository Mining , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[3]  Ahmed E. Hassan,et al.  Predicting faults using the complexity of code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[4]  David J. Sheskin,et al.  Handbook of Parametric and Nonparametric Statistical Procedures , 1997 .

[5]  Romain Rouvoy,et al.  Tracking the Software Quality of Android Applications Along Their Evolution (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[6]  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).

[7]  Fabio Palomba,et al.  Mining File Histories: Should We Consider Branches? , 2018, 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[8]  Ward Cunningham,et al.  The WyCash portfolio management system , 1992, OOPSLA '92.

[9]  Katrina D. Maxwell,et al.  Applied Statistics for Software Managers , 2002 .

[10]  Hajimu Iida,et al.  Revisiting Code Ownership and Its Relationship with Software Quality in the Scope of Modern Code Review , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[11]  Michele Lanza,et al.  Mining the history of synchronous changes to refine code ownership , 2009, 2009 6th IEEE International Working Conference on Mining Software Repositories.

[12]  Elaine J. Weyuker,et al.  The limited impact of individual developer data on software defect prediction , 2011, Empirical Software Engineering.

[13]  Jared Smith,et al.  A Dataset of Open-Source Android Applications , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[14]  Uwe Aßmann,et al.  On the reuse and recommendation of model refactoring specifications , 2012, Software & Systems Modeling.

[15]  Romain Rouvoy,et al.  Detecting Antipatterns in Android Apps , 2015, 2015 2nd ACM International Conference on Mobile Software Engineering and Systems.

[16]  Nikolaos Tsantalis,et al.  Using Natural Language Processing to Automatically Detect Self-Admitted Technical Debt , 2017, IEEE Transactions on Software Engineering.

[17]  Miryung Kim,et al.  Program element matching for multi-version program analyses , 2006, MSR '06.

[18]  Jacob Cohen,et al.  A power primer. , 1992, Psychological bulletin.

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

[20]  Richard T. Vidgen,et al.  An exploration of technical debt , 2013, J. Syst. Softw..

[21]  James D. Herbsleb,et al.  Social coding in GitHub: transparency and collaboration in an open software repository , 2012, CSCW.

[22]  Robert L. Nord,et al.  Managing technical debt in software-reliant systems , 2010, FoSER '10.

[23]  Romain Rouvoy,et al.  An Empirical Study of the Performance Impacts of Android Code Smells , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[24]  Andrea De Lucia,et al.  Lightweight detection of Android-specific code smells: The aDoctor project , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[25]  Romain Rouvoy,et al.  Investigating the energy impact of Android smells , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[26]  Renaud Pawlak Spoon: Compile-time Annotation Processing for Middleware , 2006, IEEE Distributed Systems Online.

[27]  Uwe Aßmann,et al.  A Tool-Supported Quality Smell Catalogue For Android Developers , 2014, Softwaretechnik-Trends.

[28]  Andrea De Lucia,et al.  On the impact of code smells on the energy consumption of mobile applications , 2019, Inf. Softw. Technol..

[29]  Yann-Gaël Guéhéneuc,et al.  REPENT: Analyzing the Nature of Identifier Renamings , 2014, IEEE Transactions on Software Engineering.

[30]  Fabio Palomba,et al.  A Graph-Based Dataset of Commit History of Real-World Android apps , 2018, 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR).

[31]  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).

[32]  Gabriele Bavota,et al.  When and Why Your Code Starts to Smell Bad (and Whether the Smells Go Away) , 2015, IEEE Transactions on Software Engineering.

[33]  Jonathan I. Maletic,et al.  A survey and taxonomy of approaches for mining software repositories in the context of software evolution , 2007, J. Softw. Maintenance Res. Pract..

[34]  Geoffrey Hecht Détection et analyse de l'impact des défauts de code dans les applications mobiles. (Detection and analysis of impact of code smells in mobile applications) , 2016 .