首页 > 最新文献

Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering最新文献

英文 中文
Synergistic debug-repair of heap manipulations 堆操作的协同调试修复
Sahil Verma, Subhajit Roy
We present Wolverine, an integrated Debug-Repair environment for heap manipulating programs. Wolverine facilitates stepping through a concrete program execution, provides visualizations of the abstract program states (as box-and-arrow diagrams) and integrates a novel, proof-directed repair algorithm to synthesize repair patches. To provide a seamless environment, Wolverine supports "hot-patching" of the generated repair patches, enabling the programmer to continue the debug session without requiring an abort-compile-debug cycle. We also propose new debug-repair possibilities, "specification refinement" and "specification slicing" made possible by Wolverine. We evaluate our framework on 1600 buggy programs (generated using fault injection) on a variety of data-structures like singly, doubly and circular linked-lists, Binary Search Trees, AVL trees, Red-Black trees and Splay trees; Wolverine could repair all the buggy instances within reasonable time (less than 5 sec in most cases). We also evaluate Wolverine on 247 (buggy) student submissions; Wolverine could repair more than 80% of programs where the student had made a reasonable attempt.
我们介绍了Wolverine,一个用于堆操作程序的集成调试修复环境。Wolverine简化了具体程序执行的步骤,提供了抽象程序状态的可视化(如方框和箭头图),并集成了一种新颖的、证明导向的修复算法来合成修复补丁。为了提供一个无缝的环境,Wolverine支持对生成的修复补丁进行“热补丁”,使程序员能够继续调试会话,而不需要中止-编译-调试周期。我们还提出了新的调试修复可能性,“规范细化”和“规范切片”是由金刚狼实现的。我们在各种数据结构(如单链表、双链表和循环链表、二叉搜索树、AVL树、红黑树和四边形树)上对1600个有bug的程序(使用故障注入生成)进行了框架评估;Wolverine可以在合理的时间内修复所有有bug的实例(大多数情况下不到5秒)。我们也评估金刚狼247 (bug)学生提交;如果学生做了合理的尝试,金刚狼可以修复80%以上的程序。
{"title":"Synergistic debug-repair of heap manipulations","authors":"Sahil Verma, Subhajit Roy","doi":"10.1145/3106237.3106263","DOIUrl":"https://doi.org/10.1145/3106237.3106263","url":null,"abstract":"We present Wolverine, an integrated Debug-Repair environment for heap manipulating programs. Wolverine facilitates stepping through a concrete program execution, provides visualizations of the abstract program states (as box-and-arrow diagrams) and integrates a novel, proof-directed repair algorithm to synthesize repair patches. To provide a seamless environment, Wolverine supports \"hot-patching\" of the generated repair patches, enabling the programmer to continue the debug session without requiring an abort-compile-debug cycle. We also propose new debug-repair possibilities, \"specification refinement\" and \"specification slicing\" made possible by Wolverine. We evaluate our framework on 1600 buggy programs (generated using fault injection) on a variety of data-structures like singly, doubly and circular linked-lists, Binary Search Trees, AVL trees, Red-Black trees and Splay trees; Wolverine could repair all the buggy instances within reasonable time (less than 5 sec in most cases). We also evaluate Wolverine on 247 (buggy) student submissions; Wolverine could repair more than 80% of programs where the student had made a reasonable attempt.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"62 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123787073","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}
引用次数: 20
Understanding misunderstandings in source code 理解源代码中的误解
Dan Gopstein, J. Iannacone, Yu Yan, Lois DeLong, Yanyan Zhuang, M. Yeh, Justin Cappos
Humans often mistake the meaning of source code, and so misjudge a program's true behavior. These mistakes can be caused by extremely small, isolated patterns in code, which can lead to significant runtime errors. These patterns are used in large, popular software projects and even recommended in style guides. To identify code patterns that may confuse programmers we extracted a preliminary set of `atoms of confusion' from known confusing code. We show empirically in an experiment with 73 participants that these code patterns can lead to a significantly increased rate of misunderstanding versus equivalent code without the patterns. We then go on to take larger confusing programs and measure (in an experiment with 43 participants) the impact, in terms of programmer confusion, of removing these confusing patterns. All of our instruments, analysis code, and data are publicly available online for replication, experimentation, and feedback.
人类经常会误解源代码的含义,从而错误判断程序的真实行为。这些错误可能是由代码中非常小的、孤立的模式引起的,这会导致严重的运行时错误。这些模式在大型、流行的软件项目中使用,甚至在风格指南中也有推荐。为了识别可能使程序员感到困惑的代码模式,我们从已知的令人困惑的代码中提取了一组初步的“混淆原子”。我们在一个有73名参与者的实验中表明,与没有模式的等效代码相比,这些代码模式会导致误解率显著增加。然后,我们继续采用更大的令人困惑的程序,并测量(在一个有43名参与者的实验中)消除这些令人困惑的模式对程序员困惑的影响。我们所有的仪器、分析代码和数据都是公开的,可以在网上复制、实验和反馈。
{"title":"Understanding misunderstandings in source code","authors":"Dan Gopstein, J. Iannacone, Yu Yan, Lois DeLong, Yanyan Zhuang, M. Yeh, Justin Cappos","doi":"10.1145/3106237.3106264","DOIUrl":"https://doi.org/10.1145/3106237.3106264","url":null,"abstract":"Humans often mistake the meaning of source code, and so misjudge a program's true behavior. These mistakes can be caused by extremely small, isolated patterns in code, which can lead to significant runtime errors. These patterns are used in large, popular software projects and even recommended in style guides. To identify code patterns that may confuse programmers we extracted a preliminary set of `atoms of confusion' from known confusing code. We show empirically in an experiment with 73 participants that these code patterns can lead to a significantly increased rate of misunderstanding versus equivalent code without the patterns. We then go on to take larger confusing programs and measure (in an experiment with 43 participants) the impact, in terms of programmer confusion, of removing these confusing patterns. All of our instruments, analysis code, and data are publicly available online for replication, experimentation, and feedback.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121894560","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}
引用次数: 42
QTEP: quality-aware test case prioritization QTEP:有质量意识的测试用例优先级
Song Wang, Jaechang Nam, Lin Tan
Test case prioritization (TCP) is a practical activity in software testing for exposing faults earlier. Researchers have proposed many TCP techniques to reorder test cases. Among them, coverage-based TCPs have been widely investigated. Specifically, coverage-based TCP approaches leverage coverage information between source code and test cases, i.e., static code coverage and dynamic code coverage, to schedule test cases. Existing coverage-based TCP techniques mainly focus on maximizing coverage while often do not consider the likely distribution of faults in source code. However, software faults are not often equally distributed in source code, e.g., around 80% faults are located in about 20% source code. Intuitively, test cases that cover the faulty source code should have higher priorities, since they are more likely to find faults. In this paper, we present a quality-aware test case prioritization technique, QTEP, to address the limitation of existing coverage-based TCP algorithms. In QTEP, we leverage code inspection techniques, i.e., a typical statistic defect prediction model and a typical static bug finder, to detect fault-prone source code and then adapt existing coverage-based TCP algorithms by considering the weighted source code in terms of fault-proneness. Our evaluation with 16 variant QTEP techniques on 33 different versions of 7 open source Java projects shows that QTEP could improve existing coverage-based TCP techniques for both regression and new test cases. Specifically, the improvement of the best variant of QTEP for regression test cases could be up to 15.0% and on average 7.6%, and for all test cases (both regression and new test cases), the improvement could be up to 10.0% and on average 5.0%.
测试用例优先级(TCP)是软件测试中的一项实用活动,用于更早地暴露错误。研究人员已经提出了许多TCP技术来重新排序测试用例。其中,基于覆盖率的tcp得到了广泛的研究。具体来说,基于覆盖的TCP方法利用源代码和测试用例之间的覆盖信息,即静态代码覆盖和动态代码覆盖,来安排测试用例。现有的基于覆盖率的TCP技术主要关注于最大化覆盖率,而通常不考虑源代码中错误的可能分布。然而,软件故障在源代码中的分布并不均匀,例如,大约80%的故障位于大约20%的源代码中。直观地说,覆盖错误源代码的测试用例应该有更高的优先级,因为它们更有可能发现错误。在本文中,我们提出了一种质量感知的测试用例优先级技术,QTEP,以解决现有的基于覆盖的TCP算法的局限性。在QTEP中,我们利用代码检查技术,即典型的统计缺陷预测模型和典型的静态bug查找器,来检测容易出错的源代码,然后通过考虑加权源代码的错误倾向来适应现有的基于覆盖率的TCP算法。我们对7个开源Java项目的33个不同版本的16种变体QTEP技术进行了评估,结果表明QTEP可以改进现有的基于覆盖的TCP技术,用于回归和新的测试用例。具体来说,对于回归测试用例,QTEP的最佳变体的改进可以达到15.0%和平均7.6%,对于所有测试用例(包括回归和新测试用例),改进可以达到10.0%和平均5.0%。
{"title":"QTEP: quality-aware test case prioritization","authors":"Song Wang, Jaechang Nam, Lin Tan","doi":"10.1145/3106237.3106258","DOIUrl":"https://doi.org/10.1145/3106237.3106258","url":null,"abstract":"Test case prioritization (TCP) is a practical activity in software testing for exposing faults earlier. Researchers have proposed many TCP techniques to reorder test cases. Among them, coverage-based TCPs have been widely investigated. Specifically, coverage-based TCP approaches leverage coverage information between source code and test cases, i.e., static code coverage and dynamic code coverage, to schedule test cases. Existing coverage-based TCP techniques mainly focus on maximizing coverage while often do not consider the likely distribution of faults in source code. However, software faults are not often equally distributed in source code, e.g., around 80% faults are located in about 20% source code. Intuitively, test cases that cover the faulty source code should have higher priorities, since they are more likely to find faults. In this paper, we present a quality-aware test case prioritization technique, QTEP, to address the limitation of existing coverage-based TCP algorithms. In QTEP, we leverage code inspection techniques, i.e., a typical statistic defect prediction model and a typical static bug finder, to detect fault-prone source code and then adapt existing coverage-based TCP algorithms by considering the weighted source code in terms of fault-proneness. Our evaluation with 16 variant QTEP techniques on 33 different versions of 7 open source Java projects shows that QTEP could improve existing coverage-based TCP techniques for both regression and new test cases. Specifically, the improvement of the best variant of QTEP for regression test cases could be up to 15.0% and on average 7.6%, and for all test cases (both regression and new test cases), the improvement could be up to 10.0% and on average 5.0%.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129083073","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}
引用次数: 58
Natural language querying in SAP-ERP platform SAP-ERP平台的自然语言查询
Diptikalyan Saha, Neelamadhav Gantayat, Senthil Mani, Barry Mitchell
With the omnipresence of mobile devices coupled with recent advances in automatic speech recognition capabilities, there has been a growing demand for natural language query (NLQ) interface to retrieve information from the knowledge bases. Business users particularly find this useful as NLQ interface enables them to ask questions without the knowledge of the query language or the data schema. In this paper, we apply an existing research technology called ``ATHENA: An Ontology-Driven System for Natural Language Querying over Relational Data Stores'' in the industry domain of SAP-ERP systems. The goal is to enable users to query SAP-ERP data using natural language. We present the challenges and their solutions of such a technology transfer. We present the effectiveness of the natural language query interface on a set of questions given by a set of SAP practitioners.
随着移动设备的普及和语音自动识别技术的进步,人们对自然语言查询(NLQ)接口的需求越来越大,以从知识库中检索信息。业务用户发现这一点特别有用,因为NLQ接口使他们能够在不了解查询语言或数据模式的情况下提出问题。在本文中,我们将现有的研究技术“ATHENA:一个面向关系数据存储的自然语言查询的本体驱动系统”应用于SAP-ERP系统的行业领域。目标是使用户能够使用自然语言查询SAP-ERP数据。我们提出了这种技术转让的挑战及其解决办法。我们展示了自然语言查询接口在一组SAP从业者给出的一组问题上的有效性。
{"title":"Natural language querying in SAP-ERP platform","authors":"Diptikalyan Saha, Neelamadhav Gantayat, Senthil Mani, Barry Mitchell","doi":"10.1145/3106237.3117765","DOIUrl":"https://doi.org/10.1145/3106237.3117765","url":null,"abstract":"With the omnipresence of mobile devices coupled with recent advances in automatic speech recognition capabilities, there has been a growing demand for natural language query (NLQ) interface to retrieve information from the knowledge bases. Business users particularly find this useful as NLQ interface enables them to ask questions without the knowledge of the query language or the data schema. In this paper, we apply an existing research technology called ``ATHENA: An Ontology-Driven System for Natural Language Querying over Relational Data Stores'' in the industry domain of SAP-ERP systems. The goal is to enable users to query SAP-ERP data using natural language. We present the challenges and their solutions of such a technology transfer. We present the effectiveness of the natural language query interface on a set of questions given by a set of SAP practitioners.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130393673","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}
引用次数: 5
Failure-directed program trimming 故障导向程序修剪
Kostas Ferles, Valentin Wüstholz, M. Christakis, Işıl Dillig
This paper describes a new program simplification technique called program trimming that aims to improve the scalability and precision of safety checking tools. Given a program P, program trimming generates a new program P' such that P and P' are equi-safe (i.e., P' has a bug if and only if P has a bug), but P' has fewer execution paths than P. Since many program analyzers are sensitive to the number of execution paths, program trimming has the potential to improve the effectiveness of safety checking tools. In addition to introducing the concept of program trimming, this paper also presents a lightweight static analysis that can be used as a pre-processing step to remove program paths while retaining equi-safety. We have implemented the proposed technique in a tool called Trimmer and evaluate it in the context of two program analysis techniques, namely abstract interpretation and dynamic symbolic execution. Our experiments show that program trimming significantly improves the effectiveness of both techniques.
本文介绍了一种新的程序简化技术,称为程序修剪,旨在提高安全检测工具的可扩展性和精度。给定一个程序P,程序修剪生成一个新的程序P',使得P和P'是同等安全的(即,P'有错误当且仅当P有错误),但是P'的执行路径比P少。由于许多程序分析器对执行路径的数量很敏感,程序修剪有可能提高安全检查工具的有效性。除了介绍程序修剪的概念外,本文还介绍了一个轻量级的静态分析,它可以用作预处理步骤,在保留同等安全性的同时删除程序路径。我们在一个名为Trimmer的工具中实现了所提出的技术,并在两种程序分析技术(即抽象解释和动态符号执行)的背景下对其进行了评估。我们的实验表明,程序修剪显著提高了这两种技术的有效性。
{"title":"Failure-directed program trimming","authors":"Kostas Ferles, Valentin Wüstholz, M. Christakis, Işıl Dillig","doi":"10.1145/3106237.3106249","DOIUrl":"https://doi.org/10.1145/3106237.3106249","url":null,"abstract":"This paper describes a new program simplification technique called program trimming that aims to improve the scalability and precision of safety checking tools. Given a program P, program trimming generates a new program P' such that P and P' are equi-safe (i.e., P' has a bug if and only if P has a bug), but P' has fewer execution paths than P. Since many program analyzers are sensitive to the number of execution paths, program trimming has the potential to improve the effectiveness of safety checking tools. In addition to introducing the concept of program trimming, this paper also presents a lightweight static analysis that can be used as a pre-processing step to remove program paths while retaining equi-safety. We have implemented the proposed technique in a tool called Trimmer and evaluate it in the context of two program analysis techniques, namely abstract interpretation and dynamic symbolic execution. Our experiments show that program trimming significantly improves the effectiveness of both techniques.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126812243","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}
引用次数: 15
Serverless computing: economic and architectural impact 无服务器计算:经济和架构影响
Gojko Adzic, Robert Chatley
Amazon Web Services unveiled their "Lambda" platform in late 2014. Since then, each of the major cloud computing infrastructure providers has released services supporting a similar style of deployment and operation, where rather than deploying and running monolithic services, or dedicated virtual machines, users are able to deploy individual functions, and pay only for the time that their code is actually executing. These technologies are gathered together under the marketing term "serverless" and the providers suggest that they have the potential to significantly change how client/server applications are designed, developed and operated. This paper presents two case industrial studies of early adopters, showing how migrating an application to the Lambda deployment architecture reduced hosting costs - by between 66% and 95% - and discusses how further adoption of this trend might influence common software architecture design practices.
亚马逊网络服务公司在2014年底推出了他们的“Lambda”平台。从那时起,每个主要的云计算基础设施提供商都发布了支持类似部署和操作风格的服务,而不是部署和运行整体服务或专用虚拟机,用户可以部署单独的功能,并且只需为他们的代码实际执行的时间付费。这些技术被统称为“无服务器”,供应商认为它们有可能显著改变客户端/服务器应用程序的设计、开发和操作方式。本文介绍了两个早期采用者的工业研究案例,展示了将应用程序迁移到Lambda部署体系结构如何降低托管成本——降低66%到95%之间——并讨论了进一步采用这一趋势可能如何影响通用软件体系结构设计实践。
{"title":"Serverless computing: economic and architectural impact","authors":"Gojko Adzic, Robert Chatley","doi":"10.1145/3106237.3117767","DOIUrl":"https://doi.org/10.1145/3106237.3117767","url":null,"abstract":"Amazon Web Services unveiled their \"Lambda\" platform in late 2014. Since then, each of the major cloud computing infrastructure providers has released services supporting a similar style of deployment and operation, where rather than deploying and running monolithic services, or dedicated virtual machines, users are able to deploy individual functions, and pay only for the time that their code is actually executing. These technologies are gathered together under the marketing term \"serverless\" and the providers suggest that they have the potential to significantly change how client/server applications are designed, developed and operated. This paper presents two case industrial studies of early adopters, showing how migrating an application to the Lambda deployment architecture reduced hosting costs - by between 66% and 95% - and discusses how further adoption of this trend might influence common software architecture design practices.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113957422","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}
引用次数: 139
Software engineering research results in industrial practice: a tale of two projects (invited talk) 工业实践中的软件工程研究成果:两个项目的故事(特邀演讲)
W. Emmerich
In this talk, I will discuss the use of software engineering research results in industrial practice, based on two projects I have been involved with. The first project addressed the challenge that manipulation of financial market data had to be expressed precisely for a large number of different financial markets. The challenge was addressed by defining a functional Domain Specific Language (DSL) that was geared towards expressing these manipulations at a high level of abstraction. An environment that implements the DSL was built using the Eclipse platform together with a compiler that generates a Java-based reference implementation of these manipulations. The implementation is used as a test oracle to generate test cases, which are in turn used to validate a soft real-time system that implements these manipulations. In another project that is still ongoing, I have proposed the use of software product line research to engineer a family of mobile banking applications. I will reflect on the experience of integrating software product line principles and modern Agile development practices. I will then discuss a few areas of software engineering research, that I have personally been involved in, that I have found not to be very useful in practice. I will conclude by outlining some topics where novel research results would be very beneficial from an industrial point of view.
在这次演讲中,我将以我参与的两个项目为基础,讨论软件工程研究成果在工业实践中的应用。第一个项目解决了对金融市场数据的操纵必须针对大量不同的金融市场进行精确表达这一挑战。通过定义一种功能性领域特定语言(Domain Specific Language, DSL)解决了这一挑战,该语言旨在在高层次抽象上表达这些操作。实现DSL的环境是使用Eclipse平台以及生成这些操作的基于java的参考实现的编译器构建的。实现被用作测试oracle来生成测试用例,这些用例反过来被用来验证实现这些操作的软实时系统。在另一个仍在进行的项目中,我建议使用软件产品线研究来设计一系列移动银行应用程序。我将反思集成软件产品线原则和现代敏捷开发实践的经验。然后我将讨论软件工程研究的几个领域,这些领域是我个人参与的,但我发现在实践中不是很有用。最后,我将概述一些主题,从工业的角度来看,新颖的研究成果将非常有益。
{"title":"Software engineering research results in industrial practice: a tale of two projects (invited talk)","authors":"W. Emmerich","doi":"10.1145/3106237.3121273","DOIUrl":"https://doi.org/10.1145/3106237.3121273","url":null,"abstract":"In this talk, I will discuss the use of software engineering research results in industrial practice, based on two projects I have been involved with. The first project addressed the challenge that manipulation of financial market data had to be expressed precisely for a large number of different financial markets. The challenge was addressed by defining a functional Domain Specific Language (DSL) that was geared towards expressing these manipulations at a high level of abstraction. An environment that implements the DSL was built using the Eclipse platform together with a compiler that generates a Java-based reference implementation of these manipulations. The implementation is used as a test oracle to generate test cases, which are in turn used to validate a soft real-time system that implements these manipulations. In another project that is still ongoing, I have proposed the use of software product line research to engineer a family of mobile banking applications. I will reflect on the experience of integrating software product line principles and modern Agile development practices. I will then discuss a few areas of software engineering research, that I have personally been involved in, that I have found not to be very useful in practice. I will conclude by outlining some topics where novel research results would be very beneficial from an industrial point of view.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130745748","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
Constraint normalization and parameterized caching for quantitative program analysis 定量程序分析的约束规范化和参数化缓存
Tegan Brennan, Nestan Tsiskaridze, Nicolás Rosner, Abdulbaki Aydin, T. Bultan
Symbolic program analysis techniques rely on satisfiability-checking constraint solvers, while quantitative program analysis techniques rely on model-counting constraint solvers. Hence, the efficiency of satisfiability checking and model counting is crucial for efficiency of modern program analysis techniques. In this paper, we present a constraint caching framework to expedite potentially expensive satisfiability and model-counting queries. Integral to this framework is our new constraint normalization procedure under which the cardinality of the solution set of a constraint, but not necessarily the solution set itself, is preserved. We extend these constraint normalization techniques to string constraints in order to support analysis of string-manipulating code. A group-theoretic framework which generalizes earlier results on constraint normalization is used to express our normalization techniques. We also present a parameterized caching approach where, in addition to storing the result of a model-counting query, we also store a model-counter object in the constraint store that allows us to efficiently recount the number of satisfying models for different maximum bounds. We implement our caching framework in our tool Cashew, which is built as an extension of the Green caching framework, and integrate it with the symbolic execution tool Symbolic PathFinder (SPF) and the model-counting constraint solver ABC. Our experiments show that constraint caching can significantly improve the performance of symbolic and quantitative program analyses. For instance, Cashew can normalize the 10,104 unique constraints in the SMC/Kaluza benchmark down to 394 normal forms, achieve a 10x speedup on the SMC/Kaluza-Big dataset, and an average 3x speedup in our SPF-based side-channel analysis experiments.
符号程序分析技术依赖于可满足性检查约束求解器,而定量程序分析技术依赖于模型计数约束求解器。因此,可满足性检查和模型计数的效率对现代程序分析技术的效率至关重要。在本文中,我们提出了一个约束缓存框架来加速潜在昂贵的可满足性和模型计数查询。这个框架的积分是我们新的约束归一化过程,在这个过程中,约束的解集的基数被保留,但不一定是解集本身。为了支持对字符串操作代码的分析,我们将这些约束规范化技术扩展到字符串约束。用一种群论框架概括了前人关于约束归一化的研究成果来表达我们的归一化技术。我们还提出了一种参数化的缓存方法,除了存储模型计数查询的结果外,我们还在约束存储中存储一个模型计数器对象,该对象允许我们有效地重新计算满足不同最大边界的模型的数量。我们在Cashew工具中实现了我们的缓存框架,Cashew是作为Green缓存框架的扩展而构建的,并将其与符号执行工具symbolic PathFinder (SPF)和模型计数约束求解器ABC集成在一起。我们的实验表明,约束缓存可以显著提高符号和定量程序分析的性能。例如,Cashew可以将SMC/Kaluza基准中的10,104个唯一约束规范化为394个正常形式,在SMC/Kaluza- big数据集上实现10倍的加速,在我们基于spf的侧信道分析实验中实现平均3倍的加速。
{"title":"Constraint normalization and parameterized caching for quantitative program analysis","authors":"Tegan Brennan, Nestan Tsiskaridze, Nicolás Rosner, Abdulbaki Aydin, T. Bultan","doi":"10.1145/3106237.3106303","DOIUrl":"https://doi.org/10.1145/3106237.3106303","url":null,"abstract":"Symbolic program analysis techniques rely on satisfiability-checking constraint solvers, while quantitative program analysis techniques rely on model-counting constraint solvers. Hence, the efficiency of satisfiability checking and model counting is crucial for efficiency of modern program analysis techniques. In this paper, we present a constraint caching framework to expedite potentially expensive satisfiability and model-counting queries. Integral to this framework is our new constraint normalization procedure under which the cardinality of the solution set of a constraint, but not necessarily the solution set itself, is preserved. We extend these constraint normalization techniques to string constraints in order to support analysis of string-manipulating code. A group-theoretic framework which generalizes earlier results on constraint normalization is used to express our normalization techniques. We also present a parameterized caching approach where, in addition to storing the result of a model-counting query, we also store a model-counter object in the constraint store that allows us to efficiently recount the number of satisfying models for different maximum bounds. We implement our caching framework in our tool Cashew, which is built as an extension of the Green caching framework, and integrate it with the symbolic execution tool Symbolic PathFinder (SPF) and the model-counting constraint solver ABC. Our experiments show that constraint caching can significantly improve the performance of symbolic and quantitative program analyses. For instance, Cashew can normalize the 10,104 unique constraints in the SMC/Kaluza benchmark down to 394 normal forms, achieve a 10x speedup on the SMC/Kaluza-Big dataset, and an average 3x speedup in our SPF-based side-channel analysis experiments.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"86 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128912420","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}
引用次数: 21
Discovering relational specifications 发现关系规范
Calvin Smith, G. Ferns, Aws Albarghouthi
Formal specifications of library functions play a critical role in a number of program analysis and development tasks. We present Bach, a technique for discovering likely relational specifications from data describing input-output behavior of a set of functions comprising a library or a program. Relational specifications correlate different executions of different functions; for instance, commutativity, transitivity, equivalence of two functions, etc. Bach combines novel insights from program synthesis and databases to discover a rich array of specifications. We apply Bach to learn specifications from data generated for a number of standard libraries. Our experimental evaluation demonstrates Bach's ability to learn useful and deep specifications in a small amount of time.
库功能的正式规范在许多程序分析和开发任务中起着关键作用。我们介绍了Bach,一种从描述包含库或程序的一组函数的输入-输出行为的数据中发现可能的关系规范的技术。关系规范将不同功能的不同执行联系起来;例如,交换性、及物性、两个函数的等价性等。巴赫结合了程序合成和数据库的新见解,发现了丰富的规格阵列。我们应用Bach从为许多标准库生成的数据中学习规范。我们的实验评估证明了巴赫在短时间内学习有用和深入规范的能力。
{"title":"Discovering relational specifications","authors":"Calvin Smith, G. Ferns, Aws Albarghouthi","doi":"10.1145/3106237.3106279","DOIUrl":"https://doi.org/10.1145/3106237.3106279","url":null,"abstract":"Formal specifications of library functions play a critical role in a number of program analysis and development tasks. We present Bach, a technique for discovering likely relational specifications from data describing input-output behavior of a set of functions comprising a library or a program. Relational specifications correlate different executions of different functions; for instance, commutativity, transitivity, equivalence of two functions, etc. Bach combines novel insights from program synthesis and databases to discover a rich array of specifications. We apply Bach to learn specifications from data generated for a number of standard libraries. Our experimental evaluation demonstrates Bach's ability to learn useful and deep specifications in a small amount of time.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115433704","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}
引用次数: 14
Automatically analyzing groups of crashes for finding correlations 自动分析崩溃组以查找相关性
M. Castelluccio, Carlo Sansone, L. Verdoliva, G. Poggi
We devised an algorithm, inspired by contrast-set mining algorithms such as STUCCO, to automatically find statistically significant properties (correlations) in crash groups. Many earlier works focused on improving the clustering of crashes but, to the best of our knowledge, the problem of automatically describing properties of a cluster of crashes is so far unexplored. This means developers currently spend a fair amount of time analyzing the groups themselves, which in turn means that a) they are not spending their time actually developing a fix for the crash; and b) they might miss something in their exploration of the crash data (there is a large number of attributes in crash reports and it is hard and error-prone to manually analyze everything). Our algorithm helps developers and release managers understand crash reports more easily and in an automated way, helping in pinpointing the root cause of the crash. The tool implementing the algorithm has been deployed on Mozilla's crash reporting service.
受对比集挖掘算法(如STUCCO)的启发,我们设计了一种算法,用于自动查找崩溃组中具有统计意义的属性(相关性)。许多早期的工作都集中在改进崩溃集群上,但据我们所知,自动描述崩溃集群属性的问题到目前为止还没有被探索过。这意味着开发人员目前花费了相当多的时间来分析组本身,这反过来意味着a)他们没有花时间真正开发崩溃的修复程序;b)他们在对崩溃数据的探索中可能会遗漏一些东西(崩溃报告中有大量的属性,手动分析所有的东西是很困难且容易出错的)。我们的算法帮助开发人员和发布管理人员更容易地以自动化的方式理解崩溃报告,帮助确定崩溃的根本原因。实现该算法的工具已经部署在Mozilla的崩溃报告服务上。
{"title":"Automatically analyzing groups of crashes for finding correlations","authors":"M. Castelluccio, Carlo Sansone, L. Verdoliva, G. Poggi","doi":"10.1145/3106237.3106306","DOIUrl":"https://doi.org/10.1145/3106237.3106306","url":null,"abstract":"We devised an algorithm, inspired by contrast-set mining algorithms such as STUCCO, to automatically find statistically significant properties (correlations) in crash groups. Many earlier works focused on improving the clustering of crashes but, to the best of our knowledge, the problem of automatically describing properties of a cluster of crashes is so far unexplored. This means developers currently spend a fair amount of time analyzing the groups themselves, which in turn means that a) they are not spending their time actually developing a fix for the crash; and b) they might miss something in their exploration of the crash data (there is a large number of attributes in crash reports and it is hard and error-prone to manually analyze everything). Our algorithm helps developers and release managers understand crash reports more easily and in an automated way, helping in pinpointing the root cause of the crash. The tool implementing the algorithm has been deployed on Mozilla's crash reporting service.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"208 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115750008","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
期刊
Proceedings of the 2017 11th Joint Meeting 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