首页 > 最新文献

2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)最新文献

英文 中文
Rebasing in Code Review Considered Harmful: A Large-Scale Empirical Investigation 代码审查中的重基被认为是有害的:一项大规模的实证调查
M. Paixão, P. Maia
Code review has been widely acknowledged as a key quality assurance process in both open-source and industrial software development. Due to the asynchronicity of the code review process, the system's codebase tends to incorporate external commits while a source code change is reviewed, which cause the need for rebasing operations. External commits have the potential to modify files currently under review, which causes re-work for developers and fatigue for reviewers. Since source code changes observed during code review may be due to external commits, rebasing operations may pose a severe threat to empirical studies that employ code review data. Yet, to the best of our knowledge, there is no empirical study that characterises and investigates rebasing in real-world software systems. Hence, this paper reports an empirical investigation aimed at understanding the frequency in which rebasing operations occur and their side-effects in the reviewing process. To achieve so, we perform an in-depth large-scale empirical investigation of the code review data of 11 software systems, 28,808 code reviews and 99,121 revisions. Our observations indicate that developers need to perform rebasing operations in an average of 75.35% of code reviews. In addition, our data suggests that an average of 34.21% of rebasing operations tend to tamper with the reviewing process. Finally, we propose a methodology to handle rebasing in empirical studies that employ code review data. We show how an empirical study that does not account for rebasing operations may report skewed, biased and inaccurate observations.
在开放源代码和工业软件开发中,代码审查被广泛认为是一个关键的质量保证过程。由于代码审查过程的异步性,当审查源代码更改时,系统的代码库倾向于合并外部提交,这导致需要重基操作。外部提交有可能修改当前正在审查的文件,这会导致开发人员重新工作,并使审查者感到疲劳。由于在代码审查期间观察到的源代码更改可能是由于外部提交,重基操作可能对使用代码审查数据的经验研究构成严重威胁。然而,据我们所知,在现实世界的软件系统中,没有对重基进行表征和调查的实证研究。因此,本文报告了一项实证调查,旨在了解重基操作发生的频率及其在审查过程中的副作用。为此,我们对11个软件系统的代码审查数据、28,808次代码审查和99,121次修订进行了深入的大规模实证调查。我们的观察表明开发人员需要在平均75.35%的代码审查中执行重基操作。此外,我们的数据表明,平均34.21%的改基操作倾向于篡改审查过程。最后,我们提出了一种在使用代码审查数据的实证研究中处理重基的方法。我们展示了一项不考虑改基操作的实证研究如何报告扭曲、有偏见和不准确的观察结果。
{"title":"Rebasing in Code Review Considered Harmful: A Large-Scale Empirical Investigation","authors":"M. Paixão, P. Maia","doi":"10.1109/SCAM.2019.00014","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00014","url":null,"abstract":"Code review has been widely acknowledged as a key quality assurance process in both open-source and industrial software development. Due to the asynchronicity of the code review process, the system's codebase tends to incorporate external commits while a source code change is reviewed, which cause the need for rebasing operations. External commits have the potential to modify files currently under review, which causes re-work for developers and fatigue for reviewers. Since source code changes observed during code review may be due to external commits, rebasing operations may pose a severe threat to empirical studies that employ code review data. Yet, to the best of our knowledge, there is no empirical study that characterises and investigates rebasing in real-world software systems. Hence, this paper reports an empirical investigation aimed at understanding the frequency in which rebasing operations occur and their side-effects in the reviewing process. To achieve so, we perform an in-depth large-scale empirical investigation of the code review data of 11 software systems, 28,808 code reviews and 99,121 revisions. Our observations indicate that developers need to perform rebasing operations in an average of 75.35% of code reviews. In addition, our data suggests that an average of 34.21% of rebasing operations tend to tamper with the reviewing process. Finally, we propose a methodology to handle rebasing in empirical studies that employ code review data. We show how an empirical study that does not account for rebasing operations may report skewed, biased and inaccurate observations.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115499756","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
Software Engineering by Source Transformation – Experience with TXL (Most Influential Paper, SCAM 2001) 通过源转换的软件工程- TXL的经验(最具影响力的论文,SCAM 2001)
J. Cordy, T. Dean, A. Malton, Kevin A. Schneider
Most influential paper of SCAM 2001.
2001年最具影响力的论文。
{"title":"Software Engineering by Source Transformation – Experience with TXL (Most Influential Paper, SCAM 2001)","authors":"J. Cordy, T. Dean, A. Malton, Kevin A. Schneider","doi":"10.1109/SCAM.2019.00024","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00024","url":null,"abstract":"Most influential paper of SCAM 2001.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"10 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114935535","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}
引用次数: 0
Automatically Curated Data Sets 自动策划的数据集
Marcus Kessel, C. Atkinson
o validate hypotheses and tools that depend on the semantics of software, it is necessary to assemble, prepare and maintain (i.e. curate) large, high-quality corpora of executable software systems exhibiting certain desired behavior and/or properties. Today this is a highly tedious and laborious activity requiring significant human time and effort. In this paper we therefore present a prototype platform that supports the notion of “live data sets” where almost all aspects of the data set curation process are automated. Instead of curating data sets by hand, or writing dedicated tools to select and check software samples on a case-by-case basis, a live data set allows users to simply describe their requirements as abstract scripts written in a declarative domain specific language. After explaining the approach and the key ideas behind its implementation, in this paper we present two examples of executable corpora generated automatically from a live data set populated from Maven Central. The first illustrates a “semantics agnostic” use case where the actual behavior of the software is unimportant, while the second illustrates a “semantics specific” use case where software implementing a specific functional abstraction is selected.
为了验证依赖于软件语义的假设和工具,有必要组装、准备和维护(即管理)大型、高质量的可执行软件系统语料库,这些语料库显示出某些期望的行为和/或属性。今天,这是一项非常繁琐和费力的活动,需要大量的人力时间和精力。因此,在本文中,我们提出了一个支持“实时数据集”概念的原型平台,其中数据集管理过程的几乎所有方面都是自动化的。而不是手工管理数据集,或者编写专门的工具来逐个选择和检查软件样本,实时数据集允许用户简单地将他们的需求描述为用声明性领域特定语言编写的抽象脚本。在解释了该方法及其实现背后的关键思想之后,本文将给出两个可执行语料库的示例,这些语料库是从Maven Central填充的实时数据集自动生成的。第一个说明了一个“语义不可知”的用例,其中软件的实际行为是不重要的,而第二个说明了一个“语义特定”的用例,其中选择了实现特定功能抽象的软件。
{"title":"Automatically Curated Data Sets","authors":"Marcus Kessel, C. Atkinson","doi":"10.1109/SCAM.2019.00015","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00015","url":null,"abstract":"o validate hypotheses and tools that depend on the semantics of software, it is necessary to assemble, prepare and maintain (i.e. curate) large, high-quality corpora of executable software systems exhibiting certain desired behavior and/or properties. Today this is a highly tedious and laborious activity requiring significant human time and effort. In this paper we therefore present a prototype platform that supports the notion of “live data sets” where almost all aspects of the data set curation process are automated. Instead of curating data sets by hand, or writing dedicated tools to select and check software samples on a case-by-case basis, a live data set allows users to simply describe their requirements as abstract scripts written in a declarative domain specific language. After explaining the approach and the key ideas behind its implementation, in this paper we present two examples of executable corpora generated automatically from a live data set populated from Maven Central. The first illustrates a “semantics agnostic” use case where the actual behavior of the software is unimportant, while the second illustrates a “semantics specific” use case where software implementing a specific functional abstraction is selected.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130036565","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}
引用次数: 2
LUDroid: A Large Scale Analysis of Android – Web Hybridization LUDroid: Android - Web杂交的大规模分析
A. Tiwari, Jyoti Prakash, S. Groß, Christian Hammer
Many Android applications embed webpages via WebView components and execute JavaScript code within Android. Hybrid applications leverage dedicated APIs to load a resource and render it in WebView. Furthermore, Android objects can be shared with the JavaScript world. However, bridging the interfaces of the Android and JavaScript world might also incur severe security threats: Potentially untrusted webpages and their JavaScript might interfere with the Android environment and its access to native features. No general analysis is currently available to assess the implications of such hybrid apps bridging the two worlds. To understand the semantics and effects of hybrid apps, we perform a large-scale study on the usage of the hybridization APIs in the wild. We analyze and categorize the parameters to hybridization APIs for 7,500 randomly selected applications from the Google Playstore. Our results advance the general understanding of hybrid applications, as well as implications for potential program analyses, and the current security situation: We discover 6,375 flows of sensitive data from Android to JavaScript, out of which 82% could flow to potentially untrustworthy code. Our analysis identified 365 web pages embedding vulnerabilities and we exemplarily exploit them. Additionally, we discover 653 applications in which potentially untrusted Javascript code may interfere with (trusted) Android objects.
许多Android应用程序通过WebView组件嵌入网页,并在Android中执行JavaScript代码。混合应用程序利用专用的api来加载资源并在WebView中呈现。此外,Android对象可以与JavaScript世界共享。然而,连接Android和JavaScript世界的接口也可能带来严重的安全威胁:潜在的不受信任的网页及其JavaScript可能会干扰Android环境及其对本地功能的访问。目前还没有全面的分析来评估这种连接两个世界的混合应用程序的影响。为了理解混合应用程序的语义和效果,我们对混合api在野外的使用情况进行了大规模的研究。我们从Google Playstore中随机选择了7500个应用程序,并对其杂交api参数进行了分析和分类。我们的研究结果促进了对混合应用程序的一般理解,以及对潜在程序分析和当前安全状况的影响:我们发现从Android到JavaScript的6375个敏感数据流,其中82%可能流向潜在的不可信代码。我们的分析确定了365个嵌入漏洞的网页,并利用它们作为范例。此外,我们发现653个应用程序中潜在的不受信任的Javascript代码可能会干扰(受信任的)Android对象。
{"title":"LUDroid: A Large Scale Analysis of Android – Web Hybridization","authors":"A. Tiwari, Jyoti Prakash, S. Groß, Christian Hammer","doi":"10.1109/SCAM.2019.00036","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00036","url":null,"abstract":"Many Android applications embed webpages via WebView components and execute JavaScript code within Android. Hybrid applications leverage dedicated APIs to load a resource and render it in WebView. Furthermore, Android objects can be shared with the JavaScript world. However, bridging the interfaces of the Android and JavaScript world might also incur severe security threats: Potentially untrusted webpages and their JavaScript might interfere with the Android environment and its access to native features. No general analysis is currently available to assess the implications of such hybrid apps bridging the two worlds. To understand the semantics and effects of hybrid apps, we perform a large-scale study on the usage of the hybridization APIs in the wild. We analyze and categorize the parameters to hybridization APIs for 7,500 randomly selected applications from the Google Playstore. Our results advance the general understanding of hybrid applications, as well as implications for potential program analyses, and the current security situation: We discover 6,375 flows of sensitive data from Android to JavaScript, out of which 82% could flow to potentially untrustworthy code. Our analysis identified 365 web pages embedding vulnerabilities and we exemplarily exploit them. Additionally, we discover 653 applications in which potentially untrusted Javascript code may interfere with (trusted) Android objects.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121339861","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}
引用次数: 7
Automatically Generating Fix Suggestions in Response to Static Code Analysis Warnings 根据静态代码分析警告自动生成修复建议
Diego Marcilio, Carlo A. Furia, R. Bonifácio, G. Pinto
Static code analysis tools such as FindBugs and SonarQube are widely used on open-source and industrial projects to detect a variety of issues that may negatively affect the quality of software. Despite these tools' popularity and high level of automation, several empirical studies report that developers normally fix only a small fraction (typically, less than 10% [1]) of the reported issues—so-called "warnings". If these analysis tools could also automatically provide suggestions on how to fix the issues that trigger some of the warnings, their feedback would become more actionable and more directly useful to developers. In this work, we investigate whether it is feasible to automatically generate fix suggestions for common warnings issued by static code analysis tools, and to what extent developers are willing to accept such suggestions into the codebases they're maintaining. To this end, we implemented a Java program transformation technique that fixes 11 distinct rules checked by two well-known static code analysis tools (SonarQube and SpotBugs). Fix suggestions are generated automatically based on templates, which are instantiated in a way that removes the source of the warnings; templates for some rules are even capable of producing multi-line patches. We submitted 38 pull requests, including 920 fixes generated automatically by our technique for various open-source Java projects, including the Eclipse IDE and both SonarQube and SpotBugs tools. At the time of writing, project maintainers accepted 84% of our fix suggestions (95% of them without any modifications). These results indicate that our approach to generating fix suggestions is feasible, and can help increase the applicability of static code analysis tools.
静态代码分析工具,如FindBugs和SonarQube,广泛用于开源和工业项目,以检测各种可能对软件质量产生负面影响的问题。尽管这些工具很流行,自动化程度也很高,但一些实证研究报告称,开发人员通常只修复了报告问题的一小部分(通常少于10%[1]),即所谓的“警告”。如果这些分析工具也能自动提供关于如何修复触发某些警告的问题的建议,那么它们的反馈将变得更具可操作性,并且对开发人员更直接有用。在这项工作中,我们研究了为静态代码分析工具发出的常见警告自动生成修复建议是否可行,以及开发人员愿意在多大程度上接受他们所维护的代码库中的此类建议。为此,我们实现了一种Java程序转换技术,该技术修复了由两个著名的静态代码分析工具(SonarQube和SpotBugs)检查的11条不同的规则。修复建议是基于模板自动生成的,模板的实例化方式删除了警告的来源;某些规则的模板甚至能够生成多行补丁。我们提交了38个拉取请求,包括920个通过我们的技术为各种开源Java项目自动生成的修复,包括Eclipse IDE和SonarQube和SpotBugs工具。在撰写本文时,项目维护者接受了我们84%的修复建议(其中95%没有进行任何修改)。这些结果表明,我们生成修复建议的方法是可行的,并且可以帮助增加静态代码分析工具的适用性。
{"title":"Automatically Generating Fix Suggestions in Response to Static Code Analysis Warnings","authors":"Diego Marcilio, Carlo A. Furia, R. Bonifácio, G. Pinto","doi":"10.1109/SCAM.2019.00013","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00013","url":null,"abstract":"Static code analysis tools such as FindBugs and SonarQube are widely used on open-source and industrial projects to detect a variety of issues that may negatively affect the quality of software. Despite these tools' popularity and high level of automation, several empirical studies report that developers normally fix only a small fraction (typically, less than 10% [1]) of the reported issues—so-called \"warnings\". If these analysis tools could also automatically provide suggestions on how to fix the issues that trigger some of the warnings, their feedback would become more actionable and more directly useful to developers. In this work, we investigate whether it is feasible to automatically generate fix suggestions for common warnings issued by static code analysis tools, and to what extent developers are willing to accept such suggestions into the codebases they're maintaining. To this end, we implemented a Java program transformation technique that fixes 11 distinct rules checked by two well-known static code analysis tools (SonarQube and SpotBugs). Fix suggestions are generated automatically based on templates, which are instantiated in a way that removes the source of the warnings; templates for some rules are even capable of producing multi-line patches. We submitted 38 pull requests, including 920 fixes generated automatically by our technique for various open-source Java projects, including the Eclipse IDE and both SonarQube and SpotBugs tools. At the time of writing, project maintainers accepted 84% of our fix suggestions (95% of them without any modifications). These results indicate that our approach to generating fix suggestions is feasible, and can help increase the applicability of static code analysis tools.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"20 9","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121009283","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
Less is More: From Multi-objective to Mono-objective Refactoring via Developer's Knowledge Extraction 少即是多:从多目标到单目标重构,通过开发人员的知识提取
Vahid Alizadeh, Houcem Fehri, M. Kessentini
Refactoring studies either aggregated quality metrics to evaluate possible code changes or treated them separately to find trade-offs. For the first category of work, it is challenging to define upfront the weights for the quality objectives since developers are not able to express them upfront. For the second category of work, the number of possible trade-offs between quality objectives is large which makes developers reluctant to look at many refactoring solutions. In this paper, we propose, for the first time, a way to convert multi-objective search into a mono-objective one after interacting with the developer to identify a good refactoring solution based on his preferences. The first step consists of using a multi-objective search to generate different possible refactoring strategies by finding a trade-off between several conflicting quality attributes. Then, an unsupervised learning algorithm clusters the different trade-off solutions, called the Pareto front, to guide the developers in selecting their region of interests and to reduce the number of refactoring options to explore. Finally, the extracted preferences from the developer are used to transform the multi-objective search into a mono-objective one by taking the preferred cluster of the Pareto front as the initial population for the mono-objective search and generating an evaluation function based on the weights that are automatically computed from the position of the cluster in the Pareto front. Thus, the developer will just interact with only one refactoring solution generated by the mono-objective search. We selected 32 participants to manually evaluate the effectiveness of our tool on 7 open source projects and one industrial project. The results show that the recommended refactorings are more accurate than the current state of the art.
重构要么研究聚合的质量度量来评估可能的代码更改,要么单独处理它们以找到权衡。对于第一类工作,预先定义质量目标的权重是具有挑战性的,因为开发人员无法预先表达它们。对于第二类工作,在质量目标之间可能进行的权衡的数量很大,这使得开发人员不愿意查看许多重构解决方案。在本文中,我们首次提出了一种将多目标搜索转换为单目标搜索的方法,该方法是在与开发人员进行交互后,根据开发人员的偏好确定一个好的重构解决方案。第一步包括使用多目标搜索,通过在几个相互冲突的质量属性之间找到权衡来生成不同的可能重构策略。然后,一种无监督学习算法将不同的权衡方案聚类,称为帕累托前沿,以指导开发人员选择他们感兴趣的区域,并减少需要探索的重构选项的数量。最后,利用从开发人员处提取的偏好将多目标搜索转化为单目标搜索,将Pareto前沿的偏好聚类作为单目标搜索的初始种群,并根据聚类在Pareto前沿的位置自动计算权重生成评价函数。因此,开发人员将只与单目标搜索生成的一个重构解决方案进行交互。我们选择了32个参与者来手动评估我们的工具在7个开源项目和一个工业项目上的有效性。结果表明,推荐的重构比目前的技术更准确。
{"title":"Less is More: From Multi-objective to Mono-objective Refactoring via Developer's Knowledge Extraction","authors":"Vahid Alizadeh, Houcem Fehri, M. Kessentini","doi":"10.1109/SCAM.2019.00029","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00029","url":null,"abstract":"Refactoring studies either aggregated quality metrics to evaluate possible code changes or treated them separately to find trade-offs. For the first category of work, it is challenging to define upfront the weights for the quality objectives since developers are not able to express them upfront. For the second category of work, the number of possible trade-offs between quality objectives is large which makes developers reluctant to look at many refactoring solutions. In this paper, we propose, for the first time, a way to convert multi-objective search into a mono-objective one after interacting with the developer to identify a good refactoring solution based on his preferences. The first step consists of using a multi-objective search to generate different possible refactoring strategies by finding a trade-off between several conflicting quality attributes. Then, an unsupervised learning algorithm clusters the different trade-off solutions, called the Pareto front, to guide the developers in selecting their region of interests and to reduce the number of refactoring options to explore. Finally, the extracted preferences from the developer are used to transform the multi-objective search into a mono-objective one by taking the preferred cluster of the Pareto front as the initial population for the mono-objective search and generating an evaluation function based on the weights that are automatically computed from the position of the cluster in the Pareto front. Thus, the developer will just interact with only one refactoring solution generated by the mono-objective search. We selected 32 participants to manually evaluate the effectiveness of our tool on 7 open source projects and one industrial project. The results show that the recommended refactorings are more accurate than the current state of the art.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121066682","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}
引用次数: 9
Behave Nicely! Automatic Generation of Code for Behaviour Driven Development Test Suites 表现很好!为行为驱动开发测试套件自动生成代码
Tim Storer, Ruxandra Bob
Behaviour driven development (BDD) has gained widespread use in the software industry. System specifications can be expressed as test scenarios, describing the circumstances, actions and expected outcomes. These scenarios are written in a structured natural language (Gherkin), with each step in the scenario associated with a corresponding step implementation function in the underlying programming language. A challenge recognised by industry is ensuring that the natural language scenarios, step implementation functions and underlying system implementation remain consistent with one another, requiring on-going maintenance effort as changes are made to a system. To address this, we have developed behave_nicely, a tool, for automatically generating step implementation functions from structured natural language steps, with the intention of eliminating the need for maintaining step implementation functions. We evaluated our approach on a sample of 20 white box and 50 black box projects using behaviour driven development, drawn from GitHub. Our results show that behave_nicely can generate step implementation functions for 80% of the white box and 17% of black box projects. We conclude that (a) there is significant potential for automating the process of code generation for BDD tests and (b) that the development of guidelines for writing tests in Gherkin would significantly improve the results.
行为驱动开发(BDD)在软件行业中得到了广泛的应用。系统规范可以表示为测试场景,描述环境、操作和预期结果。这些场景是用结构化的自然语言(Gherkin)编写的,场景中的每个步骤都与底层编程语言中相应的步骤实现函数相关联。业界认识到的一个挑战是确保自然语言场景、步骤实现功能和底层系统实现彼此保持一致,这需要在对系统进行更改时进行持续的维护工作。为了解决这个问题,我们开发了behave_nicely,这是一个工具,用于从结构化的自然语言步骤自动生成步骤实现函数,目的是消除维护步骤实现函数的需要。我们在使用行为驱动开发的20个白盒和50个黑盒项目的样本上评估了我们的方法,这些项目来自GitHub。我们的结果表明,behave_nicely可以为80%的白盒项目和17%的黑盒项目生成步进实现函数。我们得出的结论是:(a)自动化BDD测试的代码生成过程具有巨大的潜力;(b)在Gherkin中编写测试的指导方针的开发将显著改善结果。
{"title":"Behave Nicely! Automatic Generation of Code for Behaviour Driven Development Test Suites","authors":"Tim Storer, Ruxandra Bob","doi":"10.1109/SCAM.2019.00033","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00033","url":null,"abstract":"Behaviour driven development (BDD) has gained widespread use in the software industry. System specifications can be expressed as test scenarios, describing the circumstances, actions and expected outcomes. These scenarios are written in a structured natural language (Gherkin), with each step in the scenario associated with a corresponding step implementation function in the underlying programming language. A challenge recognised by industry is ensuring that the natural language scenarios, step implementation functions and underlying system implementation remain consistent with one another, requiring on-going maintenance effort as changes are made to a system. To address this, we have developed behave_nicely, a tool, for automatically generating step implementation functions from structured natural language steps, with the intention of eliminating the need for maintaining step implementation functions. We evaluated our approach on a sample of 20 white box and 50 black box projects using behaviour driven development, drawn from GitHub. Our results show that behave_nicely can generate step implementation functions for 80% of the white box and 17% of black box projects. We conclude that (a) there is significant potential for automating the process of code generation for BDD tests and (b) that the development of guidelines for writing tests in Gherkin would significantly improve the results.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122630068","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
Introducing Privacy in Screen Event Frequency Analysis for Android Apps 在Android应用程序的屏幕事件频率分析中引入隐私
Hailong Zhang, S. Latif, Raef Bassily, A. Rountev
Mobile apps often use analytics infrastructures provided by companies such as Google and Facebook to gather extensive fine-grained data about app performance and user behaviors. It is important to understand and enforce suitable trade-offs between the benefits of such data gathering (for app developers) and the corresponding privacy loss (for app users). Our work focuses on screen event frequency analysis, which is one of the most popular forms of data gathering in mobile app analytics. We propose a privacy-preserving version of such analysis using differential privacy (DP), a popular principled approach for creating privacy-preserving analyses. We describe how DP can be introduced in screen event frequency analysis for mobile apps, and demonstrate an instance of this approach for Android apps and the Google Analytics framework. Our work develops the automated app code analysis, code rewriting, and run-time processing needed to deploy the proposed DP solution. Experimental evaluation demonstrates that high accuracy and practical cost can be achieved by the developed privacy-preserving screen event frequency analysis.
移动应用通常使用谷歌和Facebook等公司提供的分析基础设施来收集有关应用性能和用户行为的大量细粒度数据。重要的是要理解并在这种数据收集的好处(对于应用程序开发人员)和相应的隐私损失(对于应用程序用户)之间进行适当的权衡。我们的工作重点是屏幕事件频率分析,这是移动应用分析中最流行的数据收集形式之一。我们使用差分隐私(DP)提出了这种分析的隐私保护版本,差分隐私(DP)是一种创建隐私保护分析的流行原则方法。我们描述了如何将DP引入移动应用程序的屏幕事件频率分析中,并演示了Android应用程序和Google Analytics框架的这种方法的实例。我们的工作开发了部署提议的DP解决方案所需的自动化应用程序代码分析、代码重写和运行时处理。实验评估表明,所提出的隐私保护屏幕事件频率分析方法具有较高的准确性和实用成本。
{"title":"Introducing Privacy in Screen Event Frequency Analysis for Android Apps","authors":"Hailong Zhang, S. Latif, Raef Bassily, A. Rountev","doi":"10.1109/SCAM.2019.00037","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00037","url":null,"abstract":"Mobile apps often use analytics infrastructures provided by companies such as Google and Facebook to gather extensive fine-grained data about app performance and user behaviors. It is important to understand and enforce suitable trade-offs between the benefits of such data gathering (for app developers) and the corresponding privacy loss (for app users). Our work focuses on screen event frequency analysis, which is one of the most popular forms of data gathering in mobile app analytics. We propose a privacy-preserving version of such analysis using differential privacy (DP), a popular principled approach for creating privacy-preserving analyses. We describe how DP can be introduced in screen event frequency analysis for mobile apps, and demonstrate an instance of this approach for Android apps and the Google Analytics framework. Our work develops the automated app code analysis, code rewriting, and run-time processing needed to deploy the proposed DP solution. Experimental evaluation demonstrates that high accuracy and practical cost can be achieved by the developed privacy-preserving screen event frequency analysis.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130081568","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}
引用次数: 7
Interactive Refactoring Documentation Bot 交互式重构文档Bot
Soumaya Rebai, Oussama Ben Sghaier, Vahid Alizadeh, M. Kessentini, Meriem Chater
The documentation of code changes is significantly important but developers ignore it, most of the time, due to the pressure of the deadlines. While developers may document the most important features modification or bugs fixing, recent empirical studies show that the documentation of quality improvements and/or refactoring is often omitted or not accurately described. However, the automated or semi-automated documentation of refactorings has not been yet explored despite the extensive work on the remaining steps of refactoring including the detection, prioritization and recommendation. In this paper, we propose a semi-automated refactoring documentation bot that helps developers to interactively check and validate the documentation of the refactorings and/or quality improvements at the file level for each opened pull-request before being reviewed or merged to the master. The bot starts by checking the pullrequest if there are significant quality changes and refactorings at the file level and whether they are documented by the developer. Then, it checks the validity of the developers description of the refactorings, if any. Based on that analysis, the documentation bot will recommend a message to document the refactorings, their locations and the quality improvement for that pull-request when missing information is found. Then, the developer can modify his pull request description by interacting with the bot to accept/modify/reject part of the proposed documentation. Since refactoring do not happen in isolation most of the time, the bot is documenting the impact of a sequence of refactorings, in a pull-request, on quality and not each refactoring in isolation. We conducted a human survey with 14 active developers to manually evaluate the relevance and the correctness of our tool on different pull requests of 5 open source projects and one industrial system. The results show that the participants found that our bot facilitates the documentation of their quality-related changes and refactorings.
代码更改的文档非常重要,但由于截止日期的压力,开发人员在大多数情况下都忽略了它。虽然开发人员可能会记录最重要的特性修改或错误修复,但最近的经验研究表明,质量改进和/或重构的文档经常被省略或没有准确描述。然而,尽管在重构的剩余步骤(包括检测、优先级排序和推荐)上进行了大量的工作,自动化或半自动化的重构文档还没有被探索。在本文中,我们提出了一个半自动化的重构文档机器人,它可以帮助开发人员在每个打开的拉入请求被审查或合并到主请求之前,在文件级别交互式地检查和验证重构和/或质量改进的文档。bot首先检查pull请求是否在文件级别有重大的质量更改和重构,以及开发人员是否记录了这些更改和重构。然后,它检查开发人员对重构描述的有效性(如果有的话)。基于该分析,文档机器人将推荐一条消息来记录重构、它们的位置以及在发现缺失信息时对拉取请求的质量改进。然后,开发人员可以通过与bot交互来修改他的拉取请求描述,以接受/修改/拒绝提议文档的一部分。由于重构在大多数情况下不是孤立发生的,所以bot记录的是拉取请求中一系列重构对质量的影响,而不是每个重构都是孤立发生的。我们对14名活跃的开发人员进行了一项人类调查,以手动评估我们的工具在5个开源项目和一个工业系统的不同拉取请求上的相关性和正确性。结果表明,参与者发现我们的bot简化了与质量相关的更改和重构的文档。
{"title":"Interactive Refactoring Documentation Bot","authors":"Soumaya Rebai, Oussama Ben Sghaier, Vahid Alizadeh, M. Kessentini, Meriem Chater","doi":"10.1109/SCAM.2019.00026","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00026","url":null,"abstract":"The documentation of code changes is significantly important but developers ignore it, most of the time, due to the pressure of the deadlines. While developers may document the most important features modification or bugs fixing, recent empirical studies show that the documentation of quality improvements and/or refactoring is often omitted or not accurately described. However, the automated or semi-automated documentation of refactorings has not been yet explored despite the extensive work on the remaining steps of refactoring including the detection, prioritization and recommendation. In this paper, we propose a semi-automated refactoring documentation bot that helps developers to interactively check and validate the documentation of the refactorings and/or quality improvements at the file level for each opened pull-request before being reviewed or merged to the master. The bot starts by checking the pullrequest if there are significant quality changes and refactorings at the file level and whether they are documented by the developer. Then, it checks the validity of the developers description of the refactorings, if any. Based on that analysis, the documentation bot will recommend a message to document the refactorings, their locations and the quality improvement for that pull-request when missing information is found. Then, the developer can modify his pull request description by interacting with the bot to accept/modify/reject part of the proposed documentation. Since refactoring do not happen in isolation most of the time, the bot is documenting the impact of a sequence of refactorings, in a pull-request, on quality and not each refactoring in isolation. We conducted a human survey with 14 active developers to manually evaluate the relevance and the correctness of our tool on different pull requests of 5 open source projects and one industrial system. The results show that the participants found that our bot facilitates the documentation of their quality-related changes and refactorings.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114673834","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
WAL: A Tool for Diagnosing Accessibility Issues and Evolving Legacy Web Systems at Runtime 在运行时诊断可访问性问题和发展遗留Web系统的工具
Wanessa Teotônio, P. González, P. Maia, Pedro Muniz
The vast majority of pages available on the Web are developed under the tacit assumption that the final user will not have any kind of disability. Thus, accessibility aspects are not contemplated in their development process. As a consequence, many users encounter interaction barriers and cannot access much of the content in the Web. But the improvement of Websites can be challenging due to their high complexity and lack of documentation, the impossibility of accessing the source code, the use of out-of-dated technologies, and the fact that development teams are often unaware of accessibility rules. To mitigate this problem, this paper proposes a tool, called Website Accessibility Layer (WAL), which aims at both inserting accessibility features into existing Web pages at runtime and diagnosing accessibility issues through a dynamic source code analysis. The current version of the tool contributes to the accessibility of users with visual impairment, dyslexia, and reading difficulties, with respect to 13 Web page resources. The proposal has been validated by being applied to 40 widely accessed Websites with satisfactory results, proving the feasibility of the solution. Furthermore, real users also evaluated positively the benefits brought by the tool to their daily work activities.
Web上可用的绝大多数页面都是在默认的假设下开发的,即最终用户不会有任何残疾。因此,在开发过程中没有考虑到可访问性方面。因此,许多用户遇到交互障碍,无法访问Web中的大部分内容。但是,由于网站的高度复杂性和缺乏文档、访问源代码的不可能性、使用过时的技术以及开发团队通常不了解可访问性规则的事实,网站的改进可能具有挑战性。为了缓解这一问题,本文提出了一个名为网站可访问性层(Website Accessibility Layer, WAL)的工具,该工具旨在在运行时将可访问性特性插入现有网页中,并通过动态源代码分析来诊断可访问性问题。该工具的当前版本有助于有视觉障碍、阅读障碍和阅读困难的用户访问13个网页资源。该方案已在40个被广泛访问的网站上进行了应用,结果令人满意,证明了该方案的可行性。此外,实际用户也积极评价了该工具给他们的日常工作活动带来的好处。
{"title":"WAL: A Tool for Diagnosing Accessibility Issues and Evolving Legacy Web Systems at Runtime","authors":"Wanessa Teotônio, P. González, P. Maia, Pedro Muniz","doi":"10.1109/SCAM.2019.00028","DOIUrl":"https://doi.org/10.1109/SCAM.2019.00028","url":null,"abstract":"The vast majority of pages available on the Web are developed under the tacit assumption that the final user will not have any kind of disability. Thus, accessibility aspects are not contemplated in their development process. As a consequence, many users encounter interaction barriers and cannot access much of the content in the Web. But the improvement of Websites can be challenging due to their high complexity and lack of documentation, the impossibility of accessing the source code, the use of out-of-dated technologies, and the fact that development teams are often unaware of accessibility rules. To mitigate this problem, this paper proposes a tool, called Website Accessibility Layer (WAL), which aims at both inserting accessibility features into existing Web pages at runtime and diagnosing accessibility issues through a dynamic source code analysis. The current version of the tool contributes to the accessibility of users with visual impairment, dyslexia, and reading difficulties, with respect to 13 Web page resources. The proposal has been validated by being applied to 40 widely accessed Websites with satisfactory results, proving the feasibility of the solution. Furthermore, real users also evaluated positively the benefits brought by the tool to their daily work activities.","PeriodicalId":431316,"journal":{"name":"2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128307220","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}
引用次数: 0
期刊
2019 19th International Working Conference on Source Code Analysis and Manipulation (SCAM)
全部 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学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1