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.
Similar content being viewed by others
References
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
Su X, Khoshgoftaar T M. A survey of collaborative filtering techniques. Adv Artif Intell, 2009, 4: 2
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
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
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
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
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
Schafer M, Sridharan M, Dolby J, et al. Effective Smart Completion for JavaScript. Technical Report RC25359. 2013
Omori T, Kuwabara H, Maruyama K. Improving code completion based on repetitive code completion operations. Inf Media Tech, 2015, 10: 210–225
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
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
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
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
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
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
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
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
Proksch S, Lerch J, Mezini M. Intelligent code completion with Bayesian networks. ACM Trans Softw Eng Methodol, 2015, 25: 3
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
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
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
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
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
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
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
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
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
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
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
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
Received:
Accepted:
Published:
DOI: https://doi.org/10.1007/s11432-017-9058-0