Android开发的代码建议:它是如何工作的以及可以改进的内容?外文翻译资料

 2022-01-26 21:33:41

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

Keyword:Android; code recommendation; code search; code suggestion; code completion; code generation;

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.

1 Introduction

Android, as the most popular mobile platform, has attracted a large number of developers to build various applications for its ecosystem.However, the average experience level of developers is falling as the population grows in mobile application development1) .Since Android apps are developed on its specific framework and their features are always pattern-based, novice developers, in particular, often require various kinds of support from IDEs (integrated development environments) on the implementation of specific functionalities such as the program structure and APIs (application programming interfaces) .

Code recommendation has been one of the most popular features that are commonly provided by modern IDEs.It helps developers improve their programming efficiency by providing suggestions for their tasks, e.g., which API method to be invoked next, or which sample codes can be referred to.Besides the IDE features, researches have proposed diverse recommendation methods and prototype tools in literature.However, how do code recommendations play their role in Android development and what can be further improved to better support Android development has not been clarified.

To understand the reality and draw a comprehensive image of how code recommendation works in Android development, we conduct a qualitative review on current code recommendation techniques and tools reported in prime literature.The collected work from the literature is first grouped into three categories based on a multidimensional framework and then the review is performed towards specific recommendation requirements.The review results indicate that current code recommendation techniques are able to achieve recommendation requirements in different extent but still need improvement.Therefore, we further give out possible improvements of code recommendation from two aspects.First, a set of improvement suggestions are presented in which several future research directions are summarized to alleviate the deficiencies and to enhance the ability of the current code recommendation techniques.Second, in order to facilitate the design and development of the future code recommendation tools, we propose a customizable tool framework which covers diverse code recommendation features.Toolsmith thus is able to derive a tool architecture by customizing the framework according to specific requirements.

This paper extends our earlier work[1]mainly from the aspect of introducing the customizable tool framework.The framework is proposed to enrich the improvement suggestions toward the code recommendation for Android development.

The contribution of the paper is summarized in the follo

全文共44621字,剩余内容已隐藏,支付完成后下载完整资料


Android开发的代码建议:它是如何工作的以及可以改进的内容?

摘要:Android应用程序是基于框架开发的,并且始终基于模式。对于Android开发人员,可以通过代码推荐来促进他们,以确保高开发效率和质量。现有的研究工作已经提出了多种方法和工具来支持多种方式的推荐。但是,代码推荐如何在Android开发中起作用以及可以进一步改进的内容为了更好地支持Android开发还没有得到明确。为了理解现实,我们对主要文献中报道的当前代码推荐技术和工具进行了定性评估。收集的工作首先根据多维框架分为三类。然后进行审查以在满足特定开发要求时绘制在Android开发中采用推荐的综合图像。根据审核,我们从两个方面给出了代码推荐的可能改进。首先,提出一组改进建议以增强最先进的代码推荐技术的能力。其次,提出了一个可定制的工具框架,以促进代码推荐工具的设计,并且工具框架能够更容易地集成推荐功能。

关键词:Android; 代码推荐; 代码搜索; 代码建议; 代码完成; 代码生成;

1简介

Android作为最受欢迎的移动平台,吸引了大量开发人员为其生态系统构建各种应用程序。然而,随着移动应用程序开发人口的增长,开发人员的平均体验水平正在下降1)。自Android应用程序开发以来它的特定框架及其特性总是基于模式的,特别是新手开发人员通常需要IDE(集成开发环境)对特定功能(如程序结构和API(应用程序编程接口))的实现提供各种支持。

代码推荐是现代IDE通常提供的最流行的功能之一。它通过为其任务提供建议来帮助开发人员提高编程效率,例如,接下来要调用哪种API方法,或者可以引用哪些示例代码除了IDE功能外,研究还提出了各种推荐方法和原型工具。但是,代码推荐如何在Android开发中发挥作用,哪些可以进一步改进以更好地支持Android开发尚未阐明。

为了理解现实并全面了解代码推荐在Android开发中的工作原理,我们对主要文献中报道的当前代码推荐技术和工具进行了定性评估。文献中收集的工作首先分为三类。多维框架,然后审查是针对具体的推荐要求。审查结果表明,目前的代码推荐技术能够在不同程度上达到推荐要求,但仍需要改进。因此,我们进一步从两个方面给出了代码推荐的可能改进。首先,提出了一系列改进建议,总结了未来的几个研究方向,以减轻缺陷,提高当前代码推荐技术的能力。第二,为了便于未来代码推荐工具的设计和开发。 ,我们p ropose是一个可定制的工具框架,涵盖了不同的代码推荐功能。因此,Toolsmith能够通过根据特定需求定制框架来推导工具体系结构。

本文主要从引入可定制工具框架的角度扩展了我们早期的工作[1]。提出了框架,以丰富对Android开发代码推荐的改进建议。

本文的贡献概括在以下三个方面。

·首先,我们为最先进的技术和工具提供多维代码推荐分类框架。

·其次,我们进行定性研究,并总结推荐技术对一系列需求情景的益处和不足。

·第三,我们提出了一个可定制的工具框架,以便于设计未来的代码推荐工具。

本文的其余部分安排如下:第2节介绍了多维分类框架以及文献中报告的代码推荐技术和工具的分类。第3节介绍了定性审查,其过程包括提取代码建议要求和评估第4节介绍了最先进的代码推荐技术的可能改进和研究方向,第5节给出了可定制的工具框架,以便于设计未来的推荐工具。最后,第6节介绍了结论以及未来的工作。

2概述

代码搜索,代码建议,代码完成和代码生成被用作现有文献或工具中的相关术语。我们采用这些术语作为紧密相关的关键词来收集主要软件工程会议和期刊中的一组出版物。在本节中,多维首先提出了分类框架,用于表征所收集出版物的机制。此外,从推荐方案的角度将相关技术和工具进一步分为三类。

2.1多维分类框架

框架如图1所示。它由六个维度组成,每个维度解释了推荐机制的特定特征。

(1)Scope.parameter,方法,API用法和片段是具有不同粒度的范围,可以通过推荐机制导出。

  1. 目标。维度表示建议采用时的目标。定义了四个目标。通过构建用户参与的查询语句,搜索有助于获取相关的编程辅助资源。提供用户编码建议,包括样本代码和设计。通过考虑编程上下文的解决方案。完成能够识别用户的输入行为并填写完整的程序元素,特别是当他不确定元素的名称时。另一方面,生成有助于构建一个或一个一组程序句子,并通过分析编程上下文将它们填充到必要的位置。

(3)上下文。维度表示为了得到准确的推荐结果而收集和分析的工件。查询,语句,方法体,类体和项目工件是上下文的五个定义组。第一组上下文表示开发人员搜索编程建议的查询语句。语句总是以自然语言或句子模板形成。其余组对应于工件的不同粒度,可以是单个代码语句,甚至是整个项目的工件。特别是,Android项目工件包括特定于Android的资源,例如除程序代码之外的布局和清单文件。

(4)技术。这个维度的不同基础技术可以产生可比较的推荐质量。我们简单地解释了文献中常用的技术.static-info是基于编程语言语法和推荐结果给出推荐结果的技术之一。静态类型系统。启发式规则是通过基于当前上下文计算预定义规则来推导建议的技术。数据挖掘和机器学习是从大规模挖掘重新发生的编程模式的流行技术。基于所收集的知识,他们能够在类似的编程环境中提供合适的模式。除了上述技术之外,还存在其他技术来表明它们在代码推荐中的有效性。我们将这些技术分组。其他类别的技术。协同过滤[2],手动资源集合和传统的静态和动态程序分析是文献中采用的典型技术。

(5)依赖资源。这个维度是指推荐结果的来源,即从合成建议的资源范围。我们确定了三类依赖资源,即语法,组织资源和Web资源。语法表示静态类型可以在语言级别上导出对象实例的可用API方法。组织资源包括组织实现的所有项目中的工件,而Web资源表示Git Hub等在线存储库。

  1. 交互。维度表示需要推荐时的用户交互模式。我们根据推荐的触发时间识别两类交互.userrequest是一种主动交互模式,用户通过键入特定字符触发推荐或者点击特定按钮。相反,从用户的角度来看,即时推荐是一种被动模式。在这种情况下,一旦机制决定通过不断分析用户的编程上下文来触发推荐,就会被动地提供建议。

2.2推荐类别

分类框架的维度表明了建立推荐机制的重要因素。在这些因素中,最终用户可以看到一些因素,包括范围,目标,依赖资源和交互。这些因素区分了相应的工具,以便Android开发人员可以轻松实现识别并选择合适的工具。其他是潜在的技术和背景,可以区分推荐质量,但开发人员可能无法清楚地理解。在本文中,从Android开发人员如何预测推荐以及他们如何采用它们的角度来看,我们定义以下三个类别。

·代码搜索。搜索是一种特殊的推荐类型,因为它可以独立于IDE的编程上下文执行。现在几乎所有开发人员都习惯于在公共代码存储库中提交查询,例如Git Hub或在线搜索引擎,例如Google此外,现代IDE中还有搜索引擎嵌入式插件,有助于加快搜索过程。

·基本推荐。此类别提供了所有现代IDE配备的基本推荐功能。这些功能得到了所有开发人员的认可,并且开发人员已经便于快速完成API方法,例如通过在对象后键入“后”在这种情况下,用户阅读列表中一般组织的推荐结果,并决定遵循哪些。在技术方面,基本推荐机制主要依赖于Android应用的静态信息。

·高级推荐。其余推荐机制分为此类。与基本建议不同,高级推荐机制采用先进技术而非静态信息。采用数据挖掘和机器学习等技术计算和从大规模资源中获取建议通常优于基本建议。因此,代码完成和代码生成的目标可以通过机制来满足。

根据类别定义,我们收集的文献中的方法和工具已分配在表1中。

在列出的机制中,存在有助于Android编程推荐的方法或工具。例如,Param Harver [11]能够从Android应用程序中提取参数,并且可以作为类似程序句子中的推荐将参数值提供给用户。提出的方法通过Raychev等[12]将大量Android应用程序的方法调用序列索引到统计语言模型中。相应的机制然后采用语言模型来预测和生成最有可能的带孔程序的调用序列.Droid Assist [引入基于隐马尔可夫模型的Android API用法。该方法能够为下一个方法调用以及更合适的方法序列提供建议。此外,他们还提出了另一种方法来训练API使用的统计,生成模型。字节码[22]。码完成系统可以依靠模型来导出可能的方法调用。

3定性审查

本节描述了定性审查的过程。受邀工程师进行了审查,以评估三个建议类别对一组典型建议要求的有效性。

3.1建议要求

在Android开发人员可能需要完成其任务的场景中解释了建议要求。四个场景被描述为基本预期或复杂需求。

R1:即时建议和完成。这种情况发生在开发人员不知道参数名称或API方法来完成一个句子,或者甚至不知道在下一步中要编码什么时。例如,当开发人员需要决定时他正在调用的方法的正确实际参数,可以快速推荐事先声明的变量或常量。此外,当开发人员想要决定随后应该调用对象的哪个方法时,可用的方法或者需要推荐符合上下文的预测值。

R2:程序参考。开发人员可能希望获得他们可以参考的程序代码或片段以实现功能特性。需求的一个场景是学习特定API的使用。在这种情况下,使用模式,即,可以遵循API的方法调用序列。此外,还可以模仿包含API方法调用的示例代码。另一种情况是学习如何从一组Android应用程序实现涉及不同API方法的特征。这些方法调用组成了可以推荐给开发人员的编程约定。

R3:第三方库推荐。开发人员总是采用第三方库来实现除官方Android SDK之外具有更多吸引人功能的应用程序,他们通常花费大量时间寻找预期的库并学习如何使用它们。这些库是由可以从公共存储库获得的活动开发者。在这种需求场景中,非常需要根据上下文和期望自动推荐第三方库。

R4:与SDK版本相关的API建议。随着Android SDK的快速发展,不可避免地存在更改,弃用和新引入的API。由于不稳定性和API突破性变化,不能确保向后兼容性支持的API通常很难使用可以进一步在客户端代码中引入错误[23,24]。在此推荐要求场景中,开发人员会收到有关在指定Android SDK版本时使用的正确API的通知。在这种情况下,可以确保API的向后兼容性使用错误可以避免。

3.2审查过程

审核过程设计为半正式会议,依赖于利益相关者对不同推荐方案的不同代码推荐技术进行综合评估。评估结果由明星评分。三星是满分,表示完整相反,没有明星表示对建议的不满意或对机制的采用毫无意义。根据这一原则,我们邀请了八名工程师,涵盖初级工程师和两名协作软件公司的高级工程师。所有工程师都有在Android Studio或Eclipse ADT上开发Android应用程序的经验。会议分四个阶段进行。首先,我们向工程师介绍了四个选定的要求。第二,我们解释了代码推荐类别包括工程师的典型技术和工具。在每个catego通过简单的推荐演示来说明其工具可以下载和安装的一些技术。在理论层面解释了其他技术,并且预期的推荐结果得到了重点。第三,每个工程师都被邀请在每个推荐上给出他的分数。分别针对推荐要求的类别。在明星得分的哪一方面,他还需要提出给出分数的原因。例如,如果推荐机制被认为部分满足要求,他可以给出两星级第四,我们收集了所有得分,并综合了最终的审核结果。在这个阶段,如果推荐类别的评估结果不同,那么开发人员给出的建议理由进行了审查和讨论。为了避免无休止的争论,当工程师在十分钟内无法达成协议我们将超过六名工程师给出的分数作为最终决定。如果没有一个分数符合标准,则选择最低分数作为最终分数。

3.3审查结果

表2说明了针对四个要求的综合定性审查结果。

对于第一个推荐要求,代码搜索类别的机制被认为是没有意义的,因为推荐结果的粒度太小而不值得从工程师的观点进行搜索。基本建议同意为工程师提供最基本的支持。参数或方法当工程师需要完成一个句子时,可立即列出可根据静态类型系统传输或调用的内容。例如,Eclipse等IDE可以通过匹配可用变量和可用变量之间的参数类型来建议参数。需要正式的论证。高级推荐被认为是完全满意。这类机制旨在从大量现有的应用程序中学习,以收集可以提供给开发人员的可重用知识[11,12]。工程师认为他们可以与机械相比,有助于减少推荐列表的大小主流IDE的无主论。

对于程序参考的推荐要求,代码搜索和高级推荐被认为具有良好的支持,而基本推荐被认为不适用.Droid Assist [19]等高级推荐机制能够从现有应用程序中提取API使用模式,因此认为非常适用于API学习场景。码搜索允许工程师构建查询以相对地获得参考程序。尽管搜索结果可能是多样的并且需要进一步过滤,但该类别在提供广泛结果方面具有优势。例如,Thung等人[3]提出了一种通过比较请求的纹理描述和学习API方法的纹理描述来推荐A​​PI方法的方法。此外,Deep API [6]旨在为一个API调用序列进行推导。给出自然语言查询。基本机制是理解基于神经元的查询的语义l语言模型可以提高推荐质量。但是,这两类推荐难以获得工程师指出的涉及几个类的参考程序。例如,拖放是一个广泛使用的UI相关要实现该功能,开发人员通常会在单独的源文件中编写拖动视图和拖放视图,并为两个视图分配侦听器。当工程师需要推荐拖放功能时,代码搜索方法和高级类别可以从其中一个视图类派生结果。然后,工程师必须花费额外的努力才能找到完整的参考程序。

对于第三方库推荐的要求,工程师认为代码搜索可以提供可接受的支持,而高级推荐表现更好。但是,基本推荐被认为不包含有关第三方库的知识,因此无法采用相关机制来查找例如,Action Bar-Pull To Refresh是一个可以从Git Hub获得的库。开发人员很容易通过在代码搜索引擎中使用关键字pull to refres

全文共11855字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[482]

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。