英语原文共 26 页,剩余内容已隐藏,支付完成后下载完整资料
基于机器学习的移动应用图形用户界面原型设计
凯文·莫兰ieee 会员,卡洛斯·贝纳尔·卡德纳斯 学生会员, ieee,
迈克尔·柯西奥学生会员, ieee,理查德·博内特学生会员, ieee,和丹尼斯·波希万克ieee 会员
抽象-面向用户的软件开发人员通常会将图形用户界面 (gui) 的模型转换为代码。这个过程既发生在应用程序的初始阶段, 也发生在进化的上下文中, 因为 gui 更改与不断发展的功能同步。不幸的是, 这种做法具有挑战性, 也很耗时。在本文中, 我们提出了一种通过三个任务实现 gui 精确原型设计的方法, 从而实现了这一过程的自动化:检测,分类和装配.首先, gui 的逻辑组件是检测使用计算机视觉技术或模型元数据的模拟工件。然后, 利用软件存储库挖掘、自动动态分析和深层卷积神经网络, 准确地分类gui 组件到特定于域的类型 (例如。, 按钮)。最后, 数据驱动的 k-近邻-邻域算法生成了一个合适的分层 gui 结构, 从该结构可以自动使用原型应用程序组装.我们在一个名为 r 的系统中实现了 android 的这种方法ED原始.我们的评估表明, rED原始实现了91% 的平均 gui 组件分类精度, 并在显示合理的代码结构的同时, 在视觉亲和力方面对目标模型进行了精确镜像的原型应用程序。与工业从业者的访谈说明了重新绘制在改进实际开发工作流程方面的潜力。
索引条款-gui、cnn、手机、原型、机器学习、挖掘软件存储库。
F
1 I产品介绍
M
东面向用户的现代软件应用程序
以 gui 为中心, 并依靠有吸引力的用户界面 (ui) 和直观的用户体验 (ux) 来吸引客户, 促进计算任务的有效完成, 并吸引用户。具有繁琐或美观的 ui 的软件成功的可能性要低得多, 特别是当公司希望将其应用程序与具有类似功能的竞争对手区分开来时。这种现象可以很容易地观察到在移动应用程序市场, 如 app store [1], 或谷歌 play [2], 其中许多竞争的应用程序 (也称为应用程序) 提供类似的功能 (例如。, 任务经理, 天气应用程序) 通过 ui/ux 很大程度上区分自己 [3]。因此, 开发任何基于 gui 的应用程序的一个重要步骤是绘制和原型设计模型, 这有助于 ui 的实例化和实验, 以便评估或证明抽象设计概念。在拥有较大团队的工业环境中, 此过程通常由专门的设计人员执行, 他们在使用照片编辑软件 (如 photoshop [4] 或张草图 [5]) 制作有吸引力的、直观的 gui 时拥有特定领域的专业知识。这些团队通常负责在公司数字存在的许多方面 (包括网站、软件应用程序和数字营销材料) 表达连贯的设计语言。这个设计过程的一些组件也倾向于延续到较小的独立开发团队, 他们通过创建线框或模型来判断设计想法, 从而实践设计或原型制作过程
bull;所有作者都是威廉玛丽学院计算机科学系的, 威廉斯堡, 弗吉尼亚州, 23185年。 电子邮件:{kpmoran, cebernal, mjcurcio, rfbonett, denys}@cs 2018年5月收到的手稿; |
承诺将开发资源用于实施这些建议。在创建这些初始设计草案后, 这一点至关重要它们被忠实地转换为代码, 以便最终用户体验其预期形式的设计和用户界面。
过去的工作和实证研究表明, 这个过程 (通常涉及多个迭代) 具有挑战性、耗时和容易出错 [6]、[7]、[8]、[9]、[10], 特别是如果设计和实现是由不同的团队进行的 (这通常是在工业环境中的情况 [10])。此外, ui/ux 团队通常会练习迭代设计过程, 在早期阶段收集有关 gui 有效性的反馈。最好使用原型, 因为可以收集更详细的反馈;然而, 以当前实践和工具这通常是太昂贵的 [11], [12]。此外, 过去在移动应用中检测 gui 设计冲突的工作从工业角度突出了这一问题的重要性 [10]。根据与大型电信公司华为进行的一项研究, 对71个独特的应用屏幕进行了经验分类, 其中包含82起因公司迭代设计和开发过程而导致的设计违规。基本理论的方法。这导致了跨越三个主要类别和14个子类别的移动设计冲突的分类, 并说明了开发人员可以忠实地实现移动应用的 gui 的困难, 以及引入的设计冲突的负担开发人员可以将其置于总体开发过程中。
许多快速发展的创业公司和新兴公司试图创建软件原型, 以展示想法和获得投资者支持, 也将从快速应用原型中获益匪浅。与其将稀缺的时间和资源花在迭代设计和编码用户界面上, 不如采用准确的自动化方法。这将允许较小的公司将更多的注意力放在功能和价值上, 而不是将设计转化为可行的应用程序代码。考虑到前端开发人员和设计人员在构建准确的 gui 时所面临的挫折, 显然需要自动支持。
为了帮助减轻此过程的难度, 一些现代 ide, 如 xcode [13]、visual studio [14] 和 android studio [15], 提供内置 gui 编辑器。然而, 最近的研究表明, 使用这些编辑器来创建复杂的、高保真的 gui 是繁琐和困难的 [11], 因为用户即使是简单的任务也容易引入 bug 和演示失败 [16]。其他商业解决方案包括用于协作 gui 设计和在目标设备或浏览器上交互式预览设计的产品 (使用自定义框架显示, 功能有限) [17], [18], [19], [20], [21], [22], [23], [24], [24], [25], [26], [27], [28], [29], 但没有提供一个端到端的解决方案, 能够自动将模型转换为目标平台的精确的本机代码 (具有适当的组件类型)。显然, 一个能够实现这一过程部分自动化的工具可以显著减轻设计和开发过程的负担。
不幸的是, 自动化 gui 的原型制作过程是一项艰巨的任务。这一困难的核心是需要弥合广泛的抽象差距, 这就需要从基于像素的 gui 图形表示或数字设计草图中推理准确的用户界面代码。通常, 这种抽象差距是由开发人员的领域知识来弥补的。例如, 开发人员能够识别模型中的离散对象, 这些对象应实例化为屏幕上的组件, 根据其预期功能将其分类为适当的类别, 并将它们安排在适当的结构, 使它们在一系列屏幕大小上正确显示。但是, 即使对于熟练的开发人员, 此过程也可能非常耗时, 并且容易出错 [10]。因此, 自动化 gui 原型过程的方法必须弥合图像和 tocode 抽象的差距。这反过来又需要创建一个模型, 能够表示开发人员通常持有的域知识, 并应用这些知识来创建准确的原型。
鉴于在单个软件域中, gui 的设计和功能可能会有很大差异, 因此手动编码的信息或启发式方法不可能完全支持此类复杂任务。此外, 手动创建、更新和维护此类启发式特性是一项艰巨的任务。因此, 我们建议使用数据驱动的方法来学习此领域的知识, 该方法利用机器学习 (ml) 技术和通过挖掘软件获取的现有应用中已经存在的 gui 信息 (特别是屏幕截图和 gui 元数据)存储库 (msr)。
更具体地说, 我们提出了一种将原型制作过程解构为以下任务的方法:检测,分类和装配.第一个任务是检测原子元素的边界框 (例如。, 不能进一步分解的 gui期满) 的用户界面, 从一个模拟设计工件, 如基于像素的图像。可以通过解析直接从模拟工件中表示 gui 组件的对象的信息来解决此难题 (例如。, 分析从 photoshop 导出的元数据), 或使用 cv 技术推断对象 [8]。一旦设计工件中的 gui 组件被识别出来, 它们就需要分类到其适当的域特定类型 (例如。, 按钮, 下拉菜单, 进度条)。从本质上讲, 这是一项图像分类任务, 对这一主题的研究显示了巨大的近年来的进展, 主要是由于深卷积神经网络 (cnn) 的进步 [30], [31], [32], [33], [34]。但是, 由于 cnn 是一种受监督的学习技术, 因此它们通常需要大量的培训数据 (如 ilsvrc 数据集 [35]) 才能有效。我们断言, 可以对从软件存储库中挖掘的应用程序进行自动动态分析, 以收集可用于收集屏幕截图和 gui 元数据的方法。自动派生标记的训练数据。利用这些数据, 可以有效地培训 cnn 将 guis柜的图像从一个模型 (使用检测到的边界框提取) 分类到其域特定的 gui 组件类型。然而, 组件的分类图像是不够的,组装有效的 gui 代码。gui 通常在代码中表示为层次结构树, 其中组件的逻辑组在容器中捆绑在一起。我们说明了在挖掘的 gui 元数据和屏幕截图上操作的迭代 k-近邻 (knn) 算法和 cv 技术可以构造可转换为代码的现实 gui 层次结构。
我们已经在一个称为RED原始为安卓平台。我们从 google play 挖掘了 8, 878 台顶级应用, 并使用完全自动化的输入生成方法执行这些应用 (例如。, gui 翻录) 从我们以前的工作在移动测试 [36], [37]。在自动应用探索过程中, 从每个应用中提取了最受欢迎屏幕的 gui 层次结构。然后, 我们培训了美国有线电视新闻网最流行的本地 android gui 组件类型, 在开采屏幕上观察到。RED原始使用此分类器结合迭代 knn 算法和其他 cv 技术将不同类型的模型工件转换为原型 android 应用程序。我们进行了一组全面的三项研究, 评估RED原始旨在测量 (一) 基于 cnnm 的分类器的准确性 (根据基线特征描述符和基于支持向量机的技术进行测量), (ii) 生成的应用程序与模拟工件的相似性 (视觉和结构上), 以及 (iii)通过对谷歌、华为和 facebook 的移动设计师和开发者进行半结构化访谈, 我们系统在工业上的潜在适用性。我们的结果表明, 我们基于 cnni 的 gui 组件分类器实现了前1名的平均精度90%(即。, 当美国有线电视新闻网预测的顶级类是正确的), 我们生成的应用程序具有高度的视觉相似性, 他们的模拟工件, 生成的应用程序的代码结构是类似于实际的应用程序,RED原始有可能改进和促进移动应用程序的原型设计和开发与一些实际扩展。我们的评估还说明了RED原始优于移动应用程序原型的其他相关方法,R埃奥伊[8] 和像素代码 [38]。最后, 我们详细讨论了我们的方法的局限性, 以及在提出的核心想法的基础上进行未来研究的有希望的途径。
总之, 我们的文件作出了以下值得注意的贡献:
- 介绍了一种新的软件 gui 原型设计方法, 该方法植根于从程序分析、msr、ml 和 cv 中提取的各种技术的组合;并在一个名为RED原始用于安卓平台;
- 全面的实证评价RED原始, 测量几个互补的质量指标, 提供与相关工作, 并描述行业专业人士对其效用的反馈;
- 一个在线附录 [39], 展示生成的应用程序的屏幕截图和研究复制信息;
- 作为实施工作的一部分RED原始我们收集了大量的移动应用程序 gui 数据集, 其中包含超过14k 屏幕和 190k gui 组件的屏幕截图和 gui 相关元数据;
- 公开提供的开源版本。RED原始代码、数据集和训练过的 ml 模型 [39]。
2 B背景资料amp; r兴高采烈Work
在本节中, 我们将介绍与整个本文中引用的模型驱动开发过程相关的概念, 介绍与深层卷积神经网络相关的概念, 并进行调查相关工作, 在上下文中提炼我们的方法的新颖性。
2。1 背景和问题陈述
我们在本文中提到的模型驱动开发实践的第一个概念是模型工件, 我们将其定义为:
定义1-模拟的项目:软件设计和开发过程中的一个工件, 它规定了 gui 及其内容的设计准则。
在工业移动应用开发中, 模拟工件通常以高保真图像 (包括或不包含元数据) 的形式出现, 这些图像是由设计人员使用 photoshop [4] 或草图 [5] 等软件创建的。在这种情况下, 根据设计和开发工作流, 可以从这些项目导出和分析包含有关模型图像组成部分的信息的元数据1.独立开发人员还可以使用现有应用的屏幕截图来原型化自己的应用。在这种情况下, 除了运行应用程序的屏幕截图外, 还可以提取运行时 gui 信息 (如 web 应用程序的 html dom 树或移动应用程序的 gui 层次结构), 以进一步帮助原型开发过程。但是, 这通常是不可能在模型驱动的开发 (我们的方法旨在支持) 的上下文中, 因为可执行的应用程序不存在。
我们定义的第二个概念是gui 组件(通常也称为gui 小部件).在本文中, 我们使用的术语gui 组件和组件互换。我们将它们定义为:
1. 例如, 通过从 photoshop 导出可缩放矢量图形 (. svg) 或 html 格式。
定义2-gui 组件:具有预定义功能的原子
全文共59533字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[337],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。