首页 > 最新文献

Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering最新文献

英文 中文
On-demand strong update analysis via value-flow refinement 通过价值流精化的按需强更新分析
Yulei Sui, Jingling Xue
We present a new Strong UPdate Analysis for C programs, called Supa, that enables computing points-to information on-demand via value-flow refinement, in environments with small time and memory budgets such as IDEs. We formulate Supa by solving a graph-reachability problem on a value- flow graph representation of the program, so that strong updates are performed where needed, as long as the total analysis budget is not exhausted. Supa facilitates efficiency and precision tradeoffs by allowing different pointer analyses to be applied in a hybrid multi-stage analysis framework. We have implemented Supa in LLVM with its artifact available at [1]. We evaluate Supa by choosing uninitialized pointer detection as a major client on 12 open-source C programs. As the analysis budget increases, Supa achieves improved precision, with its single-stage flow-sensitive analysis reaching 97% of that achieved by whole-program flow- sensitive analysis by consuming about 0.19 seconds and 36KB of memory per query, on average (with a budget of at most 10000 value-flow edges per query).
我们为C程序提供了一种新的强更新分析,称为Supa,它可以在时间和内存预算较小的环境(如ide)中,通过价值流细化按需计算点到信息。我们通过在程序的价值流图表示上解决图可达性问题来制定Supa,因此只要总分析预算没有用尽,就可以在需要的地方执行强更新。Supa通过允许在混合多阶段分析框架中应用不同的指针分析,促进了效率和精度的权衡。我们已经在LLVM中实现了Supa,其工件可在[1]中获得。我们通过选择未初始化指针检测作为12个开源C程序的主要客户端来评估Supa。随着分析预算的增加,Supa实现了更高的精度,其单级流敏感分析达到了整个程序流敏感分析的97%,平均每次查询消耗约0.19秒和36KB内存(每次查询最多预算10000个值流边)。
{"title":"On-demand strong update analysis via value-flow refinement","authors":"Yulei Sui, Jingling Xue","doi":"10.1145/2950290.2950296","DOIUrl":"https://doi.org/10.1145/2950290.2950296","url":null,"abstract":"We present a new Strong UPdate Analysis for C programs, called Supa, that enables computing points-to information on-demand via value-flow refinement, in environments with small time and memory budgets such as IDEs. We formulate Supa by solving a graph-reachability problem on a value- flow graph representation of the program, so that strong updates are performed where needed, as long as the total analysis budget is not exhausted. Supa facilitates efficiency and precision tradeoffs by allowing different pointer analyses to be applied in a hybrid multi-stage analysis framework. We have implemented Supa in LLVM with its artifact available at [1]. We evaluate Supa by choosing uninitialized pointer detection as a major client on 12 open-source C programs. As the analysis budget increases, Supa achieves improved precision, with its single-stage flow-sensitive analysis reaching 97% of that achieved by whole-program flow- sensitive analysis by consuming about 0.19 seconds and 36KB of memory per query, on average (with a budget of at most 10000 value-flow edges per query).","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83984075","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}
引用次数: 73
Understanding and improving continuous integration 理解并改进持续集成
Michael C Hilton
Continuous Integration (CI) has been widely adopted in the software development industry. However, the usage of CI in practice has been ignored for far too long by the research community. We propose to fill this blind spot by doing in- depth research into CI usage in practice. We will answer how questions by using using quantitative methods, such as investigating open source data that is publicly available. We will answer why questions using qualitative methods, such as semi-structured interviews and large scale surveys. In the course of our research, we plan on identifying barriers that developers face when using CI. We will develop techniques to overcome those barriers via automation. This work is advised by Professor Danny Dig.
持续集成(CI)在软件开发行业中被广泛采用。然而,长期以来,CI在实践中的使用一直被研究界所忽视。我们建议通过深入研究CI在实践中的应用来填补这一盲点。我们将通过使用定量方法来回答如何回答问题,例如调查公开可用的开源数据。我们将使用定性方法回答为什么问题,例如半结构化访谈和大规模调查。在我们的研究过程中,我们计划确定开发人员在使用CI时面临的障碍。我们将开发技术,通过自动化来克服这些障碍。这项工作是由丹尼·狄格教授建议的。
{"title":"Understanding and improving continuous integration","authors":"Michael C Hilton","doi":"10.1145/2950290.2983952","DOIUrl":"https://doi.org/10.1145/2950290.2983952","url":null,"abstract":"Continuous Integration (CI) has been widely adopted in the software development industry. However, the usage of CI in practice has been ignored for far too long by the research community. We propose to fill this blind spot by doing in- depth research into CI usage in practice. We will answer how questions by using using quantitative methods, such as investigating open source data that is publicly available. We will answer why questions using qualitative methods, such as semi-structured interviews and large scale surveys. In the course of our research, we plan on identifying barriers that developers face when using CI. We will develop techniques to overcome those barriers via automation. This work is advised by Professor Danny Dig.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78291334","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
Evaluation of fault localization techniques 故障定位技术的评价
Spencer Pearson
Fault localization (FL) takes as input a faulty program and produces as output a list of code locations ranked by probability of being defective. A programmer doing debugging, or a program repair tool, could save time by focusing on the most suspicious locations. Researchers evaluate new FL techniques on programs with known faults, and score a technique based on where in its list the actual defect appears. This enables comparison of multiple FL techniques to determine which one is best. Previous research has primarily evaluated FL techniques using artificial faults, generated either by hand or automatically. Other prior work has shown that artificial faults have both similarities to and differences from real faults; given this, it is not obvious that the techniques that perform best on artificial faults will also perform best on real faults. This work compares 7 previously-studied FL techniques, both on artificial faults (as a replication study) and on real faults (to validate the assumption that artificial faults are useful proxies for real faults for comparisons of FL techniques). Our replication largely agreed with prior work, but artificial faults were not useful for predicting which FL techniques perform best on real faults. We also studied which characteristics make FL techniques perform well on real faults. We identified a design space that includes those 7 previously-studied FL techniques as well as 149 new ones, and determined which decisions were most important in designing a new technique.
故障定位(FL)将一个有故障的程序作为输入,并产生一个按故障概率排序的代码位置列表作为输出。程序员进行调试或程序修复工具时,可以通过关注最可疑的位置来节省时间。研究人员在具有已知缺陷的程序上评估新的FL技术,并根据其列表中实际缺陷出现的位置对技术进行评分。这样可以比较多种FL技术,以确定哪一种是最好的。以前的研究主要是通过人工或自动产生的人工故障来评估FL技术。其他先前的研究表明,人工断层与真实断层既有相似之处,也有不同之处;鉴于此,在人工故障上表现最好的技术在实际故障上也表现最好,这一点并不明显。这项工作比较了7种以前研究过的FL技术,包括人工故障(作为复制研究)和真实故障(验证人工故障是真实故障的有用代理的假设,以比较FL技术)。我们的复制在很大程度上与先前的工作一致,但是人工故障对于预测哪些FL技术在实际故障上表现最好是没有用的。我们还研究了哪些特征使FL技术在实际故障中表现良好。我们确定了一个设计空间,其中包括之前研究过的7种FL技术以及149种新技术,并确定了哪些决策在设计新技术时最重要。
{"title":"Evaluation of fault localization techniques","authors":"Spencer Pearson","doi":"10.1145/2950290.2983967","DOIUrl":"https://doi.org/10.1145/2950290.2983967","url":null,"abstract":"Fault localization (FL) takes as input a faulty program and produces as output a list of code locations ranked by probability of being defective. A programmer doing debugging, or a program repair tool, could save time by focusing on the most suspicious locations. Researchers evaluate new FL techniques on programs with known faults, and score a technique based on where in its list the actual defect appears. This enables comparison of multiple FL techniques to determine which one is best. Previous research has primarily evaluated FL techniques using artificial faults, generated either by hand or automatically. Other prior work has shown that artificial faults have both similarities to and differences from real faults; given this, it is not obvious that the techniques that perform best on artificial faults will also perform best on real faults. This work compares 7 previously-studied FL techniques, both on artificial faults (as a replication study) and on real faults (to validate the assumption that artificial faults are useful proxies for real faults for comparisons of FL techniques). Our replication largely agreed with prior work, but artificial faults were not useful for predicting which FL techniques perform best on real faults. We also studied which characteristics make FL techniques perform well on real faults. We identified a design space that includes those 7 previously-studied FL techniques as well as 149 new ones, and determined which decisions were most important in designing a new technique.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72894431","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
Field-exhaustive testing Field-exhaustive测试
Pablo Ponzio, Nazareno Aguirre, M. Frias, W. Visser
We present a testing approach for object oriented programs, which encompasses a testing criterion and an automated test generation technique. The criterion, that we call field-exhaustive testing, requires a user-provided limit n on the size of data domains, and is based on the idea of considering enough inputs so as to exhaustively cover the extension of class fields, within the limit n. Intuitively, the extension of a field f is the binary relation established between objects and their corresponding values for field f, in valid instances. Thus, a suite S is field-exhaustive if whenever a field f relates an object o with a value v (i.e., o.f = v) within a valid instance I of size bounded by n, then S contains at least one input I' covering such relationship, i.e., o must also be part of I', and o.f = v must hold in I'. Our test generation technique uses incremental SAT solving to produce small field-exhaustive suites: field-exhaustiveness can be achieved with a suite containing at most # F x n2 inputs, where # F is the number of fields in the class under test. We perform an experimental evaluation on two different testing domains drawn from the literature: implementations of data structures, and of a refactoring engine. The experiments show that field-exhaustive suites can be computed efficiently, and retain similar levels of code coverage and mutation killing as significantly larger bounded exhaustive and random suites, thus consuming a fraction of the cost of test execution compared to these automated testing approaches.
我们提出了一种面向对象程序的测试方法,它包括一个测试标准和一个自动测试生成技术。我们称之为字段穷举测试的标准,要求用户提供数据域大小的限制n,并且基于考虑足够的输入,以便在限制n内详尽地覆盖类字段的扩展的想法。直观地说,字段f的扩展是在有效实例中对象及其对应字段f的值之间建立的二元关系。因此,一个集合S是域穷举的,如果当一个域f将一个对象o与一个值v(即,o.f = v)关联在一个有效的实例I中,且该实例I的大小为n,那么S至少包含一个覆盖这种关系的输入I',即,o也必须是I'的一部分,并且o.f = v必须包含在I'中。我们的测试生成技术使用增量SAT求解来生成小的字段穷举套件:字段穷举可以通过包含最多# F x n2个输入的套件来实现,其中# F是被测试类中的字段数。我们从文献中提取了两个不同的测试领域:数据结构的实现和重构引擎的实现,并对它们进行了实验评估。实验表明,字段穷举套件可以被有效地计算,并且保留了与更大的有界穷举套件和随机套件相似的代码覆盖率和突变消除水平,因此与这些自动化测试方法相比,消耗了测试执行成本的一小部分。
{"title":"Field-exhaustive testing","authors":"Pablo Ponzio, Nazareno Aguirre, M. Frias, W. Visser","doi":"10.1145/2950290.2950336","DOIUrl":"https://doi.org/10.1145/2950290.2950336","url":null,"abstract":"We present a testing approach for object oriented programs, which encompasses a testing criterion and an automated test generation technique. The criterion, that we call field-exhaustive testing, requires a user-provided limit n on the size of data domains, and is based on the idea of considering enough inputs so as to exhaustively cover the extension of class fields, within the limit n. Intuitively, the extension of a field f is the binary relation established between objects and their corresponding values for field f, in valid instances. Thus, a suite S is field-exhaustive if whenever a field f relates an object o with a value v (i.e., o.f = v) within a valid instance I of size bounded by n, then S contains at least one input I' covering such relationship, i.e., o must also be part of I', and o.f = v must hold in I'. Our test generation technique uses incremental SAT solving to produce small field-exhaustive suites: field-exhaustiveness can be achieved with a suite containing at most # F x n2 inputs, where # F is the number of fields in the class under test. We perform an experimental evaluation on two different testing domains drawn from the literature: implementations of data structures, and of a refactoring engine. The experiments show that field-exhaustive suites can be computed efficiently, and retain similar levels of code coverage and mutation killing as significantly larger bounded exhaustive and random suites, thus consuming a fraction of the cost of test execution compared to these automated testing approaches.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88440475","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}
引用次数: 24
Correctness witnesses: exchanging verification results between verifiers 正确性见证:验证者之间交换验证结果
Dirk Beyer, Matthias Dangl, Daniel Dietsch, Matthias Heizmann
Standard verification tools provide a counterexample to witness a specification violation, and, since a few years, such a witness can be validated by an independent validator using an exchangeable witness format. This way, information about the violation can be shared across verification tools and the user can use standard tools to visualize and explore witnesses. This technique is not yet established for the correctness case, where a program fulfills a specification. Even for simple programs, it is often difficult for users to comprehend why a given program is correct, and there is no way to independently check the verification result. We close this gap by complementing our earlier work on violation witnesses with correctness witnesses. While we use an extension of the established common exchange format for violation witnesses to represent correctness witnesses, the techniques for producing and validating correctness witnesses are different. The overall goal to make proofs available to engineers is probably as old as programming itself, and proof-carrying code was proposed two decades ago --- our goal is to make it practical: We consider witnesses as first-class exchangeable objects, stored independently from the source code and checked independently from the verifier that produced them, respecting the important principle of separation of concerns. At any time, the invariants from the correctness witness can be used to reconstruct a correctness proof to establish trust. We extended two state-of-the-art verifiers, CPAchecker and Ultimate Automizer, to produce and validate witnesses, and report that the approach is promising on a large set of verification tasks.
标准验证工具提供了一个反例来见证规范的违反,而且,几年以来,这样的见证可以由使用可交换见证格式的独立验证者进行验证。这样,关于违规的信息可以在验证工具之间共享,用户可以使用标准工具来可视化和探索证人。这种技术还没有建立在正确性的情况下,即程序满足规范。即使是简单的程序,用户也常常很难理解为什么给定的程序是正确的,并且没有办法独立检查验证结果。我们通过用正确性见证来补充我们早期关于违例见证的工作来缩小这个差距。虽然我们使用已建立的违反见证的公共交换格式的扩展来表示正确性见证,但是产生和验证正确性见证的技术是不同的。为工程师提供证明的总体目标可能与编程本身一样古老,并且携带证明的代码是在20年前提出的-我们的目标是使其实用:我们将证人视为一流的可交换对象,独立于源代码存储,独立于产生它们的验证者进行检查,尊重关注点分离的重要原则。在任何时候,正确性见证中的不变量都可以用来重建正确性证明以建立信任。我们扩展了两个最先进的验证器,CPAchecker和Ultimate Automizer,以产生和验证证人,并报告该方法在大量验证任务中是有希望的。
{"title":"Correctness witnesses: exchanging verification results between verifiers","authors":"Dirk Beyer, Matthias Dangl, Daniel Dietsch, Matthias Heizmann","doi":"10.1145/2950290.2950351","DOIUrl":"https://doi.org/10.1145/2950290.2950351","url":null,"abstract":"Standard verification tools provide a counterexample to witness a specification violation, and, since a few years, such a witness can be validated by an independent validator using an exchangeable witness format. This way, information about the violation can be shared across verification tools and the user can use standard tools to visualize and explore witnesses. This technique is not yet established for the correctness case, where a program fulfills a specification. Even for simple programs, it is often difficult for users to comprehend why a given program is correct, and there is no way to independently check the verification result. We close this gap by complementing our earlier work on violation witnesses with correctness witnesses. While we use an extension of the established common exchange format for violation witnesses to represent correctness witnesses, the techniques for producing and validating correctness witnesses are different. The overall goal to make proofs available to engineers is probably as old as programming itself, and proof-carrying code was proposed two decades ago --- our goal is to make it practical: We consider witnesses as first-class exchangeable objects, stored independently from the source code and checked independently from the verifier that produced them, respecting the important principle of separation of concerns. At any time, the invariants from the correctness witness can be used to reconstruct a correctness proof to establish trust. We extended two state-of-the-art verifiers, CPAchecker and Ultimate Automizer, to produce and validate witnesses, and report that the approach is promising on a large set of verification tasks.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91372887","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}
引用次数: 65
WATERFALL: an incremental approach for repairing record-replay tests of web applications 瀑布:用于修复web应用程序的记录重放测试的增量方法
Mouna Hammoudi, G. Rothermel, Andrea Stocco
Software engineers use record/replay tools to capture use case scenarios that can serve as regression tests for web applications. Such tests, however, can be brittle in the face of code changes. Thus, researchers have sought automated approaches for repairing broken record/replay tests. To date, such approaches have operated by directly analyzing differences between the releases of web applications. Often, however, intermediate versions or commits exist between releases, and these represent finer-grained sequences of changes by which new releases evolve. In this paper, we present WATERFALL, an incremental test repair approach that applies test repair techniques iteratively across a sequence of fine-grained versions of a web application. The results of an empirical study on seven web applications show that our approach is substantially more effective than a coarse-grained approach (209% overall), while maintaining an acceptable level of overhead.
软件工程师使用记录/重播工具来捕获用例场景,这些场景可以作为web应用程序的回归测试。然而,面对代码更改,这样的测试可能很脆弱。因此,研究人员一直在寻求自动化的方法来修复损坏的记录/重播测试。到目前为止,这种方法是通过直接分析web应用程序版本之间的差异来操作的。但是,在发布之间通常存在中间版本或提交,这些中间版本代表了细粒度的更改序列,新版本根据这些更改进行演化。在本文中,我们介绍了WATERFALL,这是一种增量测试修复方法,它在web应用程序的一系列细粒度版本中迭代地应用测试修复技术。对七个web应用程序的实证研究结果表明,我们的方法比粗粒度方法(总体209%)有效得多,同时保持了可接受的开销水平。
{"title":"WATERFALL: an incremental approach for repairing record-replay tests of web applications","authors":"Mouna Hammoudi, G. Rothermel, Andrea Stocco","doi":"10.1145/2950290.2950294","DOIUrl":"https://doi.org/10.1145/2950290.2950294","url":null,"abstract":"Software engineers use record/replay tools to capture use case scenarios that can serve as regression tests for web applications. Such tests, however, can be brittle in the face of code changes. Thus, researchers have sought automated approaches for repairing broken record/replay tests. To date, such approaches have operated by directly analyzing differences between the releases of web applications. Often, however, intermediate versions or commits exist between releases, and these represent finer-grained sequences of changes by which new releases evolve. In this paper, we present WATERFALL, an incremental test repair approach that applies test repair techniques iteratively across a sequence of fine-grained versions of a web application. The results of an empirical study on seven web applications show that our approach is substantially more effective than a coarse-grained approach (209% overall), while maintaining an acceptable level of overhead.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91053795","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}
引用次数: 47
Developing a reusable control-based approach to build self-adaptive software systems with formal guarantees 开发一种可重用的基于控制的方法来构建具有正式保证的自适应软件系统
S. Shevtsov
An increasingly important concern of software engineers is handling uncertainty at runtime. Over the last decade researchers have applied architecture-based self-adaptation approaches to address this concern. However, providing guarantees required by current software systems has shown to be challenging with these approaches. To tackle this challenge, we study the application of control theory to realize self-adaptation and develop novel control-based adaptation mechanisms that guarantee desired system properties. Results are validated on systems with strict requirements.
软件工程师日益关注的一个重要问题是处理运行时的不确定性。在过去的十年中,研究人员已经应用了基于架构的自适应方法来解决这个问题。然而,用这些方法提供当前软件系统所需的保证是具有挑战性的。为了解决这一挑战,我们研究了控制理论的应用来实现自适应,并开发了新的基于控制的自适应机制,以保证期望的系统性能。结果在具有严格要求的系统上进行了验证。
{"title":"Developing a reusable control-based approach to build self-adaptive software systems with formal guarantees","authors":"S. Shevtsov","doi":"10.1145/2950290.2983949","DOIUrl":"https://doi.org/10.1145/2950290.2983949","url":null,"abstract":"An increasingly important concern of software engineers is handling uncertainty at runtime. Over the last decade researchers have applied architecture-based self-adaptation approaches to address this concern. However, providing guarantees required by current software systems has shown to be challenging with these approaches. To tackle this challenge, we study the application of control theory to realize self-adaptation and develop novel control-based adaptation mechanisms that guarantee desired system properties. Results are validated on systems with strict requirements.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91202054","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Understanding and generating high quality patches for concurrency bugs 理解并发错误并生成高质量的补丁
Haopeng Liu, Yuxi Chen, Shan Lu
Concurrency bugs are time-consuming to fix correctly by developers and a severe threat to software reliability. Although many auto-fixing techniques have been proposed recently for concurrency bugs, there is still a big gap between the quality of automatically generated patches and manually designed ones. This paper first conducts an in-depth study of manual patches for 77 real-world concurrency bugs, which provides both assessments for existing techniques and actionable suggestions for future research. Guided by this study, a new tool HFix is designed. It can automatically generate patches, which have matching quality as manual patches, for many concurrency bugs.
并发错误需要开发人员花费大量时间来正确修复,并且严重威胁到软件的可靠性。尽管最近提出了许多针对并发错误的自动修复技术,但自动生成的补丁和手动设计的补丁的质量之间仍然存在很大差距。本文首先对77个现实世界并发性bug的手工补丁进行了深入研究,为现有技术提供了评估,并为未来的研究提供了可操作的建议。在本研究的指导下,设计了新的HFix工具。对于许多并发性错误,它可以自动生成补丁,其质量与手动补丁相匹配。
{"title":"Understanding and generating high quality patches for concurrency bugs","authors":"Haopeng Liu, Yuxi Chen, Shan Lu","doi":"10.1145/2950290.2950309","DOIUrl":"https://doi.org/10.1145/2950290.2950309","url":null,"abstract":"Concurrency bugs are time-consuming to fix correctly by developers and a severe threat to software reliability. Although many auto-fixing techniques have been proposed recently for concurrency bugs, there is still a big gap between the quality of automatically generated patches and manually designed ones. This paper first conducts an in-depth study of manual patches for 77 real-world concurrency bugs, which provides both assessments for existing techniques and actionable suggestions for future research. Guided by this study, a new tool HFix is designed. It can automatically generate patches, which have matching quality as manual patches, for many concurrency bugs.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90101350","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}
引用次数: 30
On well-separation of GR(1) specifications GR(1)规范的井分离
S. Maoz, Jan Oliver Ringert
Specifications for reactive synthesis, an automated procedure to obtain a correct-by-construction reactive system, consist of assumptions and guarantees. One way a controller may satisfy the specification is by preventing the environment from satisfying the assumptions, without satisfying the guarantees. Although valid this solution is usually undesired and specifications that allow it are called non-well-separated. In this work we investigate non-well-separation in the context of GR(1), an expressive fragment of LTL that enables efficient synthesis. We distinguish different cases of non-well-separation, and compute strategies showing how the environment can be forced to violate its assumptions. Moreover, we show how to find a core, a minimal set of assumptions that lead to non-well-separation, and further extend our work to support past-time LTL and patterns. We implemented our work and evaluated it on 79 specifications. The evaluation shows that non-well-separation is a common problem in specifications and that our tools can be efficiently applied to identify it and its causes.
反应性合成是一种获得结构正确的反应性系统的自动化程序,其规范由假设和保证组成。控制器满足规范的一种方法是防止环境在不满足保证的情况下满足假设。尽管这种解决方案是有效的,但通常不需要这种解决方案,允许这种解决方案的规范被称为非良好分离的。在这项工作中,我们研究了GR(1)背景下的非井分离,GR(1)是LTL的表达片段,可实现高效合成。我们区分了不同的非井分离情况,并计算了显示环境如何被迫违反其假设的策略。此外,我们展示了如何找到一个核心,一个最小的假设集,导致非井分离,并进一步扩展我们的工作,以支持过去的LTL和模式。我们实现了我们的工作,并根据79个规范对其进行了评估。评价表明,非井隔是规范中常见的问题,我们的工具可以有效地用于识别非井隔及其原因。
{"title":"On well-separation of GR(1) specifications","authors":"S. Maoz, Jan Oliver Ringert","doi":"10.1145/2950290.2950300","DOIUrl":"https://doi.org/10.1145/2950290.2950300","url":null,"abstract":"Specifications for reactive synthesis, an automated procedure to obtain a correct-by-construction reactive system, consist of assumptions and guarantees. One way a controller may satisfy the specification is by preventing the environment from satisfying the assumptions, without satisfying the guarantees. Although valid this solution is usually undesired and specifications that allow it are called non-well-separated. In this work we investigate non-well-separation in the context of GR(1), an expressive fragment of LTL that enables efficient synthesis. We distinguish different cases of non-well-separation, and compute strategies showing how the environment can be forced to violate its assumptions. Moreover, we show how to find a core, a minimal set of assumptions that lead to non-well-separation, and further extend our work to support past-time LTL and patterns. We implemented our work and evaluated it on 79 specifications. The evaluation shows that non-well-separation is a common problem in specifications and that our tools can be efficiently applied to identify it and its causes.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"75623665","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
Effective assignment and assistance to software developers and reviewers 对软件开发人员和评审人员进行有效的分配和协助
Motahareh Bahrami Zanjani
Human reliance and dominance are ubiquitous in sustaining a high-quality large software system. Automatically assigning the right solution providers to the maintenance task at hand is arguably as important as providing the right tool support for it, especially in the far too commonly found state of inadequate or obsolete documentation of large-scale software systems. Two maintenance tasks related to assignment and assistance to software developers and reviewers are addressed, and solutions are proposed. The key insight behind these proposed solutions is the analysis and use of micro-levels of human-to-code and human-to-human interactions (eg., code review). We analyzed code reviews that are managed by Gerrit and found different markers of developer expertise associated with the source code changes and their acceptance, time line, and human roles and feedback involved in the reviews. We formed a developer-expertise model from these markers and showed its application in bug triaging. Specifically, we derived a developer recommendation approach for an incoming change request, named rDevX , from this expertise model. Additionally, we present an approach, namely cHRev, to automatically recommend reviewers who are best suited to participate in a given review, based on their historical contributions as demonstrated in their prior reviews. Furthermore, a comparative study on other previous approaches for developer recommendation and reviewer recommendation was performed. The metrics recall and MRR were used to measure their quantitative effectiveness. Results show that the proposed approaches outperform the subjected competitors with statistical significance.
人类的依赖和支配在维持高质量的大型软件系统中是无处不在的。自动为手头的维护任务分配正确的解决方案提供者与为维护任务提供正确的工具支持一样重要,尤其是在大规模软件系统文档不足或过时的情况下。讨论了与分配和协助软件开发人员和审查人员相关的两个维护任务,并提出了解决方案。这些建议的解决方案背后的关键见解是分析和使用人对代码和人对人交互的微观层面(例如。(代码审查)。我们分析了由Gerrit管理的代码评审,并发现了与源代码变更及其接受程度、时间线、评审中涉及的人员角色和反馈相关的开发人员专业知识的不同标记。我们从这些标记中形成了一个开发人员专业知识模型,并展示了它在bug分类中的应用。具体地说,我们从这个专家模型中为传入的变更请求(名为rDevX)导出了一种开发人员推荐方法。此外,我们提出了一种方法,即cHRev,根据他们在之前的审查中所展示的历史贡献,自动推荐最适合参与给定审查的审稿人。此外,本文还对以往的开发者推荐和审稿人推荐方法进行了比较研究。使用召回率和MRR指标来衡量其定量有效性。结果表明,所提出的方法优于竞争对手,具有统计学意义。
{"title":"Effective assignment and assistance to software developers and reviewers","authors":"Motahareh Bahrami Zanjani","doi":"10.1145/2950290.2983960","DOIUrl":"https://doi.org/10.1145/2950290.2983960","url":null,"abstract":"Human reliance and dominance are ubiquitous in sustaining a high-quality large software system. Automatically assigning the right solution providers to the maintenance task at hand is arguably as important as providing the right tool support for it, especially in the far too commonly found state of inadequate or obsolete documentation of large-scale software systems. Two maintenance tasks related to assignment and assistance to software developers and reviewers are addressed, and solutions are proposed. The key insight behind these proposed solutions is the analysis and use of micro-levels of human-to-code and human-to-human interactions (eg., code review). We analyzed code reviews that are managed by Gerrit and found different markers of developer expertise associated with the source code changes and their acceptance, time line, and human roles and feedback involved in the reviews. We formed a developer-expertise model from these markers and showed its application in bug triaging. Specifically, we derived a developer recommendation approach for an incoming change request, named rDevX , from this expertise model. Additionally, we present an approach, namely cHRev, to automatically recommend reviewers who are best suited to participate in a given review, based on their historical contributions as demonstrated in their prior reviews. Furthermore, a comparative study on other previous approaches for developer recommendation and reviewer recommendation was performed. The metrics recall and MRR were used to measure their quantitative effectiveness. Results show that the proposed approaches outperform the subjected competitors with statistical significance.","PeriodicalId":20532,"journal":{"name":"Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2016-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80591314","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
期刊
Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering
全部 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