首页 > 最新文献

2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)最新文献

英文 中文
ZenIDS: Introspective Intrusion Detection for PHP Applications PHP应用程序的内省入侵检测
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.29
Byron Hawkins, Brian Demsky
Since its first appearance more than 20 years ago, PHP has steadily increased in popularity, and has become the foundation of the Internet's most popular content management systems (CMS). Of the world's 1 million most visited websites, nearly half use a CMS, and WordPress alone claims 25% market share of all websites. While their easy-to-use templates and components have greatly simplified the work of developing high quality websites, it comes at the cost of software vulnerabilities that are inevitable in such large and rapidly evolving frameworks. Intrusion Detection Systems (IDS) are often used to protect Internet-facing applications, but conventional techniques struggle to keep up with the fast pace of development in today's web applications. Rapid changes to application interfaces increase the workload of maintaining an IDS whitelist, yet the broad attack surface of a web application makes for a similarly verbose blacklist. We developed ZenIDS to dynamically learn the trusted execution paths of an application during a short online training period and report execution anomalies as potential intrusions. We implement ZenIDS as a PHP extension supported by 8 hooks instrumented in the PHP interpreter. Our experiments demonstrate its effectiveness monitoring live web traffic for one year to 3 large PHP applications, detecting malicious requests with a false positive rate of less than .01% after training on fewer than 4,000 requests. ZenIDS excludes the vast majority of deployed PHP code from the whitelist because it is never used for valid requests–yet could potentially be exploited by a remote adversary. We observe 5% performance overhead (or less) for our applications vs. an optimized vanilla LAMP stack.
自20多年前首次出现以来,PHP的受欢迎程度稳步上升,并已成为Internet上最流行的内容管理系统(CMS)的基础。在全球访问量最大的100万个网站中,近一半使用CMS,仅WordPress就占据了所有网站25%的市场份额。虽然它们易于使用的模板和组件极大地简化了开发高质量网站的工作,但它的代价是软件漏洞,这在如此庞大和快速发展的框架中是不可避免的。入侵检测系统(IDS)通常用于保护面向internet的应用程序,但传统技术难以跟上当今web应用程序的快速发展步伐。应用程序接口的快速更改增加了维护IDS白名单的工作量,而web应用程序的广泛攻击面也会产生类似的冗长黑名单。我们开发ZenIDS是为了在短暂的在线培训期间动态学习应用程序的可信执行路径,并将执行异常报告为潜在的入侵。我们将ZenIDS实现为PHP扩展,该扩展由PHP解释器中的8个钩子支持。我们的实验证明了它对3个大型PHP应用程序进行为期一年的实时网络流量监控的有效性,在对不到4,000个请求进行训练后,检测恶意请求的误报率低于0.01%。ZenIDS将绝大多数已部署的PHP代码从白名单中排除,因为它从未用于有效请求,但可能被远程攻击者利用。我们观察到,与优化的LAMP堆栈相比,我们的应用程序的性能开销为5%(或更少)。
{"title":"ZenIDS: Introspective Intrusion Detection for PHP Applications","authors":"Byron Hawkins, Brian Demsky","doi":"10.1109/ICSE.2017.29","DOIUrl":"https://doi.org/10.1109/ICSE.2017.29","url":null,"abstract":"Since its first appearance more than 20 years ago, PHP has steadily increased in popularity, and has become the foundation of the Internet's most popular content management systems (CMS). Of the world's 1 million most visited websites, nearly half use a CMS, and WordPress alone claims 25% market share of all websites. While their easy-to-use templates and components have greatly simplified the work of developing high quality websites, it comes at the cost of software vulnerabilities that are inevitable in such large and rapidly evolving frameworks. Intrusion Detection Systems (IDS) are often used to protect Internet-facing applications, but conventional techniques struggle to keep up with the fast pace of development in today's web applications. Rapid changes to application interfaces increase the workload of maintaining an IDS whitelist, yet the broad attack surface of a web application makes for a similarly verbose blacklist. We developed ZenIDS to dynamically learn the trusted execution paths of an application during a short online training period and report execution anomalies as potential intrusions. We implement ZenIDS as a PHP extension supported by 8 hooks instrumented in the PHP interpreter. Our experiments demonstrate its effectiveness monitoring live web traffic for one year to 3 large PHP applications, detecting malicious requests with a false positive rate of less than .01% after training on fewer than 4,000 requests. ZenIDS excludes the vast majority of deployed PHP code from the whitelist because it is never used for valid requests–yet could potentially be exploited by a remote adversary. We observe 5% performance overhead (or less) for our applications vs. an optimized vanilla LAMP stack.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"140 1","pages":"232-243"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77669398","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}
引用次数: 11
A SEALANT for Inter-App Security Holes in Android Android应用间安全漏洞的密封剂
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.36
Youn Kyu Lee, Jae Young Bang, G. Safi, Arman Shahbazian, Yixue Zhao, N. Medvidović
Android's communication model has a major security weakness: malicious apps can manipulate other apps into performing unintended operations and can steal end-user data, while appearing ordinary and harmless. This paper presents SEALANT, a technique that combines static analysis of app code, which infers vulnerable communication channels, with runtime monitoring of inter-app communication through those channels, which helps to prevent attacks. SEALANT's extensive evaluation demonstrates that (1) it detects and blocks inter-app attacks with high accuracy in a corpus of over 1,100 real-world apps, (2) it suffers from fewer false alarms than existing techniques in several representative scenarios, (3) its performance overhead is negligible, and (4) end-users do not find it challenging to adopt.
Android的通信模式有一个重大的安全漏洞:恶意应用程序可以操纵其他应用程序执行意想不到的操作,并可以窃取终端用户的数据,而看起来却很普通、无害。本文介绍了SEALANT技术,该技术结合了应用程序代码的静态分析,可以推断出易受攻击的通信通道,并通过这些通道对应用程序间通信进行运行时监控,有助于防止攻击。SEALANT的广泛评估表明:(1)它在超过1100个真实世界的应用程序的语料中以高精度检测和阻止应用间攻击,(2)在几个代表性场景中,它比现有技术遭受的假警报更少,(3)它的性能开销可以忽略不计,(4)最终用户不会发现采用它具有挑战性。
{"title":"A SEALANT for Inter-App Security Holes in Android","authors":"Youn Kyu Lee, Jae Young Bang, G. Safi, Arman Shahbazian, Yixue Zhao, N. Medvidović","doi":"10.1109/ICSE.2017.36","DOIUrl":"https://doi.org/10.1109/ICSE.2017.36","url":null,"abstract":"Android's communication model has a major security weakness: malicious apps can manipulate other apps into performing unintended operations and can steal end-user data, while appearing ordinary and harmless. This paper presents SEALANT, a technique that combines static analysis of app code, which infers vulnerable communication channels, with runtime monitoring of inter-app communication through those channels, which helps to prevent attacks. SEALANT's extensive evaluation demonstrates that (1) it detects and blocks inter-app attacks with high accuracy in a corpus of over 1,100 real-world apps, (2) it suffers from fewer false alarms than existing techniques in several representative scenarios, (3) its performance overhead is negligible, and (4) end-users do not find it challenging to adopt.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"15 1","pages":"312-323"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84963661","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}
引用次数: 43
Adaptive Unpacking of Android Apps Android应用的自适应解包
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.40
Lei Xue, Xiapu Luo, Le Yu, Shuai Wang, Dinghao Wu
More and more app developers use the packing services (or packers) to prevent attackers from reverse engineering and modifying the executable (or Dex files) of their apps. At the same time, malware authors also use the packers to hide the malicious component and evade the signature-based detection. Although there are a few recent studies on unpacking Android apps, it has been shown that the evolving packers can easily circumvent them because they are not adaptive to the changes of packers. In this paper, we propose a novel adaptive approach and develop a new system, named PackerGrind, to unpack Android apps. We also evaluate PackerGrind with real packed apps, and the results show that PackerGrind can successfully reveal the packers' protection mechanisms and recover the Dex files with low overhead, showing that our approach can effectively handle the evolution of packers.
越来越多的应用程序开发人员使用打包服务(或打包器)来防止攻击者对其应用程序的可执行文件(或Dex文件)进行反向工程和修改。同时,恶意软件的编写者也会利用这些封装程序来隐藏恶意组件,从而规避基于签名的检测。尽管最近有一些关于解包Android应用程序的研究,但已经表明,进化的打包程序可以很容易地绕过它们,因为它们不适应打包程序的变化。本文提出了一种新的自适应方法,并开发了一个名为PackerGrind的新系统来解包Android应用程序。我们还在实际打包应用中对PackerGrind进行了评估,结果表明PackerGrind可以成功地揭示打包者的保护机制并以低开销恢复Dex文件,表明我们的方法可以有效地处理打包者的演变。
{"title":"Adaptive Unpacking of Android Apps","authors":"Lei Xue, Xiapu Luo, Le Yu, Shuai Wang, Dinghao Wu","doi":"10.1109/ICSE.2017.40","DOIUrl":"https://doi.org/10.1109/ICSE.2017.40","url":null,"abstract":"More and more app developers use the packing services (or packers) to prevent attackers from reverse engineering and modifying the executable (or Dex files) of their apps. At the same time, malware authors also use the packers to hide the malicious component and evade the signature-based detection. Although there are a few recent studies on unpacking Android apps, it has been shown that the evolving packers can easily circumvent them because they are not adaptive to the changes of packers. In this paper, we propose a novel adaptive approach and develop a new system, named PackerGrind, to unpack Android apps. We also evaluate PackerGrind with real packed apps, and the results show that PackerGrind can successfully reveal the packers' protection mechanisms and recover the Dex files with low overhead, showing that our approach can effectively handle the evolution of packers.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"3 1","pages":"358-369"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73709111","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
ProEva: Runtime Proactive Performance Evaluation Based on Continuous-Time Markov Chains 基于连续时间马尔可夫链的运行时主动性能评估
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.51
Guoxin Su, Taolue Chen, Yuan Feng, David S. Rosenblum
Software systems, especially service-based software systems, need to guarantee runtime performance. If their performance is degraded, some reconfiguration countermeasures should be taken. However, there is usually some latency before the countermeasures take effect. It is thus important not only to monitor the current system status passively but also to predict its future performance proactively. Continuous-time Markov chains (CTMCs) are suitable models to analyze time-bounded performance metrics (e.g., how likely a performance degradation may occur within some future period). One challenge to harness CTMCs is the measurement of model parameters (i.e., transition rates) in CTMCs at runtime. As these parameters may be updated by the system or environment frequently, it is difficult for the model builder to provide precise parameter values. In this paper, we present a framework called ProEva, which extends the conventional technique of time-bounded CTMC model checking by admitting imprecise, interval-valued estimates for transition rates. The core method of ProEva computes asymptotic expressions and bounds for the imprecise model checking output. We also present an evaluation of accuracy and computational overhead for ProEva.
软件系统,特别是基于服务的软件系统,需要保证运行时性能。如果它们的性能下降,则应采取一些重构对策。但是,在对策生效之前通常会有一些延迟。因此,不仅要被动地监控系统的当前状态,而且要主动地预测系统的未来性能。连续时间马尔可夫链(ctmc)是分析有时间限制的性能指标(例如,性能下降在未来一段时间内发生的可能性)的合适模型。利用ctmc的一个挑战是在运行时测量ctmc中的模型参数(即转换速率)。由于这些参数可能会被系统或环境频繁地更新,因此模型构建者很难提供精确的参数值。在本文中,我们提出了一个名为ProEva的框架,它通过允许过渡率的不精确的区间值估计,扩展了传统的有时间限制的CTMC模型检查技术。ProEva的核心方法是计算不精确模型检验输出的渐近表达式和界。我们还对ProEva的精度和计算开销进行了评估。
{"title":"ProEva: Runtime Proactive Performance Evaluation Based on Continuous-Time Markov Chains","authors":"Guoxin Su, Taolue Chen, Yuan Feng, David S. Rosenblum","doi":"10.1109/ICSE.2017.51","DOIUrl":"https://doi.org/10.1109/ICSE.2017.51","url":null,"abstract":"Software systems, especially service-based software systems, need to guarantee runtime performance. If their performance is degraded, some reconfiguration countermeasures should be taken. However, there is usually some latency before the countermeasures take effect. It is thus important not only to monitor the current system status passively but also to predict its future performance proactively. Continuous-time Markov chains (CTMCs) are suitable models to analyze time-bounded performance metrics (e.g., how likely a performance degradation may occur within some future period). One challenge to harness CTMCs is the measurement of model parameters (i.e., transition rates) in CTMCs at runtime. As these parameters may be updated by the system or environment frequently, it is difficult for the model builder to provide precise parameter values. In this paper, we present a framework called ProEva, which extends the conventional technique of time-bounded CTMC model checking by admitting imprecise, interval-valued estimates for transition rates. The core method of ProEva computes asymptotic expressions and bounds for the imprecise model checking output. We also present an evaluation of accuracy and computational overhead for ProEva.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"3 1","pages":"484-495"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76076208","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
Heuristically Matching Solution Spaces of Arithmetic Formulas to Efficiently Reuse Solutions 启发式匹配算术公式解空间以实现解的有效重用
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.46
Andrea Aquino, G. Denaro, M. Pezzè
Many symbolic program analysis techniques rely on SMT solvers to verify properties of programs. Despite the remarkable progress made in the development of such tools, SMT solvers still represent a main bottleneck to the scalability of these techniques. Recent approaches tackle this bottleneck by reusing solutions of formulas that recur during program analysis, thus reducing the number of queries to SMT solvers. Current approaches only reuse solutions across formulas that are equivalent to, contained in or implied by other formulas, as identified through a set of predefined rules, and cannot reuse solutions across formulas that differ in their structure, even if they share some potentially reusable solutions. In this paper, we propose a novel approach that can reuse solutions across formulas that share at least one solution, regardless of their structural resemblance. Our approach exploits a novel heuristic to efficiently identify solutions computed for previously solved formulas and most likely shared by new formulas. The results of an empirical evaluation of our approach on two different logics show that our approach can identify on average more reuse opportunities and is markedly faster than competing approaches.
许多符号程序分析技术依赖于SMT求解器来验证程序的属性。尽管此类工具的开发取得了显著进展,但SMT求解器仍然是这些技术可扩展性的主要瓶颈。最近的方法通过重用在程序分析期间反复出现的公式的解决方案来解决这个瓶颈,从而减少了对SMT求解器的查询数量。当前的方法只能重用与其他公式等价、包含在其他公式中或隐含在其他公式中的解决方案(通过一组预定义的规则进行标识),并且不能重用结构不同的公式中的解决方案,即使它们共享一些潜在的可重用解决方案。在本文中,我们提出了一种新的方法,可以重用至少共享一个解决方案的公式中的解决方案,而不管它们的结构相似性如何。我们的方法利用一种新的启发式方法来有效地识别为以前解决的公式计算的解决方案,并且最有可能由新公式共享。在两种不同的逻辑上对我们的方法进行实证评估的结果表明,我们的方法平均可以识别更多的重用机会,并且明显比竞争方法更快。
{"title":"Heuristically Matching Solution Spaces of Arithmetic Formulas to Efficiently Reuse Solutions","authors":"Andrea Aquino, G. Denaro, M. Pezzè","doi":"10.1109/ICSE.2017.46","DOIUrl":"https://doi.org/10.1109/ICSE.2017.46","url":null,"abstract":"Many symbolic program analysis techniques rely on SMT solvers to verify properties of programs. Despite the remarkable progress made in the development of such tools, SMT solvers still represent a main bottleneck to the scalability of these techniques. Recent approaches tackle this bottleneck by reusing solutions of formulas that recur during program analysis, thus reducing the number of queries to SMT solvers. Current approaches only reuse solutions across formulas that are equivalent to, contained in or implied by other formulas, as identified through a set of predefined rules, and cannot reuse solutions across formulas that differ in their structure, even if they share some potentially reusable solutions. In this paper, we propose a novel approach that can reuse solutions across formulas that share at least one solution, regardless of their structural resemblance. Our approach exploits a novel heuristic to efficiently identify solutions computed for previously solved formulas and most likely shared by new formulas. The results of an empirical evaluation of our approach on two different logics show that our approach can identify on average more reuse opportunities and is markedly faster than competing approaches.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"42 1","pages":"427-437"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80314002","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
Do Developers Read Compiler Error Messages? 开发人员阅读编译器错误信息吗?
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.59
Titus Barik, Justin Smith, Kevin Lubick, Elisabeth Holmes, Jing Feng, E. Murphy-Hill, Chris Parnin
In integrated development environments, developers receive compiler error messages through a variety of textual and visual mechanisms, such as popups and wavy red underlines. Although error messages are the primary means of communicating defects to developers, researchers have a limited understanding on how developers actually use these messages to resolve defects. To understand how developers use error messages, we conducted an eye tracking study with 56 participants from undergraduate and graduate software engineering courses at our university. The participants attempted to resolve common, yet problematic defects in a Java code base within the Eclipse development environment. We found that: 1) participants read error messages and the difficulty of reading these messages is comparable to the difficulty of reading source code, 2) difficulty reading error messages significantly predicts participants' task performance, and 3) participants allocate a substantial portion of their total task to reading error messages (13%-25%). The results of our study offer empirical justification for the need to improve compiler error messages for developers.
在集成开发环境中,开发人员通过各种文本和可视化机制接收编译器错误消息,例如弹出窗口和波浪红色下划线。尽管错误消息是与开发人员沟通缺陷的主要手段,但研究人员对开发人员如何实际使用这些消息来解决缺陷的理解有限。为了了解开发人员是如何使用错误信息的,我们对来自我们大学软件工程课程的56名本科生和研究生进行了眼动追踪研究。与会者试图在Eclipse开发环境中解决Java代码库中常见但有问题的缺陷。我们发现:1)参与者阅读错误信息的难度与阅读源代码的难度相当;2)阅读错误信息的难度显著预测参与者的任务绩效;3)参与者将相当一部分任务分配给阅读错误信息(13%-25%)。我们的研究结果为开发人员改进编译器错误消息的需要提供了经验依据。
{"title":"Do Developers Read Compiler Error Messages?","authors":"Titus Barik, Justin Smith, Kevin Lubick, Elisabeth Holmes, Jing Feng, E. Murphy-Hill, Chris Parnin","doi":"10.1109/ICSE.2017.59","DOIUrl":"https://doi.org/10.1109/ICSE.2017.59","url":null,"abstract":"In integrated development environments, developers receive compiler error messages through a variety of textual and visual mechanisms, such as popups and wavy red underlines. Although error messages are the primary means of communicating defects to developers, researchers have a limited understanding on how developers actually use these messages to resolve defects. To understand how developers use error messages, we conducted an eye tracking study with 56 participants from undergraduate and graduate software engineering courses at our university. The participants attempted to resolve common, yet problematic defects in a Java code base within the Eclipse development environment. We found that: 1) participants read error messages and the difficulty of reading these messages is comparable to the difficulty of reading source code, 2) difficulty reading error messages significantly predicts participants' task performance, and 3) participants allocate a substantial portion of their total task to reading error messages (13%-25%). The results of our study offer empirical justification for the need to improve compiler error messages for developers.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"40 1","pages":"575-585"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90601990","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}
引用次数: 75
Becoming Agile: A Grounded Theory of Agile Transitions in Practice 成为敏捷:实践中敏捷过渡的基础理论
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.21
Rashina Hoda, J. Noble
Agile adoption is typically understood as a oneoff organizational process involving a staged selection of agile development practices. This view of agility fails to explain the differences in the pace and effectiveness of individual teams transitioning to agile development. Based on a Grounded Theory study of 31 agile practitioners drawn from 18 teams across five countries, we present a grounded theory of becoming agile as a network of on-going transitions across five dimensions: software development practices, team practices, management approach, reflective practices, and culture. The unique position of a software team through this network, and their pace of progress along the five dimensions, explains why individual agile teams present distinct manifestations of agility and unique transition experiences. The theory expands the current understanding of agility as a holistic and complex network of on-going multidimensional transitions, and will help software teams, their managers, and organizations better navigate their individual agile journeys.
敏捷采用通常被理解为一个一次性的组织过程,涉及到对敏捷开发实践的分阶段选择。这种敏捷性的观点无法解释各个团队在向敏捷开发过渡的速度和效率上的差异。基于对来自5个国家的18个团队的31名敏捷实践者的扎根理论研究,我们提出了一个将敏捷转变为跨越五个维度的持续转型网络的扎根理论:软件开发实践、团队实践、管理方法、反思实践和文化。软件团队在这个网络中的独特地位,以及他们在五个维度上的进步速度,解释了为什么单个敏捷团队呈现出不同的敏捷表现和独特的过渡体验。该理论扩展了当前对敏捷的理解,将其视为一个正在进行的多维转换的整体和复杂网络,并将帮助软件团队、他们的经理和组织更好地驾驭他们的个人敏捷之旅。
{"title":"Becoming Agile: A Grounded Theory of Agile Transitions in Practice","authors":"Rashina Hoda, J. Noble","doi":"10.1109/ICSE.2017.21","DOIUrl":"https://doi.org/10.1109/ICSE.2017.21","url":null,"abstract":"Agile adoption is typically understood as a oneoff organizational process involving a staged selection of agile development practices. This view of agility fails to explain the differences in the pace and effectiveness of individual teams transitioning to agile development. Based on a Grounded Theory study of 31 agile practitioners drawn from 18 teams across five countries, we present a grounded theory of becoming agile as a network of on-going transitions across five dimensions: software development practices, team practices, management approach, reflective practices, and culture. The unique position of a software team through this network, and their pace of progress along the five dimensions, explains why individual agile teams present distinct manifestations of agility and unique transition experiences. The theory expands the current understanding of agility as a holistic and complex network of on-going multidimensional transitions, and will help software teams, their managers, and organizations better navigate their individual agile journeys.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"192 1","pages":"141-151"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89847805","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}
引用次数: 105
A General Framework for Dynamic Stub Injection 动态存根注入的通用框架
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.60
M. Christakis, Patrick Emmisberger, Patrice Godefroid, Peter Müller
Stub testing is a standard technique to simulate the behavior of dependencies of an application under test such as the file system. Even though existing frameworks automate the actual stub injection, testers typically have to implement manually where and when to inject stubs, in addition to the stub behavior. This paper presents a novel framework that reduces this effort. The framework provides a domain specific language to describe stub injection strategies and stub behaviors via declarative rules, as well as a tool that automatically injects stubs dynamically into binary code according to these rules. Both the domain specific language and the injection are language independent, which enables the reuse of stubs and injection strategies across applications. We implemented this framework for both unmanaged (assembly) and managed (.NET) code and used it to perform fault injection for twelve large applications, which revealed numerous crashes and bugs in error handling code. We also show how to prioritize the analysis of test failures based on a comparison of the effectiveness of stub injection rules across applications.
存根测试是一种标准技术,用于模拟被测应用程序(如文件系统)的依赖关系的行为。即使现有的框架自动化了实际的存根注入,除了存根行为之外,测试人员通常还必须手动实现何时何地注入存根。本文提出了一个新的框架来减少这种工作量。该框架提供了一种特定于领域的语言,通过声明性规则来描述存根注入策略和存根行为,还提供了一种工具,根据这些规则自动将存根动态注入二进制代码。领域特定语言和注入都是独立于语言的,这使得存根和注入策略可以跨应用程序重用。我们为非托管(汇编)和托管(。net)代码实现了这个框架,并使用它为12个大型应用程序执行错误注入,这揭示了错误处理代码中的大量崩溃和错误。我们还展示了如何基于跨应用程序的存根注入规则的有效性的比较来确定测试失败分析的优先级。
{"title":"A General Framework for Dynamic Stub Injection","authors":"M. Christakis, Patrick Emmisberger, Patrice Godefroid, Peter Müller","doi":"10.1109/ICSE.2017.60","DOIUrl":"https://doi.org/10.1109/ICSE.2017.60","url":null,"abstract":"Stub testing is a standard technique to simulate the behavior of dependencies of an application under test such as the file system. Even though existing frameworks automate the actual stub injection, testers typically have to implement manually where and when to inject stubs, in addition to the stub behavior. This paper presents a novel framework that reduces this effort. The framework provides a domain specific language to describe stub injection strategies and stub behaviors via declarative rules, as well as a tool that automatically injects stubs dynamically into binary code according to these rules. Both the domain specific language and the injection are language independent, which enables the reuse of stubs and injection strategies across applications. We implemented this framework for both unmanaged (assembly) and managed (.NET) code and used it to perform fault injection for twelve large applications, which revealed numerous crashes and bugs in error handling code. We also show how to prioritize the analysis of test failures based on a comparison of the effectiveness of stub injection rules across applications.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"26 1","pages":"586-596"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87675878","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}
引用次数: 10
Clone Refactoring with Lambda Expressions 使用Lambda表达式进行克隆重构
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.14
Nikolaos Tsantalis, D. Mazinanian, Shahriar Rostami
Lambda expressions have been introduced in Java 8 to support functional programming and enable behavior parameterization by passing functions as parameters to methods. The majority of software clones (duplicated code) are known to have behavioral differences (i.e., Type-2 and Type-3 clones). However, to the best of our knowledge, there is no previous work to investigate the utility of Lambda expressions for parameterizing such behavioral differences in clones. In this paper, we propose a technique that examines the applicability of Lambda expressions for the refactoring of clones with behavioral differences. Moreover, we empirically investigate the applicability and characteristics of the Lambda expressions introduced to refactor a large dataset of clones. Our findings show that Lambda expressions enable the refactoring of a significant portion of clones that could not be refactored by any other means.
Java 8中引入了Lambda表达式,以支持函数式编程,并通过将函数作为参数传递给方法来实现行为参数化。大多数软件克隆(重复的代码)已知具有行为差异(即,类型2和类型3克隆)。然而,据我们所知,以前没有研究Lambda表达式在克隆中参数化这种行为差异的效用的工作。在本文中,我们提出了一种技术来检验Lambda表达式在重构具有行为差异的克隆时的适用性。此外,我们实证研究了引入Lambda表达式重构大型克隆数据集的适用性和特征。我们的研究结果表明,Lambda表达式可以重构大部分克隆,而这些克隆无法通过任何其他方式进行重构。
{"title":"Clone Refactoring with Lambda Expressions","authors":"Nikolaos Tsantalis, D. Mazinanian, Shahriar Rostami","doi":"10.1109/ICSE.2017.14","DOIUrl":"https://doi.org/10.1109/ICSE.2017.14","url":null,"abstract":"Lambda expressions have been introduced in Java 8 to support functional programming and enable behavior parameterization by passing functions as parameters to methods. The majority of software clones (duplicated code) are known to have behavioral differences (i.e., Type-2 and Type-3 clones). However, to the best of our knowledge, there is no previous work to investigate the utility of Lambda expressions for parameterizing such behavioral differences in clones. In this paper, we propose a technique that examines the applicability of Lambda expressions for the refactoring of clones with behavioral differences. Moreover, we empirically investigate the applicability and characteristics of the Lambda expressions introduced to refactor a large dataset of clones. Our findings show that Lambda expressions enable the refactoring of a significant portion of clones that could not be refactored by any other means.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"16 1","pages":"60-70"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90014328","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}
引用次数: 48
Efficient Detection of Thread Safety Violations via Coverage-Guided Generation of Concurrent Tests 通过覆盖引导并发测试的生成有效检测线程安全违规
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.32
Ankit Choudhary, Shan Lu, Michael Pradel
As writing concurrent programs is challenging, developers often rely on thread-safe classes, which encapsulate most synchronization issues. Testing such classes is crucial to ensure the correctness of concurrent programs. An effective approach to uncover otherwise missed concurrency bugs is to automatically generate concurrent tests. Existing approaches either create tests randomly, which is inefficient, build on a computationally expensive analysis of potential concurrency bugs exposed by sequential tests, or focus on exposing a particular kind of concurrency bugs, such as atomicity violations. This paper presents CovCon, a coverage-guided approach to generate concurrent tests. The key idea is to measure how often pairs of methods have already been executed concurrently and to focus the test generation on infrequently or not at all covered pairs of methods. The approach is independent of any particular bug pattern, allowing it to find arbitrary concurrency bugs, and is computationally inexpensive, allowing it to generate many tests in short time. We apply CovCon to 18 thread-safe Java classes, and it detects concurrency bugs in 17 of them. Compared to five state of the art approaches, CovCon detects more bugs than any other approach while requiring less time. Specifically, our approach finds bugs faster in 38 of 47 cases, with speedups of at least 4x for 22 of 47 cases.
由于编写并发程序具有挑战性,开发人员通常依赖于线程安全的类,这些类封装了大多数同步问题。测试这些类对于确保并发程序的正确性至关重要。自动生成并发测试是发现并发错误的有效方法。现有的方法要么随机创建测试,这是低效的,要么构建在对顺序测试暴露的潜在并发错误进行计算代价高昂的分析的基础上,要么专注于暴露特定类型的并发错误,例如原子性违反。本文提出了CovCon,一种覆盖引导的方法来生成并发测试。关键思想是度量方法对并发执行的频率,并将测试生成的重点放在不经常或根本不涉及的方法对上。该方法独立于任何特定的错误模式,允许它查找任意的并发错误,并且计算成本低,允许它在短时间内生成许多测试。我们将CovCon应用于18个线程安全的Java类,它检测了其中17个类的并发性错误。与五种最先进的方法相比,CovCon比任何其他方法都能检测到更多的漏洞,而所需的时间更短。具体来说,我们的方法在47个案例中有38个案例发现bug的速度更快,47个案例中有22个案例的速度至少提高了4倍。
{"title":"Efficient Detection of Thread Safety Violations via Coverage-Guided Generation of Concurrent Tests","authors":"Ankit Choudhary, Shan Lu, Michael Pradel","doi":"10.1109/ICSE.2017.32","DOIUrl":"https://doi.org/10.1109/ICSE.2017.32","url":null,"abstract":"As writing concurrent programs is challenging, developers often rely on thread-safe classes, which encapsulate most synchronization issues. Testing such classes is crucial to ensure the correctness of concurrent programs. An effective approach to uncover otherwise missed concurrency bugs is to automatically generate concurrent tests. Existing approaches either create tests randomly, which is inefficient, build on a computationally expensive analysis of potential concurrency bugs exposed by sequential tests, or focus on exposing a particular kind of concurrency bugs, such as atomicity violations. This paper presents CovCon, a coverage-guided approach to generate concurrent tests. The key idea is to measure how often pairs of methods have already been executed concurrently and to focus the test generation on infrequently or not at all covered pairs of methods. The approach is independent of any particular bug pattern, allowing it to find arbitrary concurrency bugs, and is computationally inexpensive, allowing it to generate many tests in short time. We apply CovCon to 18 thread-safe Java classes, and it detects concurrency bugs in 17 of them. Compared to five state of the art approaches, CovCon detects more bugs than any other approach while requiring less time. Specifically, our approach finds bugs faster in 38 of 47 cases, with speedups of at least 4x for 22 of 47 cases.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"3 1","pages":"266-277"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79280587","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 45
期刊
2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)
全部 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