首页 > 最新文献

ESEC/FSE '11最新文献

英文 中文
Semistructured merge: rethinking merge in revision control systems 半结构化合并:重新思考修订控制系统中的合并
Pub Date : 2011-09-09 DOI: 10.1145/2025113.2025141
S. Apel, Jörg Liebig, B. Brandl, C. Lengauer, Christian Kästner
An ongoing problem in revision control systems is how to resolve conflicts in a merge of independently developed revisions. Unstructured revision control systems are purely text-based and solve conflicts based on textual similarity. Structured revision control systems are tailored to specific languages and use language-specific knowledge for conflict resolution. We propose semistructured revision control systems that inherit the strengths of both: the generality of unstructured systems and the expressiveness of structured systems. The idea is to provide structural information of the underlying software artifacts --- declaratively, in the form of annotated grammars. This way, a wide variety of languages can be supported and the information provided can assist in the automatic resolution of two classes of conflicts: ordering conflicts and semantic conflicts. The former can be resolved independently of the language and the latter using specific conflict handlers. We have been developing a tool that supports semistructured merge and conducted an empirical study on 24 software projects developed in Java, C#, and Python comprising 180 merge scenarios. We found that semistructured merge reduces the number of conflicts in 60% of the sample merge scenarios by, on average, 34%, compared to unstructured merge. We found also that renaming is challenging in that it can increase the number of conflicts during semistructured merge, and that a combination of unstructured and semistructured merge is a pragmatic way to go.
版本控制系统中一直存在的一个问题是如何解决独立开发的版本合并中的冲突。非结构化版本控制系统是纯粹基于文本的,基于文本相似度来解决冲突。结构化的修订控制系统是针对特定语言量身定制的,并使用特定语言的知识来解决冲突。我们提出了半结构化的版本控制系统,它继承了两者的优点:非结构化系统的通用性和结构化系统的表现力。其思想是提供底层软件工件的结构信息——以声明的方式,以注释语法的形式。通过这种方式,可以支持各种各样的语言,所提供的信息可以帮助自动解决两类冲突:顺序冲突和语义冲突。前者可以独立于语言解决,后者可以使用特定的冲突处理程序。我们一直在开发一种支持半结构化合并的工具,并对24个用Java、c#和Python开发的软件项目进行了实证研究,其中包括180个合并场景。我们发现,与非结构化合并相比,半结构化合并在60%的示例合并场景中平均减少了34%的冲突数量。我们还发现,重命名具有挑战性,因为它会增加半结构化合并期间的冲突数量,而非结构化和半结构化合并的组合是一种实用的方法。
{"title":"Semistructured merge: rethinking merge in revision control systems","authors":"S. Apel, Jörg Liebig, B. Brandl, C. Lengauer, Christian Kästner","doi":"10.1145/2025113.2025141","DOIUrl":"https://doi.org/10.1145/2025113.2025141","url":null,"abstract":"An ongoing problem in revision control systems is how to resolve conflicts in a merge of independently developed revisions. Unstructured revision control systems are purely text-based and solve conflicts based on textual similarity. Structured revision control systems are tailored to specific languages and use language-specific knowledge for conflict resolution. We propose semistructured revision control systems that inherit the strengths of both: the generality of unstructured systems and the expressiveness of structured systems. The idea is to provide structural information of the underlying software artifacts --- declaratively, in the form of annotated grammars. This way, a wide variety of languages can be supported and the information provided can assist in the automatic resolution of two classes of conflicts: ordering conflicts and semantic conflicts. The former can be resolved independently of the language and the latter using specific conflict handlers. We have been developing a tool that supports semistructured merge and conducted an empirical study on 24 software projects developed in Java, C#, and Python comprising 180 merge scenarios. We found that semistructured merge reduces the number of conflicts in 60% of the sample merge scenarios by, on average, 34%, compared to unstructured merge. We found also that renaming is challenging in that it can increase the number of conflicts during semistructured merge, and that a combination of unstructured and semistructured merge is a pragmatic way to go.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117132751","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}
引用次数: 112
The 4th international workshop on social software engineering (SSE'11) 第四届社会软件工程国际研讨会(SSE'11)
Pub Date : 2011-09-09 DOI: 10.1145/2025113.2025211
W. Maalej, Raian Ali
Software is created by people and for people. People are heterogeneous in their beliefs, backgrounds, and preferences. Accommodating and exploiting the social variety is crucial for successful engineering and usage of software. On the one hand, software engineering is a social activity, performed by different individuals and teams. This necessitates methodologies and tools to deal with issues such as communication, coordination, knowledge sharing, compensation, and reconciliation. On the other hand, Social Software (Internet Forums, Wikis, Social Networks, Blogs, etc.) is an expanding computing paradigm, which inherently incorporates intensive social interactions and implications. Engineering Social Software magnifies a spectrum of challenges like group requirements engineering, social-awareness, privacy, security, and trust. Both directions -- engineering Social Software and treating software engineering as a social activity -- require competency from other disciplines as diverse as psychology, sociology, and organizational science. While both directions receive considerable attention, research in both fields is fragmented, uncoordinated, and partially redundant. The goal of this workshop is to confluence the research on social aspects in software engineering and engineering of Social software into a new field of Social Software Engineering (SSE).
软件是由人创造的,也是为人服务的。人们的信仰、背景和偏好都是不同的。适应和利用社会多样性对于软件的成功工程和使用至关重要。一方面,软件工程是一项社会活动,由不同的个人和团队执行。这就需要方法和工具来处理诸如沟通、协调、知识共享、补偿和协调等问题。另一方面,社交软件(互联网论坛、维基、社交网络、博客等)是一种扩展的计算范式,它本质上包含了密集的社交互动和影响。工程社交软件放大了一系列挑战,比如群体需求工程、社会意识、隐私、安全和信任。这两个方向——工程社会软件和将软件工程视为社会活动——都需要来自其他学科的能力,如心理学、社会学和组织科学。虽然这两个方向都得到了相当大的关注,但这两个领域的研究都是零散的、不协调的,而且部分是多余的。本次研讨会的目标是将软件工程和社会软件工程的社会方面的研究融合到社会软件工程(SSE)的一个新领域。
{"title":"The 4th international workshop on social software engineering (SSE'11)","authors":"W. Maalej, Raian Ali","doi":"10.1145/2025113.2025211","DOIUrl":"https://doi.org/10.1145/2025113.2025211","url":null,"abstract":"Software is created by people and for people. People are heterogeneous in their beliefs, backgrounds, and preferences. Accommodating and exploiting the social variety is crucial for successful engineering and usage of software. On the one hand, software engineering is a social activity, performed by different individuals and teams. This necessitates methodologies and tools to deal with issues such as communication, coordination, knowledge sharing, compensation, and reconciliation. On the other hand, Social Software (Internet Forums, Wikis, Social Networks, Blogs, etc.) is an expanding computing paradigm, which inherently incorporates intensive social interactions and implications. Engineering Social Software magnifies a spectrum of challenges like group requirements engineering, social-awareness, privacy, security, and trust.\u0000 Both directions -- engineering Social Software and treating software engineering as a social activity -- require competency from other disciplines as diverse as psychology, sociology, and organizational science. While both directions receive considerable attention, research in both fields is fragmented, uncoordinated, and partially redundant. The goal of this workshop is to confluence the research on social aspects in software engineering and engineering of Social software into a new field of Social Software Engineering (SSE).","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"101 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-09","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127990237","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
jStar-eclipse: an IDE for automated verification of Java programs jStar-eclipse:用于自动验证Java程序的IDE
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025182
Daiva Naudziuniene, M. Botincan, Dino Distefano, Mike Dodds, Radu Grigore, Matthew J. Parkinson
jStar is a tool for automatically verifying Java programs. It uses separation logic to support abstract reasoning about object specifications. jStar can verify a number of challenging design patterns, including Subject/Observer, Visitor, Factory and Pooling. However, to use jStar one has to deal with a family of command-line tools that expect specifications in separate files and diagnose the errors by inspecting the text output from these tools. In this paper we present a plug-in, called jStar-eclipse, allowing programmers to use jStar from within Eclipse IDE. Our plug-in allows writing method contracts in Java source files in form of Java annotations. It automatically translates Java annotations into jStar specifications and propagates errors reported by jStar back to Eclipse, pinpointing the errors to the locations in source files. This way the plug-in ensures an overall better user experience when working with jStar. Our end goal is to make automated verification based on separation logic accessible to a broader audience.
jStar是一个自动校验Java程序的工具。它使用分离逻辑来支持对象规范的抽象推理。jStar可以验证许多具有挑战性的设计模式,包括Subject/Observer、Visitor、Factory和Pooling。然而,要使用jStar,必须处理一系列命令行工具,这些工具期望在单独的文件中看到规范,并通过检查这些工具的文本输出来诊断错误。在本文中,我们提供了一个名为jStar- Eclipse的插件,它允许程序员在Eclipse IDE中使用jStar。我们的插件允许在Java源文件中以Java注释的形式编写方法契约。它会自动将Java注释转换为jStar规范,并将jStar报告的错误传播回Eclipse,将错误精确定位到源文件中的位置。通过这种方式,插件可以确保在使用jStar时获得更好的用户体验。我们的最终目标是为更广泛的受众提供基于分离逻辑的自动验证。
{"title":"jStar-eclipse: an IDE for automated verification of Java programs","authors":"Daiva Naudziuniene, M. Botincan, Dino Distefano, Mike Dodds, Radu Grigore, Matthew J. Parkinson","doi":"10.1145/2025113.2025182","DOIUrl":"https://doi.org/10.1145/2025113.2025182","url":null,"abstract":"jStar is a tool for automatically verifying Java programs. It uses separation logic to support abstract reasoning about object specifications. jStar can verify a number of challenging design patterns, including Subject/Observer, Visitor, Factory and Pooling. However, to use jStar one has to deal with a family of command-line tools that expect specifications in separate files and diagnose the errors by inspecting the text output from these tools.\u0000 In this paper we present a plug-in, called jStar-eclipse, allowing programmers to use jStar from within Eclipse IDE. Our plug-in allows writing method contracts in Java source files in form of Java annotations. It automatically translates Java annotations into jStar specifications and propagates errors reported by jStar back to Eclipse, pinpointing the errors to the locations in source files. This way the plug-in ensures an overall better user experience when working with jStar. Our end goal is to make automated verification based on separation logic accessible to a broader audience.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115242451","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
EAGLE: engineering software in the ubiquitous globe by leveraging uncErtainty EAGLE:利用不确定性在无处不在的全球范围内开发工程软件
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025199
M. Autili, V. Cortellessa, D. D. Ruscio, P. Inverardi, Patrizio Pelliccione, Massimo Tivoli
In the next future we will be surrounded by a virtually infinite number of software applications that provide computational software resources in the open Globe. This will radically change the way software will be produced and used. Users will be keen on producing their own piece of software, by also reusing existing software, to better satisfy their needs, therefore with a goal oriented, opportunistic use in mind. The produced software will need to be able to evolve, react and adapt to a continuously changing environment, while guaranteeing dependability. The strongest adversary to this view is the lack of knowledge on the software's structure, behavior, and execution context. Despite the possibility to extract observational models from existing software, a producer will always operate with software artifacts that exhibit a degree of uncertainty in terms of their functional and non functional characteristics. We believe that uncertainty can only be controlled by making it explicit and by using it to drive the production process itself. In this paper, we introduce a novel paradigm of software production process that explores available software and assesses its degree of uncertainty in relation to the opportunistic goal G, assists the producer in creating the appropriate integration means towards G, and validates the quality of the integrated system with respect to G and the current context.
在下一个未来,我们将被几乎无限数量的软件应用程序包围,这些软件应用程序在开放的地球上提供计算软件资源。这将从根本上改变软件的生产和使用方式。用户将热衷于通过重用现有的软件来生产他们自己的软件,从而更好地满足他们的需求,因此在头脑中有一个目标导向的、机会主义的使用。生产出来的软件需要能够进化、反应和适应不断变化的环境,同时保证可靠性。这种观点的最大对手是缺乏对软件结构、行为和执行环境的了解。尽管有可能从现有的软件中提取观测模型,但生产者将始终使用在功能和非功能特征方面表现出一定程度的不确定性的软件工件。我们相信,只有将不确定性明确化,并利用它来驱动生产过程本身,才能控制不确定性。在本文中,我们介绍了一种软件生产过程的新范式,它探索可用的软件,并评估其与机会目标G相关的不确定性程度,帮助生产者创建实现G的适当集成手段,并根据G和当前环境验证集成系统的质量。
{"title":"EAGLE: engineering software in the ubiquitous globe by leveraging uncErtainty","authors":"M. Autili, V. Cortellessa, D. D. Ruscio, P. Inverardi, Patrizio Pelliccione, Massimo Tivoli","doi":"10.1145/2025113.2025199","DOIUrl":"https://doi.org/10.1145/2025113.2025199","url":null,"abstract":"In the next future we will be surrounded by a virtually infinite number of software applications that provide computational software resources in the open Globe. This will radically change the way software will be produced and used. Users will be keen on producing their own piece of software, by also reusing existing software, to better satisfy their needs, therefore with a goal oriented, opportunistic use in mind. The produced software will need to be able to evolve, react and adapt to a continuously changing environment, while guaranteeing dependability. The strongest adversary to this view is the lack of knowledge on the software's structure, behavior, and execution context. Despite the possibility to extract observational models from existing software, a producer will always operate with software artifacts that exhibit a degree of uncertainty in terms of their functional and non functional characteristics. We believe that uncertainty can only be controlled by making it explicit and by using it to drive the production process itself. In this paper, we introduce a novel paradigm of software production process that explores available software and assesses its degree of uncertainty in relation to the opportunistic goal G, assists the producer in creating the appropriate integration means towards G, and validates the quality of the integrated system with respect to G and the current context.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129564762","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}
引用次数: 23
Fault localization for data-centric programs 以数据为中心的程序的故障定位
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025137
Diptikalyan Saha, M. Nanda, P. Dhoolia, V. K. Nandivada, Vibha Sinha, S. Chandra
In this paper we present an automated technique for localizing faults in data-centric programs. Data-centric programs primarily interact with databases to get collections of content, process each entry in the collection(s), and output another collection or write it back to the database. One or more entries in the output may be faulty. In our approach, we gather the execution trace of a faulty program. We use a novel, precise slicing algorithm to break the trace into multiple slices, such that each slice maps to an entry in the output collection. We then compute the semantic difference between the slices that correspond to correct entries and those that correspond to incorrect ones. The "diff" helps to identify potentially faulty statements. We have implemented our approach for ABAP programs. ABAP is the language used to write custom code in SAP systems. It interacts heavily with databases using embedded SQL-like commands that work on collections of data. On a suite of 13 faulty ABAP programs, our technique was able to identify the precise fault location in 12 cases.
本文提出了一种在以数据为中心的程序中自动定位故障的技术。以数据为中心的程序主要与数据库交互以获取内容集合,处理集合中的每个条目,并输出另一个集合或将其写回数据库。输出中的一个或多个条目可能出现错误。在我们的方法中,我们收集错误程序的执行轨迹。我们使用一种新颖、精确的切片算法将跟踪分解为多个切片,这样每个切片就映射到输出集合中的一个条目。然后我们计算对应于正确条目的切片和对应于不正确条目的切片之间的语义差异。“diff”有助于识别潜在的错误语句。我们已经为ABAP程序实现了我们的方法。ABAP是用于在SAP系统中编写自定义代码的语言。它使用处理数据集合的嵌入式类似sql的命令与数据库进行大量交互。在一套包含13个故障的ABAP程序中,我们的技术能够准确地识别出12个案例中的故障位置。
{"title":"Fault localization for data-centric programs","authors":"Diptikalyan Saha, M. Nanda, P. Dhoolia, V. K. Nandivada, Vibha Sinha, S. Chandra","doi":"10.1145/2025113.2025137","DOIUrl":"https://doi.org/10.1145/2025113.2025137","url":null,"abstract":"In this paper we present an automated technique for localizing faults in data-centric programs. Data-centric programs primarily interact with databases to get collections of content, process each entry in the collection(s), and output another collection or write it back to the database. One or more entries in the output may be faulty. In our approach, we gather the execution trace of a faulty program. We use a novel, precise slicing algorithm to break the trace into multiple slices, such that each slice maps to an entry in the output collection. We then compute the semantic difference between the slices that correspond to correct entries and those that correspond to incorrect ones. The \"diff\" helps to identify potentially faulty statements.\u0000 We have implemented our approach for ABAP programs. ABAP is the language used to write custom code in SAP systems. It interacts heavily with databases using embedded SQL-like commands that work on collections of data. On a suite of 13 faulty ABAP programs, our technique was able to identify the precise fault location in 12 cases.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129617058","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}
引用次数: 31
Proactive detection of collaboration conflicts 主动检测协作冲突
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025139
Yuriy Brun, Reid Holmes, Michael D. Ernst, D. Notkin
Collaborative development can be hampered when conflicts arise because developers have inconsistent copies of a shared project. We present an approach to help developers identify and resolve conflicts early, before those conflicts become severe and before relevant changes fade away in the developers' memories. This paper presents three results. First, a study of open-source systems establishes that conflicts are frequent, persistent, and appear not only as overlapping textual edits but also as subsequent build and test failures. The study spans nine open-source systems totaling 3.4 million lines of code; our conflict data is derived from 550,000 development versions of the systems. Second, using previously-unexploited information, we precisely diagnose important classes of conflicts using the novel technique of speculative analysis over version control operations. Third, we describe the design of Crystal, a publicly-available tool that uses speculative analysis to make concrete advice unobtrusively available to developers, helping them identify, manage, and prevent conflicts.
当由于开发人员拥有共享项目的不一致副本而产生冲突时,协作开发可能会受到阻碍。我们提出了一种方法,帮助开发人员在冲突变得严重之前,在相关的更改从开发人员的记忆中消失之前,尽早识别和解决冲突。本文给出了三个结果。首先,对开源系统的研究表明,冲突是频繁的、持久的,不仅表现为重叠的文本编辑,而且还表现为随后的构建和测试失败。这项研究涵盖了9个开源系统,总计340万行代码;我们的冲突数据来源于系统的55万个开发版本。其次,使用以前未开发的信息,我们使用版本控制操作的推测分析的新技术精确地诊断重要的冲突类别。第三,我们描述Crystal的设计,Crystal是一个公开可用的工具,它使用推测性分析为开发人员提供不显眼的具体建议,帮助他们识别、管理和防止冲突。
{"title":"Proactive detection of collaboration conflicts","authors":"Yuriy Brun, Reid Holmes, Michael D. Ernst, D. Notkin","doi":"10.1145/2025113.2025139","DOIUrl":"https://doi.org/10.1145/2025113.2025139","url":null,"abstract":"Collaborative development can be hampered when conflicts arise because developers have inconsistent copies of a shared project. We present an approach to help developers identify and resolve conflicts early, before those conflicts become severe and before relevant changes fade away in the developers' memories. This paper presents three results.\u0000 First, a study of open-source systems establishes that conflicts are frequent, persistent, and appear not only as overlapping textual edits but also as subsequent build and test failures. The study spans nine open-source systems totaling 3.4 million lines of code; our conflict data is derived from 550,000 development versions of the systems.\u0000 Second, using previously-unexploited information, we precisely diagnose important classes of conflicts using the novel technique of speculative analysis over version control operations.\u0000 Third, we describe the design of Crystal, a publicly-available tool that uses speculative analysis to make concrete advice unobtrusively available to developers, helping them identify, manage, and prevent conflicts.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116267868","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}
引用次数: 227
Understanding failures through facts 通过事实理解失败
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025174
Jeremias Rößler
Why does my program crash?"--This ever recurring question of software debugging drives the developer during the analysis of the failure. Complex defects are impossible to automatically identify; this can only be left to human judgment. But what we can do is empower the developer to make an informed decision, by helping her understand the failure. To fully comprehend a failure, one may need to consider many different aspects such as the range of the input parameters and the program's structure and runtime behavior. I propose an approach that gathers a variety of such facts from a given failing execution. To examine the correlation of those facts to the failure, it produces additional executions that differ in as few facts as possible. Then the approach creates generalizations and abstractions over the correlating facts. These explain different aspects of the failure and thus help the developer understand and eventually fix the underlying defect.
为什么我的程序崩溃了?——这个反复出现的软件调试问题驱使着开发人员分析故障。复杂的缺陷是不可能自动识别的;这只能由人来判断。但我们能做的是,通过帮助开发者理解失败,让他们做出明智的决定。要完全理解失败,可能需要考虑许多不同的方面,例如输入参数的范围、程序的结构和运行时行为。我提出一种方法,从一次失败的执行中收集各种这样的事实。为了检查这些事实与失败的相关性,它会生成在尽可能少的事实中存在差异的额外执行。然后,该方法对相关事实进行概括和抽象。这些解释了失败的不同方面,从而帮助开发人员理解并最终修复潜在的缺陷。
{"title":"Understanding failures through facts","authors":"Jeremias Rößler","doi":"10.1145/2025113.2025174","DOIUrl":"https://doi.org/10.1145/2025113.2025174","url":null,"abstract":"Why does my program crash?\"--This ever recurring question of software debugging drives the developer during the analysis of the failure. Complex defects are impossible to automatically identify; this can only be left to human judgment. But what we can do is empower the developer to make an informed decision, by helping her understand the failure. To fully comprehend a failure, one may need to consider many different aspects such as the range of the input parameters and the program's structure and runtime behavior. I propose an approach that gathers a variety of such facts from a given failing execution. To examine the correlation of those facts to the failure, it produces additional executions that differ in as few facts as possible. Then the approach creates generalizations and abstractions over the correlating facts. These explain different aspects of the failure and thus help the developer understand and eventually fix the underlying defect.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125731675","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
Experimental specification mining for enterprise applications 用于企业应用的实验性规范挖掘
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025169
M. Schur
Specification mining infers abstractions over a set of program execution traces. Whereas inductive approaches to specification mining rely on a given set of execution traces, experimental approaches systematically generate and execute test cases to infer rich models including uncommon and exceptional behavior. State-of-the-art experimental mining approaches infer low-level models representing the behavior of single classes. This paper proposes an approach for inferring models of built-in processes in enterprise systems based on systematic scenario test generation. The paper motivates the approach, sketches the relevant concepts and challenges, and discusses related work.
规范挖掘通过一组程序执行跟踪推断抽象。虽然规范挖掘的归纳方法依赖于一组给定的执行轨迹,但实验方法系统地生成并执行测试用例来推断包括不常见和异常行为的丰富模型。最先进的实验挖掘方法推断表示单个类行为的低级模型。提出了一种基于系统场景测试生成的企业系统内建过程模型推断方法。本文对该方法进行了激励,概述了相关概念和挑战,并对相关工作进行了讨论。
{"title":"Experimental specification mining for enterprise applications","authors":"M. Schur","doi":"10.1145/2025113.2025169","DOIUrl":"https://doi.org/10.1145/2025113.2025169","url":null,"abstract":"Specification mining infers abstractions over a set of program execution traces. Whereas inductive approaches to specification mining rely on a given set of execution traces, experimental approaches systematically generate and execute test cases to infer rich models including uncommon and exceptional behavior. State-of-the-art experimental mining approaches infer low-level models representing the behavior of single classes. This paper proposes an approach for inferring models of built-in processes in enterprise systems based on systematic scenario test generation. The paper motivates the approach, sketches the relevant concepts and challenges, and discusses related work.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121739773","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
Managing performance vs. accuracy trade-offs with loop perforation 通过循环穿孔管理性能与精度之间的权衡
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025133
Stelios Sidiroglou, Sasa Misailovic, H. Hoffmann, M. Rinard
Many modern computations (such as video and audio encoders, Monte Carlo simulations, and machine learning algorithms) are designed to trade off accuracy in return for increased performance. To date, such computations typically use ad-hoc, domain-specific techniques developed specifically for the computation at hand. Loop perforation provides a general technique to trade accuracy for performance by transforming loops to execute a subset of their iterations. A criticality testing phase filters out critical loops (whose perforation produces unacceptable behavior) to identify tunable loops (whose perforation produces more efficient and still acceptably accurate computations). A perforation space exploration algorithm perforates combinations of tunable loops to find Pareto-optimal perforation policies. Our results indicate that, for a range of applications, this approach typically delivers performance increases of over a factor of two (and up to a factor of seven) while changing the result that the application produces by less than 10%.
许多现代计算(如视频和音频编码器、蒙特卡罗模拟和机器学习算法)的设计都是为了牺牲精度以换取更高的性能。迄今为止,此类计算通常使用专门为手头的计算开发的特定于领域的临时技术。循环穿孔提供了一种通用技术,通过转换循环来执行其迭代的子集,从而以准确性换取性能。临界测试阶段过滤掉临界循环(其穿孔产生不可接受的行为),以识别可调循环(其穿孔产生更高效且仍可接受的精确计算)。穿孔空间探索算法通过可调回路的穿孔组合来寻找帕累托最优穿孔策略。我们的结果表明,对于一系列应用程序,这种方法通常会将性能提高两倍以上(最高可达七倍),而对应用程序产生的结果的改变不到10%。
{"title":"Managing performance vs. accuracy trade-offs with loop perforation","authors":"Stelios Sidiroglou, Sasa Misailovic, H. Hoffmann, M. Rinard","doi":"10.1145/2025113.2025133","DOIUrl":"https://doi.org/10.1145/2025113.2025133","url":null,"abstract":"Many modern computations (such as video and audio encoders, Monte Carlo simulations, and machine learning algorithms) are designed to trade off accuracy in return for increased performance. To date, such computations typically use ad-hoc, domain-specific techniques developed specifically for the computation at hand. Loop perforation provides a general technique to trade accuracy for performance by transforming loops to execute a subset of their iterations. A criticality testing phase filters out critical loops (whose perforation produces unacceptable behavior) to identify tunable loops (whose perforation produces more efficient and still acceptably accurate computations). A perforation space exploration algorithm perforates combinations of tunable loops to find Pareto-optimal perforation policies. Our results indicate that, for a range of applications, this approach typically delivers performance increases of over a factor of two (and up to a factor of seven) while changing the result that the application produces by less than 10%.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115784583","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}
引用次数: 500
Stateful breakpoints: a practical approach to defining parameterized runtime monitors 有状态断点:定义参数化运行时监视器的实用方法
Pub Date : 2011-09-05 DOI: 10.1145/2025113.2025201
E. Bodden
A runtime monitor checks a safety property during a program's execution. A parameterized runtime monitor can monitor properties containing free variables, or parameters. For instance, a monitor for the regular expression "close(s)+ read(s)" will warn the user when reading from a stream s that has previously been closed. Parameterized runtime monitors are very expressive, and research on this topic has lately gained much traction in the Runtime Verification community. Existing monitoring algorithms are very efficient. Nevertheless, existing tools provide little support for actually defining runtime monitors, probably one reason for why few practitioners are using runtime monitoring so far. In this work we propose the idea of allowing programmers to express parameterized runtime monitors through stateful breakpoints, temporal combinations of normal breakpoints, a concept well known to programmers. We show how we envision programmers to define runtime monitors through stateful breakpoints and parameter bindings through breakpoint expressions. Further, we explain how stateful break- points improve the debugging experience: they are more expressive than normal breakpoints, nevertheless can be evaluated more efficiently. Stateful breakpoints can be attached to bug reports for easy reproducibility: they often allow developers to run directly to the bug in one single step. Further, stateful breakpoints can potentially be inferred from a running debugging session or using property inference and fault localization tools.
运行时监视器在程序执行期间检查安全属性。参数化的运行时监视器可以监视包含自由变量或参数的属性。例如,正则表达式“close(s)+ read(s)”的监视器将在从先前已关闭的流中读取时警告用户。参数化的运行时监视器非常具有表现力,最近在运行时验证社区中对这一主题的研究得到了很大的关注。现有的监测算法非常有效。然而,现有的工具对实际定义运行时监视器提供的支持很少,这可能是迄今为止很少有从业者使用运行时监视的原因之一。在这项工作中,我们提出了允许程序员通过有状态断点(正常断点的临时组合)表达参数化运行时监视器的想法,这是程序员所熟知的概念。我们将展示我们设想程序员如何通过有状态断点定义运行时监视器,并通过断点表达式定义参数绑定。此外,我们解释了有状态断点如何改善调试体验:它们比普通断点更具表现力,但可以更有效地评估。有状态断点可以附加到bug报告中,以便于重现性:它们通常允许开发人员在一个步骤中直接运行到bug。此外,可以从正在运行的调试会话或使用属性推断和故障定位工具推断出有状态的断点。
{"title":"Stateful breakpoints: a practical approach to defining parameterized runtime monitors","authors":"E. Bodden","doi":"10.1145/2025113.2025201","DOIUrl":"https://doi.org/10.1145/2025113.2025201","url":null,"abstract":"A runtime monitor checks a safety property during a program's execution. A parameterized runtime monitor can monitor properties containing free variables, or parameters. For instance, a monitor for the regular expression \"close(s)+ read(s)\" will warn the user when reading from a stream s that has previously been closed. Parameterized runtime monitors are very expressive, and research on this topic has lately gained much traction in the Runtime Verification community. Existing monitoring algorithms are very efficient. Nevertheless, existing tools provide little support for actually defining runtime monitors, probably one reason for why few practitioners are using runtime monitoring so far.\u0000 In this work we propose the idea of allowing programmers to express parameterized runtime monitors through stateful breakpoints, temporal combinations of normal breakpoints, a concept well known to programmers. We show how we envision programmers to define runtime monitors through stateful breakpoints and parameter bindings through breakpoint expressions. Further, we explain how stateful break- points improve the debugging experience: they are more expressive than normal breakpoints, nevertheless can be evaluated more efficiently. Stateful breakpoints can be attached to bug reports for easy reproducibility: they often allow developers to run directly to the bug in one single step. Further, stateful breakpoints can potentially be inferred from a running debugging session or using property inference and fault localization tools.","PeriodicalId":184518,"journal":{"name":"ESEC/FSE '11","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2011-09-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133861805","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}
引用次数: 13
期刊
ESEC/FSE '11
全部 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