首页 > 最新文献

Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences最新文献

英文 中文
The landscape of refactoring research in the last decade (keynote) 重构研究在过去十年中的前景(主题演讲)
Danny Dig
In the last decade refactoring research has seen an exponential growth. I will attempt to map this vast landscape and the advances that the community has made by answering questions such as who does what, when, where, with who, why, and how. I will muse on some of the factors contributing to the growth of the field, the adoption of research into industry, and the lessons that we learned along this journey. This will inspire and equip you so that you can make a difference, with people who make a difference, at a time when it makes a difference.
在过去的十年里,重构研究呈指数级增长。我将尝试通过回答诸如谁做什么、何时、何地、与谁一起做什么、为什么以及如何做等问题来描绘这一广阔的图景和社区取得的进步。我将思考一些促进该领域发展的因素,将研究应用于工业,以及我们在这一过程中学到的经验教训。这将激励你,装备你,使你能够有所作为,与有作为的人,在有作为的时候有所作为。
{"title":"The landscape of refactoring research in the last decade (keynote)","authors":"Danny Dig","doi":"10.1145/3170492.3148040","DOIUrl":"https://doi.org/10.1145/3170492.3148040","url":null,"abstract":"In the last decade refactoring research has seen an exponential growth. I will attempt to map this vast landscape and the advances that the community has made by answering questions such as who does what, when, where, with who, why, and how. I will muse on some of the factors contributing to the growth of the field, the adoption of research into industry, and the lessons that we learned along this journey. This will inspire and equip you so that you can make a difference, with people who make a difference, at a time when it makes a difference.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132347846","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
A Haskell compiler for signal transforms 一个用于信号转换的Haskell编译器
G. Mainland, Jeremy R. Johnson
Building a reusable, auto-tuning code generator from scratch is a challenging problem, requiring many careful design choices. We describe HSpiral, a Haskell compiler for signal transforms that builds on the foundational work of Spiral. Our design leverages many Haskell language features to ensure that our framework is reusable, flexible, and efficient. As well as describing the design of our system, we show how to extend it to support new classes of transforms, including the number-theoretic transform and a variant of the split-radix algorithm that results in reduced operation counts. We also show how to incorporate rewrite rules into our system to reproduce results from previous literature on code generation for the fast Fourier transform. Although the Spiral project demonstrated significant advances in automatic code generation, it has not been widely used by other researchers. HSpiral is freely available under an MIT-style license, and we are actively working to turn it into a tool to further both our own research goals and to serve as a foundation for other research groups' work in developing new implementations of signal transform algorithms.
从头开始构建可重用的自动调优代码生成器是一个具有挑战性的问题,需要许多仔细的设计选择。我们将介绍HSpiral,一个基于Spiral基础工作的用于信号转换的Haskell编译器。我们的设计利用了许多Haskell语言特性,以确保我们的框架是可重用的、灵活的和高效的。除了描述我们系统的设计外,我们还展示了如何扩展它以支持新的变换类,包括数论变换和可减少操作次数的分基算法的变体。我们还展示了如何将重写规则合并到我们的系统中,以重现以前关于快速傅里叶变换代码生成的文献的结果。尽管螺旋项目在自动代码生成方面取得了重大进展,但它还没有被其他研究人员广泛使用。HSpiral在麻省理工学院风格的许可下是免费的,我们正在积极地把它变成一个工具,以进一步实现我们自己的研究目标,并为其他研究小组开发新的信号变换算法的工作奠定基础。
{"title":"A Haskell compiler for signal transforms","authors":"G. Mainland, Jeremy R. Johnson","doi":"10.1145/3136040.3136056","DOIUrl":"https://doi.org/10.1145/3136040.3136056","url":null,"abstract":"Building a reusable, auto-tuning code generator from scratch is a challenging problem, requiring many careful design choices. We describe HSpiral, a Haskell compiler for signal transforms that builds on the foundational work of Spiral. Our design leverages many Haskell language features to ensure that our framework is reusable, flexible, and efficient. As well as describing the design of our system, we show how to extend it to support new classes of transforms, including the number-theoretic transform and a variant of the split-radix algorithm that results in reduced operation counts. We also show how to incorporate rewrite rules into our system to reproduce results from previous literature on code generation for the fast Fourier transform. Although the Spiral project demonstrated significant advances in automatic code generation, it has not been widely used by other researchers. HSpiral is freely available under an MIT-style license, and we are actively working to turn it into a tool to further both our own research goals and to serve as a foundation for other research groups' work in developing new implementations of signal transform algorithms.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116155797","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
RaTrace: simple and efficient abstractions for BVH ray traversal algorithms RaTrace: BVH射线遍历算法的简单而有效的抽象
Arsène Pérard-Gayot, Martin Weier, Richard Membarth, P. Slusallek, Roland Leißa, Sebastian Hack
In order to achieve the highest possible performance, the ray traversal and intersection routines at the core of every high-performance ray tracer are usually hand-coded, heavily optimized, and implemented separately for each hardware platform—even though they share most of their algorithmic core. The results are implementations that heavily mix algorithmic aspects with hardware and implementation details, making the code non-portable and difficult to change and maintain. In this paper, we present a new approach that offers the ability to define in a functional language a set of conceptual, high-level language abstractions that are optimized away by a special compiler in order to maximize performance. Using this abstraction mechanism we separate a generic ray traversal and intersection algorithm from its low-level aspects that are specific to the target hardware. We demonstrate that our code is not only significantly more flexible, simpler to write, and more concise but also that the compiled results perform as well as state-of-the-art implementations on any of the tested CPU and GPU platforms.
为了获得尽可能高的性能,每个高性能光线跟踪器的核心光线遍历和交叉例程通常是手工编码的,经过大量优化,并针对每个硬件平台单独实现-尽管它们共享大部分算法核心。其结果是实现将算法方面与硬件和实现细节严重混合,使代码不可移植,难以更改和维护。在本文中,我们提出了一种新的方法,它提供了在函数式语言中定义一组概念性的高级语言抽象的能力,这些抽象通过特殊的编译器进行优化,以最大限度地提高性能。使用这种抽象机制,我们将一般的光线遍历和交叉算法与特定于目标硬件的低级方面分离开来。我们证明,我们的代码不仅更加灵活,编写更简单,更简洁,而且编译结果在任何测试的CPU和GPU平台上都可以执行最先进的实现。
{"title":"RaTrace: simple and efficient abstractions for BVH ray traversal algorithms","authors":"Arsène Pérard-Gayot, Martin Weier, Richard Membarth, P. Slusallek, Roland Leißa, Sebastian Hack","doi":"10.1145/3136040.3136044","DOIUrl":"https://doi.org/10.1145/3136040.3136044","url":null,"abstract":"In order to achieve the highest possible performance, the ray traversal and intersection routines at the core of every high-performance ray tracer are usually hand-coded, heavily optimized, and implemented separately for each hardware platform—even though they share most of their algorithmic core. The results are implementations that heavily mix algorithmic aspects with hardware and implementation details, making the code non-portable and difficult to change and maintain. In this paper, we present a new approach that offers the ability to define in a functional language a set of conceptual, high-level language abstractions that are optimized away by a special compiler in order to maximize performance. Using this abstraction mechanism we separate a generic ray traversal and intersection algorithm from its low-level aspects that are specific to the target hardware. We demonstrate that our code is not only significantly more flexible, simpler to write, and more concise but also that the compiled results perform as well as state-of-the-art implementations on any of the tested CPU and GPU platforms.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"77 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128674223","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
How preprocessor annotations (do not) affect maintainability: a case study on change-proneness 预处理器注释(不)如何影响可维护性:一个关于易变性的案例研究
W. Fenske, Sandro Schulze, G. Saake
Preprocessor annotations (e.g., #ifdef in C) enable the development of similar, but distinct software variants from a common code base. One particularly popular preprocessor is the C preprocessor, cpp. But the cpp is also widely criticized for impeding software maintenance by making code hard to understand and change. Yet, evidence to support this criticism is scarce. In this paper, we investigate the relation between cpp usage and maintenance effort, which we approximate with the frequency and extent of source code changes. To this end, we mined the version control repositories of eight open- source systems written in C. For each system, we measured if and how individual functions use cpp annotations and how they were changed. We found that functions containing cpp annotations are generally changed more frequently and more profoundly than other functions. However, when accounting for function size, the differences disappear or are greatly diminished. In summary, with respect to the frequency and extent of changes, our findings do not support the criticism of the cpp regarding maintainability.
预处理器注释(例如,C中的#ifdef)允许从通用代码库开发类似但不同的软件变体。一个特别流行的预处理器是C预处理器cpp。但cpp也因其使代码难以理解和更改而阻碍了软件维护而受到广泛批评。然而,支持这种批评的证据很少。在本文中,我们研究了cpp使用和维护工作量之间的关系,我们将其近似为源代码更改的频率和范围。为此,我们挖掘了八个用c语言编写的开源系统的版本控制库。对于每个系统,我们测量了单个函数是否以及如何使用cpp注释,以及它们是如何被更改的。我们发现包含cpp注释的函数通常比其他函数更改得更频繁、更深刻。然而,当考虑函数大小时,差异消失或大大减少。总之,关于变化的频率和程度,我们的发现不支持对cpp关于可维护性的批评。
{"title":"How preprocessor annotations (do not) affect maintainability: a case study on change-proneness","authors":"W. Fenske, Sandro Schulze, G. Saake","doi":"10.1145/3136040.3136059","DOIUrl":"https://doi.org/10.1145/3136040.3136059","url":null,"abstract":"Preprocessor annotations (e.g., #ifdef in C) enable the development of similar, but distinct software variants from a common code base. One particularly popular preprocessor is the C preprocessor, cpp. But the cpp is also widely criticized for impeding software maintenance by making code hard to understand and change. Yet, evidence to support this criticism is scarce. In this paper, we investigate the relation between cpp usage and maintenance effort, which we approximate with the frequency and extent of source code changes. To this end, we mined the version control repositories of eight open- source systems written in C. For each system, we measured if and how individual functions use cpp annotations and how they were changed. We found that functions containing cpp annotations are generally changed more frequently and more profoundly than other functions. However, when accounting for function size, the differences disappear or are greatly diminished. In summary, with respect to the frequency and extent of changes, our findings do not support the criticism of the cpp regarding maintainability.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"56 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125522404","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 12
A classification of variation control systems 变差控制系统的分类
L. Linsbauer, T. Berger, P. Grünbacher
Version control systems are an integral part of today's software and systems development processes. They facilitate the management of revisions (sequential versions) and variants (concurrent versions) of a system under development and enable collaboration between developers. Revisions are commonly maintained either per file or for the whole system. Variants are supported via branching or forking mechanisms that conceptually clone the whole system under development. It is known that such cloning practices come with disadvantages. In fact, while short-lived branches for isolated development of new functionality (a.k.a. feature branches) are well supported, dealing with long-term and fine-grained system variants currently requires employing additional mechanisms, such as preprocessors, build systems or custom configuration tools. Interestingly, the literature describes a number of variation control systems, which provide a richer set of capabilities for handling fine-grained system variants compared to the version control systems widely used today. In this paper we present a classification and comparison of selected variation control systems to get an understanding of their capabilities and the advantages they can offer. We discuss problems of variation control systems, which may explain their comparably low popularity. We also propose research activities we regard as important to change this situation.
版本控制系统是当今软件和系统开发过程中不可或缺的一部分。它们促进了正在开发的系统的修订(顺序版本)和变体(并发版本)的管理,并支持开发人员之间的协作。修订通常对每个文件或整个系统进行维护。变体通过分支或分支机制得到支持,这些机制在概念上克隆了正在开发的整个系统。众所周知,这样的克隆做法是有缺点的。事实上,虽然用于新功能独立开发的短期分支(又名特性分支)得到了很好的支持,但处理长期和细粒度的系统变体目前需要使用额外的机制,例如预处理器、构建系统或自定义配置工具。有趣的是,文献中描述了许多变体控制系统,与目前广泛使用的版本控制系统相比,它们为处理细粒度系统变体提供了更丰富的功能集。在本文中,我们提出了一个分类和比较选定的变差控制系统,以了解他们的能力和优势,他们可以提供。我们讨论了变化控制系统的问题,这可能解释了它们相对不受欢迎的原因。我们还提出了一些研究活动,我们认为这对改变这种状况很重要。
{"title":"A classification of variation control systems","authors":"L. Linsbauer, T. Berger, P. Grünbacher","doi":"10.1145/3136040.3136054","DOIUrl":"https://doi.org/10.1145/3136040.3136054","url":null,"abstract":"Version control systems are an integral part of today's software and systems development processes. They facilitate the management of revisions (sequential versions) and variants (concurrent versions) of a system under development and enable collaboration between developers. Revisions are commonly maintained either per file or for the whole system. Variants are supported via branching or forking mechanisms that conceptually clone the whole system under development. It is known that such cloning practices come with disadvantages. In fact, while short-lived branches for isolated development of new functionality (a.k.a. feature branches) are well supported, dealing with long-term and fine-grained system variants currently requires employing additional mechanisms, such as preprocessors, build systems or custom configuration tools. Interestingly, the literature describes a number of variation control systems, which provide a richer set of capabilities for handling fine-grained system variants compared to the version control systems widely used today. In this paper we present a classification and comparison of selected variation control systems to get an understanding of their capabilities and the advantages they can offer. We discuss problems of variation control systems, which may explain their comparably low popularity. We also propose research activities we regard as important to change this situation.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128588543","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 50
Type qualifiers as composable language extensions 将限定符类型为可组合语言扩展
Travis Carlson, E. V. Wyk
This paper reformulates type qualifiers as language extensions that can be automatically and reliably composed. Type qualifiers annotate type expressions to introduce new subtyping relations and are powerful enough to detect many kinds of errors. Type qualifiers, as illustrated in our ableC extensible language framework for C, can introduce rich forms of concrete syntax, can generate dynamic checks on data when static checks are infeasible or not appropriate, and inject code that affects the program's behavior, for example for conversions of data or logging. ableC language extensions to C are implemented as attribute grammar fragments and provide an expressive mechanism for type qualifier implementations to check for additional errors, e.g. dereferences to pointers not qualified by a "nonnull" qualifier, and report custom error messages. Our approach distinguishes language extension users from developers and provides modular analyses to developers to ensure that when users select a set of extensions to use, they will automatically compose to form a working compiler.
本文将类型限定符重新表述为可以自动可靠地组合的语言扩展。类型限定符注释类型表达式以引入新的子类型关系,并且功能强大,可以检测多种错误。类型限定符,如我们的ableC可扩展语言框架所示,可以引入丰富的具体语法形式,可以在静态检查不可行或不合适时对数据生成动态检查,并注入影响程序行为的代码,例如用于数据转换或日志记录。ableC语言对C的扩展是作为属性语法片段实现的,并为类型限定符实现提供了一种表达机制,以检查额外的错误,例如对未被“非空”限定符限定的指针的解引用,并报告自定义错误消息。我们的方法将语言扩展用户与开发人员区分开来,并为开发人员提供模块化分析,以确保当用户选择要使用的一组扩展时,它们将自动组合成一个可工作的编译器。
{"title":"Type qualifiers as composable language extensions","authors":"Travis Carlson, E. V. Wyk","doi":"10.1145/3136040.3136055","DOIUrl":"https://doi.org/10.1145/3136040.3136055","url":null,"abstract":"This paper reformulates type qualifiers as language extensions that can be automatically and reliably composed. Type qualifiers annotate type expressions to introduce new subtyping relations and are powerful enough to detect many kinds of errors. Type qualifiers, as illustrated in our ableC extensible language framework for C, can introduce rich forms of concrete syntax, can generate dynamic checks on data when static checks are infeasible or not appropriate, and inject code that affects the program's behavior, for example for conversions of data or logging. ableC language extensions to C are implemented as attribute grammar fragments and provide an expressive mechanism for type qualifier implementations to check for additional errors, e.g. dereferences to pointers not qualified by a \"nonnull\" qualifier, and report custom error messages. Our approach distinguishes language extension users from developers and provides modular analyses to developers to ensure that when users select a set of extensions to use, they will automatically compose to form a working compiler.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116801373","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Four languages and lots of macros: analyzing autotools build systems 四种语言和大量宏:分析自动工具构建系统
Jafar M. Al-Kofahi, S. Kothari, Christian Kästner
Build systems are crucial for software system development, however there is a lack of tool support to help with their high maintenance overhead. GNU Autotools are widely used in the open source community, but users face various challenges from its hard to comprehend nature and staging of multiple code generation steps, often leading to low quality and error-prone build code. In this paper, we present a platform, AutoHaven, to provide a foundation for developers to create analysis tools to help them understand, maintain, and migrate their GNU Autotools build systems. Internally it uses approximate parsing and symbolic analysis of the build logic. We illustrate the use of the platform with two tools: ACSense helps developers to better understand their build systems and ACSniff detects build smells to improve build code quality. Our evaluation shows that AutoHaven can support most GNU Autotools build systems and can detect build smells in the wild.
构建系统对于软件系统开发是至关重要的,但是缺乏工具支持来帮助处理它们的高维护开销。GNU Autotools在开源社区中被广泛使用,但是用户面临着各种各样的挑战,因为它很难理解多个代码生成步骤的性质和阶段,经常导致低质量和易出错的构建代码。在本文中,我们提出了一个平台AutoHaven,为开发人员创建分析工具提供了一个基础,以帮助他们理解、维护和迁移他们的GNU Autotools构建系统。在内部,它使用构建逻辑的近似解析和符号分析。我们用两个工具来说明这个平台的使用:ACSense帮助开发人员更好地理解他们的构建系统,而ACSniff检测构建气味以提高构建代码质量。我们的评估显示,AutoHaven可以支持大多数GNU Autotools构建系统,并且可以检测到野外的构建气味。
{"title":"Four languages and lots of macros: analyzing autotools build systems","authors":"Jafar M. Al-Kofahi, S. Kothari, Christian Kästner","doi":"10.1145/3136040.3136051","DOIUrl":"https://doi.org/10.1145/3136040.3136051","url":null,"abstract":"Build systems are crucial for software system development, however there is a lack of tool support to help with their high maintenance overhead. GNU Autotools are widely used in the open source community, but users face various challenges from its hard to comprehend nature and staging of multiple code generation steps, often leading to low quality and error-prone build code. In this paper, we present a platform, AutoHaven, to provide a foundation for developers to create analysis tools to help them understand, maintain, and migrate their GNU Autotools build systems. Internally it uses approximate parsing and symbolic analysis of the build logic. We illustrate the use of the platform with two tools: ACSense helps developers to better understand their build systems and ACSniff detects build smells to improve build code quality. Our evaluation shows that AutoHaven can support most GNU Autotools build systems and can detect build smells in the wild.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"655 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117106303","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Analyzing the impact of natural language processing over feature location in models 分析自然语言处理对模型中特征定位的影响
Raúl Lapeña, Jaime Font, Ó. Pastor, Carlos Cetina
Feature Location (FL) is a common task in the Software Engineering field, specially in maintenance and evolution of software products. The results of FL depend in a great manner in the style in which Feature Descriptions and software artifacts are written. Therefore, Natural Language Processing (NLP) techniques are used to process them. Through this paper, we analyze the influence of the most common NLP techniques over FL in Conceptual Models through Latent Semantic Indexing, and the influence of human participation when embedding domain knowledge in the process. We evaluated the techniques in a real-world industrial case study in the rolling stocks domain.
特征定位(Feature Location, FL)是软件工程领域,特别是软件产品的维护和开发中的一项常见任务。FL的结果在很大程度上取决于编写特性描述和软件工件的风格。因此,自然语言处理(NLP)技术被用于处理它们。通过本文,我们通过潜在语义索引分析了最常见的NLP技术对概念模型中FL的影响,以及在嵌入领域知识的过程中人类参与的影响。我们在铁路车辆领域的实际工业案例研究中评估了这些技术。
{"title":"Analyzing the impact of natural language processing over feature location in models","authors":"Raúl Lapeña, Jaime Font, Ó. Pastor, Carlos Cetina","doi":"10.1145/3136040.3136052","DOIUrl":"https://doi.org/10.1145/3136040.3136052","url":null,"abstract":"Feature Location (FL) is a common task in the Software Engineering field, specially in maintenance and evolution of software products. The results of FL depend in a great manner in the style in which Feature Descriptions and software artifacts are written. Therefore, Natural Language Processing (NLP) techniques are used to process them. Through this paper, we analyze the influence of the most common NLP techniques over FL in Conceptual Models through Latent Semantic Indexing, and the influence of human participation when embedding domain knowledge in the process. We evaluated the techniques in a real-world industrial case study in the rolling stocks domain.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115606219","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 11
Avoiding useless mutants 避免无用的变种
Leo Fernandes, Márcio Ribeiro, Luiz Carvalho, Rohit Gheyi, Melina Mongiovi, André L. M. Santos, Ana Cavalcanti, F. Ferrari, J. Maldonado
Mutation testing is a program-transformation technique that injects artificial bugs to check whether the existing test suite can detect them. However, the costs of using mutation testing are usually high, hindering its use in industry. Useless mutants (equivalent and duplicated) contribute to increase costs. Previous research has focused mainly on detecting useless mutants only after they are generated and compiled. In this paper, we introduce a strategy to help developers with deriving rules to avoid the generation of useless mutants. To use our strategy, we pass as input a set of programs. For each program, we also need a passing test suite and a set of mutants. As output, our strategy yields a set of useless mutants candidates. After manually confirming that the mutants classified by our strategy as "useless" are indeed useless, we derive rules that can avoid their generation and thus decrease costs. To the best of our knowledge, we introduce 37 new rules that can avoid useless mutants right before their generation. We then implement a subset of these rules in the MUJAVA mutation testing tool. Since our rules have been derived based on artificial and small Java programs, we take our MUJAVA version embedded with our rules and execute it in industrial-scale projects. Our rules reduced the number of mutants by almost 13% on average. Our results are promising because (i) we avoid useless mutants generation; (ii) our strategy can help with identifying more rules in case we set it to use more complex Java programs; and (iii) our MUJAVA version has only a subset of the rules we derived.
突变测试是一种程序转换技术,它注入人工错误来检查现有的测试套件是否可以检测到它们。然而,使用突变检测的成本通常很高,阻碍了它在工业上的应用。无用的突变体(等同的和重复的)会增加成本。以往的研究主要集中在无用突变体产生和编译后的检测上。在本文中,我们介绍了一种策略来帮助开发人员派生规则,以避免产生无用的突变体。为了使用我们的策略,我们传递了一组程序作为输入。对于每个程序,我们还需要一个通过的测试套件和一组突变体。作为输出,我们的策略产生了一组无用的候选突变体。在手动确认被我们的策略分类为“无用”的突变体确实是无用的之后,我们推导出可以避免它们产生的规则,从而降低成本。据我们所知,我们引入了37条新规则,可以避免无用的突变体在他们的一代之前出现。然后我们在MUJAVA突变测试工具中实现这些规则的一个子集。由于我们的规则是基于人工的小型Java程序派生的,因此我们将嵌入规则的MUJAVA版本应用于工业规模的项目中。我们的规则使突变体的数量平均减少了13%。我们的结果是有希望的,因为(i)我们避免了无用的突变体的产生;(ii)我们的策略可以帮助识别更多的规则,以防我们设置它使用更复杂的Java程序;(iii)我们的MUJAVA版本只有我们派生的规则的一个子集。
{"title":"Avoiding useless mutants","authors":"Leo Fernandes, Márcio Ribeiro, Luiz Carvalho, Rohit Gheyi, Melina Mongiovi, André L. M. Santos, Ana Cavalcanti, F. Ferrari, J. Maldonado","doi":"10.1145/3136040.3136053","DOIUrl":"https://doi.org/10.1145/3136040.3136053","url":null,"abstract":"Mutation testing is a program-transformation technique that injects artificial bugs to check whether the existing test suite can detect them. However, the costs of using mutation testing are usually high, hindering its use in industry. Useless mutants (equivalent and duplicated) contribute to increase costs. Previous research has focused mainly on detecting useless mutants only after they are generated and compiled. In this paper, we introduce a strategy to help developers with deriving rules to avoid the generation of useless mutants. To use our strategy, we pass as input a set of programs. For each program, we also need a passing test suite and a set of mutants. As output, our strategy yields a set of useless mutants candidates. After manually confirming that the mutants classified by our strategy as \"useless\" are indeed useless, we derive rules that can avoid their generation and thus decrease costs. To the best of our knowledge, we introduce 37 new rules that can avoid useless mutants right before their generation. We then implement a subset of these rules in the MUJAVA mutation testing tool. Since our rules have been derived based on artificial and small Java programs, we take our MUJAVA version embedded with our rules and execute it in industrial-scale projects. Our rules reduced the number of mutants by almost 13% on average. Our results are promising because (i) we avoid useless mutants generation; (ii) our strategy can help with identifying more rules in case we set it to use more complex Java programs; and (iii) our MUJAVA version has only a subset of the rules we derived.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"90 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115867587","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 31
Staging with control: type-safe multi-stage programming with control operators 带控制的分段:带控制操作符的类型安全的多阶段编程
Junpei Oishi, Yukiyoshi Kameyama
Staging allows a programmer to write domain-specific, custom code generators. Ideally, a programming language for staging provides all necessary features for staging, and at the same time, gives static guarantee for the safety properties of generated code including well typedness and well scopedness. We address this classic problem for the language with control operators, which allow code optimizations in a modular and compact way. Specifically, we design a staged programming language with the expressive control operators shift0 and reset0, which let us express, for instance, multi-layer let-insertion, while keeping the static guarantee of well typedness and well scopedness. For this purpose, we extend our earlier work on refined environment classifiers which were introduced for the staging language with state. We show that our language is expressive enough to express interesting code generation techniques, and that the type system enjoys type soundness. We also mention a type inference algorithm for our language under reasonable restriction.
Staging允许程序员编写特定于领域的自定义代码生成器。理想情况下,用于分段的编程语言应提供分段所需的所有功能,同时为生成的代码的安全属性(包括良好的类型和良好的作用域)提供静态保证。我们用控制操作符解决了这个经典的语言问题,它允许以模块化和紧凑的方式进行代码优化。具体来说,我们设计了一种带有表达性控制操作符shift0和reset0的分阶段编程语言,使我们能够在保持良好类型和良好作用域的静态保证的情况下,表达例如多层let-insert。出于这个目的,我们扩展了我们早期在细化环境分类器方面的工作,这些分类器是为带有状态的阶段语言引入的。我们展示了我们的语言具有足够的表现力,可以表达有趣的代码生成技术,并且类型系统具有类型稳健性。我们还在合理的限制下为我们的语言提出了一种类型推断算法。
{"title":"Staging with control: type-safe multi-stage programming with control operators","authors":"Junpei Oishi, Yukiyoshi Kameyama","doi":"10.1145/3136040.3136049","DOIUrl":"https://doi.org/10.1145/3136040.3136049","url":null,"abstract":"Staging allows a programmer to write domain-specific, custom code generators. Ideally, a programming language for staging provides all necessary features for staging, and at the same time, gives static guarantee for the safety properties of generated code including well typedness and well scopedness. We address this classic problem for the language with control operators, which allow code optimizations in a modular and compact way. Specifically, we design a staged programming language with the expressive control operators shift0 and reset0, which let us express, for instance, multi-layer let-insertion, while keeping the static guarantee of well typedness and well scopedness. For this purpose, we extend our earlier work on refined environment classifiers which were introduced for the staging language with state. We show that our language is expressive enough to express interesting code generation techniques, and that the type system enjoys type soundness. We also mention a type inference algorithm for our language under reasonable restriction.","PeriodicalId":398999,"journal":{"name":"Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-10-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134353253","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
期刊
Proceedings of the 16th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1