没有合适的资源?快使用搜索试试~ 我知道了~
信息学中的自动非功能可配置生成器的测试和论文答辩
2017年论文/雷恩第一大学布列塔尼卢瓦尔大学印章下为的等级雷恩第一大学博士提及:信息学马蒂斯博士学校提交人穆罕默德·布萨在INRIA研究单位INRIA RennesBretagne Atlantique ISTIC编写自动非功能可配置生成器的测试和论文答辩于2017年陪审团由以下人员组成:海伦·W·埃塞林克LAAS-CNRS图卢兹研究总监/报告员菲利普·梅尔INRIA里尔研究员/报告员欧文·R·奥霍INRIA Rennes研究总监/审查员弗兰克·F·勒雷奥斯陆SINTEF研究主任/审查员Jean-Marie MOTTU讲师、考官格尔森大学主人会议,检查员Benoit BAudryINRIA雷恩研究总监/论文指导奥利维尔·B·阿拉斯雷恩大学教授1/论文联合主任大学从南特/大学从南特/确认书如果没有其他人的帮助,这篇论文是不可能完成的。我想借此机会向他们表达我的感激之情,并了解他们。首先,我想向我的主管Olivier Barais和Benoit Baudry表示最深切的感谢,感谢他们提供了有益的建议,并指导我跨越了三个多耳朵的脚步。特别感谢我和我的第三个导师,他们知道如何激励我,帮助我克服论文中的困难我特别感谢我的硕士导师我也要感谢我的朋友们,我发誓我会的。我的考官H'eleneWaeselynck和Philippe Merle同意在我的考试委员会任职,并花时间阅读和评估本文。也要感谢Erven Rohou同意主持我的陪审团我还要感谢让-玛丽·莫图和弗兰克·弗勒里作为陪审团成员出席会议。我非常感谢DiverSE研究团队的所有(过去和现在的)成员,感谢他们提供了一个伟大而友好的工作氛围,感谢他们所有不同的讨论、研讨会和咖啡。最后,我想感谢我的家人。即使离家这么远,在这三年里,他们仍然存在于我的生活中。我首先要感谢我的父母Najoua和Noureddine的支持、理解、信任,特别是他们的耐心。你一直支持我,相信我。感谢我的姐妹Imene和Jihene鼓励我在我所做的一切中取得成功。现在,我们可以说我们有一个医生在布萨家庭!我内容。Resumee在Francais七背景七动机七关于ematiquesix的问题...............................................................................................................贡献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ...x1引言11.1背景。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...11.2动机。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ...21.3论文范围。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...41.4挑战。 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...51.5贡献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ...61.6本论文概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .81.7出版物。... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...9一、背景和最新技术112 背景132.1软件工程的多样性142.1.1硬件异构性14iii.iv内容2.1.2软件多样性162.1.3将软件多样性与异构硬件相匹配:婚姻2.2从经典软件开发到生成式编程2.2.1生成式软件开发过程概述232.2.2GP中的自动代码生成:高度可配置的过程2.2.3测试和调试发电机的利益相关者及其角色282.3测试代码生成器292.3.1测试工作流302.3.2代码生成器的类型2.3.3为什么测试代码生成器很复杂?................................................................. 332.4自动调整编译器342.4.1代码优化352.4.2为什么编译器自动调整很复杂?................................................................. 362.5摘要:测试和调整可配置发电机的挑战3 最新技术水平393.1测试代码生成器403.1.1代码生成器的功能测试3.1.2代码生成器的非功能测试463.2自动调整技术编译器513.2.1迭代编译513.2.2迭代编译过程的实现513.2.3迭代编译搜索技术533.3用于自动软件测试的轻量级系统虚拟化3.3.1在软件测试中623.3.2运行时监控中的应用程序643.4公开挑战摘要65V二、捐款67致读者:稿件摘要694 代码生成器系列的4.1背景和动机744.1.1代码生成器系列744.1.2测试代码生成器系列76时的问题4.2代码生成器系列76的传统非功能测试过程4.3方法概述784.3.1使用系统容器进行非功能测试的基础设施4.3.2一种自动检测代码生成器不一致性的变形4.4评估894.4.1实验设置904.4.2实验方法和结果934.4.3对有效性的威胁1024.5结论1035 注意:自动调整编译器的方法1055.1动机1075.2编译器优化的进化探索1105.2.1新的搜索改编1105.2.2多目标优化的新颖性搜索1135.3评估1145.3.1研究问题1145.3.2实验设置1155.3.3实验方法和结果1185.3.4讨论127vi内容5.3.5对有效性的威胁1285.3.6工具支持概述1285.4结论1316 用于自动发电机测试的1336.1导言1336.2作为轻量级执行环境的系统容器6.3运行时监控引擎1366.3.1监视容器1366.3.2后端数据库容器1376.3.3前端可视化容器1386.4发电机案例研究1386.5结论141三结论和展望1437结论和观点1457.1贡献摘要1457.2前景147参考文献151图171列表表列表173在F中的Reume上下文技术出现在由M o d'eles和编程G e nerati v e o n t p m指导的G e e中,是几个G e n erator(Ge n e rater de c o de和编译器)的创造。 这些都是用来促进软件的开发和自动化的过程中,从抽象的规范的生产过程。事实上,我们使用的是能够在广泛的软件平台和硬件上快速实现软件工件的虚拟化的软件。 此外,像C编译器这样的现代通用计算器已经变得高度可配置,为用户提供了无数的 配 置 选项,使其能够轻松地为目标平台定制通用计算。因此,软件的质量是从vnueforteme ntcor rée lee到c nfiguration的参数以及aggenerator本身。 在这段文字中,可 以 验 证 错 误 者 的boncom p orteme nt。一方面,为了检测错误的程序中的异常并对其进行纠正,对程序进行测试是不可能的。另一方面,帮助用户正确识别错误以满足目标软件平台和硬件的需求也是至关重要的。动机今天,像GCC、L L VM等这样的ge n'érators pul a ires,因此,在工业中,为了将用罗马尼亚语写的源代码减少到我的chin e de bas ni v eau的co(p. 例如二进制文件和可执行文件)。 这些generator(我们称之为编译器)为用户提供了广泛的配置选项,以控制geeerator的com或teme。Diff'erentescat'egories of optionses七viii我和我的朋友们选择您的目标AR C架构。 例如,GCCv4.8.4提供了大量的命令行选项,包括超过150个优化选项。这构成了一个配置空间,具有2,150个可能的优化二进制数,用户可以应用这些二进制数来优化操作系统的质量(如执行时间、二进制数、编译时间等)。 此外,在所有程序上构建单个优化序列是不可能的,因为交互和优化太复杂并且难以完成。 此外,优化对目标硬件和源代码的影响很大。在这个例子中,很难将错误(如编译器)与目标进行比较,以便从我的hine中导出一个满足非功能性的C。还必须检查错误,以确保自动代码生成 任何异常的co degene e n将导致失去信心的一部分,用户将不再使用这些g e e n t e e n t e e n e t e e n e e n e e t ee 因此,错误者的操作员必须检查和测试自动操作员的操作系统的操作系统。 对于说有几个测试解决方案[YCER11,LAS14]的编译器来说,有一些是基于对非功能特性的测试而存在的,而不是基于对非功能特性的测试。事实上,由于对编译器的说唱,C &O中的错误在行业中是不太有用和不太常见的。 它们是一个很难测试的工具,因为它们涉及到复杂的技术和基因[ GS15,GS14 ]。 测试是否存在错误主要涉及工具的错误/经验值。然而,用户也不负责此验证,因为他们在创建c'o de的过程中对他们进行了命名。 [SCDP07,YCER11],以测试其操作系统的功能。这一系列解决方案的价值并不取决于非功能性解决方案,而是取决于性能和对组织资源的使用。在resu mee中,generateurs(编译器和generateursdecode)是com posa ntsesse ntielpour的自动化过程。软件的质量是直接的--我不确定它是否与软件本身的质量相同。虽然错误的质量可能是未知的,但软件事实的质量也得到了提高,因为任何一年有这些错误的人都直接影响到最终软件产品的质量。特别是,当使用自动生成时,我们提出了两个威胁软件质量的问题:一方面,配置空间很大,对不需要的用户来说是一个很大的风险。为了选择最佳的优化方案,R e p da n t有ix功能性的。另一方面,错误的复杂性以及缺乏解决方案来评估错误的非功能性特征并不代表错误的复杂性,这对错误的错误的管理者来说是一个障碍,他们不希望自动确保软件的质量。让他们有机会我们已经确定了三个问题,用于测试和自动配置错误的自动配置。测试的gen'erors的co(先知的问题对错误的检验是对神谕的错误的检验。测试神谕是测试者用来确定测试是否通过的机制。关于非功能性测试的错误,这个问题是不容易的,因为它是不够的,以确定什么是非功能性的期望,从测试的错误(p. 例如内存消耗)。 要确定非函数测量的波是否有gen误差的异常,是没有意义的。我们把这个问题变成了像变形测试[CCY98]这样的技术问题,所以我们可以在不显式定义甲骨文的情况下测试程序。该技术使用高-ni v水的变形m关系来自动验证测试结果。那么,我们需要完成哪些p或v个神谕呢? 我们怎样才能自动检测出地球上的异常现象呢? 所有这些问题都是在"t编译器的自动配置(搜索优化大多数编译器都提供了大量的最佳化,这不会提高g'e ne的质量。为了探索这样一个优化空间,用户必须根据特定的非功能特性(如执行时间、二进制文件大小等)来评估它们的效果。 由于构建优化序列的复杂性、交互的复杂性以及优化的不可见性,用户会选择满足特定非功能需求的最佳编译器配置或比率。x我和我的朋友们对genee的资源消耗的过度关注(管理软件平台和硬件的差异):我们将评估使用c'o de g n e r e资源的能力(由c'o de的编译器或计算器)、d'e elopur doi vent编译器、eployer和ex在您的执行平台上执行g'onee 然后,他们在特定平台[ GS14、DGR04 ]上使用多个配置文件分析器、分析器和分析工具,以便在执行操作过程中发现异常。由于其软件和硬件平台的时间太长,收集有关其资源使用情况的信息变得非常昂贵,因为开发人员必须使用特定的工具分析和验证其平台的可用性,而不是使用特定的工具来分析和验证其资源使用情况。本研究的挑战将在以下研究问题中得到解决:RQ1. 我们如何帮助开发人员自动测试g-e-n-e-r-e的操作并检测非功能性的g-e-n错误的操作?RQ2.就像NTP或V一样,我们帮助A 'C编译器的用户选择-在满足非功能性需求的情况下,优化的配置是否足够?RQ3. 我们如何促进在一个环境中实施资源或资源消耗监测工具?我们如何促进资源或资源消耗监测工具的实施?贡献这是建立三个主要帐户。因此,它们不应在本节的其余部分中写入。第一章:从genc od的错误家族中自动提取不一致之处在这篇文章中,我们在非功能性测试领域对甲骨文的问题进行了排序具有可比函数的m个多重ge误差的分布是可比的(c. A-D. 因此,我们可以将变形测试[ ZH T + 04 ]中的ee i应用于确定测试高-ni v水(即A-D.关系metam orphic)以避免不一致。我们将变形关系定义为不同版本的性能和资源使用的变异性,而不是通过镜头来定义。xi这是一个很好的例子,也是一个很好的例子。不一致是一个问题,当这不是一个意外的结果,由rapport'所有的impl'ementations他是同一个家庭的成员。 我们通过分析Haxe的性能来评估我们的应用程序,Haxe是一种高级编程语言,涉及一组跨多个平台的操作系统。 我们对五个目标软件平台的性能和资源利用率进行了适当的评估,以确定其核心。结果表明,我们的近似值能够检测到几个不一致性,这些不一致性在这个geno误差族中是不真实的。贡献II:编译器自动配置的方法正如我们已经指出的,大量的编译器选项确实需要大量的有效方法来探索opt-imization空间。因此,在这个致敬中,我们应用了一种新的逻辑方法[LS08]来探索这个重新思考的空间。 此应用程序可帮助用户自动测量编译器的目标架构和特定的非功能度量(如剩余时间和资源利用率)。我们通过验证GCC编译器提供的优化来检查应用程序的缓存效果。我们的研究结果表明,我们的应用程序可以根据用户的需求自动配置编译器,并构建符合标准的优化的优化。我们来自EmoNTrons同样,我们的应用程序也可以用于自动构建优化水域,这些水域代表了最佳折衷和几个非功能属性,如执行时间和资源消耗。III:用于测试和监视软件资源消耗的eger的运行环境最后,我们提出了一个基于微服务的基础设施,以确保部署和监控全球环境中资源的消耗。 这篇文章讨论了软件平台和硬件的问题,即技术问题和技术问题。 我们在ECRI有一个应用程序,它已经自动化了通用程序的生成、编译和执行过程,以便于测试和自动配置错误。这个环境是在内容系统上运行的,作为执行平台,或者是对资源使用(CPU和内存)的适当性的监控和分析。 这个基础设施是一个测试和调整错误的游乐场。这个概念主要是关于RQ3的,但它是一个粒子,如果我们要验证RQ1和RQ2中的经验,它是无用的。第一章引言1.1上下文现代软件系统依赖于平台和设备的高度异构和动态互连,这些平台和设备提供了广泛的功能和服务。这些异构服务可以在不同的环境中运行,从资源几乎不受限制的云服务器到只有几KB RAM的资源受限设备为多个目标平台和硬件技术有效地开发软件工件变得越来越重要。因此,我们在过去几年中观察到[CE00b],生成式软件开发越来越受到吸引,以应对存在于移动或物联网等多个领域的平台和技术堆栈的运行时异构性[BCG11]。生成式编程[CE00a]提供了一个软件抽象层,软件开发人员可以使用该层来指定所需的系统行为(例如使用特定于域的语言、DSLs、模型等),并自动生成软件工件。因此,硬件和平台规范的新发展已经为创建多个生成器铺平了道路,这些生成器作为自动生成代码的基础,以用于广泛的软件和硬件平台。自动代码生成涉及两种生成器:源代码生成器和编译器。 一只手,需要代码生成器来转换高级系统规范(例如文本或图形建模语言)到传统的源代码程序(例如通用语言,如Java、C++等)。另一方面,编译器弥合了输入程序之间的差距(即(使用GPL编写)12第一章。 引言和目标执行环境,生成低级机器代码(即、二进制文件、可执行文件),用于特定的硬件体系结构。通过完全自动化的代码生成,现在可以轻松快速地开发代码,提高程序的质量和一致性,并提高系统的生产率[KJB+09] In加法,t od y的m o dern生成器(例如C编译器)变得高度可配置,提供(大量)配置选项(例如优化传递),以便根据目标软件和/或硬件平台调整生成的代码。在这种情况下,自动生成的软件必须包含适当的测试技术,以验证生成器的正确行为用户可以信任代码生成器,并对其正确操作充满信心。验证生成代码的正确性也可以是功能性的(例如,验证生成的代码表现出与输入程序中描述的相同的功能行为)或非功能性(例如,检查生成代码的质量1.2动机正如我们在本文的上下文中所陈述的,今天的现代生成器是高度可配置的,允许用户轻松地自定义自动生成的代码。同时,有效地测试可配置生成器提出了重大挑战,因为手动或自动执行和测试所有配置的成本太高。例如,GCC、LLVM等常用生成器,在软件开发中广泛使用,并提供广泛的配置选项来控制生成器行为。可以启用不同类别的选项(即选项标志),以帮助开发人员:调试、优化和调整应用程序性能,选择语言级别和扩展以实现兼容性,选择目标硬件体系结构,并执行许多其他配置代码生成方式的任务。大量的生成器配置、版本、优化和调试实用程序使得选择最佳配置的任务非常困难和耗时。例如,GCC版本4.8.4提供了广泛的命令行选项,可由用户启用或禁用这导致了一个巨大的设计空间,有2150种可能的优化组合,可以由用户启用。此外,构建一个单一的优化序列来提高所有程序的代码质量是不可能的,因为优化之间的相互作用太复杂,难以定义。同样,优化的影响高度软件和输入源代码。此示例显示了用户的痛苦程度3调整编译器等生成器(通过优化标志),以满足不同的非功能属性,如执行时间、编译时间、代码大小等。在调整生成器之前,测试代码生成是否正常工作至关重要。如果是这样,用户将信任该工具,并且更有可能继续使用它进行生产代码生成。相反,生成代码的任何问题都会导致对生成器和用户失去信心,并且在软件开发过程中不太可能继续使用它们。因此,检查生成代码的正确性所需的工作量与手动编写代码所需的工作量大致相同。在这种情况下,与编译器测试[YCER11,LAS14]相比,代码生成器缺乏自动评估其正确行为的测试解决方案,特别是对于非功能属性。这是因为与编译器相比,代码生成器在行业中使用较少且经验丰富。此外,它们很难进行测试,因为它们涉及一系列复杂和异构的技术,这些技术在内部以非常复杂的方式进行管理[GS15,GS14]。测试代码生成器基本上是工具专家的责任。无,用户(如客户)也负责此验证,因为他们将不断报告在代码生成过程中遇到的错误有缺陷的代码生成器可以生成有缺陷的软件工件,其范围从对目标平台造成严重损害的不可编译或严重功能失调的代码到导致可能影响系统可靠性和性能的低质量代码的非功能性错误(例如,高资源利用率、高执行时间等)。已经提出了许多方法[SCDP07,YCER11]来验证生成代码的功能输出。然而,在评估与自动生成代码的性能和资源使用相关的属性时,缺乏解决方案简而言之,从用户的角度来看,生成器(编译器和代码生成器)是可以用来促进软件生产过程的黑盒生成的软件的质量与生成器本身的质量直接相关只要生成器的质量得到维护和改进,生成的软件工件的质量也会得到提高。这些生成器中的任何错误都会影响交付给市场的软件质量,并导致最终用户失去信心特别是,当使用自动代码生成时,我们发现了威胁生成软件质量的两个主要问题:一只手,高度可配置的生成器通过用户可以启用/禁用的大量优化选项控制生成代码的质量。这种巨大的配置空间对用户选择满足一些非功能要求的最佳优化选项提出了重大挑战。另一方面,代码生成器的复杂性以及缺乏评估所生成代码的非功能属性的解决方案,对于需要更多证据以便在软件开发期间继续使用它们的用户来说是一4第一章。 引言1.3论文范围在本文中,我们试图从性能和资源使用的角度来评估生成代码的质量。我们为代码生成器创建者/维护者提供了一种工具,可以监控为不同目标软件平台生成的代码的执行情况,并深入了解其在资源使用方面的非功能行为因此,我们会自动检测由一些故障代码生成器引起的非功能性问题另一方面,我们提供了一种帮助用户的机制(即软件开发人员)选择最佳优化集,以满足广泛的程序和硬件体系结构的特定资源使用或性能要求本文解决了三个问题:(1) 代码生成器的非功能测试问题:我们受益于多个具有可比功能的代码生成器的存在(即代码生成器系列),以自动测试生成的代码。我们利用变形测试[CCY98]来检测代码生成器系列中的非功能不一致性本文的重点是测试性能和资源使用属性(例如资源密集型使用)。与同一代码生成器系列中的所有等效实现相比,当生成的代码在性能或资源使用方面表现出意外行为时,将检测到不一致。(2) 自动调谐发生器的问题:我们利用基于搜索的软件工程的最新进展,以便提供一种有效调谐发生器的有效方法(例如,GCC编译器)。我们还证明了我们的方法可以用于自动构建优化级别,这些优化级别代表了多个非功能属性之间的最佳权衡,例如执行时间和资源使用要求。(3) 软件测试中的软件平台多样性和硬件异构性问题:在异构环境中运行测试和评估资源使用是令人生畏的为了解决这个问题,我们利用了轻量级系统虚拟化(尤其是基于容器的虚拟化)的最新进展,以便为异构环境中的自动部署、执行和监控代码提供有效支持,并收集非功能性指标(例如内存和CPU消耗)。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功