Skip to main content

Recovering Android Bad Smells from Android Applications

Abstract

The demand for Android mobile software applications is continuously increasing with the evolution of technology and new enriching features to make the life of people easy and comfortable. The mobile-based software applications are frequently updated as compared to other web and desktop applications. Due to these frequent updating cycles, the developers sometimes make changes in a rush which leads to poor design choices known as antipatterns or code bad smells. Code bad smells degrade the performance of applications and make evolution difficult. The recovery of bad smells from mobile software applications is still at infancy but it is a very important research realm that requires the attention of researchers and practitioners. The results of recovery may be used for comprehension, maintenance, reengineering, evolution and refactoring of these applications. Most state-of-the-art approaches focused on the detection of code bad smells from object-oriented applications and they target only a few code smells. We present a novel approach supplemented with tool support to recover 25 Android code bad smells from Android-specific software applications. We evaluate our approach by performing experiments on 4 open source and 3 industrial Android-specific software applications and measure accuracy using standard metrics.

This is a preview of subscription content, access via your institution.

Fig. 1
Fig. 2
Fig. 3
Fig. 4

Notes

  1. 1.

    https://www.statista.com/statistics/266136/global-market-share-held-by-smartphone-operating-systems/.

  2. 2.

    https://www.mendix.com/blog/5-key-themes-from-the-gartner-application-strategies-solutions-summit/.

  3. 3.

    https://www.statista.com/statistics/330695/number-of-smartphone-users-worldwide.

  4. 4.

    https://youtu.be/Y2VF8tmLFHw.

  5. 5.

    https://github.com/AzharAli92/DAAP.

  6. 6.

    https://f-droid.org/en/.

  7. 7.

    http://www.intooitus.com/inFusion.html.

  8. 8.

    https://github.com/pgadient/AndroidLintSecurityChecks.

  9. 9.

    https://dom4j.github.io/.

References

  1. 1.

    Lim, D.: Detecting code smells in Android applications. Master Thesis, TU Delft, Netherlands

  2. 2.

    Fowler, M.; Beck, K.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Boston (1999)

    Google Scholar 

  3. 3.

    Saborido, R.; Morales, R.; Khomh, F.; Guéhéneuc, Y.G.; Antoniol, G.: Getting the most from map data structures in Android. Empir. Softw. Eng. 23, 2839–2864 (2018)

    Google Scholar 

  4. 4.

    Li, L.; Bissyandé, T.F.; Papadakis, M.; Rasthofer, S.; Bartel, A.; Octeau, D.; Traon, L.: Static analysis of android apps: a systematic literature review. Inf. Softw. Technol. 88, 67–95 (2017)

    Google Scholar 

  5. 5.

    Reimann, J.; Brylski, M.; Aßmann, U.: A tool-supported quality smell catalogue for android developers. In: Proceedings of the Conference Modellierung 2014 in the Workshop Modellbasierte und modellgetriebene Softwaremodernisierung–MMSM (2014)

  6. 6.

    Payet, É.; Spoto, F.: Static analysis of Android programs. Inf. Softw. Technol. 54(11), 1192–1201 (2012)

    Google Scholar 

  7. 7.

    Trifu, A.; Marinescu, R.: Diagnosing design problems in object oriented systems. In: 12th Working Conference on Reverse Engineering, pp. 155–164 (2005)

  8. 8.

    Hassaine, S.; Khomh, F.; Guéhéneuc, Y.-G.; Hamel, S.: IDS: an immune-inspired approach for the detection of software design smells. In: 2010 Seventh International Conference on the Quality of Information and Communications Technology (QUATIC), pp. 343–348 (2010)

  9. 9.

    Travassos, G.; Shull, F.; Fredericks, M.; Basili, V.R.: Detecting defects in object-oriented designs: using reading techniques to increase software quality. In: ACM Sigplan Notices, pp. 47–56 (1999)

  10. 10.

    Marinescu, R.: Detection strategies: metrics-based rules for detecting design flaws. In: 20th IEEE International Conference on Software Maintenance. Proceedings, pp. 350–359 (2004)

  11. 11.

    Khomh, F.; Vaucher, S.; Guéhéneuc, Y.-G.; Sahraoui, H.: A bayesian approach for the detection of code and design smells. In: 9th International Conference on Quality Software. QSIC’09, pp. 305–314 (2009)

  12. 12.

    Stoianov, A.; Şora, I.: Detecting patterns and antipatterns in software using Prolog rules. In: 2010 International Joint Conference on Computational Cybernetics and Technical Informatics (ICCC-CONTI), pp. 253–258 (2010)

  13. 13.

    Khomh, F.; Vaucher, S.; Guéhéneuc, Y.-G.; Sahraoui, H.: BDTEX: a GQM-based Bayesian approach for the detection of antipatterns. J. Syst. Softw. 84, 559–572 (2011)

    Google Scholar 

  14. 14.

    Maiga, A.; Ali, N.; Bhattacharya, N.; Sabané, A.; Guéhéneuc, Y.-G.; Antoniol, G.: Support vector machines for anti-pattern detection. In: Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering, pp. 278–281 (2012)

  15. 15.

    Sjøberg, D.I.; Yamashita, A.; Anda, B.C.; Mockus, A.; Dybå, T.: Quantifying the effect of code smells on maintenance effort. IEEE Trans. Softw. Eng. 39, 1144–1156 (2013)

    Google Scholar 

  16. 16.

    Kessentini, W.; Kessentini, M.; Sahraoui, H.; Bechikh, S.; Ouni, A.: A cooperative parallel search-based software engineering approach for code-smells detection. IEEE Trans. Softw. Eng. 40, 841–861 (2014)

    Google Scholar 

  17. 17.

    Sahin, D.; Kessentini, M.; Bechikh, S.; Deb, K.: Code-smell detection as a bilevel problem. ACM Trans. Softw. Eng. Methodol. (TOSEM) 24, 6 (2014)

    Google Scholar 

  18. 18.

    Ujhelyi, Z.; Horváth, Á.; Varró, D.; Csiszár, N.I.; Szoke, G.; Vidács, L.; et al.: Anti-pattern detection with model queries: a comparison of approaches. In: 2014 Software Evolution Week-IEEE Conference on Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE), pp. 293–302 (2014)

  19. 19.

    Velioğlu, S.; Selçuk, Y.E.: An automated code smell and anti-pattern detection approach. In: 2017 IEEE 15th International Conference on Software Engineering Research, Management and Applications (SERA), pp. 271–275 (2017)

  20. 20.

    Maiga, A.; Ali, N.; Bhattacharya, N.; Sabane, A.; Gueheneuc, Y.-G.; Aimeur, E.: SMURF: a SVM-based incremental anti-pattern detection approach. In: 2012 19th Working Conference on Reverse Engineering (WCRE), pp. 466–475 (2012)

  21. 21.

    Palomba, F.; Bavota, G.; Di Penta, M.; Oliveto, R.; De Lucia, A.; Poshyvanyk, D.: Detecting bad smells in source code using change history information. In: Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering, pp. 268–278 (2013)

  22. 22.

    Di Nucci, D.; Palomba, F.; Tamburri, D.A.; Serebrenik, A.; De Lucia, A.: Detecting code smells using machine learning techniques: are we there yet?. In: International Conference on Software Analysis, Evolution, and Reengineering. IEEE (2018)

  23. 23.

    Moha, N.; Gueheneuc, Y.-G.; Duchien, L.; Le Meur, A.-F.: DECOR: a method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 36, 20–36 (2010)

    MATH  Google Scholar 

  24. 24.

    Moha, N.; Gueheneuc, Y.-G.; Leduc, P.: Automatic generation of detection algorithms for design defects. In: 21st IEEE/ACM International Conference on Automated Software Engineering. ASE’06, pp. 297–300 (2006)

  25. 25.

    Fokaefs, M.; Tsantalis, N.; Chatzigeorgiou, A.: Jdeodorant: Identification and removal of feature envy bad smells. In: 2007 IEEE International Conference on Software Maintenance, pp. 519–520 (2007)

  26. 26.

    Rasool, G.; Arshad, Z.: A lightweight approach for detection of code smells. Arab. J. Sci. Eng. 42(2), 483–506 (2017)

    Google Scholar 

  27. 27.

    Fontana, F.A.; Mäntylä, M.V.; Zanoni, M.; Marino, A.: Comparing and experimenting machine learning techniques for code smell detection. Empir. Softw. Eng. 21(3), 1143–1191 (2016)

    Google Scholar 

  28. 28.

    Mansoor, U.; Kessentini, M.; Maxim, B.R.; Deb, K.: Multi-objective code-smells detection using good and bad design examples. Softw. Qual. J. 25(2), 529–552 (2017)

    Google Scholar 

  29. 29.

    Guggulothu, T.: Code smell detection using multilabel classification approach (2019). arXiv preprint arXiv:1902.03222

  30. 30.

    Hadj-Kacem, M.; Bouassida, N.: A hybrid approach to detect code smells using deep learning. In: ENASE, pp. 137–146 (2018)

  31. 31.

    Li, Z.; Chen, T.H.P.; Yang, J.; Shang, W.: Dlfinder: characterizing and detecting duplicate logging code smells. In: Proceedings of the 41st International Conference on Software Engineering, pp. 152–163 (2019)

  32. 32.

    Blouin, A.; Lelli, V.; Baudry, B.; Coulon, F.: User interface design smell: automatic detection and refactoring of Blob listeners. Inf. Softw. Technol. 102, 49–64 (2018)

    Google Scholar 

  33. 33.

    Verloop, D.: Code smells in the mobile applications domain. Master Thesis, TUDelft, Neitherland (2013)

  34. 34.

    Palomba, F.; Bavota, G.; Di Penta, M.; Oliveto, R.; Poshyvanyk, D.; De Lucia, A.: Mining version histories for detecting code smells. IEEE Trans. Softw. Eng. 41(5), 462–489 (2014)

    Google Scholar 

  35. 35.

    Fontana, F.A.; Dietrich, J.; Walter, B.; Yamashita, A.; Zanoni, M.: Antipattern and code smell false positives: preliminary conceptualization and classification. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), vol. 1, pp. 609–613 (2016)

  36. 36.

    Palomba, F.; Panichella, A.; De Lucia, A.; Oliveto, R.; Zaidman, A.: A textual-based technique for smell detection. In: 2016 IEEE 24th International Conference on Program Comprehension (ICPC), pp. 1–10 (2016)

  37. 37.

    Di Nucci, D.; Palomba, F.; Tamburri, D.A.; Serebrenik, A.; De Lucia, A.: Detecting code smells using machine learning techniques: are we there yet?. In: 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 612–621 (2018)

  38. 38.

    Liu, H., Jin, J., Xu, Z., Bu, Y., Zou, Y., Zhang, L.: Deep learning based code smell detection. IEEE Trans. Softw. Eng. (2019). https://doi.org/10.1109/TSE.2019.2936376

    Article  Google Scholar 

  39. 39.

    Banerjee, A.; Chong, L.K.; Chattopadhyay, S.; Roychoudhury, A.: Detecting energy bugs and hotspots in mobile apps. In: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 588–598 (2014)

  40. 40.

    Hecht, G.: An approach to detect Android antipatterns. In: Proceedings of the 37th International Conference on Software Engineering, vol. 2, pp. 766–768 (2015)

  41. 41.

    Hecht, G.; Rouvoy, R.; Moha, N.; Duchien, L.: Detecting antipatterns in android apps. In: Proceedings of the Second ACM International Conference on Mobile Software Engineering and Systems, pp. 148–149 (2015)

  42. 42.

    Palomba, F.; Di Nucci, D.; Panichella, A.; Zaidman, A.; De Lucia, A.: Lightweight detection of Android-specific code smells: the aDoctor project. In: 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 487–491 (2017)

  43. 43.

    Rasool, G.; Arshad, Z.: A review of code smell mining techniques. J. Softw. Evol. Process 27(11), 867–895 (2017)

    Google Scholar 

  44. 44.

    Carette, A.; Younes, M.A.A.; Hecht, G.; Moha, N.; Rouvoy, R.: Investigating the energy impact of android smells. In: 24th International IEEE Conference on Software Analysis, Evolution and Reengineering (SANER), p. 10 (2017)

  45. 45.

    Grano, G.; Di Sorbo, A.; Mercaldo, F.; Visaggio, C.A.; Canfora, G.; Panichella, S.: Android apps and user feedback: a dataset for software evolution and quality improvement. In: Proceedings of the 2nd ACM SIGSOFT International Workshop on App Market Analytics, pp. 8–11 (2017)

  46. 46.

    Mateus, B.G.; Martinez, M.: An empirical study on quality of Android applications written in Kotlin language (2018). arXiv preprint arXiv:1808.00025

  47. 47.

    Peruma, A.S.A.: What the smell? An empirical investigation on the distribution and severity of test smells in open source Android applications. Master Thesis, Rochester Institute of Technology, Rochester, New York (2018)

  48. 48.

    Elsayed, E.K.; ElDahshan, K.A.; El-Sharawy, E.E.; Ghannam, N.E.: Reverse engineering approach for improving the quality of mobile applications. PeerJ Preprints 7, e27633v1 (2019)

    Google Scholar 

  49. 49.

    Almalki, K.S.: Bad Droid! An in-depth empirical study on the occurrence and impact of Android specific code smells. Thesis. Rochester Institute of Technology (2018)

  50. 50.

    El-Dahshan, K.A.; Elsayed, E.K.; Ghannam, N.E.: Comparative study for detecting mobile application’s anti-patterns. In: Proceedings of the 2019 8th International Conference on Software and Information Engineering, pp. 1–8 (2019)

  51. 51.

    Habchi, S.; Hecht, G.; Rouvoy, R.; Moha, N.: Code smells in iOS apps: how do they compare to Android?. In: Proceedings of the 4th International Conference on Mobile Software Engineering and Systems, pp. 110–121 (2017)

  52. 52.

    Hecht, G.; Benomar, O.; Rouvoy, R.; Moha, N.; Duchien, L.: Tracking the software quality of android applications along their evolution (t). In: Proceedings of 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 236–247 (2015)

  53. 53.

    Mannan, U.A.; Ahmed, I.; Almurshed, R.A.M.; Dig, D.; Jensen, C.: Understanding code smells in android applications. In: Proceedings of the International Workshop on Mobile Software Engineering and Systems, pp. 225–234. ACM (2016)

  54. 54.

    Ghafari, M.; Gadient, P.; Nierstrasz, O.: Security smells in Android. In: Proceedings of IEEE 17th International Working Conference on Source Code Analysis and Manipulation, pp. 121–130 (2017)

  55. 55.

    Cruz, L.; Abreu, R.: Using automatic refactoring to improve energy efficiency of Android apps (2018). arXiv preprint arXiv:1803.05889

  56. 56.

    Abbes, M.; Khomh, F.; Guéhéneuc, Y.-G.; Antoniol, G.: An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In: Proceedings of the 15th European Conference on Software Maintenance and Reengineering, Oldenburg, Germany. IEEE Computer Society, pp. 181–190 (2011)

  57. 57.

    Oliveira, J.; Viggiato, M.; Santos, M.; Figueiredo, E.; Marques-Neto, H. An empirical study on the impact of android code smells on resource usage. In: International Conference on Software Engineering & Knowledge Engineering (SEKE) (2018)

  58. 58.

    Verdecchia, R.; Saez, R.A.; Procaccianti, G.; Lago, P.: Empirical evaluation of the energy impact of refactoring code smells. In: 5th International Conference on ICT for Sustainability, pp. 365–383 (2018)

  59. 59.

    Khomh, F.; Di Penta, M.; Guéhéneuc, Y.-G.; Antoniol, G.: An exploratory study of the impact of antipatterns on class changeand fault-proneness. Empir. Softw. Eng. 17(3), 243–275 (2012)

    Google Scholar 

  60. 60.

    Das, T.; Di Penta, M.; Malavolta, I.: A quantitative and qualitative investigation of performance-related commits in Android apps. In: 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 443–447 (2016)

  61. 61.

    Tufano, M.; Palomba, F.; Bavota, G.; Oliveto, R.; Di Penta, M.; De Lucia, A.; Poshyvanyk, D.: When and why your code starts to smell bad. In: Proceedings of the 37th International Conference on Software Engineering, vol. 1, pp. 403–414 (2015)

  62. 62.

    Palomba, F.; Bavota, G.; Di Penta, M.; Fasano, F.; Oliveto, R.; De Lucia, A.: On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation. Empir. Softw. Eng. 23(3), 1188–1221 (2018)

    Google Scholar 

  63. 63.

    Gadient, P.; Ghafari, M.; Frischknecht, P.; Nierstrasz, O.: Security code smells in Android ICC. Empir. Softw. Eng. 24, 3046–3076 (2018)

    Google Scholar 

  64. 64.

    Olbrich, S.; Cruzes, D.S.; Basili, V.; Zazworka, N.: The evolution and impact of code smells: a case study of two open source systems. In: Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement, ser. ESEM’09, pp. 390–400 (2009)

  65. 65.

    Cairo, A.; Carneiro, G.; Monteiro, M.: The impact of code smells on software bugs: a systematic literature review. Information 9(11), 273 (2018)

    Google Scholar 

  66. 66.

    Yamashita, A.; Counsell, S.: Code smells as system-level indicators of maintainability: an empirical study. J. Syst. Softw. 86(10), 2639–2653 (2013)

    Google Scholar 

  67. 67.

    Perez-Castillo, R.; Piattini, M.: Analyzing the harmful effect of god class refactoring on power consumption. IEEE Softw. 31(3), 48–54 (2014)

    Google Scholar 

  68. 68.

    Gottschalk, M.; Jelschen, J.; Winter, A.: Saving energy on mobile devices by refactoring. In: EnviroInfo. enviroinfo.eu, pp. 437–444 (2014)

  69. 69.

    Kim, D.K.: Towards performance-enhancing programming for Android application development. Int. J. Contents 13(4), 39–46 (2017)

    Google Scholar 

  70. 70.

    Rodriguez, A.; Longo, M.; Zunino, A.: Using bad smell-driven code refactorings in mobile applications to reduce battery usage. In: Simposio Argentino de Ingeniería de Software (ASSE 2015)-JAIIO 44 (Rosario, 2015) (2015).

  71. 71.

    Fan, L.; Su, T.; Chen, S.; Meng, G.; Liu, Y.; Xu, L., Su, Z. Large-scale analysis of framework-specific exceptions in Android apps. In: 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE), pp. 408–419 (2018)

  72. 72.

    Habchi, S.; Rouvoy, R.; Moha, N.: On the survival of Android code smells in the wild. In: 6th IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft) (2019)

  73. 73.

    Habchi, S.; Moha, N.; Rouvoy, R.: The rise of Android code smells: Who is to blame?. In: MSR 2019-Proceedings of the 16th International Conference on Mining Software Repositories (2019)

  74. 74.

    Malavolta, I.; Verdecchia, R.; Filipovic, B.; Bruntink, M.; Lago, P.:. How maintainability issues of Android apps evolve. In: 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 334–344 (2018)

  75. 75.

    Pritam, N.; Khari, M.; Kumar, R.; Jha, S.; Priyadarshini, I.; Abdel-Basset, M.; Long, H.V.: Assessment of code smell for predicting class change proneness using machine learning. IEEE Access 7, 37414–37425 (2019)

    Google Scholar 

  76. 76.

    Johannes, D.; Khomh, F.; Antoniol, G.: A large-scale empirical study of code smells in JavaScript projects. Softw. Qual. J. 27, 1271–1314 (2019)

    Google Scholar 

  77. 77.

    Rodriguez, A.; Mateos, C.; Zunino, A.: Improving scientific application execution on android mobile devices via code refactorings. Softw. Pract. Exp. 47(5), 763–796 (2017)

    Google Scholar 

  78. 78.

    Morales, R.; Saborido, R.; Khomh, F.; Chicano, F.; Antoniol, G.: Anti-patterns and the energy efficiency of Android applications. IEEE Trans. Softw. Eng. (2016)

  79. 79.

    Kim, D.; Hong, J.E.; Yoon, I.; Lee, S.H.: Code refactoring techniques for reducing energy consumption in embedded computing environment. Cluster Comput. 21(1), 1079–1095 (2018)

    Google Scholar 

  80. 80.

    Li, W.; Jiang, Y.; Xu, C.; Liu, Y.; Ma, X.; Lü, J.: Characterizing and detecting inefficient image displaying issues in Android apps. In: 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 355–365 (2019)

  81. 81.

    Cruz, L., Abreu, R.: Performance-based guidelines for energy efficient mobile applications. In: 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft), pp. 46–57 (2017)

  82. 82.

    Linares-Vásquez, M.: Supporting evolution and maintenance of Android apps. In: Companion Proceedings of the 36th International Conference on Software Engineering, pp. 714–717 (2014)

  83. 83.

    Li, X.; Gallagher, J.P.: A source-level energy optimization framework for mobile applications. In: 2016 IEEE 16th International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 31–40 (2016)

  84. 84.

    Saifan, A.A.; Al-Rabadi, A.: Evaluating maintainability of android applications. In: 2017 8th International Conference on Information Technology (ICIT), pp. 518–523 (2017)

  85. 85.

    Afjehei, S.S.; Chen, T.H.P.; Tsantalis, N.: iPerfDetector: characterizing and detecting performance anti-patterns in iOS applications. Empir. Softw. Eng. 1–30 (2019)

  86. 86.

    Mumtaz, H.; Alshayeb, M.; Mahmood, S.; Niazi, M.: An empirical study to improve software security through the application of code refactoring. Inf. Softw. Technol. 96, 112–125 (2018)

    Google Scholar 

  87. 87.

    Linares-Vásquez, M.; Vendome, C.; Tufano, M.; Poshyvanyk, D.: How developers micro-optimize android apps. J. Syst. Softw. 130, 1–23 (2017)

    Google Scholar 

  88. 88.

    Gottschalk, M.; Josefiok, M.; Jelschen, J.; Winter, A.: Removing energy code smells with reengineering services. INFORMATIK (2012)

  89. 89.

    Meier, J.; Ostendorp, M.C.; Jelschen, J.; Winter, A.: Certifying energy efficiency of android applications. In: EnviroInfo, pp. 765–770 (2014)

  90. 90.

    Rani, A.; Chhabra, J.K.: Evolution of code smells over multiple versions of softwares: an empirical investigation. In: 2017 2nd International Conference for Convergence in Technology (I2CT), pp. 1093–1098 (2017)

  91. 91.

    Chatzigeorgiou, A.; Manakos, A.: Investigating the evolution of bad smells in object-oriented code. In: 2010 Seventh International Conference on the Quality of Information and Communications Technology, pp. 106–115 (2010)

  92. 92.

    Soh, Z.; Yamashita, A.; Khomh, F.; Guéhéneuc, Y.G.: Do code smells impact the effort of different maintenance programming activities?. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), vol. 1, pp. 393–402 (2016)

  93. 93.

    Tahmid, A.; Nahar, N.; Sakib, K.: Understanding the evolution of code smells by observing code smell clusters. In: 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER), vol. 4, pp. 8–11 (2016)

  94. 94.

    Li, D.; Halfond, W.G.: An investigation into energy-saving programming practices for android smartphone app development. In: Proceedings of the 3rd International Workshop on Green and Sustainable Software, pp. 46–53 (2014)

  95. 95.

    Gottschalk, M.; Jelschen, J.; Winter, A.: Refactorings for energy-efficiency. In: Advances and new trends in environmental and energy informatics, pp. 77–96. Springer, Cham (2016)

  96. 96.

    Habchi, S.; Blanc, X.; Rouvoy, R.: On adopting linters to deal with performance concerns in Android apps. In: Proceedings of Automated Software Engineering, pp. 6–16 (2018)

  97. 97.

    Chatzigeorgiou, A.; Manakos, A.: Investigating the evolution of code smells in object-oriented systems. Innov. Syst. Softw. Eng. 10(1), 3–18 (2014)

    Google Scholar 

  98. 98.

    Vidal, S.A.; Marcos, C.; Díaz-Pace, J.A.: An approach to prioritize code smells for refactoring. Autom. Softw. Eng. 23(3), 501–532 (2016)

    Google Scholar 

  99. 99.

    Sae-Lim, N.; Hayashi, S.; Saeki, M.: How do developers select and prioritize code smells? A preliminary study. In: 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 484–488 (2017)

  100. 100.

    Palomba, F.; Tamburri, D.A.A.; Fontana, F.A.; Oliveto, R.; Zaidman, A.; Serebrenik, A.: Beyond technical aspects: how do community smells influence the intensity of code smells?. IEEE Trans. Softw. Eng. (2018)

  101. 101.

    Hozano, M.; Antunes, N.; Fonseca, B.; Costa, E.: Evaluating the Accuracy of machine learning algorithms on detecting code smells for different developers. In: ICEIS (2), pp. 474–482 (2017)

  102. 102.

    Liu, H.; Li, B.; Yang, Y.; Ma, W.; Jia, R.: Exploring the impact of code smells on fine-grained structural change-proneness. Int. J. Softw. Eng. Knowl. Eng. 28(10), 1487–1516 (2018)

    Google Scholar 

  103. 103.

    Palomba, F.; Zanoni, M.; Fontana, F.A.; De Lucia, A.; Oliveto, R.: Toward a smell-aware bug prediction model. IEEE Trans. Softw. Eng. 45(2), 194–218 (2017)

    Google Scholar 

  104. 104.

    Software Engineering Group: https://lahore.comsats.edu.pk/research/groups/SERC/Android-Bad-Smells.aspx

  105. 105.

    Haque, M.S.; Carver, J.; Atkison, T.: Causes, impacts, and detection approaches of code smell: a survey. In: Proceedings of the ACMSE 2018 Conference, p. 25 (2018)

  106. 106.

    Zhang, M.; Hall, T.; Baddoo, N.: Code bad smells: a review of current knowledge. J. Softw. Maint. Evol. Res. Pract. 23(3), 179–202 (2011)

    Google Scholar 

  107. 107.

    Gupta, A.; Suri, B.; Misra, S.: A systematic literature review: code bad smells in Java source code. In: International Conference on Computational Science and Its Applications, pp. 665–682 (2017)

  108. 108.

    Kaur, A.; Dhiman, G.: A review on search-based tools and techniques to identify bad code smells in object-oriented systems. In: Harmony Search and Nature Inspired Optimization Algorithms, pp. 909–921 (2019).

  109. 109.

    Sharma, T.; Spinellis, D.: A survey on software smells. J. Syst. Softw. 138, 158–173 (2018)

    Google Scholar 

  110. 110.

    Azeem, M.I.; Palomba, F.; Shi, L.; Wang, Q.: Machine learning techniques for code smell detection: a systematic literature review and meta-analysis. Information and Software Technology (2019)

  111. 111.

    Azadi, U.; Fontana, F.A.; Zanoni, M.: Poster: machine learning based code smell detection through WekaNose. In: 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion Proceedings (ICSE-Companion), pp. 288–289 (2018)

  112. 112.

    Caram, F.L.; Rodrigues, B.R.D.O.; Campanelli, A.S.; Parreiras, F.S.: Machine learning techniques for code smells detection: a systematic mapping study. Int. J. Softw. Eng. Knowl. Eng. 29(02), 285–316 (2019)

    Google Scholar 

  113. 113.

    Alkharabsheh, K.; Crespo, Y.; Manso, E.; Taboada, J.A.: Software design smell detection: a systematic mapping study. Softw. Qual. J. 27, 1069–1148 (2018)

    Google Scholar 

  114. 114.

    de Paulo Sobrinho, E.V.; De Lucia, A.; de Almeida Maia, M.: A systematic literature review on bad smells—5 W’s: which, when, what, who, where. IEEE Trans. Softw. Eng. 1–58 (2018)

  115. 115.

    Barbez, A.; Khomh, F.; Guéhéneuc, Y.G.: A machine-learning based ensemble method for anti-patterns detection (2019). arXiv preprint arXiv:1903.01899.

  116. 116.

    Saranya, G.; Nehemiah, H.K.; Kannan, A.; Nithya, V.: Model level code smell detection using egapso based on similarity measures. Alexandria Eng. J. 57(3), 1631–1642 (2018)

    Google Scholar 

  117. 117.

    Fernandes, E.; Oliveira, J.; Vale, G.; Paiva, T.; Figueiredo, E.: A review-based comparative study of bad smell detection tools. In: Proceedings of the 20th International Conference on Evaluation and Assessment in Software Engineering, p. 18. ACM (2016)

  118. 118.

    Din, J.; Al-Badareen, A.B.; Jusoh, Y.Y.: Antipatterns detection approaches in object-oriented design: a literature review. In: 2012 7th International Conference on Computing and Convergence Technology (ICCCT), pp. 926–931 (2012)

  119. 119.

    Kitchenham, B.; Pearl Brereton, O.; Budgen, D.; Turner, M.; Bailey, J.; Linkman, S.: Systematic literature reviews in software engineering–a systematic literature review. Inf. Softw. Technol. 51(1), 7–15 (2009)

    Google Scholar 

  120. 120.

    Ibrahim, R.; Ahmed, M.; Nayak, R.; Jamel, S.: Reducing redundancy of test cases generation using code smell detection and refactoring. J. King Saud Univ. Comput. Inf. Sci. (2018, in press)

  121. 121.

    Palomba, F.; Di Nucci, D.; Panichella, A.; Zaidman, A.; De Lucia, A.: On the impact of code smells on the energy consumption of mobile applications. Inf. Softw. Technol. 105, 43–55 (2019)

    Google Scholar 

  122. 122.

    Singh, S., & Kaur, S. (2017). A systematic literature review: Refactoring for disclosing code smells in object oriented software. Ain Shams Engineering Journal.

  123. 123.

    Kannangara, S.H.; Wijayanayake, W.M.J.I.: An empirical evaluation of impact of refactoring on internal and external measures of code quality (2015). arXiv preprint arXiv:1502.03526

  124. 124.

    Cedrim, D.; Sousa, L.; Garcia, A.; Gheyi, R.: Does refactoring improve software structural quality? A longitudinal study of 25 projects. In: Proceedings of the 30th Brazilian Symposium on Software Engineering, pp. 73–82 (2016)

  125. 125.

    Aniche, M.; Bavota, G.; Treude, C.; Gerosa, M.A.; van Deursen, A.: Code smells for model-view-controller architectures. Empir. Softw. Eng. 23(4), 2121–2157 (2018)

    Google Scholar 

  126. 126.

    Saboury, A.; Musavi, P.; Khomh, F., Antoniol, G.: An empirical study of code smells in javascript projects. In: 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 294–305 (2017)

  127. 127.

    Prabowo, G.; Suryotrisongko, H.; Tjahyanto, A.: A tale of two development approach: empirical study on the maintainability and modularity of Android mobile application with anti-pattern and model-view-presenter design pattern. In: 2018 International Conference on Electrical Engineering and Informatics (ICELTICs) (44501), pp. 149–154 (2018)

  128. 128.

    Santos, J.A.M.; Rocha-Junior, J.B.; Prates, L.C.L.; do Nascimento, R.S.; Freitas, M.F.; de Mendonca, M.G.: A systematic review on the code smell effect. J. Syst. Softw. 144, 450–477 (2018)

    Google Scholar 

  129. 129.

    Lin, Y.; Okur, S.; Dig, D.: Study and refactoring of android asynchronous programming (t). In: 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 224–235 (2015)

  130. 130.

    Hecht, G.; Moha, N.; Rouvoy, R.: An empirical study of the performance impacts of android code smells. In: Proceedings of the International Conference on Mobile Software Engineering and Systems, pp. 59–69 (2016)

  131. 131.

    Habchi, S.; Hecht, G.; Rouvoy, R.; Moha, N.: Code smells in iOS Apps: How do they compare to Android?. In: 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft), pp. 110–121 (2017)

  132. 132.

    Morales, R.; Saborido, R.; Khomh, F.; Chicano, F.; Antoniol, G.: Earmo: an energy-aware refactoring approach for mobile apps. IEEE Trans. Softw. Eng. 44, 1176–1206 (2018)

    Google Scholar 

  133. 133.

    Kessentini, M.; Ouni, A.: Detecting Android smells using multi-objective genetic programming. In: Proceedings of the 4th International Conference on Mobile Software Engineering and Systems, pp. 122–132 (2017)

  134. 134.

    Dennis, C.; Krutz, D.E.; Mkaouer, M.W.: P-lint: a permission smell detector for android applications. In: Proceedings of Mobile Software Engineering and Systems (MOBILESoft), pp. 219–220 (2017)

  135. 135.

    Paternò, F.; Schiavone, A.G.; Conti, A.: Customizable automatic detection of bad usability smells in mobile accessed web applications. In: Proceedings of the 19th International Conference on Human–Computer Interaction with Mobile Devices and Services, p. 42 (2017)

  136. 136.

    Rubin, J.; Henniche, A.N.; Moha, N.; Bouguessa, M.; Bousbia, N.: Sniffing Android code smells: an association rules mining-based approach. In: Proceedings of the 6th International Conference on Mobile Software Engineering and Systems, pp. 123–127 (2019)

  137. 137.

    Kessentini, W.; Kessentini, M.; Sahraoui, H.; Bechikh, S.; Ouni, A.: A cooperative parallel search-based software engineering approach for code-smells detection. IEEE Trans. Softw. Eng. 40(9), 841–861 (2014)

    Google Scholar 

  138. 138.

    Nuñez-Varela, A.S.; Pérez-Gonzalez, H.G.; Martínez-Perez, F.E.; Soubervielle-Montalvo, C.: Source code metrics: a systematic mapping study. J. Syst. Softw. 128, 164–197 (2017)

    Google Scholar 

  139. 139.

    Miceli, D.; et al.: Can metrics help to bridge the gap between the improvement of oo design quality and its automation? In: Intl. Conf. on Software Maintenance. IEEE (2000)

  140. 140.

    Elish, M.O.; Rine, D.: Investigation of metrics for object-oriented design logical stability. In: Seventh European Conference on Software Maintenance and Reengineering. Proceedings. IEEE (2003)

  141. 141.

    Kaur, A.; Kaur, K.; Kaur, H.: An investigation of the accuracy of code and process metrics for defect prediction of mobile applications. In: 2015 4th International Conference on Reliability, Infocom Technologies and Optimization (ICRITO) (Trends and Future Directions), pp. 1–6 (2015)

  142. 142.

    Satrijandi, N.; Widyani, Y.: Efficiency measurement of java android code. In: 2014 International Conference on Data and Software Engineering (ICODSE), pp. 1–6 (2014)

  143. 143.

    Jošt, G.; Huber, J.; Heričko, M.: Using object oriented software metrics for mobile application development. In: 2nd Workshop of Software Quality Analysis, Monitoring, Improvement, and Applications, pp. 17–27 (2013)

  144. 144.

    Kim, D.K.: Finding bad code smells with neural network models. Int. J. Electr. Comput. Eng. (2088-8708), 7(6) (2017).

  145. 145.

    Mercaldo, F.; Di Sorbo, A.; Visaggio, C.A.; Cimitile, A.; Martinelli, F.: An exploratory study on the evolution of Android malware quality. J. Softw. Evol. Process 30, e1978 (2018)

    Google Scholar 

  146. 146.

    Rahman, A.; Pradhan, P.; Partho, A.; Williams, L.: Predicting Android application security and privacy risk with static code metrics. In: 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft), pp. 149–153 (2017)

  147. 147.

    Campbell, G.A.; Papapetrou, P.P.: SonarQube in Action, 1st edn. Manning Publications Co., Greenwich (2013)

    Google Scholar 

  148. 148.

    Stojkovski, M.: Thresholds for software quality metrics in open source Android projects. Master Thesis, Norwegian University of Science and Technology (2017)

  149. 149.

    Bruggen. D. v.: Java Parser. http://javaparser.org/ (2017)

Download references

Acknowledgements

The authors are thankful to anonymous reviewers for their valuable comments and suggestions on early version of this paper.

Author information

Affiliations

Authors

Corresponding author

Correspondence to Ghulam Rasool.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Rasool, G., Ali, A. Recovering Android Bad Smells from Android Applications. Arab J Sci Eng 45, 3289–3315 (2020). https://doi.org/10.1007/s13369-020-04365-1

Download citation

Keywords

  • Smart phone
  • Mobile software applications
  • Android smells
  • Software quality
  • Code refactoring