首页 > 最新文献

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

英文 中文
Combining bug detection and test case generation 结合bug检测和测试用例生成
Martin Kellogg
Detecting bugs in software is an important software engineering activity. Static bug finding tools can assist in detecting bugs automatically, but they suffer from high false positive rates. Automatic test generation tools can generate test cases which can find bugs, but they suffer from an oracle problem. We present N-Prog, a hybrid of the two approaches. N-Prog iteratively presents the developer an interesting, real input/output pair. The developer either classifies it as a bug (when the output is incorrect) or adds it to the regression test suite (when the output is correct). N-Prog selects input/output pairs whose input produces different output on a mutated version of the program which passes the test suite of the original. In initial experiments, N-Prog detected bugs and rediscovered test cases that had been removed from a test suite.
检测软件中的bug是一项重要的软件工程活动。静态bug查找工具可以帮助自动检测bug,但是它们有很高的误报率。自动测试生成工具可以生成可以找到错误的测试用例,但是它们遭受oracle问题的困扰。我们提出了N-Prog,这是两种方法的混合。N-Prog迭代地向开发人员呈现有趣的、真实的输入/输出对。开发人员要么将其归类为错误(当输出不正确时),要么将其添加到回归测试套件中(当输出正确时)。N-Prog选择输入/输出对,它们的输入在程序的突变版本上产生不同的输出,该版本通过了原始程序的测试套件。在最初的实验中,N-Prog检测到错误,并重新发现从测试套件中删除的测试用例。
{"title":"Combining bug detection and test case generation","authors":"Martin Kellogg","doi":"10.1145/2950290.2983970","DOIUrl":"https://doi.org/10.1145/2950290.2983970","url":null,"abstract":"Detecting bugs in software is an important software engineering activity. Static bug finding tools can assist in detecting bugs automatically, but they suffer from high false positive rates. Automatic test generation tools can generate test cases which can find bugs, but they suffer from an oracle problem. We present N-Prog, a hybrid of the two approaches. N-Prog iteratively presents the developer an interesting, real input/output pair. The developer either classifies it as a bug (when the output is incorrect) or adds it to the regression test suite (when the output is correct). N-Prog selects input/output pairs whose input produces different output on a mutated version of the program which passes the test suite of the original. In initial experiments, N-Prog detected bugs and rediscovered test cases that had been removed from a test suite.","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":"81898740","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}
引用次数: 6
Constraint-based event trace reduction 基于约束的事件跟踪缩减
Jie Wang
Various record-replay techniques are developed to facilitate web application debugging. However, it is time-consuming to inspect all recorded events that reveal a failure. To reduce the cost of debugging, delta-debugging and program slicing are used to remove failure-irrelevant events. However, delta-debugging does not scale well for long traces, and program slicing fails to remove irrelevant events that the failure has program dependence on. In this paper, we propose an effective and efficient approach to remove failure-irrelevant events from the event trace. Our approach builds constraints among events and the failure (e.g., a variable can read any of its earlier type-compatible values), to search for a minimal event trace that satisfies these constraints. Our evaluation on 10 real-world web applications shows that our approach can further remove 70% of events in the reduced trace of dynamic slicing, and needs 80% less iterations and 86% less time than delta-debugging.
开发了各种记录重放技术以方便web应用程序调试。然而,检查所有显示故障的记录事件是非常耗时的。为了降低调试成本,使用增量调试和程序切片来去除与故障无关的事件。然而,增量调试不能很好地扩展到长跟踪,并且程序切片不能删除故障与程序依赖的无关事件。在本文中,我们提出了一种从事件跟踪中去除故障无关事件的有效方法。我们的方法在事件和失败之间建立约束(例如,变量可以读取其早期类型兼容的任何值),以搜索满足这些约束的最小事件跟踪。我们对10个真实的web应用程序的评估表明,我们的方法可以在减少的动态切片跟踪中进一步消除70%的事件,并且比增量调试少80%的迭代和86%的时间。
{"title":"Constraint-based event trace reduction","authors":"Jie Wang","doi":"10.1145/2950290.2983964","DOIUrl":"https://doi.org/10.1145/2950290.2983964","url":null,"abstract":"Various record-replay techniques are developed to facilitate web application debugging. However, it is time-consuming to inspect all recorded events that reveal a failure. To reduce the cost of debugging, delta-debugging and program slicing are used to remove failure-irrelevant events. However, delta-debugging does not scale well for long traces, and program slicing fails to remove irrelevant events that the failure has program dependence on. In this paper, we propose an effective and efficient approach to remove failure-irrelevant events from the event trace. Our approach builds constraints among events and the failure (e.g., a variable can read any of its earlier type-compatible values), to search for a minimal event trace that satisfies these constraints. Our evaluation on 10 real-world web applications shows that our approach can further remove 70% of events in the reduced trace of dynamic slicing, and needs 80% less iterations and 86% less time than delta-debugging.","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":"84114978","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}
引用次数: 6
Correct or usable? the limits of traditional verification (impact paper award) 正确还是可用?传统验证的局限性(影响论文奖)
D. Jackson, M. Vaziri
Since our work on verification sixteen years ago, our views of the role of verification, and the centrality of correctness, have evolved. In our presentation, we’ll talk about some of our concerns about the limitations of this kind of technology, including: usability as a key factor; the unknowable properties of the environment; and the inadequacy of specifications as a means of capturing users’ desires. We’ll describe two approaches we’re currently working on to mitigate these concerns — (1) moving to higher level abstractions with correctness by construction and (2) focusing on the conceptual structure of applications — and will argue that, combined with traditional verification tools, these offer the possibility of applications that are both usable and correct.
自从16年前我们从事核查工作以来,我们对核查的作用和正确性的中心地位的看法已经发生了变化。在我们的演讲中,我们将讨论我们对这种技术局限性的一些担忧,包括:可用性是一个关键因素;环境的不可知属性;以及作为捕捉用户需求的手段的规格说明的不足。我们将描述我们目前正在研究的两种方法来缓解这些担忧——(1)通过构造的正确性转移到更高层次的抽象;(2)关注应用程序的概念结构——并将论证,与传统的验证工具结合起来,这些方法提供了应用程序既可用又正确的可能性。
{"title":"Correct or usable? the limits of traditional verification (impact paper award)","authors":"D. Jackson, M. Vaziri","doi":"10.1145/2950290.2994161","DOIUrl":"https://doi.org/10.1145/2950290.2994161","url":null,"abstract":"Since our work on verification sixteen years ago, our views of the role of verification, and the centrality of correctness, have evolved. In our presentation, we’ll talk about some of our concerns about the limitations of this kind of technology, including: usability as a key factor; the unknowable properties of the environment; and the inadequacy of specifications as a means of capturing users’ desires. We’ll describe two approaches we’re currently working on to mitigate these concerns — (1) moving to higher level abstractions with correctness by construction and (2) focusing on the conceptual structure of applications — and will argue that, combined with traditional verification tools, these offer the possibility of applications that are both usable and correct.","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":"82955338","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
TIPMerge: recommending developers for merging branches TIPMerge:推荐开发人员合并分支
Catarina Costa, J. Figueiredo, A. Sarma, Leonardo Gresta Paulino Murta
Development in large projects often involves branches, where changes are performed in parallel and merged periodically. This merge process often combines two independent and long sequences of commits that may have been performed by multiple, different developers. It is nontrivial to identify the right developer to perform the merge, as the developer must have enough understanding of changes in both branches to ensure that the merged changes comply with the objective of both lines of work (branches), which may have been active for several months. We designed and developed TIPMerge, a novel tool that recommends developers who are best suited to perform the merge between two given branches. TIPMerge does so by taking into consideration developers’ past experience in the project, their changes in the branches, and the dependencies among modified files in the branches. In this paper we demonstrate TIPMerge over a real merge case from the Voldemort project.
大型项目的开发通常涉及分支,其中的更改是并行执行的,并定期合并。此合并过程通常将两个独立的长序列提交组合在一起,这些提交可能由多个不同的开发人员执行。确定执行合并的正确开发人员是非常重要的,因为开发人员必须对两个分支中的更改有足够的了解,以确保合并的更改符合两个工作线(分支)的目标,这可能已经活跃了几个月。我们设计并开发了TIPMerge,这是一个新颖的工具,它推荐最适合在两个给定分支之间执行合并的开发人员。TIPMerge通过考虑开发人员过去在项目中的经验,他们在分支中的变更,以及分支中修改文件之间的依赖关系来做到这一点。在本文中,我们通过一个来自伏地魔项目的真实合并案例来演示TIPMerge。
{"title":"TIPMerge: recommending developers for merging branches","authors":"Catarina Costa, J. Figueiredo, A. Sarma, Leonardo Gresta Paulino Murta","doi":"10.1145/2950290.2983936","DOIUrl":"https://doi.org/10.1145/2950290.2983936","url":null,"abstract":"Development in large projects often involves branches, where changes are performed in parallel and merged periodically. This merge process often combines two independent and long sequences of commits that may have been performed by multiple, different developers. It is nontrivial to identify the right developer to perform the merge, as the developer must have enough understanding of changes in both branches to ensure that the merged changes comply with the objective of both lines of work (branches), which may have been active for several months. We designed and developed TIPMerge, a novel tool that recommends developers who are best suited to perform the merge between two given branches. TIPMerge does so by taking into consideration developers’ past experience in the project, their changes in the branches, and the dependencies among modified files in the branches. In this paper we demonstrate TIPMerge over a real merge case from the Voldemort project.","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":"90758248","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
JBSE: a symbolic executor for Java programs with complex heap inputs JBSE:具有复杂堆输入的Java程序的符号执行器
Pietro Braione, G. Denaro, M. Pezzè
We present the Java Bytecode Symbolic Executor (JBSE), a symbolic executor for Java programs that operates on complex heap inputs. JBSE implements both the novel Heap EXploration Logic (HEX), a symbolic execution approach to deal with heap inputs, and the main state-of-the-art approaches that handle data structure constraints expressed as either executable programs (repOk methods) or declarative specifications. JBSE is the first symbolic executor specifically designed to deal with programs that operate on complex heap inputs, to experiment with the main state-of-the-art approaches, and to combine different decision procedures to explore possible synergies among approaches for handling symbolic data structures.
我们介绍了Java字节码符号执行器(JBSE),这是一个用于操作复杂堆输入的Java程序的符号执行器。JBSE既实现了新颖的堆探索逻辑(HEX),一种处理堆输入的符号执行方法,也实现了处理以可执行程序(repOk方法)或声明性规范表示的数据结构约束的最先进的主要方法。JBSE是第一个专门设计用于处理在复杂堆输入上操作的程序的符号执行器,用于试验最先进的主要方法,并结合不同的决策过程来探索处理符号数据结构的方法之间可能的协同作用。
{"title":"JBSE: a symbolic executor for Java programs with complex heap inputs","authors":"Pietro Braione, G. Denaro, M. Pezzè","doi":"10.1145/2950290.2983940","DOIUrl":"https://doi.org/10.1145/2950290.2983940","url":null,"abstract":"We present the Java Bytecode Symbolic Executor (JBSE), a symbolic executor for Java programs that operates on complex heap inputs. JBSE implements both the novel Heap EXploration Logic (HEX), a symbolic execution approach to deal with heap inputs, and the main state-of-the-art approaches that handle data structure constraints expressed as either executable programs (repOk methods) or declarative specifications. JBSE is the first symbolic executor specifically designed to deal with programs that operate on complex heap inputs, to experiment with the main state-of-the-art approaches, and to combine different decision procedures to explore possible synergies among approaches for handling symbolic data structures.","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":"82049925","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 36
Anti-patterns in search-based program repair 基于搜索的程序修复中的反模式
Shin Hwei Tan, H. Yoshida, M. Prasad, Abhik Roychoudhury
Search-based program repair automatically searches for a program fix within a given repair space. This may be accomplished by retrofitting a generic search algorithm for program repair as evidenced by the GenProg tool, or by building a customized search algorithm for program repair as in SPR. Unfortunately, automated program repair approaches may produce patches that may be rejected by programmers, because of which past works have suggested using human-written patches to produce templates to guide program repair. In this work, we take the position that we will not provide templates to guide the repair search because that may unduly restrict the repair space and attempt to overfit the repairs into one of the provided templates. Instead, we suggest the use of a set of anti-patterns --- a set of generic forbidden transformations that can be enforced on top of any search-based repair tool. We show that by enforcing our anti-patterns, we obtain repairs that localize the correct lines or functions, involve less deletion of program functionality, and are mostly obtained more efficiently. Since our set of anti-patterns are generic, we have integrated them into existing search based repair tools, including GenProg and SPR, thereby allowing us to obtain higher quality program patches with minimal effort.
基于搜索的程序修复在给定的修复空间内自动搜索程序修复。这可以通过改造一个通用的程序修复搜索算法来实现,如GenProg工具所证明的那样,或者通过构建一个定制的程序修复搜索算法来实现,如SPR。不幸的是,自动程序修复方法可能会产生可能被程序员拒绝的补丁,因为过去的工作建议使用人工编写的补丁来生成模板来指导程序修复。在这项工作中,我们采取的立场是,我们不会提供模板来指导修复搜索,因为这可能会过度限制修复空间,并试图将修复过度拟合到所提供的模板之一中。相反,我们建议使用一组反模式——一组可以在任何基于搜索的修复工具之上强制执行的通用禁止转换。我们表明,通过执行反模式,我们获得了定位正确行或函数的修复,涉及较少的程序功能删除,并且大多数情况下获得的效率更高。由于我们的反模式集是通用的,我们已经将它们集成到现有的基于搜索的修复工具中,包括GenProg和SPR,从而允许我们以最小的努力获得更高质量的程序补丁。
{"title":"Anti-patterns in search-based program repair","authors":"Shin Hwei Tan, H. Yoshida, M. Prasad, Abhik Roychoudhury","doi":"10.1145/2950290.2950295","DOIUrl":"https://doi.org/10.1145/2950290.2950295","url":null,"abstract":"Search-based program repair automatically searches for a program fix within a given repair space. This may be accomplished by retrofitting a generic search algorithm for program repair as evidenced by the GenProg tool, or by building a customized search algorithm for program repair as in SPR. Unfortunately, automated program repair approaches may produce patches that may be rejected by programmers, because of which past works have suggested using human-written patches to produce templates to guide program repair. In this work, we take the position that we will not provide templates to guide the repair search because that may unduly restrict the repair space and attempt to overfit the repairs into one of the provided templates. Instead, we suggest the use of a set of anti-patterns --- a set of generic forbidden transformations that can be enforced on top of any search-based repair tool. We show that by enforcing our anti-patterns, we obtain repairs that localize the correct lines or functions, involve less deletion of program functionality, and are mostly obtained more efficiently. Since our set of anti-patterns are generic, we have integrated them into existing search based repair tools, including GenProg and SPR, thereby allowing us to obtain higher quality program patches with minimal effort.","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":"88129844","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}
引用次数: 137
Time-travel debugging for JavaScript/Node.js JavaScript/Node.js的时间旅行调试
Earl T. Barr, Mark Marron, E. Maurer, Daniel K. Moseley, Gaurav Seth
Time-traveling in the execution history of a program during debugging enables a developer to precisely track and understand the sequence of statements and program values leading to an error. To provide this functionality to real world developers, we embarked on a two year journey to create a production quality time-traveling debugger in Microsoft's open-source ChakraCore JavaScript engine and the popular Node.js application framework.
在调试期间,在程序的执行历史中进行时间旅行使开发人员能够精确地跟踪和理解导致错误的语句和程序值的顺序。为了向现实世界的开发人员提供这个功能,我们开始了两年的旅程,在微软的开源ChakraCore JavaScript引擎和流行的Node.js应用程序框架中创建一个生产质量的时间旅行调试器。
{"title":"Time-travel debugging for JavaScript/Node.js","authors":"Earl T. Barr, Mark Marron, E. Maurer, Daniel K. Moseley, Gaurav Seth","doi":"10.1145/2950290.2983933","DOIUrl":"https://doi.org/10.1145/2950290.2983933","url":null,"abstract":"Time-traveling in the execution history of a program during debugging enables a developer to precisely track and understand the sequence of statements and program values leading to an error. To provide this functionality to real world developers, we embarked on a two year journey to create a production quality time-traveling debugger in Microsoft's open-source ChakraCore JavaScript engine and the popular Node.js application framework.","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":"91549097","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
Learning for test prioritization: an industrial case study 测试优先级的学习:一个工业案例研究
Benjamin Busjaeger, Tao Xie
Modern cloud-software providers, such as Salesforce.com, increasingly adopt large-scale continuous integration environments. In such environments, assuring high developer productivity is strongly dependent on conducting testing efficiently and effectively. Specifically, to shorten feedback cycles, test prioritization is popularly used as an optimization mechanism for ranking tests to run by their likelihood of revealing failures. To apply test prioritization in industrial environments, we present a novel approach (tailored for practical applicability) that integrates multiple existing techniques via a systematic framework of machine learning to rank. Our initial empirical evaluation on a large real-world dataset from Salesforce.com shows that our approach significantly outperforms existing individual techniques.
现代云软件提供商,如Salesforce.com,越来越多地采用大规模持续集成环境。在这样的环境中,确保高开发人员生产力强烈依赖于高效和有效地进行测试。具体地说,为了缩短反馈周期,测试优先级被普遍用作一种优化机制,用于根据显示失败的可能性对测试进行排序。为了在工业环境中应用测试优先级,我们提出了一种新颖的方法(为实际应用量身定制),该方法通过机器学习的系统框架集成了多种现有技术来进行排名。我们对来自Salesforce.com的大型真实数据集的初步经验评估表明,我们的方法明显优于现有的个人技术。
{"title":"Learning for test prioritization: an industrial case study","authors":"Benjamin Busjaeger, Tao Xie","doi":"10.1145/2950290.2983954","DOIUrl":"https://doi.org/10.1145/2950290.2983954","url":null,"abstract":"Modern cloud-software providers, such as Salesforce.com, increasingly adopt large-scale continuous integration environments. In such environments, assuring high developer productivity is strongly dependent on conducting testing efficiently and effectively. Specifically, to shorten feedback cycles, test prioritization is popularly used as an optimization mechanism for ranking tests to run by their likelihood of revealing failures. To apply test prioritization in industrial environments, we present a novel approach (tailored for practical applicability) that integrates multiple existing techniques via a systematic framework of machine learning to rank. Our initial empirical evaluation on a large real-world dataset from Salesforce.com shows that our approach significantly outperforms existing individual techniques.","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":"87649791","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}
引用次数: 85
Lightweight specification and analysis of dynamic systems with rich configurations 具有丰富配置的动态系统的轻量级规范和分析
Nuno Macedo, Julien Brunel, D. Chemouil, Alcino Cunha, Denis Kuperberg
Model-checking is increasingly popular in the early phases of the software development process. To establish the correctness of a software design one must usually verify both structural and behavioral (or temporal) properties. Unfortunately, most specification languages, and accompanying model-checkers, excel only in analyzing either one or the other kind. This limits their ability to verify dynamic systems with rich configurations: systems whose state space is characterized by rich structural properties, but whose evolution is also expected to satisfy certain temporal properties. To address this problem, we first propose Electrum, an extension of the Alloy specification language with temporal logic operators, where both rich configurations and expressive temporal properties can easily be defined. Two alternative model-checking techniques are then proposed, one bounded and the other unbounded, to verify systems expressed in this language, namely to verify that every desirable temporal property holds for every possible configuration.
模型检查在软件开发过程的早期阶段越来越流行。为了建立软件设计的正确性,通常必须验证结构和行为(或时间)属性。不幸的是,大多数规范语言和伴随的模型检查器只擅长于分析一种或另一种类型。这限制了他们验证具有丰富配置的动态系统的能力:这些系统的状态空间具有丰富的结构特性,但其演化也被期望满足某些时间特性。为了解决这个问题,我们首先提出了Electrum,它是Alloy规范语言的扩展,带有时间逻辑运算符,可以很容易地定义丰富的配置和表达时间属性。然后提出了两种可选的模型检查技术,一种是有界的,另一种是无界的,以验证用这种语言表达的系统,即验证每个期望的时间属性是否适用于每个可能的配置。
{"title":"Lightweight specification and analysis of dynamic systems with rich configurations","authors":"Nuno Macedo, Julien Brunel, D. Chemouil, Alcino Cunha, Denis Kuperberg","doi":"10.1145/2950290.2950318","DOIUrl":"https://doi.org/10.1145/2950290.2950318","url":null,"abstract":"Model-checking is increasingly popular in the early phases of the software development process. To establish the correctness of a software design one must usually verify both structural and behavioral (or temporal) properties. Unfortunately, most specification languages, and accompanying model-checkers, excel only in analyzing either one or the other kind. This limits their ability to verify dynamic systems with rich configurations: systems whose state space is characterized by rich structural properties, but whose evolution is also expected to satisfy certain temporal properties. To address this problem, we first propose Electrum, an extension of the Alloy specification language with temporal logic operators, where both rich configurations and expressive temporal properties can easily be defined. Two alternative model-checking techniques are then proposed, one bounded and the other unbounded, to verify systems expressed in this language, namely to verify that every desirable temporal property holds for every possible configuration.","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":"86018948","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}
引用次数: 45
Titanium: efficient analysis of evolving alloy specifications 钛:不断发展的合金规格的有效分析
H. Bagheri, S. Malek
The Alloy specification language, and the corresponding Alloy Analyzer, have received much attention in the last two decades with applications in many areas of software engineering. Increasingly, formal analyses enabled by Alloy are desired for use in an on-line mode, where the specifications are automatically kept in sync with the running, possibly changing, software system. However, given Alloy Analyzer's reliance on computationally expensive SAT solvers, an important challenge is the time it takes for such analyses to execute at runtime. The fact that in an on-line mode, the analyses are often repeated on slightly revised versions of a given specification, presents us with an opportunity to tackle this challenge. We present Titanium, an extension of Alloy for formal analysis of evolving specifications. By leveraging the results from previous analyses, Titanium narrows the state space of the revised specification, thereby greatly reducing the required computational effort. We describe the semantic basis of Titanium in terms of models specified in relational logic. We show how the approach can be realized atop an existing relational logic model finder. Our experimental results show Titanium achieves a significant speed-up over Alloy Analyzer when applied to the analysis of evolving specifications.
Alloy规范语言和相应的Alloy Analyzer在过去二十年中受到了广泛的关注,在软件工程的许多领域得到了应用。越来越多的人希望Alloy支持的形式分析用于在线模式,在这种模式下,规范会自动与运行(可能会变化)的软件系统保持同步。然而,鉴于Alloy Analyzer依赖于计算昂贵的SAT求解器,一个重要的挑战是在运行时执行此类分析所需的时间。事实上,在联机模式中,分析经常在给定规范的稍微修改的版本上重复,这为我们提供了解决这一挑战的机会。我们提出钛,合金的形式分析不断发展的规范的延伸。通过利用先前分析的结果,Titanium缩小了修订规范的状态空间,从而大大减少了所需的计算工作量。我们根据关系逻辑中指定的模型来描述Titanium的语义基础。我们将展示如何在现有的关系逻辑模型查找器上实现该方法。我们的实验结果表明,当应用于分析不断变化的规格时,Titanium比Alloy Analyzer实现了显着的加速。
{"title":"Titanium: efficient analysis of evolving alloy specifications","authors":"H. Bagheri, S. Malek","doi":"10.1145/2950290.2950337","DOIUrl":"https://doi.org/10.1145/2950290.2950337","url":null,"abstract":"The Alloy specification language, and the corresponding Alloy Analyzer, have received much attention in the last two decades with applications in many areas of software engineering. Increasingly, formal analyses enabled by Alloy are desired for use in an on-line mode, where the specifications are automatically kept in sync with the running, possibly changing, software system. However, given Alloy Analyzer's reliance on computationally expensive SAT solvers, an important challenge is the time it takes for such analyses to execute at runtime. The fact that in an on-line mode, the analyses are often repeated on slightly revised versions of a given specification, presents us with an opportunity to tackle this challenge. We present Titanium, an extension of Alloy for formal analysis of evolving specifications. By leveraging the results from previous analyses, Titanium narrows the state space of the revised specification, thereby greatly reducing the required computational effort. We describe the semantic basis of Titanium in terms of models specified in relational logic. We show how the approach can be realized atop an existing relational logic model finder. Our experimental results show Titanium achieves a significant speed-up over Alloy Analyzer when applied to the analysis of evolving specifications.","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":"90649919","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}
引用次数: 27
期刊
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