英语原文共 17 页,剩余内容已隐藏,支付完成后下载完整资料
Android应用的配置改变和采用的实证研究
Ajay Kumar Jha,Sunghee Lee, Woo Jin Leelowast;
School of Computer Science amp; Engineering, Kyungpook National University, Daegu, Republic of Korea
摘要
Android平台发展非常迅速。因此,Android应用的维护和演变是开发者最主要担心的。每一个应用基本的组分是Android中用来声明许多关键属性的配置文件。这份报告提出一个理解当配置改变时应用的演变的实证研究。这项研究的成果将帮助开发者辨认改变倾向属性,包括改变模式和导致改变的原因,理解在不同版本的Android平台采用不同的属性,了解配置改变的工作分配模式并采用主动措施来减少工作量。在这份报告中,我们使用一个数据挖掘方法。我们分析了908个应用的Android清单文件的提交历史,来了解应用的演变。研究结果表明,随着时间的推移大多数的应用扩展了核心功能和改善了用户界面,配置的改变主要受到功能扩展、平台演变和错误报告的影响很少有已存在的应用采用平台导入新的属性,应用采用新的属性都很慢,最费劲的是在配置改变后恢复更改上浪费时间。
关键词:Android应用演变;应用维护;配置更改;工作量估算;权限演变
- 绪论
Android是最受欢迎的移动应用平台,在Google Play 商店中有超过2,500,000个app可供下载(AppBrain,2018)。Android平台发展迅速。在很短的时间内发展到了API 28(SDK Platform release notes,2018)。应用开发者主要的挑战是在发展非常快的环境中用及时的方式去采用平台引入的更改(Joorabchi et al.,2013);否则,应用可能存在严重的质量、可靠性或隐私问题。例如,Android引入了从API 23开始的自动备份的功能,在默认情况下自动备份用户数据导致隐私问题(Panda,2016,XDA Developers 2015)。开发者不得不明确禁用Android清单文件的特征来停止自动备份。然而,一个研究表明(McDonnell et al.,2013),Android API演变和采用它的应用显示这些应用没有跟上API的演变。相似地,Li等.(2018a)发现大多数不受欢迎的API仍然是通过应用的代码流行的库来访问的。此外,一个关于Android应用中设计模式改变的研究(Alharbi and Yeh,2015)表明,新引入设计模式的采用率相对低。在快速变化的环境中另一个主要的挑战是发布周期短。虽然经常更新的应用按照用户排名(Mcllroy等,2016),且对在应用商店中的排名有好处(Lim和Bentley,2013; Lynch,2012),发布周期短可能会影响到开发者适当规划应用发布额外的功能。例如,许多应用的组件(活动,服务,接收方,和提供方)用于实现应用功能添加后将立即被删除,结果浪费了精力。应用功能的持续变化可能会导致应用的质量变差(Hecht et al.,2015),特别是开发者没有跟随应用合理框架的演化策略。一项研究表明(Mcllroy et al.,2016)特征和功能性是频繁更新应用背后的主要原因之一。此外,移动应用的需求总是随时间而快速改变(Joorabchi等,2013)。因此,对开发者来说,应用的维护是一项艰巨的任务(Minelli和lanza,2013)。此外,尽管最新发展的移动应用开发过程(Jabangwe等,2018),尤其是基于敏捷开发(Flora等,2014a),Android应用开发者几乎不使用任何标准的应用开发过程(Inukollu等,2014;Dehlinger和Dixon,2011;Wasserman,2010;Jabangwe等,2018; Syer等,2013)。他们经常依靠历史证据中出现的最佳实践(Wasserman,2010;Flora等,2014b)。尽管Android文档提供了一些应用开发的最佳实践(最佳实践,2018),开发者必须在很大程度上依靠开发人员的讨论论坛(例如Stack Overflow)来获得关键见解(Rosen等Shihab,2016;Linares-Vaacute;squez等,2013a; Beyer和Pinzger,2014; Guerrouj等,2015)。因此,开发者需要知道应用演化模式,来主动解决快速发展带来的各种应用维护挑战环境。一些研究人员研究了Android应用的发展。但是,他们的研究主题在很大程度上局限于API的发展和对Android应用的影响(McDoonnell等,2013;LinaresVasquez等,2013;Li等,2016;Li等,2018a)和权限的演变及使用(Wei等,2012;Taylor和Martiniovic,2017;Calciati和Gorla,2017)。研究人员给出API发展是非常重要的结论,因为滥用API可能会导致严重的可靠性和兼容性问题(Jha等,2019;Fan等,2018;Li等,2018b;He等,2018)。研究人员还很重视权限的演化,因为这是用来实现应用的安全(Enck等,2011),这是应用的主要问题之一,也是用户和开发者最主要考虑的事情(Rakestraw等,2013;Jha和Lee,2016)。此外,它经历了几项重大更改,包括从安装时权限到运行时权限的迁移(权限概述,2018年)。除权限外,Android清单文件(App Manifest概述,2018)用于声明应用的各种关键属性,例如组件,应用导航和设备方向(App Manifest Elements,2018)。在应用演变的下,这些属性具有尽管有一些事实这些属性代表了Android的核心功能应用。此外,自Android平台推出以来,Android清单文件中引入了新属性。这些变化对应用的影响尚未确定。总体而言,进行这项研究的主要动机是获得关键有关应用维护和演进模式的见解,通过采取积极措施,帮助从业人员改善应用开发活动。而且,这项研究的结果是对于应用方向的未来研究贡献很有价值。在本文中,我们提出了一项了解App的实证研究通过配置更改而发展。该配置代表Android中声明的各种元素和属性清单文件(App Manifest Elements,2018),包括应用权限。我们分析了908个Android清单文件的提交历史,免费和开源的Android应用,以调查与应用维护和演进相关的各种问题。具体来说,我们调查频繁更改的属性以及更改的原因,采用Android平台引入的不同属性,以及开发者在配置更改中的工作量分配。尽管受Android清单文件中声明的属性限制,但该研究提供了有关整体应用演变的关键见解和维护。这项研究在选择Android应用的回归测试中也可以发挥重要作用(Do等,2016;Li等,2017; Chang等,2018)。现有研究(Kim和Porter,2002;Li等,2007;Saha等,2015)表明根据历史数据进行测试选择非常有效。据我们所知,这是第一项对Android中的配置更改进行了定量分析应用的实证研究。本文的主要贡献可以概括为如下:
- 通过挖掘908个Android清单文件的提交历史记录以及免费和开源的Android应用对配置更改进行大规模的经验研究。
- 对Android清单文件的12,341次提交历史进行定量分析,以:
1. 确定变更倾向属性及其背后的原因改变。结果表明,大多数应用都可以扩展核心功能,且随着时间的推移改善用户界面。这些更改主要受功能扩展,平台演变和错误报告的影响。
2. 了解在不同版本的Android平台中采用的不同属性。结果显示现有应用采用新引入的属性或元素非常低。结果还表明采用延迟时间显着高。但是,随着时间的流逝,它正在减少。
3. 了解开发者在配置中的工作分配变化。结果表明,浪费了大量精力更改配置,然后还原更改。
本文其余部分安排如下。第2节介绍通过提供Android应用中的配置改变的背景、Android清单文件的概述和定义概念本文使用的配置更改。第3节介绍相关作品。第4节介绍了研究设计,包括获取数据集和分析提交历史的方法。第5节介绍了配置更改的经验结果。实证结果将在第6节中讨论,而可能影响报告结果的有效性,在第7节,最后,本文在第8节结束。
- android应用中配置改变的背景
本节概述了Android清单文件(App Manifest Overview,2018)且定义了本文使用的配置更改的概念。
2.1 Android清单文件概述
每个应用都有一个Android清单文件(App Manifest Overview,2018),该文件由开发者手动地以XML格式编写。开发者在清单文件中声明大量的元素和属性来描述
应用相关信息。清单文件中的信息不仅被应用运行的环境使用,而且也被外部实体使用,比如Google Play。在清单文件声明的许多元素和属性中,本节讨论一些关键的元素和属性。感兴趣的读者可以在Android文档的Android清单文件中找到所有元素和属性的详细描述(App Manifest Elements,2018)。图一是OpenSudoku应用的Android清单文件的真实例子。
组件是Android应用的基础组成。Android应用的特征和功能是通过组件来实现的。应用的构建使用4种类型的组件:活动,服务,广播接收方,和内容提供方,这些组件在Android清单文件中声明时分别用lt;activitygt;,lt;servicegt;,lt;receivergt;,和lt;providergt;元素。系统可以启动应用的组件,且组件必须在清单文件中声明。如图一所示,OpenSudoku应用的组件使用了10个Activity组件。在Android应用中不同种类的组件有不同的功能。活动代表单个用户的屏幕,服务是用来处理长时间运行的任务,广播接收方处理广播事件,内容提供方管理对数据的访问。组件的性质可以用组件元素的属性来声明。例如,每个组件都必须有名字属性。name属性的值代表了实现这个组件在类中的名字。此外,通过在lt;Activitygt;元素中声明screenOrientation属性,Activity组件支持各种设备方向,例如横向和纵向。除了通过定义每个组件的属性作为组件元素,开发者使用Android清单文件的各种元素和属性来定义几个应用属性,主要是通过lt;manifestgt;和lt;applicationgt;元素。每个应用都必须在清单文件中定义一个包的名称,通常用作系统和Google Play上的唯一应用标识符。例如,OpenSudoku应用具有在lt;manifestgt;元素中声明的程序包名称“cz.romario.opensudoku”。可以为组件定义一些属性应用,如图标,主题和导航。图标代表了应用图标以及每个组件的默认图标。主题是一种样式类型,适用于整个应用或一项活动。导航属性定义用户如何在屏幕或活动之间导航。可以为组件和应用定义一些其他属性(应用清单元素,2018)。安全性是Android应用的重要方面。Android用途基于权限的安全性(权限概述,2018;Jha和Lee。2016)。权限用于保护敏感的系统和应用资源。他们被定义和声明,并通过Android清单文件的各种元素和属性来实施。比如位置这类敏感系统资源是受预定义的系统权限保护;而敏感应用资源通过在Android清单文件的lt;permissiongt;定义系统权限。想要访问受到保护的系统或应用资源的应用时必须通过lt;user-permissiongt;或lt;usespermission-sdk-23gt;在清单文件中声明权限。例如,OpenSudoku应用确实没有定义任何自定义权限。但他分别使用Internet和WRITE_EXTERNAL_STORAGE系统访问互联网的权限和外部存储介质。Android清单文件的重要性可以通过其包含的信息类型来感知。除了主题和图标等质量属性外,Android清单文件还包含核心功能属性和安全性属性。应用名称,主题和图标等质量属性是影响用户选择应用的关键原因(Lim等,2015)。因此,对Android清单文件的研究可以揭示Android应用的几个关键方面。在研究中我们分析了Android清单文件的提交历史,来了解元素及其所代表的Android应用的属性如何随时间变化而变化。例如,如果将活动,服务,广播接收方,内容提供方之类的组件添加到Android清单文件中并提交,我们能够证明应用的功能被扩展。同样地,如果删除组件,我们记录该功能已被应用移除。
2.2配置更改
术语“配置”可广泛用于自定义和使应用以及执行环境适应用户的要求和背景(Sayagh等,2018)。此外,如Sayagh等人所述(2018),应用的配置选项对应于一个键值对,其中键代表配置选项的名称,其值代表
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[254232],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。