首页 > 最新文献

2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)最新文献

英文 中文
A Multi-objective Framework for Effective Performance Fault Injection in Distributed Systems 分布式系统中有效性能故障注入的多目标框架
L. Traini
Modern distributed systems should be built to anticipate performance degradation. Often requests in these systems involve ten to thousands Remote Procedure Calls, each of which can be a source of performance degradation. The PhD programme presented here intends to address this issue by providing automated instruments to effectively drive performance fault injection in distributed systems. The envisioned approach exploits multi-objective search-based techniques to automatically find small combinations of tiny performance degradations induced by specific RPCs, which have significant impacts on the user-perceived performance. Automating the search of these events will improve the ability to inject performance issues in production in order to force developers to anticipate and mitigate them.
现代分布式系统的构建应该考虑到性能的下降。这些系统中的请求通常涉及10到数千个远程过程调用,每个调用都可能导致性能下降。这里介绍的博士课程打算通过提供自动化仪器来有效地驱动分布式系统中的性能故障注入来解决这个问题。设想的方法利用基于多目标搜索的技术,自动发现由特定rpc引起的微小性能下降的小组合,这些性能下降对用户感知的性能有重大影响。自动化搜索这些事件将提高在生产环境中引入性能问题的能力,从而迫使开发人员预测并缓解这些问题。
{"title":"A Multi-objective Framework for Effective Performance Fault Injection in Distributed Systems","authors":"L. Traini","doi":"10.1145/3238147.3241535","DOIUrl":"https://doi.org/10.1145/3238147.3241535","url":null,"abstract":"Modern distributed systems should be built to anticipate performance degradation. Often requests in these systems involve ten to thousands Remote Procedure Calls, each of which can be a source of performance degradation. The PhD programme presented here intends to address this issue by providing automated instruments to effectively drive performance fault injection in distributed systems. The envisioned approach exploits multi-objective search-based techniques to automatically find small combinations of tiny performance degradations induced by specific RPCs, which have significant impacts on the user-perceived performance. Automating the search of these events will improve the ability to inject performance issues in production in order to force developers to anticipate and mitigate them.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"21 1","pages":"936-939"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90166917","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
Assessing and Evaluating Functional Suitability of Software 评估和评价软件的功能适宜性
Philipp Haindl
While formal task models allow definition and time-based assessment of user-interaction, they have not yet been used as a baseline for assessing the variability patterns of user interaction with software. Consequently, operationalizing these variability patterns enables us to evaluate how suitable the defined task-execution paths are for the user to achieve a predefined goal. Improvements of the software could thereby be evidence-based on knowledge of changes' effects on functional suitability for the user rather than on prospective or opinion-based usage scenarios. Following a design thinking approach tailored to software engineering, understanding and observing these variability patterns are mandatory steps for continuous user-centered improvement of software. In practice however, due to the absence of an operational quality model for functional suitability it is hardly possible to effectively put these operational measures into context and to derive concrete software improvement actions. Having operational suitability metrics is even more important for software engineers as it allows to increasingly focus development activities especially on functionality which has business value for the user.
虽然正式的任务模型允许对用户交互进行定义和基于时间的评估,但它们还没有被用作评估用户与软件交互的可变性模式的基线。因此,对这些可变性模式进行操作使我们能够评估所定义的任务执行路径对用户实现预定义目标的适合程度。因此,软件的改进可以基于对更改对用户功能适用性的影响的了解,而不是基于预期或基于意见的使用场景。遵循为软件工程量身定制的设计思维方法,理解和观察这些可变性模式是持续以用户为中心的软件改进的必要步骤。然而,在实践中,由于缺乏功能适宜性的可操作质量模型,因此很难有效地将这些可操作度量放入上下文并派生出具体的软件改进行动。对于软件工程师来说,拥有可操作的适用性度量更加重要,因为它允许越来越多地关注开发活动,特别是对用户具有业务价值的功能。
{"title":"Assessing and Evaluating Functional Suitability of Software","authors":"Philipp Haindl","doi":"10.1145/3238147.3241531","DOIUrl":"https://doi.org/10.1145/3238147.3241531","url":null,"abstract":"While formal task models allow definition and time-based assessment of user-interaction, they have not yet been used as a baseline for assessing the variability patterns of user interaction with software. Consequently, operationalizing these variability patterns enables us to evaluate how suitable the defined task-execution paths are for the user to achieve a predefined goal. Improvements of the software could thereby be evidence-based on knowledge of changes' effects on functional suitability for the user rather than on prospective or opinion-based usage scenarios. Following a design thinking approach tailored to software engineering, understanding and observing these variability patterns are mandatory steps for continuous user-centered improvement of software. In practice however, due to the absence of an operational quality model for functional suitability it is hardly possible to effectively put these operational measures into context and to derive concrete software improvement actions. Having operational suitability metrics is even more important for software engineers as it allows to increasingly focus development activities especially on functionality which has business value for the user.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"76 1","pages":"920-923"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90476564","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
Control Flow-Guided SMT Solving for Program Verification 程序验证的控制流导向SMT求解
Jianhui Chen, Fei He
Satisfiability modulo theories (SMT) solvers have been widely applied as the reasoning engine for diverse software analysis and verification technologies. The efficiency of the SMT solver has significant effects on the performance of these technologies. However, the current SMT solvers are designed for the general purpose of constraint solving. Many useful knowledge of programs cannot be utilized during the SMT solving. As a result, the SMT solver may spend a lot of effort to explore redundant search space. In this paper, we propose a novel approach for utilizing control-flow knowledge in SMT solving. With this technique, the search space can be considerably reduced and the efficiency of SMT solving is observably improved. We conducted extensive experiments on credible benchmarks, the results show orders of magnitude improvements of our approach.
可满足模理论(SMT)解算器作为推理引擎被广泛应用于各种软件分析和验证技术。SMT求解器的效率对这些技术的性能有着重要的影响。然而,目前的SMT求解器是为约束求解的一般目的而设计的。许多有用的程序知识在SMT求解过程中不能被利用。因此,SMT求解器可能会花费大量精力来探索冗余搜索空间。在本文中,我们提出了一种利用控制流知识求解SMT的新方法。使用该技术,可以大大减少搜索空间,并明显提高SMT求解的效率。我们在可靠的基准上进行了广泛的实验,结果表明我们的方法有了数量级的改进。
{"title":"Control Flow-Guided SMT Solving for Program Verification","authors":"Jianhui Chen, Fei He","doi":"10.1145/3238147.3238218","DOIUrl":"https://doi.org/10.1145/3238147.3238218","url":null,"abstract":"Satisfiability modulo theories (SMT) solvers have been widely applied as the reasoning engine for diverse software analysis and verification technologies. The efficiency of the SMT solver has significant effects on the performance of these technologies. However, the current SMT solvers are designed for the general purpose of constraint solving. Many useful knowledge of programs cannot be utilized during the SMT solving. As a result, the SMT solver may spend a lot of effort to explore redundant search space. In this paper, we propose a novel approach for utilizing control-flow knowledge in SMT solving. With this technique, the search space can be considerably reduced and the efficiency of SMT solving is observably improved. We conducted extensive experiments on credible benchmarks, the results show orders of magnitude improvements of our approach.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"63 1","pages":"351-361"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83161672","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}
引用次数: 16
ESBMC 5.0: An Industrial-Strength C Model Checker ESBMC 5.0:工业强度的C模型检查器
M. R. Gadelha, Felipe R. Monteiro, J. Morse, L. Cordeiro, B. Fischer, D. Nicole
ESBMC is a mature, permissively licensed open-source context-bounded model checker for the verification of single- and multithreaded C programs. It can verify both predefined safety properties (e.g., bounds check, pointer safety, overflow) and user-defined program assertions automatically. ESBMC provides C++ and Python APIs to access internal data structures, allowing inspection and extension at any stage of the verification process. We discuss improvements over previous versions of ESBMC, including the description of new front- and back-ends, IEEE floating-point support, and an improved k-induction algorithm. A demonstration is available at https://www.youtube.com/watch?v=YcJjXHlN1v8.
ESBMC是一个成熟的、经过许可的开源上下文约束模型检查器,用于验证单线程和多线程C程序。它可以自动验证预定义的安全属性(例如,边界检查、指针安全、溢出)和用户定义的程序断言。ESBMC提供c++和Python api来访问内部数据结构,允许在验证过程的任何阶段进行检查和扩展。我们讨论了对ESBMC以前版本的改进,包括对新的前端和后端、IEEE浮点支持和改进的k-归纳算法的描述。可以在https://www.youtube.com/watch?v=YcJjXHlN1v8上获得演示。
{"title":"ESBMC 5.0: An Industrial-Strength C Model Checker","authors":"M. R. Gadelha, Felipe R. Monteiro, J. Morse, L. Cordeiro, B. Fischer, D. Nicole","doi":"10.1145/3238147.3240481","DOIUrl":"https://doi.org/10.1145/3238147.3240481","url":null,"abstract":"ESBMC is a mature, permissively licensed open-source context-bounded model checker for the verification of single- and multithreaded C programs. It can verify both predefined safety properties (e.g., bounds check, pointer safety, overflow) and user-defined program assertions automatically. ESBMC provides C++ and Python APIs to access internal data structures, allowing inspection and extension at any stage of the verification process. We discuss improvements over previous versions of ESBMC, including the description of new front- and back-ends, IEEE floating-point support, and an improved k-induction algorithm. A demonstration is available at https://www.youtube.com/watch?v=YcJjXHlN1v8.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"13 1","pages":"888-891"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82033473","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}
引用次数: 75
Tell Them Apart: Distilling Technology Differences from Crowd-Scale Comparison Discussions 区分它们:从群体规模的比较讨论中提炼技术差异
Yi Huang, Chunyang Chen, Zhenchang Xing, Tian Lin, Yang Liu
Developers can use different technologies for many software development tasks in their work. However, when faced with several technologies with comparable functionalities, it is not easy for developers to select the most appropriate one, as comparisons among technologies are time-consuming by trial and error. Instead, developers can resort to expert articles, read official documents or ask questions in Q&A sites for technology comparison, but it is opportunistic to get a comprehensive comparison as online information is often fragmented or contradictory. To overcome these limitations, we propose the diffTech system that exploits the crowdsourced discussions from Stack Overflow, and assists technology comparison with an informative summary of different comparison aspects. We first build a large database of comparable software technologies by mining tags in Stack Overflow, and locate comparative sentences about comparable technologies with NLP methods. We further mine prominent comparison aspects by clustering similar comparative sentences and represent each cluster with its keywords. The evaluation demonstrates both the accuracy and usefulness of our model and we implement a practical website for public use.
开发人员可以在他们的工作中为许多软件开发任务使用不同的技术。然而,当面对几种具有类似功能的技术时,开发人员很难选择最合适的技术,因为在技术之间进行比较是一项耗时的试验和错误。相反,开发人员可以求助于专家文章、阅读官方文档或在问答网站上提问以进行技术比较,但由于在线信息通常是碎片化或相互矛盾的,因此获得全面的比较是机会主义。为了克服这些限制,我们提出了diffTech系统,该系统利用Stack Overflow的众包讨论,并通过不同比较方面的信息摘要来协助技术比较。我们首先通过挖掘Stack Overflow中的标签建立了一个大型的可比较软件技术数据库,并使用NLP方法定位可比较技术的比较句子。我们进一步通过聚类相似的比较句子来挖掘突出的比较方面,并用其关键词表示每个聚类。评估证明了我们的模型的准确性和实用性,并实现了一个实用的网站供公众使用。
{"title":"Tell Them Apart: Distilling Technology Differences from Crowd-Scale Comparison Discussions","authors":"Yi Huang, Chunyang Chen, Zhenchang Xing, Tian Lin, Yang Liu","doi":"10.1145/3238147.3238208","DOIUrl":"https://doi.org/10.1145/3238147.3238208","url":null,"abstract":"Developers can use different technologies for many software development tasks in their work. However, when faced with several technologies with comparable functionalities, it is not easy for developers to select the most appropriate one, as comparisons among technologies are time-consuming by trial and error. Instead, developers can resort to expert articles, read official documents or ask questions in Q&A sites for technology comparison, but it is opportunistic to get a comprehensive comparison as online information is often fragmented or contradictory. To overcome these limitations, we propose the diffTech system that exploits the crowdsourced discussions from Stack Overflow, and assists technology comparison with an informative summary of different comparison aspects. We first build a large database of comparable software technologies by mining tags in Stack Overflow, and locate comparative sentences about comparable technologies with NLP methods. We further mine prominent comparison aspects by clustering similar comparative sentences and represent each cluster with its keywords. The evaluation demonstrates both the accuracy and usefulness of our model and we implement a practical website for public use.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"34 1","pages":"214-224"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84829479","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}
引用次数: 26
A Neural Framework for Retrieval and Summarization of Source Code 一个用于源代码检索和摘要的神经网络框架
Qingying Chen, Minghui Zhou
Code retrieval and summarization are two tasks often employed by software developers to reuse code that spreads over online repositories. In this paper, we present a neural framework that allows bidirectional mapping between source code and natural language to improve these two tasks. Our framework, BVAE, is designed to have two Variational AutoEncoders (VAEs) to model bimodal data: C-VAE for source code and L-VAE for natural language. Both VAEs are trained jointly to reconstruct their input as much as possible with regularization that captures the closeness between the latent variables of code and description. BVAE could learn semantic vector representations for both code and description and generate completely new descriptions for arbitrary code snippets. We design two instance models of BVAE for retrieval and summarization tasks respectively and evaluate their performance on a benchmark which involves two programming languages: C# and SQL. Experiments demonstrate BVAE's potential on the two tasks.
代码检索和总结是软件开发人员经常使用的两项任务,用于重用分布在在线存储库中的代码。在本文中,我们提出了一个允许源代码和自然语言之间双向映射的神经框架来改进这两个任务。我们的框架,BVAE,被设计成有两个变分自动编码器(vae)来建模双峰数据:C-VAE用于源代码,L-VAE用于自然语言。两个vae被联合训练,通过正则化尽可能多地重建它们的输入,正则化捕获代码和描述的潜在变量之间的密切关系。BVAE可以学习代码和描述的语义向量表示,并为任意代码片段生成全新的描述。我们分别为检索任务和摘要任务设计了两种BVAE实例模型,并在c#和SQL两种编程语言的基准测试中评估了它们的性能。实验证明了BVAE在这两个任务上的潜力。
{"title":"A Neural Framework for Retrieval and Summarization of Source Code","authors":"Qingying Chen, Minghui Zhou","doi":"10.1145/3238147.3240471","DOIUrl":"https://doi.org/10.1145/3238147.3240471","url":null,"abstract":"Code retrieval and summarization are two tasks often employed by software developers to reuse code that spreads over online repositories. In this paper, we present a neural framework that allows bidirectional mapping between source code and natural language to improve these two tasks. Our framework, BVAE, is designed to have two Variational AutoEncoders (VAEs) to model bimodal data: C-VAE for source code and L-VAE for natural language. Both VAEs are trained jointly to reconstruct their input as much as possible with regularization that captures the closeness between the latent variables of code and description. BVAE could learn semantic vector representations for both code and description and generate completely new descriptions for arbitrary code snippets. We design two instance models of BVAE for retrieval and summarization tasks respectively and evaluate their performance on a benchmark which involves two programming languages: C# and SQL. Experiments demonstrate BVAE's potential on the two tasks.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"42 1","pages":"826-831"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88911603","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}
引用次数: 82
Tackling Combinatorial Explosion: A Study of Industrial Needs and Practices for Analyzing Highly Configurable Systems 解决组合爆炸:分析高度可配置系统的工业需求和实践研究
M. Mukelabai, Damir Nesic, Salome Maro, T. Berger, Jan-Philipp Steghöfer
Highly configurable systems are complex pieces of software. To tackle this complexity, hundreds of dedicated analysis techniques have been conceived, many of which able to analyze system properties for all possible system configurations, as opposed to traditional, single-system analyses. Unfortunately, it is largely unknown whether these techniques are adopted in practice, whether they address actual needs, or what strategies practitioners actually apply to analyze highly configurable systems. We present a study of analysis practices and needs in industry. It relied on a survey with 27 practitioners engineering highly configurable systems and followup interviews with 15 of them, covering 18 different companies from eight countries. We confirm that typical properties considered in the literature (e.g., reliability) are relevant, that consistency between variability models and artifacts is critical, but that the majority of analyses for specifications of configuration options (a.k.a., variability model analysis) is not perceived as needed. We identified rather pragmatic analysis strategies, including practices to avoid the need for analysis. For instance, testing with experience-based sampling is the most commonly applied strategy, while systematic sampling is rarely applicable. We discuss analyses that are missing and synthesize our insights into suggestions for future research.
高度可配置的系统是复杂的软件。为了处理这种复杂性,已经设想了数百种专门的分析技术,其中许多技术能够分析所有可能的系统配置的系统属性,这与传统的单系统分析相反。不幸的是,这些技术在实践中是否被采用,它们是否满足实际需求,或者从业者实际应用什么策略来分析高度可配置的系统,在很大程度上是未知的。我们提出了一项分析实践和工业需求的研究。它依赖于对27名设计高度可配置系统的从业者的调查,以及对其中15人的后续访谈,涵盖了来自8个国家的18家不同公司。我们确认文献中考虑的典型属性(例如,可靠性)是相关的,可变性模型和工件之间的一致性是至关重要的,但是对于配置选项的规格说明的大多数分析(又称,可变性模型分析)没有被认为是必要的。我们确定了相当实用的分析策略,包括避免分析需要的实践。例如,基于经验的抽样测试是最常用的策略,而系统抽样很少适用。我们讨论了缺失的分析,并将我们的见解综合为未来研究的建议。
{"title":"Tackling Combinatorial Explosion: A Study of Industrial Needs and Practices for Analyzing Highly Configurable Systems","authors":"M. Mukelabai, Damir Nesic, Salome Maro, T. Berger, Jan-Philipp Steghöfer","doi":"10.1145/3238147.3238201","DOIUrl":"https://doi.org/10.1145/3238147.3238201","url":null,"abstract":"Highly configurable systems are complex pieces of software. To tackle this complexity, hundreds of dedicated analysis techniques have been conceived, many of which able to analyze system properties for all possible system configurations, as opposed to traditional, single-system analyses. Unfortunately, it is largely unknown whether these techniques are adopted in practice, whether they address actual needs, or what strategies practitioners actually apply to analyze highly configurable systems. We present a study of analysis practices and needs in industry. It relied on a survey with 27 practitioners engineering highly configurable systems and followup interviews with 15 of them, covering 18 different companies from eight countries. We confirm that typical properties considered in the literature (e.g., reliability) are relevant, that consistency between variability models and artifacts is critical, but that the majority of analyses for specifications of configuration options (a.k.a., variability model analysis) is not perceived as needed. We identified rather pragmatic analysis strategies, including practices to avoid the need for analysis. For instance, testing with experience-based sampling is the most commonly applied strategy, while systematic sampling is rarely applicable. We discuss analyses that are missing and synthesize our insights into suggestions for future research.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"8 1","pages":"155-166"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84278283","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}
引用次数: 44
A Large-Scale Study of Test Coverage Evolution 测试覆盖演化的大规模研究
Michael C Hilton, Jonathan Bell, D. Marinov
Statement coverage is commonly used as a measure of test suite quality. Coverage is often used as a part of a code review process: if a patch decreases overall coverage, or is itself not covered, then the patch is scrutinized more closely. Traditional studies of how coverage changes with code evolution have examined the overall coverage of the entire program, and more recent work directly examines the coverage of patches (changed statements). We present an evaluation much larger than prior studies and moreover consider a new, important kind of change – coverage changes of unchanged statements. We present a large-scale evaluation of code coverage evolution over 7,816 builds of 47 projects written in popular languages including Java, Python, and Scala. We find that in large, mature projects, simply measuring the change to statement coverage does not capture the nuances of code evolution. Going beyond considering statement coverage as a simple ratio, we examine how the set of statements covered evolves between project revisions. We present and study new ways to assess the impact of a patch on a project's test suite quality that both separates coverage of the patch from coverage of the non-patch, and separates changes in coverage from changes in the set of statements covered.
语句覆盖率通常被用作测试套件质量的度量。覆盖率通常被用作代码审查过程的一部分:如果一个补丁减少了总体覆盖率,或者它本身没有被覆盖,那么这个补丁就会被更仔细地审查。关于覆盖率如何随代码演化而变化的传统研究检查了整个程序的总体覆盖率,而最近的工作则直接检查了补丁(更改语句)的覆盖率。我们提出了一个比以往研究更大的评估,并且考虑了一种新的、重要的变化——不变报表的覆盖变化。我们对47个用流行语言(包括Java、Python和Scala)编写的项目的7816个构建进行了大规模的代码覆盖演化评估。我们发现,在大型的、成熟的项目中,简单地度量语句覆盖率的变化并不能捕捉到代码演化的细微差别。除了将语句覆盖率视为一个简单的比率之外,我们还研究了在项目修订之间所涵盖的语句集是如何演变的。我们提出并研究了新的方法来评估补丁对项目测试套件质量的影响,这些方法既将补丁的覆盖与非补丁的覆盖分开,又将覆盖中的变化与覆盖的语句集中的变化分开。
{"title":"A Large-Scale Study of Test Coverage Evolution","authors":"Michael C Hilton, Jonathan Bell, D. Marinov","doi":"10.1145/3238147.3238183","DOIUrl":"https://doi.org/10.1145/3238147.3238183","url":null,"abstract":"Statement coverage is commonly used as a measure of test suite quality. Coverage is often used as a part of a code review process: if a patch decreases overall coverage, or is itself not covered, then the patch is scrutinized more closely. Traditional studies of how coverage changes with code evolution have examined the overall coverage of the entire program, and more recent work directly examines the coverage of patches (changed statements). We present an evaluation much larger than prior studies and moreover consider a new, important kind of change – coverage changes of unchanged statements. We present a large-scale evaluation of code coverage evolution over 7,816 builds of 47 projects written in popular languages including Java, Python, and Scala. We find that in large, mature projects, simply measuring the change to statement coverage does not capture the nuances of code evolution. Going beyond considering statement coverage as a simple ratio, we examine how the set of statements covered evolves between project revisions. We present and study new ways to assess the impact of a patch on a project's test suite quality that both separates coverage of the patch from coverage of the non-patch, and separates changes in coverage from changes in the set of statements covered.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"16 1","pages":"53-63"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85847403","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}
引用次数: 48
Safe Stream-Based Programming with Refinement Types 具有细化类型的基于流的安全编程
Benno Stein, Lazaro Clapp, Manu Sridharan, B. E. Chang
In stream-based programming, data sources are abstracted as a stream of values that can be manipulated via callback functions. Stream-based programming is exploding in popularity, as it provides a powerful and expressive paradigm for handling asynchronous data sources in interactive software. However, high-level stream abstractions can also make it difficult for developers to reason about control- and data-flow relationships in their programs. This is particularly impactful when asynchronous stream-based code interacts with thread-limited features such as UI frameworks that restrict UI access to a single thread, since the threading behavior of streaming constructs is often non-intuitive and insufficiently documented. In this paper, we present a type-based approach that can statically prove the thread-safety of UI accesses in stream-based software. Our key insight is that the fluent APIs of stream-processing frameworks enable the tracking of threads via type-refinement, making it possible to reason automatically about what thread a piece of code runs on - a difficult problem in general. We implement the system as an annotation-based Java type-checker for Android programs built upon the popular ReactiveX framework and evaluate its efficacy by annotating and analyzing 8 open-source apps, where we find 33 instances of unsafe UI access while incurring an annotation burden of only one annotation per 186 source lines of code. We also report on our experience applying the typechecker to two much larger apps from the Uber Technologies, Inc. codebase, where it currently runs on every code change and blocks changes that introduce potential threading bugs.
在基于流的编程中,数据源被抽象为可通过回调函数操作的值流。基于流的编程越来越受欢迎,因为它为在交互式软件中处理异步数据源提供了强大而富有表现力的范例。然而,高级流抽象也会使开发人员难以推断程序中的控制流和数据流关系。当基于异步流的代码与线程限制的特性(如限制UI访问单个线程的UI框架)交互时,这一点尤其有影响,因为流结构的线程行为通常不直观且没有充分的文档记录。本文提出了一种基于类型的方法,可以静态地证明基于流的软件中UI访问的线程安全性。我们的关键见解是,流处理框架的流畅api支持通过类型细化跟踪线程,从而可以自动推断出一段代码运行在哪个线程上——这通常是一个难题。我们将该系统实现为基于注释的Java类型检查器,用于基于流行的ReactiveX框架的Android程序,并通过注释和分析8个开源应用程序来评估其有效性,其中我们发现33个不安全的UI访问实例,而每186行源代码仅产生一个注释负担。我们还报告了我们将typechecker应用于Uber Technologies, Inc.代码库中的两个更大的应用程序的经验,它目前在每个代码更改上运行,并阻止引入潜在线程错误的更改。
{"title":"Safe Stream-Based Programming with Refinement Types","authors":"Benno Stein, Lazaro Clapp, Manu Sridharan, B. E. Chang","doi":"10.1145/3238147.3238174","DOIUrl":"https://doi.org/10.1145/3238147.3238174","url":null,"abstract":"In stream-based programming, data sources are abstracted as a stream of values that can be manipulated via callback functions. Stream-based programming is exploding in popularity, as it provides a powerful and expressive paradigm for handling asynchronous data sources in interactive software. However, high-level stream abstractions can also make it difficult for developers to reason about control- and data-flow relationships in their programs. This is particularly impactful when asynchronous stream-based code interacts with thread-limited features such as UI frameworks that restrict UI access to a single thread, since the threading behavior of streaming constructs is often non-intuitive and insufficiently documented. In this paper, we present a type-based approach that can statically prove the thread-safety of UI accesses in stream-based software. Our key insight is that the fluent APIs of stream-processing frameworks enable the tracking of threads via type-refinement, making it possible to reason automatically about what thread a piece of code runs on - a difficult problem in general. We implement the system as an annotation-based Java type-checker for Android programs built upon the popular ReactiveX framework and evaluate its efficacy by annotating and analyzing 8 open-source apps, where we find 33 instances of unsafe UI access while incurring an annotation burden of only one annotation per 186 source lines of code. We also report on our experience applying the typechecker to two much larger apps from the Uber Technologies, Inc. codebase, where it currently runs on every code change and blocks changes that introduce potential threading bugs.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"331 1","pages":"565-576"},"PeriodicalIF":0.0,"publicationDate":"2018-08-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77621992","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
Efficiently Manifesting Asynchronous Programming Errors in Android Apps 有效地显示Android应用程序中的异步编程错误
Lingling Fan, Ting Su, Sen Chen, Guozhu Meng, Yang Liu, Lihua Xu, G. Pu
Android, the #1 mobile app framework, enforces the single-GUI-thread model, in which a single UI thread manages GUI rendering and event dispatching. Due to this model, it is vital to avoid blocking the UI thread for responsiveness. One common practice is to offload long-running tasks into async threads. To achieve this, Android provides various async programming constructs, and leaves developers themselves to obey the rules implied by the model. However, as our study reveals, more than 25% apps violate these rules and introduce hard-to-detect, fail-stop errors, which we term as aysnc programming errors (APEs). To this end, this paper introduces APEChecker, a technique to automatically and efficiently manifest APEs. The key idea is to characterize APEs as specific fault patterns, and synergistically combine static analysis and dynamic UI exploration to detect and verify such errors. Among the 40 real-world Android apps, APEChecker unveils and processes 61 APEs, of which 51 are confirmed (83.6% hit rate). Specifically, APEChecker detects 3X more APEs than the state-of-art testing tools (Monkey, Sapienz and Stoat), and reduces testing time from half an hour to a few minutes. On a specific type of APEs, APEChecker confirms 5X more errors than the data race detection tool, EventRacer, with very few false alarms.
Android,排名第一的移动应用框架,执行单GUI线程模型,其中单个UI线程管理GUI渲染和事件调度。由于这个模型,避免阻塞UI线程的响应性是至关重要的。一种常见的做法是将长时间运行的任务卸载到异步线程中。为了实现这一点,Android提供了各种异步编程结构,并让开发人员自己遵守模型隐含的规则。然而,正如我们的研究显示的那样,超过25%的应用违反了这些规则,引入了难以检测的、无法停止的错误,我们将其称为aysnc编程错误(ape)。为此,本文介绍了一种自动高效显示类人猿的技术——APEChecker。关键思想是将ape描述为特定的故障模式,并将静态分析和动态UI探索协同结合起来,以检测和验证此类错误。在40个真实的Android应用中,APEChecker公布并处理了61个ape,其中51个被确认(命中率为83.6%)。具体来说,APEChecker检测到的猿类比目前最先进的测试工具(Monkey、Sapienz和Stoat)多3倍,并将测试时间从半小时缩短到几分钟。在特定类型的猿上,APEChecker确认的错误比数据竞争检测工具EventRacer多5倍,并且很少有假警报。
{"title":"Efficiently Manifesting Asynchronous Programming Errors in Android Apps","authors":"Lingling Fan, Ting Su, Sen Chen, Guozhu Meng, Yang Liu, Lihua Xu, G. Pu","doi":"10.1145/3238147.3238170","DOIUrl":"https://doi.org/10.1145/3238147.3238170","url":null,"abstract":"Android, the #1 mobile app framework, enforces the single-GUI-thread model, in which a single UI thread manages GUI rendering and event dispatching. Due to this model, it is vital to avoid blocking the UI thread for responsiveness. One common practice is to offload long-running tasks into async threads. To achieve this, Android provides various async programming constructs, and leaves developers themselves to obey the rules implied by the model. However, as our study reveals, more than 25% apps violate these rules and introduce hard-to-detect, fail-stop errors, which we term as aysnc programming errors (APEs). To this end, this paper introduces APEChecker, a technique to automatically and efficiently manifest APEs. The key idea is to characterize APEs as specific fault patterns, and synergistically combine static analysis and dynamic UI exploration to detect and verify such errors. Among the 40 real-world Android apps, APEChecker unveils and processes 61 APEs, of which 51 are confirmed (83.6% hit rate). Specifically, APEChecker detects 3X more APEs than the state-of-art testing tools (Monkey, Sapienz and Stoat), and reduces testing time from half an hour to a few minutes. On a specific type of APEs, APEChecker confirms 5X more errors than the data race detection tool, EventRacer, with very few false alarms.","PeriodicalId":6622,"journal":{"name":"2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)","volume":"13 1","pages":"486-497"},"PeriodicalIF":0.0,"publicationDate":"2018-08-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88021731","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}
引用次数: 57
期刊
2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE)
全部 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