首页 > 最新文献

Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering最新文献

英文 中文
Sketches and diagrams in practice 实践中的草图和图表
Sebastian Baltes, S. Diehl
Sketches and diagrams play an important role in the daily work of software developers. In this paper, we investigate the use of sketches and diagrams in software engineering practice. To this end, we used both quantitative and qualitative methods. We present the results of an exploratory study in three companies and an online survey with 394 participants. Our participants included software developers, software architects, project managers, consultants, as well as researchers. They worked in different countries and on projects from a wide range of application areas. Most questions in the survey were related to the last sketch or diagram that the participants had created. Contrary to our expectations and previous work, the majority of sketches and diagrams contained at least some UML elements. However, most of them were informal. The most common purposes for creating sketches and diagrams were designing, explaining, and understanding, but analyzing requirements was also named often. More than half of the sketches and diagrams were created on analog media like paper or whiteboards and have been revised after creation. Most of them were used for more than a week and were archived. We found that the majority of participants related their sketches to methods, classes, or packages, but not to source code artifacts with a lower level of abstraction.
草图和图表在软件开发人员的日常工作中扮演着重要的角色。在本文中,我们研究了草图和图表在软件工程实践中的应用。为此,我们采用了定量和定性相结合的方法。我们介绍了对三家公司的探索性研究和对394名参与者的在线调查的结果。我们的参与者包括软件开发人员、软件架构师、项目经理、顾问以及研究人员。他们在不同的国家工作,从事的项目涉及广泛的应用领域。调查中的大多数问题都与参与者绘制的最后一张草图或图表有关。与我们的期望和以前的工作相反,大多数草图和图至少包含一些UML元素。然而,大多数会议都是非正式的。创建草图和图表最常见的目的是设计、解释和理解,但是分析需求也经常被提及。超过一半的草图和图表是在纸或白板等模拟媒体上创建的,并在创建后进行了修改。其中大多数使用时间超过一周,并被存档。我们发现大多数参与者将他们的草图与方法、类或包联系起来,而不是与具有较低抽象层次的源代码工件联系起来。
{"title":"Sketches and diagrams in practice","authors":"Sebastian Baltes, S. Diehl","doi":"10.1145/2635868.2635891","DOIUrl":"https://doi.org/10.1145/2635868.2635891","url":null,"abstract":"Sketches and diagrams play an important role in the daily work of software developers. In this paper, we investigate the use of sketches and diagrams in software engineering practice. To this end, we used both quantitative and qualitative methods. We present the results of an exploratory study in three companies and an online survey with 394 participants. Our participants included software developers, software architects, project managers, consultants, as well as researchers. They worked in different countries and on projects from a wide range of application areas. Most questions in the survey were related to the last sketch or diagram that the participants had created. Contrary to our expectations and previous work, the majority of sketches and diagrams contained at least some UML elements. However, most of them were informal. The most common purposes for creating sketches and diagrams were designing, explaining, and understanding, but analyzing requirements was also named often. More than half of the sketches and diagrams were created on analog media like paper or whiteboards and have been revised after creation. Most of them were used for more than a week and were archived. We found that the majority of participants related their sketches to methods, classes, or packages, but not to source code artifacts with a lower level of abstraction.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129982437","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}
引用次数: 62
Retrofitting concurrency for Android applications through refactoring 通过重构改进Android应用程序的并发性
Yu Lin, Cosmin Radoi, Danny Dig
Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can severely degrade responsiveness. Despite the fact that Android supports writing concurrent code via AsyncTask, we know little about how developers use AsyncTask to improve responsiveness. To understand how AsyncTask is used/underused/misused in practice, we rst conduct a formative study using a corpus of top 104 most popular open-source Android apps comprising 1.34M SLOC. Our study shows that even though half of the apps use AsyncTask, there are hundreds of places where they missed opportunities to encapsulate long-running operations in AsyncTask. Second, 46% of the usages are manually refactored. However, the refactored code contains concurrency bugs (such as data races) and performance bugs (concurrent code still executes sequentially). Inspired by these ndings, we designed, developed, and evaluated Asynchronizer, an automated refactoring tool that enables developers to extract long-running operations into AsyncTask. Asynchronizer uses a points-to static analysis to determine the safety of the transformation. Our empirical evaluation shows that Asynchronizer is (i) highly applicable, (ii) accurate, (iii) safer than manual refactoring (iv) it saves development eort, (v) its results have been accepted by the open-source developers. This shows that Asynchronizer is useful.
在智能手机应用程序的UI事件线程中运行计算密集型或阻塞I/O操作会严重降低响应性。尽管Android支持通过AsyncTask编写并发代码,但我们对开发者如何使用AsyncTask来提高响应能力知之甚少。为了了解AsyncTask在实践中是如何使用/未充分使用/滥用的,我们首先使用包含1.34M SLOC的104个最受欢迎的开源Android应用程序的语料库进行形成性研究。我们的研究表明,即使有一半的应用程序使用AsyncTask,也有数百个地方错过了在AsyncTask中封装长时间运行的操作的机会。其次,46%的使用是手工重构的。然而,重构后的代码包含并发错误(比如数据竞争)和性能错误(并发代码仍然按顺序执行)。受这些发现的启发,我们设计、开发并评估了Asynchronizer,这是一个自动化重构工具,使开发人员能够将长时间运行的操作提取到AsyncTask中。异步器使用点到静态分析来确定转换的安全性。我们的经验评估表明,Asynchronizer (i)高度适用,(ii)准确,(iii)比手动重构更安全,(iv)节省开发报告,(v)其结果已被开源开发人员接受。这表明Asynchronizer是有用的。
{"title":"Retrofitting concurrency for Android applications through refactoring","authors":"Yu Lin, Cosmin Radoi, Danny Dig","doi":"10.1145/2635868.2635903","DOIUrl":"https://doi.org/10.1145/2635868.2635903","url":null,"abstract":"Running compute-intensive or blocking I/O operations in the UI event thread of smartphone apps can severely degrade responsiveness. Despite the fact that Android supports writing concurrent code via AsyncTask, we know little about how developers use AsyncTask to improve responsiveness. To understand how AsyncTask is used/underused/misused in practice, we rst conduct a formative study using a corpus of top 104 most popular open-source Android apps comprising 1.34M SLOC. Our study shows that even though half of the apps use AsyncTask, there are hundreds of places where they missed opportunities to encapsulate long-running operations in AsyncTask. Second, 46% of the usages are manually refactored. However, the refactored code contains concurrency bugs (such as data races) and performance bugs (concurrent code still executes sequentially). Inspired by these ndings, we designed, developed, and evaluated Asynchronizer, an automated refactoring tool that enables developers to extract long-running operations into AsyncTask. Asynchronizer uses a points-to static analysis to determine the safety of the transformation. Our empirical evaluation shows that Asynchronizer is (i) highly applicable, (ii) accurate, (iii) safer than manual refactoring (iv) it saves development eort, (v) its results have been accepted by the open-source developers. This shows that Asynchronizer is useful.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126940228","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}
引用次数: 80
A variability perspective of mutation analysis 突变分析的变异性视角
Xavier Devroey, Gilles Perrouin, Maxime Cordy, Mike Papadakis, Axel Legay, Pierre-Yves Schobbens
Mutation testing is an effective technique for either improving or generating fault-finding test suites. It creates defective or incorrect program artifacts of the program under test and evaluates the ability of test suites to reveal them. Despite being effective, mutation is costly since it requires assessing the test cases with a large number of defective artifacts. Even worse, some of these artifacts are behaviourally ``equivalent'' to the original one and hence, they unnecessarily increase the testing effort. We adopt a variability perspective on mutation analysis. We model a defective artifact as a transition system with a specific feature selected and consider it as a member of a mutant family. The mutant family is encoded as a Featured Transition System, a compact formalism initially dedicated to model-checking of software product lines. We show how to evaluate a test suite against the set of all candidate defects by using mutant families. We can evaluate all the considered defects at the same time and isolate some equivalent mutants. We can also assist the test generation process and efficiently consider higher-order mutants.
突变测试是一种改进或生成故障查找测试套件的有效技术。它创建被测程序的有缺陷或不正确的程序工件,并评估测试套件显示它们的能力。尽管突变是有效的,但是代价很高,因为它需要用大量有缺陷的工件来评估测试用例。更糟糕的是,这些工件中的一些在行为上与原始工件“等同”,因此,它们不必要地增加了测试工作。我们采用变异的角度来分析突变。我们将有缺陷的工件建模为具有特定特征的过渡系统,并将其视为突变家族的成员。突变家族被编码为一个特征转换系统,一个紧凑的形式主义,最初致力于软件产品线的模型检查。我们展示了如何通过使用突变家族来针对所有候选缺陷集评估测试套件。我们可以同时评估所有考虑的缺陷,并分离出一些等效的突变体。我们还可以辅助测试生成过程,并有效地考虑高阶突变体。
{"title":"A variability perspective of mutation analysis","authors":"Xavier Devroey, Gilles Perrouin, Maxime Cordy, Mike Papadakis, Axel Legay, Pierre-Yves Schobbens","doi":"10.1145/2635868.2666610","DOIUrl":"https://doi.org/10.1145/2635868.2666610","url":null,"abstract":"Mutation testing is an effective technique for either improving or generating fault-finding test suites. It creates defective or incorrect program artifacts of the program under test and evaluates the ability of test suites to reveal them. Despite being effective, mutation is costly since it requires assessing the test cases with a large number of defective artifacts. Even worse, some of these artifacts are behaviourally ``equivalent'' to the original one and hence, they unnecessarily increase the testing effort. We adopt a variability perspective on mutation analysis. We model a defective artifact as a transition system with a specific feature selected and consider it as a member of a mutant family. The mutant family is encoded as a Featured Transition System, a compact formalism initially dedicated to model-checking of software product lines. We show how to evaluate a test suite against the set of all candidate defects by using mutant families. We can evaluate all the considered defects at the same time and isolate some equivalent mutants. We can also assist the test generation process and efficiently consider higher-order mutants.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130715193","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}
引用次数: 18
Beyond the rainbow: self-adaptive failure avoidance in configurable systems 超越彩虹:可配置系统中的自适应故障避免
Jacob Swanson, Myra B. Cohen, Matthew B. Dwyer, Brady J. Garvin, Justin W. Firestone
Self-adaptive software systems monitor their state and then adapt when certain conditions are met, guided by a global utility function. In prior work we developed algorithms and conducted a post-hoc analysis demonstrating the possibility of adapting to software failures by judiciously changing configurations. In this paper we present the REFRACT framework that realizes this idea in practice by building on the self-adaptive Rainbow architecture. REFRACT extends Rainbow with new components and algorithms targeting failure avoidance. We use REFRACT in a case study running four independently executing Firefox clients with 36 passing test cases and 7 seeded faults. The study show that workarounds for all but one of the seeded faults are found and the one that is not found never fails -- it is guarded from failing by a related workaround. Moreover, REFRACT finds workarounds for eight configuration-related unseeded failures from tests that were expected to pass (and did under the default configuration). Finally, the data show that when a failure and its workaround are found, configuration guards prevent the failure from appearing again. In a simulation lasting 24 hours we see over 150 guard activations and no failures with workarounds remaining beyond 16 hours.
自适应软件系统监视它们的状态,然后在全局效用函数的指导下,在满足某些条件时进行调整。在之前的工作中,我们开发了算法,并进行了事后分析,展示了通过明智地改变配置来适应软件故障的可能性。在本文中,我们提出了REFRACT框架,通过构建自适应彩虹架构在实践中实现了这个想法。REFRACT用新的组件和算法扩展了Rainbow,目标是避免故障。我们在一个案例研究中使用REFRACT,运行四个独立执行的Firefox客户端,其中有36个通过测试用例和7个种子错误。研究表明,除了一个种子故障之外,其他所有故障的解决方案都被找到了,而没有被发现的故障永远不会失败——它被相关的解决方案所保护。此外,REFRACT还发现了八个与配置相关的未播种失败的解决方案,这些失败来自于预期会通过的测试(并且在默认配置下确实通过了)。最后,数据表明,当发现故障及其解决方案时,配置保护可以防止故障再次出现。在一个持续24小时的模拟中,我们看到超过150个防护装置被激活,16小时后没有出现任何故障。
{"title":"Beyond the rainbow: self-adaptive failure avoidance in configurable systems","authors":"Jacob Swanson, Myra B. Cohen, Matthew B. Dwyer, Brady J. Garvin, Justin W. Firestone","doi":"10.1145/2635868.2635915","DOIUrl":"https://doi.org/10.1145/2635868.2635915","url":null,"abstract":"Self-adaptive software systems monitor their state and then adapt when certain conditions are met, guided by a global utility function. In prior work we developed algorithms and conducted a post-hoc analysis demonstrating the possibility of adapting to software failures by judiciously changing configurations. In this paper we present the REFRACT framework that realizes this idea in practice by building on the self-adaptive Rainbow architecture. REFRACT extends Rainbow with new components and algorithms targeting failure avoidance. We use REFRACT in a case study running four independently executing Firefox clients with 36 passing test cases and 7 seeded faults. The study show that workarounds for all but one of the seeded faults are found and the one that is not found never fails -- it is guarded from failing by a related workaround. Moreover, REFRACT finds workarounds for eight configuration-related unseeded failures from tests that were expected to pass (and did under the default configuration). Finally, the data show that when a failure and its workaround are found, configuration guards prevent the failure from appearing again. In a simulation lasting 24 hours we see over 150 guard activations and no failures with workarounds remaining beyond 16 hours.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121428759","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 26
Developers' code context models for change tasks 开发人员用于变更任务的代码上下文模型
Thomas Fritz, D. Shepherd, Katja Kevic, W. Snipes, Christoph Bräunlich
To complete a change task, software developers spend a substantial amount of time navigating code to understand the relevant parts. During this investigation phase, they implicitly build context models of the elements and relations that are relevant to the task. Through an exploratory study with twelve developers completing change tasks in three open source systems, we identified important characteristics of these context models and how they are created. In a second empirical analysis, we further examined our findings on data collected from eighty developers working on a variety of change tasks on open and closed source projects. Our studies uncovered, amongst other results, that code context models are highly connected, structurally and lexically, that developers start tasks using a combination of search and navigation and that code navigation varies substantially across developers. Based on these findings we identify and discuss design requirements to better support developers in the initial creation of code context models. We believe this work represents a substantial step in better understanding developers' code navigation and providing better tool support that will reduce time and effort needed for change tasks.
为了完成变更任务,软件开发人员花费大量时间导航代码以理解相关部分。在这个调查阶段,他们隐式地构建与任务相关的元素和关系的上下文模型。通过对12名开发人员在三个开源系统中完成变更任务的探索性研究,我们确定了这些上下文模型的重要特征以及它们是如何创建的。在第二个实证分析中,我们进一步检查了从80个开发人员收集的数据的发现,这些开发人员从事开放和闭源项目的各种变更任务。我们的研究发现,在其他结果中,代码上下文模型在结构上和词汇上是高度连接的,开发人员使用搜索和导航的组合开始任务,并且代码导航在开发人员之间存在很大差异。基于这些发现,我们确定并讨论了设计需求,以便在初始创建代码上下文模型时更好地支持开发人员。我们相信这项工作在更好地理解开发人员的代码导航和提供更好的工具支持方面迈出了实质性的一步,这将减少更改任务所需的时间和精力。
{"title":"Developers' code context models for change tasks","authors":"Thomas Fritz, D. Shepherd, Katja Kevic, W. Snipes, Christoph Bräunlich","doi":"10.1145/2635868.2635905","DOIUrl":"https://doi.org/10.1145/2635868.2635905","url":null,"abstract":"To complete a change task, software developers spend a substantial amount of time navigating code to understand the relevant parts. During this investigation phase, they implicitly build context models of the elements and relations that are relevant to the task. Through an exploratory study with twelve developers completing change tasks in three open source systems, we identified important characteristics of these context models and how they are created. In a second empirical analysis, we further examined our findings on data collected from eighty developers working on a variety of change tasks on open and closed source projects. Our studies uncovered, amongst other results, that code context models are highly connected, structurally and lexically, that developers start tasks using a combination of search and navigation and that code navigation varies substantially across developers. Based on these findings we identify and discuss design requirements to better support developers in the initial creation of code context models. We believe this work represents a substantial step in better understanding developers' code navigation and providing better tool support that will reduce time and effort needed for change tasks.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"153 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121518259","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}
引用次数: 41
Automatically generated patches as debugging aids: a human study 自动生成补丁作为调试辅助:人类研究
Yida Tao, Jindae Kim, Sunghun Kim, Chang Xu
Recent research has made significant progress in automatic patch generation, an approach to repair programs with less or no manual intervention. However, direct deployment of auto-generated patches remains difficult, for reasons such as patch quality variations and developers' intrinsic resistance. In this study, we take one step back and investigate a more feasible application scenario of automatic patch generation, that is, using generated patches as debugging aids. We recruited 95 participants for a controlled experiment, in which they performed debugging tasks with the aid of either buggy locations (i.e., the control group), or generated patches of varied qualities. We observe that: a) high-quality patches significantly improve debugging correctness; b) such improvements are more obvious for difficult bugs; c) when using low-quality patches, participants' debugging correctness drops to an even lower point than that of the control group; d) debugging time is significantly affected not by debugging aids, but by participant type and the specific bug to fix. These results highlight that the benefits of using generated patches as debugging aids are contingent upon the quality of the patches. Our qualitative analysis of participants' feedback further sheds light on how generated patches can be improved and better utilized as debugging aids.
最近的研究在自动补丁生成方面取得了重大进展,这是一种较少或无需人工干预的修复程序方法。然而,直接部署自动生成的补丁仍然很困难,原因包括补丁质量的变化和开发者的内在阻力。在本研究中,我们退一步研究了一种更可行的补丁自动生成应用场景,即使用生成的补丁作为调试辅助工具。我们招募了95名参与者进行一个控制实验,在这个实验中,他们在bug位置(即控制组)的帮助下执行调试任务,或者生成不同质量的补丁。我们观察到:a)高质量的补丁显著提高了调试正确性;B)这种改进对于困难的bug更明显;C)当使用低质量补丁时,参与者的调试正确性下降到比对照组更低的程度;D)调试时间不受调试辅助的显著影响,而是受参与者类型和要修复的特定错误的影响。这些结果突出表明,使用生成的补丁作为调试辅助工具的好处取决于补丁的质量。我们对参与者反馈的定性分析进一步阐明了如何改进和更好地利用生成的补丁作为调试辅助工具。
{"title":"Automatically generated patches as debugging aids: a human study","authors":"Yida Tao, Jindae Kim, Sunghun Kim, Chang Xu","doi":"10.1145/2635868.2635873","DOIUrl":"https://doi.org/10.1145/2635868.2635873","url":null,"abstract":"Recent research has made significant progress in automatic patch generation, an approach to repair programs with less or no manual intervention. However, direct deployment of auto-generated patches remains difficult, for reasons such as patch quality variations and developers' intrinsic resistance. In this study, we take one step back and investigate a more feasible application scenario of automatic patch generation, that is, using generated patches as debugging aids. We recruited 95 participants for a controlled experiment, in which they performed debugging tasks with the aid of either buggy locations (i.e., the control group), or generated patches of varied qualities. We observe that: a) high-quality patches significantly improve debugging correctness; b) such improvements are more obvious for difficult bugs; c) when using low-quality patches, participants' debugging correctness drops to an even lower point than that of the control group; d) debugging time is significantly affected not by debugging aids, but by participant type and the specific bug to fix. These results highlight that the benefits of using generated patches as debugging aids are contingent upon the quality of the patches. Our qualitative analysis of participants' feedback further sheds light on how generated patches can be improved and better utilized as debugging aids.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"92 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134271799","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}
引用次数: 67
Omen+: a precise dynamic deadlock detector for multithreaded Java libraries Omen+:用于多线程Java库的精确动态死锁检测器
Malavika Samak, M. Ramanathan
Designing thread-safe libraries without concurrency defects can be a challenging task. Detecting deadlocks while invoking methods in these libraries concurrently is hard due to the possible number of method invocation combinations, the object assignments to the parameters and the associated thread interleavings. In this paper, we describe the design and implementation of OMEN+ that takes a multithreaded library as the input and detects true deadlocks in a scalable manner. We achieve this by automatically synthesizing relevant multithreaded tests and analyze the associated execution traces using a precise deadlock detector. We validate the usefulness of OMEN+ by applying it on many multithreaded Java libraries and detect a number of deadlocks even in documented thread-safe libraries. The tool is available for free download at http://www.csa.iisc.ernet.in/~sss/tool/omenplus.html.
设计没有并发性缺陷的线程安全库可能是一项具有挑战性的任务。在并发调用这些库中的方法时检测死锁是很困难的,因为可能有很多方法调用组合、对象对参数的赋值以及相关的线程交错。在本文中,我们描述了OMEN+的设计和实现,它以多线程库作为输入,并以可扩展的方式检测真正的死锁。我们通过自动合成相关的多线程测试并使用精确的死锁检测器分析相关的执行跟踪来实现这一点。我们通过将OMEN+应用于许多多线程Java库来验证它的有用性,甚至在文档化的线程安全库中检测到许多死锁。该工具可在http://www.csa.iisc.ernet.in/~sss/tool/omenplus.html上免费下载。
{"title":"Omen+: a precise dynamic deadlock detector for multithreaded Java libraries","authors":"Malavika Samak, M. Ramanathan","doi":"10.1145/2635868.2661670","DOIUrl":"https://doi.org/10.1145/2635868.2661670","url":null,"abstract":"Designing thread-safe libraries without concurrency defects can be a challenging task. Detecting deadlocks while invoking methods in these libraries concurrently is hard due to the possible number of method invocation combinations, the object assignments to the parameters and the associated thread interleavings. In this paper, we describe the design and implementation of OMEN+ that takes a multithreaded library as the input and detects true deadlocks in a scalable manner. We achieve this by automatically synthesizing relevant multithreaded tests and analyze the associated execution traces using a precise deadlock detector. We validate the usefulness of OMEN+ by applying it on many multithreaded Java libraries and detect a number of deadlocks even in documented thread-safe libraries. The tool is available for free download at http://www.csa.iisc.ernet.in/~sss/tool/omenplus.html.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"142 49","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113939751","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Towards a theory of architectural styles 朝向建筑风格理论的方向
Diego Marmsoler
Architectural styles and patterns play an important role in software architectures. However, they are usually only stated informally, which may cause problems such as ambiguity and wrong conclusions. A rigorous theory of architectural styles --- consisting of (i) mathematical models for each style; (ii) axioms to identify different variants of a style; and (iii) rigorous analyses by means of mathematical proofs --- would address these problems. With this work we report on our progress towards such a rigorous theory of architectural styles.
架构风格和模式在软件架构中扮演着重要的角色。然而,它们通常只是非正式地陈述,这可能会导致歧义和错误结论等问题。严谨的建筑风格理论——包括(1)每种风格的数学模型;(ii)识别风格不同变体的公理;(iii)通过数学证明进行严格的分析——将解决这些问题。通过这项工作,我们报告了我们在这种严格的建筑风格理论方面的进展。
{"title":"Towards a theory of architectural styles","authors":"Diego Marmsoler","doi":"10.1145/2635868.2661683","DOIUrl":"https://doi.org/10.1145/2635868.2661683","url":null,"abstract":"Architectural styles and patterns play an important role in software architectures. However, they are usually only stated informally, which may cause problems such as ambiguity and wrong conclusions. A rigorous theory of architectural styles --- consisting of (i) mathematical models for each style; (ii) axioms to identify different variants of a style; and (iii) rigorous analyses by means of mathematical proofs --- would address these problems. With this work we report on our progress towards such a rigorous theory of architectural styles.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115467435","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
An empirical study on program comprehension with reactive programming 响应式编程对程序理解的实证研究
G. Salvaneschi, Sven Amann, Sebastian Proksch, M. Mezini
Starting from the first investigations with strictly functional languages, reactive programming has been proposed as THE programming paradigm for reactive applications. The advantages of designs based on this style over designs based on the Observer design pattern have been studied for a long time. Over the years, researchers have enriched reactive languages with more powerful abstractions, embedded these abstractions into mainstream languages – including object-oriented languages – and applied reactive programming to several domains, like GUIs, animations, Web applications, robotics, and sensor networks. However, an important assumption behind this line of research – that, beside other advantages, reactive programming makes a wide class of otherwise cumbersome applications more comprehensible – has never been evaluated. In this paper, we present the design and the results of the first empirical study that evaluates the effect of reactive programming on comprehensibility compared to the traditional object-oriented style with the Observer design pattern. Results confirm the conjecture that comprehensibility is enhanced by reactive programming. In the experiment, the reactive programming group significantly outperforms the other group.
从对严格函数式语言的第一次研究开始,响应式编程已经被提出作为响应式应用程序的编程范式。基于这种风格的设计相对于基于观察者设计模式的设计的优势已经被研究了很长时间。多年来,研究人员用更强大的抽象丰富了响应式语言,将这些抽象嵌入主流语言(包括面向对象语言),并将响应式编程应用于几个领域,如gui、动画、Web应用程序、机器人和传感器网络。然而,这条研究路线背后的一个重要假设——除了其他优点之外,响应式编程使大量原本笨重的应用程序更容易理解——从未被评估过。在本文中,我们展示了设计和第一项实证研究的结果,该研究评估了响应式编程与传统面向对象风格和观察者设计模式相比对可理解性的影响。结果证实了反应性编程提高了可理解性的猜想。在实验中,反应性编程组的表现明显优于其他组。
{"title":"An empirical study on program comprehension with reactive programming","authors":"G. Salvaneschi, Sven Amann, Sebastian Proksch, M. Mezini","doi":"10.1145/2635868.2635895","DOIUrl":"https://doi.org/10.1145/2635868.2635895","url":null,"abstract":"Starting from the first investigations with strictly functional languages, reactive programming has been proposed as THE programming paradigm for reactive applications. The advantages of designs based on this style over designs based on the Observer design pattern have been studied for a long time. Over the years, researchers have enriched reactive languages with more powerful abstractions, embedded these abstractions into mainstream languages – including object-oriented languages – and applied reactive programming to several domains, like GUIs, animations, Web applications, robotics, and sensor networks. However, an important assumption behind this line of research – that, beside other advantages, reactive programming makes a wide class of otherwise cumbersome applications more comprehensible – has never been evaluated. In this paper, we present the design and the results of the first empirical study that evaluates the effect of reactive programming on comprehensibility compared to the traditional object-oriented style with the Observer design pattern. Results confirm the conjecture that comprehensibility is enhanced by reactive programming. In the experiment, the reactive programming group significantly outperforms the other group.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"44 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123959560","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 44
On the efficiency of automated testing 关于自动化测试的效率
Marcel Böhme, Soumya Paul
The aim of automated program testing is to gain confidence about a program's correctness by sampling its input space. The sampling process can be either systematic or random. For every systematic testing technique the sampling is informed by the analysis of some program artefacts, like the specification, the source code (e.g., to achieve coverage), or even faulty versions of the program (e.g., mutation testing). This analysis incurs some cost. In contrast, random testing is unsystematic and does not sustain any analysis cost. In this paper, we investigate the theoretical efficiency of systematic versus random testing. First, we mathematically model the most effective systematic testing technique S_0 in which every sampled test input strictly increases the "degree of confidence" and is subject to the analysis cost c. Note that the efficiency of S_0 depends on c. Specifically, if we increase c, we also increase the time it takes S_0 to establish the same degree of confidence. So, there exists a maximum analysis cost beyond which R is generally more efficient than S_0. Given that we require the confidence that the program works correctly for x% of its input, we prove an upper bound on c of S_0, beyond which R is more efficient on the average. We also show that this bound depends asymptotically only on x. For instance, let R take 10ms time to sample one test input; to establish that the program works correctly for 90% of its input, S_0 must take less than 41ms to sample one test input. Otherwise, R is expected to establish the 90%-degree of confidence earlier. We prove similar bounds on the cost if the software tester is interested in revealing as many errors as possible in a given time span.
自动化程序测试的目的是通过采样程序的输入空间来获得对程序正确性的信心。抽样过程可以是系统的,也可以是随机的。对于每一种系统的测试技术,抽样都是通过对一些程序工件的分析得到的,比如规范、源代码(例如,实现覆盖),或者甚至是程序的错误版本(例如,突变测试)。这种分析产生了一些成本。相比之下,随机测试是非系统的,不需要任何分析成本。在本文中,我们研究了系统与随机测试的理论效率。首先,我们对最有效的系统测试技术S_0进行数学建模,其中每个采样测试输入严格增加“置信度”,并受分析成本c的约束。请注意,S_0的效率取决于c。具体而言,如果我们增加c,我们也增加了S_0建立相同置信度所需的时间。因此,存在一个最大分析成本,超过这个成本R通常比S_0更有效。假设我们需要确信程序在其输入的x%下正确工作,我们证明了S_0的c的上界,超过这个上界R的平均效率更高。我们还证明了这个界只渐近地依赖于x。例如,让R花10ms的时间对一个测试输入进行采样;为了确定程序对90%的输入正确工作,S_0必须花费少于41ms的时间来采样一个测试输入。否则,预计R会更早地建立90%的置信度。如果软件测试人员对在给定的时间范围内发现尽可能多的错误感兴趣,我们证明了类似的成本界限。
{"title":"On the efficiency of automated testing","authors":"Marcel Böhme, Soumya Paul","doi":"10.1145/2635868.2635923","DOIUrl":"https://doi.org/10.1145/2635868.2635923","url":null,"abstract":"The aim of automated program testing is to gain confidence about a program's correctness by sampling its input space. The sampling process can be either systematic or random. For every systematic testing technique the sampling is informed by the analysis of some program artefacts, like the specification, the source code (e.g., to achieve coverage), or even faulty versions of the program (e.g., mutation testing). This analysis incurs some cost. In contrast, random testing is unsystematic and does not sustain any analysis cost. In this paper, we investigate the theoretical efficiency of systematic versus random testing. First, we mathematically model the most effective systematic testing technique S_0 in which every sampled test input strictly increases the \"degree of confidence\" and is subject to the analysis cost c. Note that the efficiency of S_0 depends on c. Specifically, if we increase c, we also increase the time it takes S_0 to establish the same degree of confidence. So, there exists a maximum analysis cost beyond which R is generally more efficient than S_0. Given that we require the confidence that the program works correctly for x% of its input, we prove an upper bound on c of S_0, beyond which R is more efficient on the average. We also show that this bound depends asymptotically only on x. For instance, let R take 10ms time to sample one test input; to establish that the program works correctly for 90% of its input, S_0 must take less than 41ms to sample one test input. Otherwise, R is expected to establish the 90%-degree of confidence earlier. We prove similar bounds on the cost if the software tester is interested in revealing as many errors as possible in a given time span.","PeriodicalId":250543,"journal":{"name":"Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126597379","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
期刊
Proceedings of the 22nd 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