英语原文共 4 页,剩余内容已隐藏,支付完成后下载完整资料
GEMMA: 安卓应用中的GUI能耗的多目标优化
Mario Linares-Vaacute;squez1, Carlos Bernal-Caacute;rdenas2, Gabriele Bavota3
Rocco Oliveto4, Massimiliano Di Penta5, Denys Poshyvanyk2
1Universidad de los Andes, Bogotaacute;, Colombia
2The College of William and Mary, Williamsburg, VA, USA
3Universitagrave; della Svizzera italiana, Lugano, Switzerland
4University of Molise, Pesche (IS), Italy
5University of Sannio, Benevento, Italy
摘要——本篇描述了一个工具GEMMA,该工具旨在优化Android应用程序使用的颜色,目的是减少(AM)OLED显示器的能耗,同时保持界面在视觉上对用户的吸引力。 GEMMA已开发为分布式体系结构,以确保可扩展性。 它由基于Web的客户端和能够同时分析多个请求(应用程序)的处理节点组成。 底层方法利用了幂模型,颜色理论和多目标遗传算法。 对GEMMA的经验评估表明,它能够降低能耗,同时为用户提供足够令人愉悦的色彩组合。 此外,与应用程序开发人员进行的定性分析突出了该工具在工业环境中的潜在适用性。
VIDEO: https://www.youtube.com/watch?v=k-5ReMVwK0c
I.介绍
移动应用程序在人们的日常生活中起着至关重要的作用,由于它们提供的功能,它们对所需的计算资源以及最终对能源的要求越来越高。 减少应用程序的能耗对于延长移动设备的电池使用时间以及避免在需要设备时出现“用完电池”的情况非常重要。 近年来,研究人员研究了能源消耗的主要原因,包括能源错误[1] – [4]能源贪婪的API [5],[6]以及其他方面,例如代码混淆[7] ,添加[8]和HTTP请求的影响[9]。
此外,某些硬件组件在能耗方面也起着重要作用,例如GPS,WiFi,电话模块和设备的显示屏。关于后者,有两种类型的显示器:液晶显示器(LCD),其能耗几乎恒定且不取决于屏幕上显示的颜色;有机发光二极管( OLED)或有源矩阵OLED(AMOLED)显示器,较深的颜色可确保较低的能耗。近年来,一些作者提出了在OLED显示器上运行时为Web应用程序[10]和一般移动应用程序[11],[12]优化调色板的方法。尽管这种方法产生了成功减少能耗的解决方案,但是调色板可能不如原始调色板那么有吸引力,并且通常可能会偏离开发商的原始选择。此外,优化过程未考虑应用在使用过程中显示在不同屏幕的时间,并且在同一应用中的多个GUI上不一致。
在本文中,我们描述了GEMMA(用于Android应用程序的Gui能源多目标优化)的体系结构,实现和用法,GEMMA是一种可为Android应用程序生成颜色合成的新颖工具,可减少能耗并在视觉上具有吸引力。 GEMMA基于功率模型,基于像素的工程,颜色理论,动态分析和多目标优化,以产生跨三个不同目标的最优设计解决方案集(即GUI颜色组成):(i)减少能耗;(ii)增加对比度,以及(iii)通过使调色板接近原始调色板来提高所选颜色的吸引力。
在我们的原始研究论文[13]中,该方法被实现为基于Java程序和脚本的基于命令行的管道,该管道在单线程模式下工作。 因此,我们将GEMMA描述为一种分布式的,基于云的体系结构,该体系结构由(i)Web客户端组成,用户可以从Web客户端上传带有需要优化的屏幕的应用程序;(ii)处理其中包含APK的节点。分析后,这些应用将通过系统的探索在一组仿真器上执行,并使用GEMMA的方法对屏幕进行优化; (iii)支持客户端与处理节点之间异步通信的NoSQL引擎。 值得注意的是,GEMMA的体系结构旨在实现水平可伸缩性,并且可以复制处理节点。
II.GEMMA的实现
本节介绍GEMMA的基本方法,体系结构和实施细节。
A.体系结构
图1概述了GEMMA的体系结构。GEMMA由三个主要组件组成:(i)作为Web客户端实现的用户界面,(ii)执行GUI优化请求的执行引擎(EE),以及( iii)NoSQL数据库,用于在Web客户端和EE之间进行异步通信。 GEMMA的体系结构在设计时考虑了以下设计驱动因素:
bull;客户端和处理节点之间的异步和解耦通信。这一点特别重要,因为某些GEMMA任务(例如遗传算法执行)可能会很长且计算量很大。
bull;混合存储策略:用于请求和EE任务的面向文档的NoSQL存储,以及用于客户端的独立关系数据库。由EE生成的图像和文件,随后在客户端中渲染/绘制,都存储在公共Web文件夹中。
bull;通过在数据库级别(由数据库引擎提供)进行群集/分片以及在EE级别进行潜在的负载平衡,实现潜在的水平可扩展性。这两个设计决定都将允许EE的可扩展性。
bull;垂直可伸缩性,由后台线程和仿真器线程池以及任务队列实现。后者用于保留来自客户端的任务请求;
bull;数据隐私:完成优化后,EE不应存储任何有关任务或建议解决方案的信息。
我们决定使用“消息总线”体系结构样式——不依赖于诸如OpenESB [14]之类的总线实现,也不依赖于RabbitMQ [15]之类的消息代理——来实现客户端与EE之间的松散耦合和异步调用,特别是,我们使用NoSQL数据库管理系统CouchDB [16]作为“总线”,其中包含要由EE执行的请求队列,以及具有所有属性和任务的任务集合。MessageBus样式允许将新的客户端和EE轻松添加到整个基础架构中。此外,CouchDB:(i)为我们提供了基于REST的接口,可以轻松地从任何类型的客户端取得连接(即使它没有与特定语言或驱动程序耦合),(ii)以JSON格式存储文档,这在扩展执行引擎以支持更多处理任务时提高了数据模型的自由度,(iii)提供了复制/集群功能水平扩展性;(iv)易于部署在任何操作系统上。
B.GEMMA Web客户端
Android开发人员和GUI设计人员可以通过Web客户端访问GEMMA的功能。 Web客户端的目标是为用户提供一种简便的方法:
(i)请求在EE中执行GEMMA任务,以优化目标应用中GUI的能耗,
(ii)探索GEMMA生成的解决方案的Pareto前沿,并且(iii)可视化,提出的解决方案在节能,对比度方面提高,与原始设计的距离以及调色板方面有差异。请求是描述优化任务的一组属性,例如要分析的APK,任务名称,要分析的GUI数量。因此,Web客户端将优化请求保存为CouchDB引擎中的JSON文档。每个请求的APK通过其“附件”功能[17]存储在CouchDB引擎中,然后,当EE将请求分派给内部工作人员(稍后会有更多详细信息)时,该请求将从CouchDB引擎中删除。 ,并为任务创建一个文档,其中包含在处理过程中生成的所有信息(例如,状态,解决方案,能源改进)。Web客户端按需检查在EE上运行的任务的更新,并本地更新EE的状态。任务完成后,所有任务信息都在本地同步(即复制到本地数据库),并从CouchDB引擎中删除。
就使用的技术和实现细节而言,GEMMA的客户端是一个Java Web应用程序,它依赖于Java Server Faces,Bootstrap和JQuery作为表示层。一旦执行引擎处理了任务的信息,Web客户端将使用本地MySQL数据库来存储任务的信息。数据访问层是使用JPA的EclipseLink实现实现的。表示层和数据访问层之间的通信是通过Servlet,backing bean(JSF)和POJO完成的。
C.GEMMA执行引擎
执行引擎(EE)是GEMMA的核心。 EE负责执行优化任务。特别是,EE:(i)通过使用系统探索自动在虚拟设备上执行APK,类似于先前的工作[18],[19]; (ii)根据用户请求的GUI数量和基于执行时间的试探法(即,根据系统探索期间的访问次数对GUI进行排名)来选择要优化的GUI; (iii)分析选定的快照(即GUI屏幕快照和GUI层次结构树),以标识GUI组件,容器和组件上的显色; (iv)建立执行遗传算法(GA)所需的数据结构[13]; (v)执行多目标GA;最后(vi)将结果保存到CouchDB客户端,并将说明建议的颜色组成的屏幕截图复制到Web客户端可以访问的文件夹中。
请注意,与我们最初的方法[13]相反,在该方法中,用户手动选择要分析的GUI,GEMMA Web会自动检测到显着的GUI。
EE作为Java守护程序运行,该Java守护程序在“总线”中查询请求,然后按照FIFO策略将请求分派给工作人员(即负责运行GEMMA任务的单位)。在分派过程中,EE会验证免费仿真器和后台线程的可用性。如果EE中没有仿真器或线程可用,则调度程序会将任务保持在队列中。否则,将任务分配给需要一个后台线程和一个仿真器的工作程序。一旦分配了任务,仿真器和线程,便开始(异步)运行前面列出的GEMMA任务。在执行期间,工作人员将分配的任务的状态直接更新为“总线”,完成后,在任务文档(在CouchDB引擎中)中更新生成的工件(即解决方案),并且解决方案屏幕快照为复制到公共Web文件夹中。请注意,由于工作人员与Web客户端之间没有同步消息可通知任务完成时间,因此客户端应查询“总线”并同步其本地数据库以反映每个任务生成的响应/结果。工作人员依赖于作者先前开发的用于Android应用程序的静态和动态分析并用于以前的工作中的组件(例如,APK分析器,数据收集器,Emu-droid和GEMMA的优化器)[13],[18] ,[19]。GEMMA的优化器在我们之前的论文[13]中进行了详细描述,它基于多目标GA,即在jMetal库[21]中实现的非支配排序遗传算法II(NSGA-II)[20]。GA生成了解决方案的Pareto前沿,同时优化了以下目标:(i)通过回归模型估算的能耗;(ii)相邻组件之间的对比度(还添加了最小对比度值作为问题约束),以及(iii)颜色相对于原始颜色成分的距离。该算法产生的解决方案将原始颜色,黑色,白色以及可实现等距和声的颜色集考虑为可用颜色。值得注意的是,适应性功能会根据使用场景中显示每个应用程序屏幕快照的估计时间比例来加权每个应用程序屏幕快照的能耗。而且,颜色会不断更改(例如,所有黄色组件都涂成蓝色),以确保目标应用中各个GUI的结果令人愉悦且一致。
III.GEMMA ON ACTION
登录后,用户可以
(i)请求新的GEMMA任务,
(ii)检查她的请求/任务的状态,或(iii)检查为完成的GEMMA任务生成的解决方案。 GEMMA Web客户端具有用于提交新请求的表单,该表单包括(i)“请求”的名称,(ii)应用程序的名称,(iii)要分析的APK,以及(iv)要解析的GUI数量在APK中进行分析。提交请求后,用户可以在GEMMA EE上检查执行状态。图2描绘了GEMMA中用于列出请求的窗口,该窗口将已完成和未完成的任务分组。例如,图2中的请求列表显示,用户“ Carlos Bernal”对应用程序Diabetes Plus,Walmart和Fit Brains Trainer的请求有三个未完成的请求,而对于“学习音乐笔记”的任务已完成。对于未完成的请求,Web客户端显示一个仍在等待调度(即“等待线程”),另一个处于执行模式并运行“系统探索”,最后一个在“运行:遗传算法”上。如果在处理过程中发生错误/异常,则将请求的状态设置为“错误”,并带有指向错误的完整描述的链接。每当用户刷新窗口时,请求列表就会按需更新。
对于完成的任务,GEMMA带有一个指向相应应用程序名称的链接,该链接会指向所生成解决方案的详细信息(仪表板)。图3中描绘的GEMMA仪表板包括以下视觉构件:(i)具有优化解决方案的3D Pareto前图(可导航); (ii)原始设计的调色板和在Pareto前端选择的特定解决方案; (iii)所选溶液的视觉外观图像; (iv)比较解决方案与三个优化目标的原始设计(即能量,GUI组件的总对比度以及与原始设计的距离)的量表样式可视化。 Pareto前端(图4)使用3D空间在x轴上绘制解决方案的能耗,在y轴上绘制对比度,并在z轴上绘制距原始设计的距离。 Pareto正面还使用太阳笔显示原始设计。例如,图4描绘了针对学习音乐笔记应用程序实际执行GEMMA的结果,其中生成了20个解决方案。
当用户将鼠标指针移到Pareto前面的解决方案上时,GEMMA将显示一个上下文窗口(图4),其中列出了解决方案的能耗,对比度和与原始设计的距离的值。 此外,单击解决方案时,GEMMA会更新仪表板中的其他可视工件,以绘制与所选解决方案相对应的信息。Pareto正面可以作为图像下载。 GEMMA有关行动的更多细节可以在随附视频中看到。
IV.评估摘要
我们通过经验评估了采用GEMMA(RQ1)推荐的GUI色彩设计,通过运行Android应用程序可实现的节能,GEMMA产生的GUI色彩(由移动应用程序用户评估(RQ2))以及GEMMA在工业环境,当应用以最小化现有商业应用程序(RQ3)的GUI能耗时。
RQ1。我们在25个应用程序上应用了GEMMA,并测量了能耗,对比度,与生成的解决方案的原始设计之间的距离。平均而言,功耗最低的解决方案平均可节省66%的能源,同时还提高了原始设计的对比度(平均 16%)。
RQ2。我们邀请了85位应用程序用户征询他们对原始GUI以及GEMMA为同一组2
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[259194],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。