Springer Nature is making Coronavirus research free. View research | View latest news | Sign up for updates

Code recommendation for android development: how does it work and what can be improved?

  • 200 Accesses

  • 3 Citations

Abstract

Android applications are developed based on framework and are always pattern-based. For Android developers, they can be facilitated by code recommendation to ensure high development efficiency and quality. Existing research work has proposed several methods and tools to support recommendation in diverse ways. However, how code recommendation work in Android development and what can be further improved to better support Android development has not been clarified. To understand the reality, we conduct a qualitative review on current code recommendation techniques and tools reported in prime literature. The collected work is first grouped into three categories based on a multidimensional framework. Then the review is performed to draw a comprehensive image of the adoption of recommendation in Android development when meeting specific development requirements. Based on the review, we give out possible improvements of code recommendation from two aspects. First, a set of improvement suggestions are presented to enhance the ability of the state-ofthe- art code recommendation techniques. Second, a customizable tool framework is proposed to facilitate the design of code recommendation tools and the tool framework is able to integrate the recommendation features more easily.

This is a preview of subscription content, log in to check access.

References

  1. 1

    Wu J, Shen L, Guo W, et al. How is code recommendation applied in Android development: a qualitative review. In: Proceedings of the International Conference on Software Analysis, Testing and Evolution, Kunming, 2016. 30–35

  2. 2

    Su X, Khoshgoftaar T M. A survey of collaborative filtering techniques. Adv Artif Intell, 2009, 4: 2

  3. 3

    Thung F, Wang S, Lo D, et al. Automatic recommendation of API methods from feature requests. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, Silicon Valley, 2013. 290–300

  4. 4

    Jiang H, Nie L, Sun Z, et al. Rosf: leveraging information retrieval and supervised learning for recommending code snippets. IEEE Trans Serv Comput, 2016, 9: 1–13

  5. 5

    Nie L, Jiang H, Ren Z, et al. Query expansion based on crowd knowledge for code search. IEEE Trans Serv Comput, 2016, 9: 771–783

  6. 6

    Gu X, Zhang H, Zhang D, et al. Deep API learning. In: Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering, Seattle, 2016. 631–642

  7. 7

    Omar C, Yoon Y S, LaToza T D, et al. Active code completion. In: Proceedings of the International Conference on Software Engineering, Zurich, 2012. 859–869

  8. 8

    Schafer M, Sridharan M, Dolby J, et al. Effective Smart Completion for JavaScript. Technical Report RC25359. 2013

  9. 9

    Omori T, Kuwabara H, Maruyama K. Improving code completion based on repetitive code completion operations. Inf Media Tech, 2015, 10: 210–225

  10. 10

    Zhang C, Yang J, Zhang Y, et al. Automatic parameter recommendation for practical API usage. In: Proceedings of the International Conference on Software Engineering, Zurich, 2012. 826–836

  11. 11

    Li L, Bissyandé T F, Klein J, et al. Parameter values of Android APIs: a preliminary study on 100000 apps. In: Proceedings of International Conference on Software Analysis, Evolution, and Reengineering, Osaka, 2016. 1: 584–588

  12. 12

    Raychev V, Vechev M, Yahav E. Code completion with statistical language models. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, Edinburgh, 2014. 49: 419–428

  13. 13

    Asaduzzaman M, Roy C K, Monir S, et al. Exploring API method parameter recommendations. In: Proceedings of the IEEE International Conference on Software Maintenance and Evolution, Bremen, 2015. 271–280

  14. 14

    Nguyen A T, Nguyen T T, Nguyen H A, et al. Graph-based pattern-oriented, context-sensitive source code completion. In: Proceedings of the International Conference on Software Engineering, Zurich, 2012. 69–79

  15. 15

    Heinemann L, Bauer V, Herrmannsdoerfer M, et al. Identifier-based context-dependent api method recommendation. In: Proceedings of the European Conference on Software Maintenance and Reengineering, Szeged, 2012. 31–40

  16. 16

    Asaduzzaman M, Roy C K, Schneider K A, et al. Cscc: simple, efficient, context sensitive code completion. In: Proceedings of the IEEE International Conference on Software Maintenance and Evolution, Victoria, 2014. 71–80

  17. 17

    Holmes R, Murphy G C. Using structural context to recommend source code examples. In: Proceeding of the IEEE International Conference on Software Engineering, Saint Louis, 2005. 117–125

  18. 18

    Proksch S, Lerch J, Mezini M. Intelligent code completion with Bayesian networks. ACM Trans Softw Eng Methodol, 2015, 25: 3

  19. 19

    Nguyen T T, Pham H V, Vu P M, et al. Recommending API usages for mobile apps with hidden markov model. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, Lincoln, 2015. 795–800

  20. 20

    Bruch M, Monperrus M, Mezini M. Learning from examples to improve code completion systems. In: Proceedings of the Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, Amsterdam, 2009. 213–222

  21. 21

    Amann S, Proksch S, Mezini M. Method-call recommendations from implicit developer feedback. In: Proceedings of the International Workshop on CrowdSourcing in Software Engineering, Hyderabad, 2014. 5–6

  22. 22

    Pham H V, Vu P M, Nguyen T T. Learning API usages from bytecode: a statistical approach. In: Proceedings of the International Conference on Software Engineering, Austin, 2016. 416–427

  23. 23

    McDonnell T, Ray B, Kim M. An empirical study of API stability and adoption in the android ecosystem. In: Proceedings of the IEEE International Conference on Software Maintenance, Eindhoven, 2013. 70–79

  24. 24

    Linares-Vásquez M, Bavota G, Bernal-Cárdenas C, et al. API change and fault proneness: a threat to the success of Android apps. In: Proceedings of the Joint Meeting on Foundations of Software Engineering, Saint Petersburg, 2013. 477–487

  25. 25

    Almeida M, Bilal M, Blackburn J, et al. An empirical study of android alarm usage for application scheduling. In: Proceedings of the International Conference on Passive and Active Network Measurement, Heraklion, 2016. 373–384

  26. 26

    Lin Y, Cosmin R, Danny D. Retrofitting concurrency for Android applications through refactoring. In: Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, HongKong, 2014. 341–352

  27. 27

    Rountev A, Yan D. Static reference analysis for GUI objects in Android software. In: Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization, Orlando, 2014. 143–153

  28. 28

    Ko D, Ma K, Park S, et al. API document quality for resolving deprecated APIs. In: Proceedingso of the Asia-Pacific Software Engineering Conference, Jeju, 2014. 2: 27–30

Download references

Author information

Correspondence to Liwei Shen.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Wu, J., Shen, L., Guo, W. et al. Code recommendation for android development: how does it work and what can be improved?. Sci. China Inf. Sci. 60, 092111 (2017). https://doi.org/10.1007/s11432-017-9058-0

Download citation

Keywords

  • Android
  • code recommendation
  • code search
  • code suggestion
  • code completion
  • code generation