Android 开发的代码推荐:它是如何工作的以及可以改进的地方?外文翻译资料

 2023-03-15 04:03

Android 开发的代码推荐:它是如何工作的以及可以改进的地方?

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

  1. 引言

Android作为最受欢迎的移动平台,吸引了大量的开发者为其生态系统构建各种应用。然而,随着移动应用程序开发1)人口的增长,开发人员的平均经验水平正在下降。由于 Android 应用程序是在其特定的框架上开发的,并且它们的功能总是基于模式,特别是新手开发人员,通常需要 IDE(集成开发环境)对特定功能的实现提供各种支持,例如程序结构和 API(应用程序编程接口)。代码推荐一直是现代 IDE 通常提供的最受欢迎的功能之一。它通过为开发人员的任务提供建议来帮助开发人员提高编程效率,例如,下一步调用哪个API方法,或者可以引用哪些示例代码。除了 IDE 功能外,研究人员还在文献中提出了多种推荐方法和原型工具。但是,代码推荐如何在 Android 开发中发挥作用,以及可以进一步改进哪些内容以更好地支持 Android 开发尚未明确。

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

本文主要从引入可定制工具框架方面扩展了我们早期的工作[1]。提出该框架是为了丰富对代码推荐的改进建议Android 开发的修正。

本文的贡献总结为以下三个方面。

  • 首先,我们为最先进的技术和工具提供了一个多维代码推荐分类框架。
  • 其次,我们进行了定性研究并总结了推荐技术对一组需求场景的优缺点。
  • 第三,我们提出了一个可定制的工具框架,以促进未来代码推荐工具的设计。

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

  1. 概述

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

2.1多维分类框架

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

范围。参数、方法、API 用法和片段是可以通过推荐机制派生的具有不同粒度的范围。

客观的。该维度表示建议被采纳时的目标。定义了四个目标。搜索通过构造符合用户预期的查询语句,帮助获取相关的编程助手资源。建议通过考虑编程上下文为用户提供涵盖示例代码和设计解决方案的编码建议。完成能够识别用户的打字行为并填写完整的程序元素,尤其是当他不确定元素的名称时。另一方面,生成有助于构建一个或一组程序语句,并通过分析编程上下文将它们填充到必要的位置。

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

技术。该维度的不同底层技术可能会导致相当的推荐质量。我们简单地解释了文献中常用的技术。静态信息是基于编程语言语法和静态类型系统给出推荐结果的技术之一。启发式规则是通过基于当前上下文计算预定义规则来得出建议的技术。数据挖掘和机器学习是从大量资源(例如在线网络存储库)中挖掘重复出现的编程模式的流行技术。基于收集到的知识,他们能够在类似的编程环境中提供合适的模式。除了上述技术之外,还有其他技术在代码推荐中显示出它们的有效性。我们将这些技术归为其他类别。协同过滤[2], 人工资源收集和传统的静态和动态程序分析是文献中采用的典型技术。

图 1 多维分类框架

依赖资源。这个维度是指推荐结果的来源,即从什么范围的资源中综合出这些建议。我们确定了三类依赖资源,即语法、组织资源和网络资源。语法表示编程语言的静态类型系统。对象实例的可用 API 方法可以在语言级别上派生。组织资源包括组织实施的所有项目的工件,而 Web 资源表示在线存储库,例如 GitHub。

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

2.2. 推荐类别

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

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

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

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

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

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

  1. 定性审查

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

3.1 推荐要求

表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 应用程序的经验。会议分

剩余内容已隐藏,支付完成后下载完整资料


英语原文共 14 页,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[595953],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

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