首页 > 最新文献

2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)最新文献

英文 中文
Automated refactoring of client-side JavaScript code to ES6 modules 将客户端JavaScript代码自动重构为ES6模块
Aikaterini Paltoglou, Vassilis Zafeiris, E. Giakoumakis, N. Diamantidis
JavaScript (JS) is a dynamic, weakly-typed and object-based programming language that expanded its reach, in recent years, from the desktop web browser to a wide range of runtime platforms in embedded, mobile and server hosts. Moreover, the scope of functionality implemented in JS scaled from DOM manipulation in dynamic HTML pages to full-scale applications for various domains, stressing the need for code reusability and maintainability. Towards this direction, the ECMAScript 6 (ES6) revision of the language standardized the syntax for class and module definitions, streamlining the encapsulation of data and functionality at various levels of granularity. This work focuses on refactoring client-side web applications for the elimination of code smells, relevant to global variables and functions that are declared in JS files linked to a web page. These declarations "pollute" the global namespace at runtime and often lead to name conflicts with undesired effects. We propose a method for the encapsulation of global declarations through automated refactoring to ES6 modules. Our approach transforms each linked JS script of a web application to an ES6 module with appropriate import and export declarations that are inferred through static analysis. A prototype implementation of the proposed method, based on WALA libraries, has been evaluated on a set of open source projects. The evaluation results support the applicability and runtime efficiency of the proposed method.
JavaScript (JS)是一种动态的、弱类型的、基于对象的编程语言,近年来,它的应用范围从桌面web浏览器扩展到了嵌入式、移动和服务器主机的各种运行时平台。此外,JS实现的功能范围从动态HTML页面中的DOM操作扩展到各种领域的全面应用程序,强调了对代码可重用性和可维护性的需求。朝着这个方向,该语言的ECMAScript 6 (ES6)修订版标准化了类和模块定义的语法,在不同粒度级别上简化了数据和功能的封装。这项工作的重点是重构客户端web应用程序,以消除与链接到网页的JS文件中声明的全局变量和函数相关的代码气味。这些声明在运行时“污染”了全局命名空间,并经常导致不希望看到的名称冲突。我们提出了一种通过自动重构ES6模块来封装全局声明的方法。我们的方法将web应用程序的每个链接的JS脚本转换为ES6模块,并通过静态分析推断出适当的导入和导出声明。基于WALA库的所提出方法的原型实现已经在一组开源项目中进行了评估。评价结果支持了该方法的适用性和运行效率。
{"title":"Automated refactoring of client-side JavaScript code to ES6 modules","authors":"Aikaterini Paltoglou, Vassilis Zafeiris, E. Giakoumakis, N. Diamantidis","doi":"10.1109/SANER.2018.8330227","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330227","url":null,"abstract":"JavaScript (JS) is a dynamic, weakly-typed and object-based programming language that expanded its reach, in recent years, from the desktop web browser to a wide range of runtime platforms in embedded, mobile and server hosts. Moreover, the scope of functionality implemented in JS scaled from DOM manipulation in dynamic HTML pages to full-scale applications for various domains, stressing the need for code reusability and maintainability. Towards this direction, the ECMAScript 6 (ES6) revision of the language standardized the syntax for class and module definitions, streamlining the encapsulation of data and functionality at various levels of granularity. This work focuses on refactoring client-side web applications for the elimination of code smells, relevant to global variables and functions that are declared in JS files linked to a web page. These declarations \"pollute\" the global namespace at runtime and often lead to name conflicts with undesired effects. We propose a method for the encapsulation of global declarations through automated refactoring to ES6 modules. Our approach transforms each linked JS script of a web application to an ES6 module with appropriate import and export declarations that are inferred through static analysis. A prototype implementation of the proposed method, based on WALA libraries, has been evaluated on a set of open source projects. The evaluation results support the applicability and runtime efficiency of the proposed method.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"90 1","pages":"402-412"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89960059","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
How good is your puppet? An empirically defined and validated quality model for puppet 你的木偶有多好?一个经验定义和验证的木偶质量模型
Eduard van der Bent, Jurriaan Hage, Joost Visser, Georgios Gousios
Puppet is a declarative language for configuration management that has rapidly gained popularity in recent years. Numerous organizations now rely on Puppet code for deploying their software systems onto cloud infrastructures. In this paper we provide a definition of code quality for Puppet code and an automated technique for measuring and rating Puppet code quality. To this end, we first explore the notion of code quality as it applies to Puppet code by performing a survey among Puppet developers. Second, we develop a measurement model for the maintainability aspect of Puppet code quality. To arrive at this measurement model, we derive appropriate quality metrics from our survey results and from existing software quality models. We implemented the Puppet code quality model in a software analysis tool. We validate our definition of Puppet code quality and the measurement model by a structured interview with Puppet experts and by comparing the tool results with quality judgments of those experts. The validation shows that the measurement model and tool provide quality judgments of Puppet code that closely match the judgments of experts. Also, the experts deem the model appropriate and usable in practice. The Software Improvement Group (SIG) has started using the model in its consultancy practice.
Puppet是一种用于配置管理的声明性语言,近年来迅速流行起来。许多组织现在依靠Puppet代码将他们的软件系统部署到云基础设施上。本文给出了Puppet代码质量的定义和一种自动化的度量和评价Puppet代码质量的技术。为此,我们首先通过对Puppet开发人员进行调查来探讨代码质量的概念,因为它适用于Puppet代码。其次,我们为Puppet代码质量的可维护性方面开发了一个度量模型。为了达到这个度量模型,我们从我们的调查结果和现有的软件质量模型中得到适当的质量度量。我们在软件分析工具中实现了Puppet代码质量模型。我们通过与Puppet专家的结构化访谈,并通过将工具结果与这些专家的质量判断进行比较,来验证我们对Puppet代码质量和度量模型的定义。验证表明,度量模型和工具提供的Puppet代码质量判断与专家的判断非常接近。此外,专家们认为该模型在实践中是合适的和可用的。软件改进组(SIG)已经开始在其咨询实践中使用该模型。
{"title":"How good is your puppet? An empirically defined and validated quality model for puppet","authors":"Eduard van der Bent, Jurriaan Hage, Joost Visser, Georgios Gousios","doi":"10.1109/SANER.2018.8330206","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330206","url":null,"abstract":"Puppet is a declarative language for configuration management that has rapidly gained popularity in recent years. Numerous organizations now rely on Puppet code for deploying their software systems onto cloud infrastructures. In this paper we provide a definition of code quality for Puppet code and an automated technique for measuring and rating Puppet code quality. To this end, we first explore the notion of code quality as it applies to Puppet code by performing a survey among Puppet developers. Second, we develop a measurement model for the maintainability aspect of Puppet code quality. To arrive at this measurement model, we derive appropriate quality metrics from our survey results and from existing software quality models. We implemented the Puppet code quality model in a software analysis tool. We validate our definition of Puppet code quality and the measurement model by a structured interview with Puppet experts and by comparing the tool results with quality judgments of those experts. The validation shows that the measurement model and tool provide quality judgments of Puppet code that closely match the judgments of experts. Also, the experts deem the model appropriate and usable in practice. The Software Improvement Group (SIG) has started using the model in its consultancy practice.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"31 1","pages":"164-174"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91011434","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}
引用次数: 40
Using a probabilistic model to predict bug fixes 使用概率模型来预测bug修复
Mauricio Soto, Claire Le Goues
Automatic Software Repair (APR) has significant potential to reduce software maintenance costs by reducing the human effort required to localize and fix bugs. State-of-the-art generate-and-validate APR techniques select between and instantiate various mutation operators to construct candidate patches, informed largely by heuristic probability distributions. This may reduce effectiveness in terms of both efficiency and output quality. In practice, human developers have many options in terms of how to edit code to fix bugs, some of which are far more common than others (e.g., deleting a line of code is more common than adding a new class). We mined the most recent 100 bug-fixing commits from each of the 500 most popular Java projects in GitHub (the largest dataset to date) to create a probabilistic model describing edit distributions. We categorize, compare and evaluate the different mutation operators used in state-of-the-art approaches. We find that a probabilistic modelbased APR approach patches bugs more quickly in the majority of bugs studied, and that the resulting patches are of higher quality than those produced by previous approaches. Finally, we mine association rules for multi-edit source code changes, an understudied but important problem. We validate the association rules by analyzing how much of our corpus can be built from them. Our evaluation indicates that 84.6% of the multi-edit patches from the corpus can be built from the association rules, while maintaining 90% confidence.
自动软件修复(Automatic Software Repair, APR)具有显著的潜力,可以通过减少本地化和修复错误所需的人力来降低软件维护成本。最先进的生成和验证APR技术选择并实例化各种突变操作符来构建候选补丁,主要由启发式概率分布提供信息。这可能会降低效率和产出质量方面的有效性。在实践中,人类开发人员在如何编辑代码以修复错误方面有许多选择,其中一些比其他更常见(例如,删除一行代码比添加一个新类更常见)。我们从GitHub(迄今为止最大的数据集)中500个最受欢迎的Java项目中挖掘了最近的100个bug修复提交,以创建描述编辑发行版的概率模型。我们对最先进的方法中使用的不同突变算子进行分类,比较和评估。我们发现基于概率模型的APR方法在研究的大多数错误中更快地修补错误,并且所得到的补丁质量比以前的方法更高。最后,我们挖掘了多编辑源代码更改的关联规则,这是一个尚未得到充分研究但很重要的问题。我们通过分析有多少语料库可以由它们构建来验证关联规则。我们的评估表明,84.6%的多编辑补丁可以从关联规则中构建,同时保持90%的置信度。
{"title":"Using a probabilistic model to predict bug fixes","authors":"Mauricio Soto, Claire Le Goues","doi":"10.1109/SANER.2018.8330211","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330211","url":null,"abstract":"Automatic Software Repair (APR) has significant potential to reduce software maintenance costs by reducing the human effort required to localize and fix bugs. State-of-the-art generate-and-validate APR techniques select between and instantiate various mutation operators to construct candidate patches, informed largely by heuristic probability distributions. This may reduce effectiveness in terms of both efficiency and output quality. In practice, human developers have many options in terms of how to edit code to fix bugs, some of which are far more common than others (e.g., deleting a line of code is more common than adding a new class). We mined the most recent 100 bug-fixing commits from each of the 500 most popular Java projects in GitHub (the largest dataset to date) to create a probabilistic model describing edit distributions. We categorize, compare and evaluate the different mutation operators used in state-of-the-art approaches. We find that a probabilistic modelbased APR approach patches bugs more quickly in the majority of bugs studied, and that the resulting patches are of higher quality than those produced by previous approaches. Finally, we mine association rules for multi-edit source code changes, an understudied but important problem. We validate the association rules by analyzing how much of our corpus can be built from them. Our evaluation indicates that 84.6% of the multi-edit patches from the corpus can be built from the association rules, while maintaining 90% confidence.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"40 1","pages":"221-231"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91276354","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}
引用次数: 36
SMARTLOG: Place error log statement by deep understanding of log intention SMARTLOG:通过对日志意图的深刻理解,放置错误日志语句
Zhouyang Jia, Shanshan Li, Xiaodong Liu, Xiangke Liao, Yunhuai Liu
Failure-diagnosis logs can dramatically reduce the system recovery time when software systems fail. Log automation tools can assist developers to write high quality log code. In traditional designs of log automation tools, they define log placement rules by extracting syntax features or summarizing code patterns. These approaches are, however, limited since the log placements are far beyond those rules but are according to the intention of software code. To overcome these limitations, we design and implement SmartLog, an intention-aware log automation tool. To describe the intention of log statements, we propose the Intention Description Model (IDM). SmartLog then explores the intention of existing logs and mines log rules from equivalent intentions. We conduct the experiments based on 6 real-world open-source projects. Experimental results show that SmartLog improves the accuracy of log placement by 43% and 16% compared with two state-of-the-art works. For 86 real-world patches aimed to add logs, 57% of them can be covered by SmartLog, while the overhead of all additional logs is less than 1%.
当软件系统出现故障时,故障诊断日志可以大大缩短系统恢复时间。日志自动化工具可以帮助开发人员编写高质量的日志代码。在传统的日志自动化工具设计中,它们通过提取语法特征或总结代码模式来定义日志放置规则。然而,这些方法是有限的,因为日志的位置远远超出了这些规则,而是根据软件代码的意图。为了克服这些限制,我们设计并实现了SmartLog,一个意图感知日志自动化工具。为了描述日志报表的意图,我们提出了意图描述模型(IDM)。SmartLog通过挖掘现有日志的意图,从等价意图中挖掘日志规则。我们基于6个真实的开源项目进行实验。实验结果表明,与两种最先进的测井工具相比,SmartLog的测井定位精度分别提高了43%和16%。对于86个旨在添加日志的实际补丁,SmartLog可以覆盖其中的57%,而所有额外日志的开销不到1%。
{"title":"SMARTLOG: Place error log statement by deep understanding of log intention","authors":"Zhouyang Jia, Shanshan Li, Xiaodong Liu, Xiangke Liao, Yunhuai Liu","doi":"10.1109/SANER.2018.8330197","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330197","url":null,"abstract":"Failure-diagnosis logs can dramatically reduce the system recovery time when software systems fail. Log automation tools can assist developers to write high quality log code. In traditional designs of log automation tools, they define log placement rules by extracting syntax features or summarizing code patterns. These approaches are, however, limited since the log placements are far beyond those rules but are according to the intention of software code. To overcome these limitations, we design and implement SmartLog, an intention-aware log automation tool. To describe the intention of log statements, we propose the Intention Description Model (IDM). SmartLog then explores the intention of existing logs and mines log rules from equivalent intentions. We conduct the experiments based on 6 real-world open-source projects. Experimental results show that SmartLog improves the accuracy of log placement by 43% and 16% compared with two state-of-the-art works. For 86 real-world patches aimed to add logs, 57% of them can be covered by SmartLog, while the overhead of all additional logs is less than 1%.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"271 1","pages":"61-71"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77175774","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}
引用次数: 28
APIDiff: Detecting API breaking changes APIDiff:检测API破坏变化
Aline Brito, Laerte Xavier, André C. Hora, M. T. Valente
Libraries are commonly used to increase productivity. As most software systems, they evolve over time and changes are required. However, this process may involve breaking compatibility with previous versions, leading clients to fail. In this context, it is important that libraries creators and clients frequently assess API stability in order to better support their maintenance practices. In this paper, we introduce APIDIFF, a tool to identify API breaking and non-breaking changes between two versions of a Java library. The tool detects changes on three API elements: types, methods, and fields. We also report usage scenarios of APIDIFF with four real-world Java libraries.
库通常用于提高生产力。正如大多数软件系统一样,它们随着时间的推移而发展,并且需要进行更改。然而,这个过程可能会破坏与以前版本的兼容性,导致客户端失败。在这种情况下,库创建者和客户端经常评估API的稳定性,以便更好地支持他们的维护实践,这一点很重要。在本文中,我们介绍了APIDIFF,一个用于识别两个版本的Java库之间API中断和非中断更改的工具。该工具检测三个API元素上的更改:类型、方法和字段。我们还报告了APIDIFF与四个实际Java库的使用场景。
{"title":"APIDiff: Detecting API breaking changes","authors":"Aline Brito, Laerte Xavier, André C. Hora, M. T. Valente","doi":"10.1109/SANER.2018.8330249","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330249","url":null,"abstract":"Libraries are commonly used to increase productivity. As most software systems, they evolve over time and changes are required. However, this process may involve breaking compatibility with previous versions, leading clients to fail. In this context, it is important that libraries creators and clients frequently assess API stability in order to better support their maintenance practices. In this paper, we introduce APIDIFF, a tool to identify API breaking and non-breaking changes between two versions of a Java library. The tool detects changes on three API elements: types, methods, and fields. We also report usage scenarios of APIDIFF with four real-world Java libraries.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"3 1","pages":"507-511"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91504870","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}
引用次数: 40
Syntax and sensibility: Using language models to detect and correct syntax errors 语法和敏感性:使用语言模型来检测和纠正语法错误
E. Santos, Hazel Victoria Campbell, D. Patel, Abram Hindle, J. N. Amaral
Syntax errors are made by novice and experienced programmers alike; however, novice programmers lack the years of experience that help them quickly resolve these frustrating errors. Standard LR parsers are of little help, typically resolving syntax errors and their precise location poorly. We propose a methodology that locates where syntax errors occur, and suggests possible changes to the token stream that can fix the error identified. This methodology finds syntax errors by using language models trained on correct source code to find tokens that seem out of place. Fixes are synthesized by consulting the language models to determine what tokens are more likely at the estimated error location. We compare n-gram and LSTM (long short-term memory) language models for this task, each trained on a large corpus of Java code collected from GitHub. Unlike prior work, our methodology does not rely that the problem source code comes from the same domain as the training data. We evaluated against a repository of real student mistakes. Our tools are able to find a syntactically-valid fix within its top-2 suggestions, often producing the exact fix that the student used to resolve the error. The results show that this tool and methodology can locate and suggest corrections for syntax errors. Our methodology is of practical use to all programmers, but will be especially useful to novices frustrated with incomprehensible syntax errors.
初学者和有经验的程序员都会犯语法错误;然而,新手程序员缺乏多年的经验来帮助他们快速解决这些令人沮丧的错误。标准的LR解析器帮助不大,通常不能很好地解决语法错误及其精确位置。我们提出了一种方法来定位语法错误发生的位置,并建议对令牌流进行可能的更改,以修复所识别的错误。这种方法通过使用经过正确源代码训练的语言模型来查找似乎不合适的标记,从而发现语法错误。通过咨询语言模型来合成修复,以确定在估计的错误位置更可能出现哪些标记。我们比较了n-gram和LSTM(长短期记忆)语言模型,每个模型都在从GitHub收集的大量Java代码语料库上进行了训练。与之前的工作不同,我们的方法不依赖于问题源代码来自与训练数据相同的领域。我们根据学生的真实错误进行评估。我们的工具能够在前2个建议中找到语法上有效的修复,通常会生成学生用来解决错误的精确修复。结果表明,该工具和方法可以定位语法错误并提出纠正建议。我们的方法对所有程序员都有实际用途,但对那些因难以理解的语法错误而受挫的新手尤其有用。
{"title":"Syntax and sensibility: Using language models to detect and correct syntax errors","authors":"E. Santos, Hazel Victoria Campbell, D. Patel, Abram Hindle, J. N. Amaral","doi":"10.1109/SANER.2018.8330219","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330219","url":null,"abstract":"Syntax errors are made by novice and experienced programmers alike; however, novice programmers lack the years of experience that help them quickly resolve these frustrating errors. Standard LR parsers are of little help, typically resolving syntax errors and their precise location poorly. We propose a methodology that locates where syntax errors occur, and suggests possible changes to the token stream that can fix the error identified. This methodology finds syntax errors by using language models trained on correct source code to find tokens that seem out of place. Fixes are synthesized by consulting the language models to determine what tokens are more likely at the estimated error location. We compare n-gram and LSTM (long short-term memory) language models for this task, each trained on a large corpus of Java code collected from GitHub. Unlike prior work, our methodology does not rely that the problem source code comes from the same domain as the training data. We evaluated against a repository of real student mistakes. Our tools are able to find a syntactically-valid fix within its top-2 suggestions, often producing the exact fix that the student used to resolve the error. The results show that this tool and methodology can locate and suggest corrections for syntax errors. Our methodology is of practical use to all programmers, but will be especially useful to novices frustrated with incomprehensible syntax errors.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"74 1","pages":"311-322"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84444586","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}
引用次数: 77
Diggit: Automated code review via software repository mining Diggit:通过软件存储库挖掘进行自动代码审查
Robert Chatley, Lawrence Jones
We present Diggit, a tool to automatically generate code review comments, offering design guidance on prospective changes, based on insights gained from mining historical changes in source code repositories. We describe how the tool was built and tuned for use in practice as we integrated Diggit into the working processes of an industrial development team. We focus on the developer experience, the constraints that had to be met in adapting academic research to produce a tool that was useful to developers, and the effectiveness of the results in practice.
我们介绍digit,一个自动生成代码评审注释的工具,基于从源代码存储库中挖掘历史变更获得的见解,为预期变更提供设计指导。当我们将digit集成到工业开发团队的工作过程中时,我们描述了如何构建和调整该工具以用于实践。我们关注于开发人员的经验,在调整学术研究以产生对开发人员有用的工具时必须满足的约束,以及结果在实践中的有效性。
{"title":"Diggit: Automated code review via software repository mining","authors":"Robert Chatley, Lawrence Jones","doi":"10.1109/SANER.2018.8330261","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330261","url":null,"abstract":"We present Diggit, a tool to automatically generate code review comments, offering design guidance on prospective changes, based on insights gained from mining historical changes in source code repositories. We describe how the tool was built and tuned for use in practice as we integrated Diggit into the working processes of an industrial development team. We focus on the developer experience, the constraints that had to be met in adapting academic research to produce a tool that was useful to developers, and the effectiveness of the results in practice.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"56 1","pages":"567-571"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83542793","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}
引用次数: 10
OctoBubbles: A Multi-view interactive environment for concurrent visualization and synchronization of UML models and code OctoBubbles:用于UML模型和代码的并发可视化和同步化的多视图交互环境
Rodi Jolak, Khanh-Duy Le, Kaan Burak Sener, M. Chaudron
The process of software understanding often requires developers to consult both high- and low-level software artifacts (i.e. models and code). The creation and persistence of such artifacts often take place in different environments, as well as seldom in one single environment. In both cases, software models and code fragments are viewable separately making the workspace overcrowded with many opened interfaces and tabs. In such a situation, developers might lose the big picture and spend unnecessary effort on navigation and locating the artifact of interest. To assist program comprehension and tackle the problem of software navigation, we present OctoBubbles, a multi-view interactive environment for concurrent visualization and synchronization of software models and code. A preliminary evaluation of OctoBubbles with 15 professional developers shows a high level of interest, and points out to potential benefits. Furthermore, we present a future plan to quantitatively investigate the effectiveness of the environment.
软件理解的过程通常需要开发人员同时查阅高级和低级软件工件(即模型和代码)。这些工件的创建和持久化通常发生在不同的环境中,很少发生在单一环境中。在这两种情况下,软件模型和代码片段都是可以分开查看的,这使得工作空间充满了许多打开的界面和选项卡。在这种情况下,开发人员可能会失去大局,并在导航和定位感兴趣的工件上花费不必要的精力。为了帮助程序理解和解决软件导航问题,我们提出了一个多视图交互环境,用于软件模型和代码的并发可视化和同步。15名专业开发人员对OctoBubbles进行了初步评估,结果显示出人们对其非常感兴趣,并指出了潜在的好处。此外,我们提出了未来定量调查环境有效性的计划。
{"title":"OctoBubbles: A Multi-view interactive environment for concurrent visualization and synchronization of UML models and code","authors":"Rodi Jolak, Khanh-Duy Le, Kaan Burak Sener, M. Chaudron","doi":"10.1109/SANER.2018.8330244","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330244","url":null,"abstract":"The process of software understanding often requires developers to consult both high- and low-level software artifacts (i.e. models and code). The creation and persistence of such artifacts often take place in different environments, as well as seldom in one single environment. In both cases, software models and code fragments are viewable separately making the workspace overcrowded with many opened interfaces and tabs. In such a situation, developers might lose the big picture and spend unnecessary effort on navigation and locating the artifact of interest. To assist program comprehension and tackle the problem of software navigation, we present OctoBubbles, a multi-view interactive environment for concurrent visualization and synchronization of software models and code. A preliminary evaluation of OctoBubbles with 15 professional developers shows a high level of interest, and points out to potential benefits. Furthermore, we present a future plan to quantitatively investigate the effectiveness of the environment.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"4 1","pages":"482-486"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89954297","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
Detection of protection-impacting changes during software evolution 在软件演化过程中检测影响保护的更改
Marc-André Laverdière, E. Merlo
Role-Based Access Control (RBAC) is often used in web applications to restrict operations and protect security sensitive information and resources. Web applications regularly undergo maintenance and evolution and their security may be affected by source code changes between releases. To prevent security regression and vulnerabilities, developers have to take re-validation actions before deploying new releases. This may become a significant undertaking, especially when quick and repeated releases are sought. We define protection-impacting changes as those changed statements during evolution that alter privilege protection of some code. We propose an automated method that identifies protection-impacting changes within all changed statements between two versions. The proposed approach compares statically computed security protection models and repository information corresponding to different releases of a system to identify protection-impacting changes. Results of experiments present the occurrence of protection-impacting changes over 210 release pairs of WordPress, a PHP content management web application. First, we show that only 41% of the release pairs present protection-impacting changes. Second, for these affected release pairs, protection-impacting changes can be identified and represent a median of 47.00 lines of code, that is 27.41% of the total changed lines of code. Over all investigated releases in WordPress, protection-impacting changes amounted to 10.89% of changed lines of code. Conversely, an average of about 89% of changed source code have no impact on RBAC security and thus need no re-validation nor investigation. The proposed method reduces the amount of candidate causes of protection changes that developers need to investigate. This information could help developers re-validate application security, identify causes of negative security changes, and perform repairs in a more effective way.
基于角色的访问控制(Role-Based Access Control, RBAC)通常用于web应用程序中,以限制操作,保护安全敏感信息和资源。Web应用程序定期进行维护和发展,它们的安全性可能会受到版本之间源代码更改的影响。为了防止安全倒退和漏洞,开发人员必须在部署新版本之前采取重新验证操作。这可能成为一项重要的任务,特别是在寻求快速和重复发布时。我们将影响保护的更改定义为在进化过程中更改了某些代码的特权保护的语句。我们提出了一种自动化的方法来识别两个版本之间所有变更语句中影响保护的变更。所建议的方法比较静态计算的安全保护模型和对应于系统不同版本的存储库信息,以识别影响保护的更改。实验结果显示,在WordPress(一个PHP内容管理web应用程序)的210个发布对中发生了影响保护的更改。首先,我们发现只有41%的释放对出现了影响保护的变化。其次,对于这些受影响的发布对,影响保护的变更可以被识别,并且代表了47.00行代码的中位数,这是总变更代码行的27.41%。在所有被调查的WordPress版本中,影响保护的更改占更改代码行的10.89%。相反,平均约89%的更改源代码对RBAC安全性没有影响,因此不需要重新验证或调查。所提出的方法减少了开发人员需要调查的保护更改的候选原因的数量。这些信息可以帮助开发人员重新验证应用程序安全性,确定负面安全性更改的原因,并以更有效的方式执行修复。
{"title":"Detection of protection-impacting changes during software evolution","authors":"Marc-André Laverdière, E. Merlo","doi":"10.1109/SANER.2018.8330230","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330230","url":null,"abstract":"Role-Based Access Control (RBAC) is often used in web applications to restrict operations and protect security sensitive information and resources. Web applications regularly undergo maintenance and evolution and their security may be affected by source code changes between releases. To prevent security regression and vulnerabilities, developers have to take re-validation actions before deploying new releases. This may become a significant undertaking, especially when quick and repeated releases are sought. We define protection-impacting changes as those changed statements during evolution that alter privilege protection of some code. We propose an automated method that identifies protection-impacting changes within all changed statements between two versions. The proposed approach compares statically computed security protection models and repository information corresponding to different releases of a system to identify protection-impacting changes. Results of experiments present the occurrence of protection-impacting changes over 210 release pairs of WordPress, a PHP content management web application. First, we show that only 41% of the release pairs present protection-impacting changes. Second, for these affected release pairs, protection-impacting changes can be identified and represent a median of 47.00 lines of code, that is 27.41% of the total changed lines of code. Over all investigated releases in WordPress, protection-impacting changes amounted to 10.89% of changed lines of code. Conversely, an average of about 89% of changed source code have no impact on RBAC security and thus need no re-validation nor investigation. The proposed method reduces the amount of candidate causes of protection changes that developers need to investigate. This information could help developers re-validate application security, identify causes of negative security changes, and perform repairs in a more effective way.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"15 1","pages":"434-444"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"75673405","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
Maintaining behaviour driven development specifications: Challenges and opportunities 维护行为驱动的开发规范:挑战和机遇
L. Binamungu, Suzanne M. Embury, Nikolaos Konstantinou
In Behaviour-Driven Development (BDD) the behaviour of a software system is specified as a set of example interactions with the system using a "Given-When-Then" structure. These examples are expressed in high level domain-specific terms, and are executable. They thus act both as a specification of requirements and as tests that can verify whether the current system implementation provides the desired behaviour or not. This approach has many advantages but also presents some problems. When the number of examples grows, BDD specifications can become costly to maintain and extend. Some teams find that parts of the system are effectively frozen due to the challenges of finding and modifying the examples associated with them. We surveyed 75 BDD practitioners from 26 countries to understand the extent of BDD use, its benefits and challenges, and specifically the challenges of maintaining BDD specifications in practice. We found that BDD is in active use amongst respondents, and that the use of domain specific terms, improving communication among stakeholders, the executable nature of BDD specifications, and facilitating comprehension of code intentions are the main benefits of BDD. The results also showed that BDD specifications suffer the same maintenance challenges found in automated test suites more generally. We map the survey results to the literature, and propose 10 research opportunities in this area.
在行为驱动开发(BDD)中,软件系统的行为被指定为使用“给定-何时-然后”结构与系统进行的一组示例交互。这些示例用高级特定于领域的术语表示,并且是可执行的。因此,它们既可以作为需求的规范,也可以作为验证当前系统实现是否提供所需行为的测试。这种方法有很多优点,但也存在一些问题。当示例数量增加时,BDD规范的维护和扩展成本可能会变得很高。一些团队发现,由于寻找和修改与之相关的示例的挑战,系统的某些部分实际上被冻结了。我们调查了来自26个国家的75名BDD从业者,以了解BDD使用的范围、它的好处和挑战,特别是在实践中维护BDD规范的挑战。我们发现BDD在受访者中被积极使用,并且BDD的主要好处是使用特定领域的术语,改善涉众之间的沟通,BDD规范的可执行性,以及促进对代码意图的理解。结果还表明,BDD规范在更普遍的自动化测试套件中遇到了同样的维护挑战。我们将调查结果映射到文献中,并提出了这一领域的10个研究机会。
{"title":"Maintaining behaviour driven development specifications: Challenges and opportunities","authors":"L. Binamungu, Suzanne M. Embury, Nikolaos Konstantinou","doi":"10.1109/SANER.2018.8330207","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330207","url":null,"abstract":"In Behaviour-Driven Development (BDD) the behaviour of a software system is specified as a set of example interactions with the system using a \"Given-When-Then\" structure. These examples are expressed in high level domain-specific terms, and are executable. They thus act both as a specification of requirements and as tests that can verify whether the current system implementation provides the desired behaviour or not. This approach has many advantages but also presents some problems. When the number of examples grows, BDD specifications can become costly to maintain and extend. Some teams find that parts of the system are effectively frozen due to the challenges of finding and modifying the examples associated with them. We surveyed 75 BDD practitioners from 26 countries to understand the extent of BDD use, its benefits and challenges, and specifically the challenges of maintaining BDD specifications in practice. We found that BDD is in active use amongst respondents, and that the use of domain specific terms, improving communication among stakeholders, the executable nature of BDD specifications, and facilitating comprehension of code intentions are the main benefits of BDD. The results also showed that BDD specifications suffer the same maintenance challenges found in automated test suites more generally. We map the survey results to the literature, and propose 10 research opportunities in this area.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"45 1","pages":"175-184"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74917138","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}
引用次数: 19
期刊
2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)
全部 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