英语原文共 18 页,剩余内容已隐藏,支付完成后下载完整资料
信息和软件技术107(2019)30-47
目录可在ScienceDirect获得
信息和软件技术
期刊主页:www.lesvier.com/find/infsof
用于事件驱动的android应用程序开发的api建议
袁卫照a,b, Hoang H. Nguyen b, 江凌晓 b,lowast;, 陈玉婷 a,lowast;, 赵建军 c,lowast;,
于海波 d,lowast;
a 上海交通大学计算机科学与工程系
b 新加坡管理大学信息系统学院
c日本九州大学信息科学及电气工程系
d 上海交通大学软件学院
文章信息
关键字:
Android编程事件回调
代码搜索
API推荐信息检索抽象
背景:软件开发越来越依赖于现有的库。开发人员需要帮助保持适当的库API。虽然已经提出了许多研究来推荐相关的功能, 可以调用用于实现功能的区域API,很少研究已经注意到与事件驱动编程框架(如Android框架)相关联的正交需求 。除了调用FunctionalAPI之外,Android开发人员还需要知道如何根据框架内可能触发的各种事件将功能代码放在哪里。
目的:本文旨在开发一个用于android应用程序开发的api推荐引擎,该引擎可以同时推荐(1)实现功能的函数api和(2)事件c。 要重写以包含函数代码的Allback API。
方法:从StackOverflow到con-fiRM对实际的Android程序问题进行实证研究,以满足推荐回调的需要。然后,我们构建android-specific api数据库到contai。 n各种功能和api之间的相关关系,基于对代码片段的自定义解析和android教程和sdk文档中文本的自然语言处理,然后是文本。 UAL和代码相似性度量被用来推荐相关的API。
结果:我们已经评估了我们的原型推荐引擎,名为Library aryGuru,使用了StackOverflow关于android编程的大约1500个问题,并演示了我们在rec上的前5名结果。 对回调和函数API的估计精度分别达到43.5%和50.9%,平均精度(MAP)分别达到24.6%和32.5%,平均精度分别达到51.1%和44.0%。 召回率分别为%。结论:我们认为,在android应用程序开发中同时推荐功能api和回调是非常重要和可能的,还需要今后的工作。 考虑到更多的数据来源,以便为开发人员的需求提出更相关的建议。
介绍
现在的软件开发经常需要利用现有的li-brals。开发人员,特别是那些刚接触开发环境的开发人员,在学习开发环境的功能方面经常需要帮助。 环境-熟悉环境中提供的API,使它们能够根据需要实现功能。一个例子是用于android应用程序的开发。 在这里,开发人员通常需要遵守fic 框架设置,并在android中使用fic API来实现其应用程序的功能。Android应用程序开发人员不仅需要知道可用于实现各种功能的api(我们称之为Functionalapi),还需要了解事件回调api。 AndroidNed和fi可以被开发人员重写,以定制和扩展Android框架的默认行为,我们称之为事件回调或简单的回调。功能API 告诉开发人员如何实现功能,而回调则告诉开发人员将实现代码放在哪里。这两种api对于实现功能都是非常重要的。 正确地说,特别是对于事件驱动的编程框架,例如android,在这种情况下,没有向开发人员显式地显示flOWS或API之间的调用关系。
lowast;相应作者。
电子邮件地址:weizhaoy@163.com(W.原)、mr.erichoang@gmail.com(H.Nguyen)、lx江@smu.edu.sg(L.蒋)、chenyt@cs.sjtu.edu.cn(Y.Chen)、赵@ait.kyju-acu-.jp(J.赵)Haibo_Yu@sjtu.ed u.cn (H. Yu).
https://doi.org/10.1016/j.infsof.2018.10.010
2018年3月31日收到;2018年10月22日修订本收到;2018年10月22日接受
2018年10月23日在线提供
0950-5849/copy;2018ElsevierB.V.AllRightsReserved.
图1.示例功能API和回调.
为了说明函数API和回调API之间的diff之间的关系,图1显示了用于创建模拟火箭发射的android应用程序中的代码片段。代码i的主要目的 S建造Android窗口(通过扩展Android的活动类)。当Android系统执行应用程序时,它隐式地调用onCreate,这是Android框架的应用程序生命周期事件回调之一,当应用程序处于不同的状态时,框架会调用这些回调。应用程序开发人员无法控制 可以调用回调,但它们可以释放fine并控制内部执行的内容。回调。在这个例子中,onCreate的主体装载一个火箭火箭运动快照的图像和序列(通过调用FindViewById、SetBackground资源和getBackground),当用户点击火箭图像时,它开始播放模拟火箭发射的快照序列(通过发出声音的火箭动画。开始)。开发人员需要调用setOnClickListener来告诉框架监视单击操作,但是在链接Click-Event回调函数的代码中没有显式控制OW,然后单击代码的其他部分。所以,回调(例如,onCreate和onClick)实际上是一种控制反转,其中控件(即调用函数)掌握在Android框架中,而不是应用程序代码。 功能API的控制掌握在应用程序代码的手中。函数api可以被调用以提供specific 功能,而回调可以被重写以包含任何 功能。适当地同时使用回调和函数API是实现运行良好的Android应用程序所必需的。
在根据某些功能要求编写代码时(例如,[1-4]),在向开发人员推荐相关的库和API时,已经进行了许多研究。一些研究也是“N”。 d或生成示例代码,告诉开发人员如何使用(即调用)API(例如,[4-12])。然而,据我们所知,这些研究主要集中在推荐可以调用的功能api上。 被队员们所ED。很少的研究已经注意到REC-OMM修补回调的正交需要,这些回调可从编程框架-Works中获得,并且可以被开发人员覆盖。这样的A 当在事件驱动编程(如Android框架)中构建应用程序时,需要非常常见。在不考虑OWS的隐式控制和VAR之间的呼叫关系的情况下 ious事件回调API、推荐的功能API和生成的示例API开发人员可能无法完全理解或重用使用。
基于我们从StackOverflow(Cf)收集的与Android开发相关的抽样问题的实证研究。(第二节),大约3%的问题直接询问有关依赖的情况。 在回调方面,除了调用FunctionalAPI之外,总体上大约35%的问题和答案涉及覆盖回调。
为了满足android应用程序开发对函数api和回调的双重需求,本文提出了一个适用于fi的api推荐引擎,它可以同时推荐以下两种api:(1)函数api 实现特性要求和(2)适合于重写的回调以包含函数代码。因此,我们的目标是解决Android应用程序开发人员的共同需求: 实现这个功能的地方。
API推荐引擎的一个关键组件依赖于对功能API和回调的描述内容的发现。实际的技术基于android-speciferc解析。 适用于Androiddeveloper1的公共培训教程和SDK文档中获得的文本描述的代码片段和自然语言处理。1我们的引擎建议适用 基于
自然语言中的描述和开发人员查询之间的相似性度量是一种类似于其他许多信息检索和代码搜索研究的方法。
我们已经实现了一个名为Library Guru2的推荐引擎原型。我们已经评估了原型在实际的Android开发问题上的推荐结果。 m StackOverflow.尽管StackOverfl上的许多问题都得到了答案,但我们并不使用这些答案来构建非划线数据库,以便演示我们的技术能力。 更清晰地推荐API,而不需要历史上正确回答问题的fits。我们对大约1500个问题的评估表明,我们的原型可以重现。 功能api和回调都有很好的效果:推荐适当回调和相关功能api的前5名结果在精度上分别可达到43.5%和50.9%。 平均精度(MAP)得分分别为24.6%和32.5%。虽然我们收集到的数据和我们在本文中构建的工具都是用于android应用程序开发的。 在Java中,通过发现函数、回调api和文本描述之间的相关性来促进api推荐的想法,可能会适用于其他事件驱动的编程框架。 eworks、语言、库和API(例如,在Object-C和SWIFT中构建iOS应用程序,用JavaScript中的AngularJS构建前端Web应用程序,或者用Visualc和C#编写Windows应用程序), 如果相应地替换了已处理的API数据库,则该工具也可用于推荐其他库和API。
1 https://developer.android.com/.
2 可在http://libraryguru.info进行测试。
图22。SAME:STRKW.14292.98。
本文件是对ICSE 2018[13]的前2页海报文件的扩展,其主要贡献如下:
我们经验地确定了Android应用程序开发人员在开发过程中需要找到合适的回调来覆盖。
我们构建了android-specific api描述数据库,显示了android中各种功能和api之间的相关性,从而支持了对函数api和ca的建议。 rollbacks反转,压价( rollback的名词复数 )
我们对我们的工具进行了评估,该工具涉及从StackOverlowow收集的android编程有关的大约1500个问题,并显示我们的技术-API建议特别是回调的技术是Promis- ing.
论文的其余部分组织如下。第二节描述了我们对StackOverflow问题的实证调查,并使用一个考试程序来激励我们的研究。第三节将我们的研究与穆文联系起来。 在代码搜索和推荐方面的相关工作。第四节详细介绍了我们的技术。第五节介绍了我们对StackOverfl低问题的评估结果,并对其进行了讨论。 这是我们的局限。第六节结束了今后的工作。
动机
本节根据stackOverflow上的问题和答案进行了一项简单的实证研究,以说明android应用程序开发人员在函数和回调api恢复方面需要帮助的频率。 曼达-条件。
-
- 需求
StackOverflow是一个讨论平台,开发人员可以在这个平台上传授编程技能和软件工程任务。它允许用户提问和回答问题。因此,其投票机制i SM用于区分好或坏的问题或答案。用户可以投票给他们喜欢的帖子,也可以投票给他们不喜欢的帖子。此外,标记还用于将问题组织为 Diff传入性话题。用户需要在每个问题上至少附加一个标签,并附加到fi的Ve标签上。例如,图2显示了一个样本问题的投票和标签。这个特殊问题的标签是“andro”。 ID、“android-Activity”、“父-子”和“PASS-data”;这很可能是一个经常出现的问题,因为它是由122个用户投票,由48个用户主演(如左边o的数字所示)。 F the gure).
截至2017年8月,StackOverflow超过了1400万个典型的子主题,涉及“意图”、“旋转”、“活动”、“数据库”、“stor-age”、“异步任务”、“对话框”、“连接”、“位置”等。
StackOverflow提供了用于检索以JSON格式编码的问题和答案的API。我们按照API的限制从StackOverfl中检索大约60个问题,并且r 多次查询。由于API可能会为不同的查询返回许多相同的问题,所以我们通过惟一的问题ID删除重复的问题。而且,许多问题没有答案,也没有问题的答案。 OTES;或者,当一个问题有答案时,没有人投票-投票给任何答案;或者,答案没有提到任何AndroidAPI。我们fi不回答这些问题,因为它们的答案不够有力。 用于评估我们的API推荐引擎生成的结果。最后,收集了1531个带有“Android”标签的问题。
我们注意到,大约35%(540)的问题有一个或多个包含回调事件名称的答案(例如,onClick、doInBackplace等)。在这些问题中,大约有50个显式询问何时或何处实现与事件回调相关的功能。
我们意识到,许多开发人员,特别是新开发人员,倾向
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[20070],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、文献综述、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。