首页 > 最新文献

2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)最新文献

英文 中文
Identifying the exact fixing actions of static rule violation 确定静态规则违反的确切修复操作
Hayatou Oumarou, N. Anquetil, Anne Etien, Stéphane Ducasse, D. T. Kolyang
We study good programming practices expressed in rules and detected by static analysis checkers such as PMD or FindBugs. To understand how violations to these rules are corrected and whether this can be automated, we need to identify in the source code where they appear and how they were fixed. This presents some similarities with research on understanding software bugs, their causes, their fixes, and how they could be avoided. The traditional method to identify how a bug or a rule violation were fixed consists in finding the commit that contains this fix and identifying what was changed in this commit. If the commit is small, all the lines changed are ascribed to the fixing of the rule violation or the bug. However, commits are not always atomic, and several fixes and even enhancements can be mixed in a single one (a large commit). In this case, it is impossible to detect which modifications contribute to which fix. In this paper, we are proposing a method that identifies precisely the modifications that are related to the correction of a rule violation. The same method could be applied to bug fixes, providing there is a test illustrating this bug. We validate our solution on a real world system and actual rules.
我们学习用规则表达的良好编程实践,并由静态分析检查器(如PMD或FindBugs)检测。为了理解对这些规则的违反是如何被纠正的,以及这是否可以自动化,我们需要在源代码中确定它们出现在哪里,以及它们是如何被修复的。这与理解软件bug、它们的原因、修复方法以及如何避免它们的研究有一些相似之处。确定错误或规则违反是如何修复的传统方法包括找到包含此修复的提交,并确定在此提交中更改了什么。如果提交很小,则所有更改的行都归因于对违反规则或错误的修复。然而,提交并不总是原子性的,几个修复甚至增强可以混合在一个(大提交)中。在这种情况下,不可能检测到哪些修改促成了哪些修复。在本文中,我们提出了一种方法,可以精确地识别与规则违反的纠正相关的修改。同样的方法可以应用于错误修复,只要有一个测试说明这个错误。我们在真实世界的系统和实际规则上验证我们的解决方案。
{"title":"Identifying the exact fixing actions of static rule violation","authors":"Hayatou Oumarou, N. Anquetil, Anne Etien, Stéphane Ducasse, D. T. Kolyang","doi":"10.1109/SANER.2015.7081847","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081847","url":null,"abstract":"We study good programming practices expressed in rules and detected by static analysis checkers such as PMD or FindBugs. To understand how violations to these rules are corrected and whether this can be automated, we need to identify in the source code where they appear and how they were fixed. This presents some similarities with research on understanding software bugs, their causes, their fixes, and how they could be avoided. The traditional method to identify how a bug or a rule violation were fixed consists in finding the commit that contains this fix and identifying what was changed in this commit. If the commit is small, all the lines changed are ascribed to the fixing of the rule violation or the bug. However, commits are not always atomic, and several fixes and even enhancements can be mixed in a single one (a large commit). In this case, it is impossible to detect which modifications contribute to which fix. In this paper, we are proposing a method that identifies precisely the modifications that are related to the correction of a rule violation. The same method could be applied to bug fixes, providing there is a test illustrating this bug. We validate our solution on a real world system and actual rules.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132150408","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Umple: A framework for Model Driven Development of Object-Oriented Systems 示例:面向对象系统的模型驱动开发框架
Miguel Garzón, Hamoud Aljamaan, T. Lethbridge
Huge benefits are gained when Model Driven Engineering are adopted to develop software systems. However, it remains a challenge for software modelers to embrace the MDE approach. In this paper, we present Umple, a framework for Model Driven Development in Object-Oriented Systems that can be used to generate entire software systems (Model Driven Forward Engineering) or to recover the models from existing software systems (Model Driven Reverse Engineering). Umple models are written using a friendly human-readable modeling notation seamlessly integrated with algorithmic code. In other words, we present a model-is-the-code approach, where developers are more likely to maintain and evolve the code as the system matures simply by the fact that both model and code are integrated as aspects of the same system. Finally, we demonstrate how the framework can be used to elaborate on solutions supporting different scenarios such as software modernization and program comprehension.
采用模型驱动工程技术开发软件系统,获得了巨大的效益。然而,对于软件建模者来说,接受MDE方法仍然是一个挑战。在本文中,我们提出了Umple,一个面向对象系统中模型驱动开发的框架,可用于生成整个软件系统(模型驱动正向工程)或从现有软件系统中恢复模型(模型驱动逆向工程)。示例模型是使用友好的人类可读的建模符号与算法代码无缝集成编写的。换句话说,我们提出了一个模型即代码的方法,在这个方法中,随着系统的成熟,开发人员更有可能维护和发展代码,因为模型和代码都是作为同一个系统的各个方面集成在一起的。最后,我们将演示如何使用框架来详细说明支持不同场景的解决方案,例如软件现代化和程序理解。
{"title":"Umple: A framework for Model Driven Development of Object-Oriented Systems","authors":"Miguel Garzón, Hamoud Aljamaan, T. Lethbridge","doi":"10.1109/SANER.2015.7081863","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081863","url":null,"abstract":"Huge benefits are gained when Model Driven Engineering are adopted to develop software systems. However, it remains a challenge for software modelers to embrace the MDE approach. In this paper, we present Umple, a framework for Model Driven Development in Object-Oriented Systems that can be used to generate entire software systems (Model Driven Forward Engineering) or to recover the models from existing software systems (Model Driven Reverse Engineering). Umple models are written using a friendly human-readable modeling notation seamlessly integrated with algorithmic code. In other words, we present a model-is-the-code approach, where developers are more likely to maintain and evolve the code as the system matures simply by the fact that both model and code are integrated as aspects of the same system. Finally, we demonstrate how the framework can be used to elaborate on solutions supporting different scenarios such as software modernization and program comprehension.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124870335","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
Misery loves company: CrowdStacking traces to aid problem detection 祸不单行:CrowdStacking追踪帮助发现问题
Tommaso Dal Sasso, Andrea Mocci, Michele Lanza
During software development, exceptions are by no means exceptional: Programmers repeatedly try and test their code to ensure that it works as expected. While doing so, runtime exceptions are raised, pointing out various issues, such as inappropriate usage of an API, convoluted code, as well as defects. Such failures result in stack traces, lists composed of the sequence of method invocations that led to the interruption of the program. Stack traces are useful to debug source code, and if shared also enhance the quality of bug reports. However, they are handled manually and individually, while we argue that they can be leveraged automatically and collectively to enable what we call crowdstacking, the automated collection of stack traces on the scale of a whole development community. We present our crowdstacking approach, supported by Shore-Line Reporter, a tool which seamlessly collects stack traces during program development and execution and stores them on a central repository. We illustrate how thousands of stack traces stemming from the IDEs of several developers can be leveraged to identify common hot spots in the code that are involved in failures, using this knowledge to retrieve relevant and related bug reports and to provide an effective, instant context of the problem to the developer.
在软件开发过程中,异常绝不是例外:程序员反复尝试和测试他们的代码,以确保它按预期工作。在此过程中,会引发运行时异常,指出各种问题,例如API的不当使用、复杂的代码以及缺陷。这样的失败会导致堆栈跟踪,堆栈跟踪是由导致程序中断的方法调用序列组成的列表。堆栈跟踪对调试源代码很有用,如果共享,还可以提高bug报告的质量。然而,它们是手动和单独处理的,而我们认为它们可以自动和集体地利用,以实现我们所说的“众堆”,即在整个开发社区的规模上自动收集堆栈跟踪。我们展示了我们的众包方法,由Shore-Line Reporter支持,这是一个在程序开发和执行期间无缝收集堆栈跟踪并将其存储在中央存储库中的工具。我们说明了如何利用来自几个开发人员的ide的数千个堆栈跟踪来识别涉及故障的代码中的常见热点,使用这些知识来检索相关的和相关的错误报告,并为开发人员提供一个有效的、即时的问题上下文。
{"title":"Misery loves company: CrowdStacking traces to aid problem detection","authors":"Tommaso Dal Sasso, Andrea Mocci, Michele Lanza","doi":"10.1109/SANER.2015.7081823","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081823","url":null,"abstract":"During software development, exceptions are by no means exceptional: Programmers repeatedly try and test their code to ensure that it works as expected. While doing so, runtime exceptions are raised, pointing out various issues, such as inappropriate usage of an API, convoluted code, as well as defects. Such failures result in stack traces, lists composed of the sequence of method invocations that led to the interruption of the program. Stack traces are useful to debug source code, and if shared also enhance the quality of bug reports. However, they are handled manually and individually, while we argue that they can be leveraged automatically and collectively to enable what we call crowdstacking, the automated collection of stack traces on the scale of a whole development community. We present our crowdstacking approach, supported by Shore-Line Reporter, a tool which seamlessly collects stack traces during program development and execution and stores them on a central repository. We illustrate how thousands of stack traces stemming from the IDEs of several developers can be leveraged to identify common hot spots in the code that are involved in failures, using this knowledge to retrieve relevant and related bug reports and to provide an effective, instant context of the problem to the developer.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126077920","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
Library functions identification in binary code by using graph isomorphism testings 用图同构测试识别二进制代码中的库函数
Jing Qiu, Xiaohong Su, Peijun Ma
Library functions identification is a key technique in reverse engineering. Discontinuity and polymorphism of inline and optimized library functions in binary code create a difficult challenge for library functions identification. To solve this problem, a novel approach is developed to identify library functions. First, we introduce execution dependence graphs (EDGs) to describe the behavior characteristics of binary code. Then, by finding similar EDG subgraphs in target functions, we identify both full and inline library functions. Experimental results from the prototype tool show that the proposed method is not only capable of identifying inline functions but is also more efficient and precise than the current methods for identifying full library functions.
库函数识别是逆向工程中的一项关键技术。二进制代码中内联和优化库函数的不连续和多态给库函数的识别带来了难题。为了解决这一问题,本文提出了一种新的库函数识别方法。首先,我们引入执行依赖图(edg)来描述二进制代码的行为特征。然后,通过在目标函数中找到相似的EDG子图,我们确定了完整库函数和内联库函数。原型工具的实验结果表明,该方法不仅能够识别内联函数,而且比现有的识别全库函数的方法更高效、更精确。
{"title":"Library functions identification in binary code by using graph isomorphism testings","authors":"Jing Qiu, Xiaohong Su, Peijun Ma","doi":"10.1109/SANER.2015.7081836","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081836","url":null,"abstract":"Library functions identification is a key technique in reverse engineering. Discontinuity and polymorphism of inline and optimized library functions in binary code create a difficult challenge for library functions identification. To solve this problem, a novel approach is developed to identify library functions. First, we introduce execution dependence graphs (EDGs) to describe the behavior characteristics of binary code. Then, by finding similar EDG subgraphs in target functions, we identify both full and inline library functions. Experimental results from the prototype tool show that the proposed method is not only capable of identifying inline functions but is also more efficient and precise than the current methods for identifying full library functions.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116372355","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}
引用次数: 24
Does JavaScript software embrace classes? JavaScript软件包含类吗?
Leonardo Humberto Silva, Miguel Ramos, M. T. Valente, Alexandre Bergel, N. Anquetil
JavaScript is the de facto programming language for the Web. It is used to implement mail clients, office applications, or IDEs, that can weight hundreds of thousands of lines of code. The language itself is prototype based, but to master the complexity of their application, practitioners commonly rely on informal class abstractions. This practice has never been the target of empirical research in JavaScript. Yet, understanding it is key to adequately tuning programming environments and structure libraries such that they are accessible to programmers. In this paper we report on a large and in-depth study to understand how class emulation is employed in JavaScript applications. We propose a strategy to statically detect class-based abstractions in the source code of JavaScript systems. We used this strategy in a dataset of 50 popular JavaScript applications available from GitHub. We found four types of JavaScript software: class-free (systems that do not make any usage of classes), class-aware (systems that use classes, but marginally), class-friendly (systems that make a relevant usage of classes), and class-oriented (systems that have most of their data structures implemented as classes). The systems in these categories represent, respectively, 26%, 36%, 30%, and 8% of the systems we studied.
JavaScript实际上是Web的编程语言。它用于实现邮件客户端、办公应用程序或ide,这些应用程序可能包含数十万行代码。语言本身是基于原型的,但是为了掌握其应用程序的复杂性,从业者通常依赖于非正式的类抽象。这种实践从来都不是JavaScript实证研究的目标。然而,理解它是充分调优编程环境和结构库的关键,以便程序员可以访问它们。在本文中,我们报告了一项大型而深入的研究,以了解如何在JavaScript应用程序中使用类模拟。我们提出了一种在JavaScript系统的源代码中静态检测基于类的抽象的策略。我们在GitHub提供的50个流行JavaScript应用程序的数据集中使用了这种策略。我们发现了四种类型的JavaScript软件:无类(不使用任何类的系统)、类感知(使用类的系统,但很少使用类)、类友好(相关使用类的系统)和面向类(将大部分数据结构实现为类的系统)。这些类别中的系统分别占我们所研究系统的26%、36%、30%和8%。
{"title":"Does JavaScript software embrace classes?","authors":"Leonardo Humberto Silva, Miguel Ramos, M. T. Valente, Alexandre Bergel, N. Anquetil","doi":"10.1109/SANER.2015.7081817","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081817","url":null,"abstract":"JavaScript is the de facto programming language for the Web. It is used to implement mail clients, office applications, or IDEs, that can weight hundreds of thousands of lines of code. The language itself is prototype based, but to master the complexity of their application, practitioners commonly rely on informal class abstractions. This practice has never been the target of empirical research in JavaScript. Yet, understanding it is key to adequately tuning programming environments and structure libraries such that they are accessible to programmers. In this paper we report on a large and in-depth study to understand how class emulation is employed in JavaScript applications. We propose a strategy to statically detect class-based abstractions in the source code of JavaScript systems. We used this strategy in a dataset of 50 popular JavaScript applications available from GitHub. We found four types of JavaScript software: class-free (systems that do not make any usage of classes), class-aware (systems that use classes, but marginally), class-friendly (systems that make a relevant usage of classes), and class-oriented (systems that have most of their data structures implemented as classes). The systems in these categories represent, respectively, 26%, 36%, 30%, and 8% of the systems we studied.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"50 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116824224","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 19
Towards a framework for automatic correction of anti-patterns 建立一个自动纠正反模式的框架
Rodrigo Morales
One of the biggest concerns in software maintenance is design quality; poor design hinders software maintenance and evolution. One way to improve design quality is to detect and correct anti-patterns (i.e., poor solutions to design and implementation problems), for example through refactorings. There are several approaches to detect anti-patterns, that rely on metrics and structural properties. However, finding a specific solution to remove anti-patterns is a challenging task as candidate refactorings can be conflicting and their number very large, making it costly. Hence, development teams often have to prioritize the refactorings to be applied on a system. In addition to this, refactoring is risky, since non-experienced developers can change the behaviour of a system, without a comprehensive test suite. Therefore, there is a need for tools that can automatically remove anti-patterns. We will apply meta-heuristics to propose a technique for automated refactoring that improves design quality.
软件维护中最大的关注点之一是设计质量;糟糕的设计阻碍了软件的维护和发展。提高设计质量的一种方法是检测并纠正反模式(即设计和实现问题的糟糕解决方案),例如通过重构。有几种检测反模式的方法,它们依赖于度量和结构属性。然而,找到一个特定的解决方案来删除反模式是一项具有挑战性的任务,因为候选重构可能是相互冲突的,而且它们的数量非常大,这使得它的成本很高。因此,开发团队通常必须对要应用于系统的重构进行优先排序。除此之外,重构是有风险的,因为没有经验的开发人员可以在没有全面测试套件的情况下改变系统的行为。因此,需要能够自动删除反模式的工具。我们将运用元启发式提出一种自动化重构技术,以提高设计质量。
{"title":"Towards a framework for automatic correction of anti-patterns","authors":"Rodrigo Morales","doi":"10.1109/SANER.2015.7081891","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081891","url":null,"abstract":"One of the biggest concerns in software maintenance is design quality; poor design hinders software maintenance and evolution. One way to improve design quality is to detect and correct anti-patterns (i.e., poor solutions to design and implementation problems), for example through refactorings. There are several approaches to detect anti-patterns, that rely on metrics and structural properties. However, finding a specific solution to remove anti-patterns is a challenging task as candidate refactorings can be conflicting and their number very large, making it costly. Hence, development teams often have to prioritize the refactorings to be applied on a system. In addition to this, refactoring is risky, since non-experienced developers can change the behaviour of a system, without a comprehensive test suite. Therefore, there is a need for tools that can automatically remove anti-patterns. We will apply meta-heuristics to propose a technique for automated refactoring that improves design quality.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115063053","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}
引用次数: 3
Understanding developers' natural language queries with interactive clarification 通过交互式澄清理解开发人员的自然语言查询
Shihai Jiang, Liwei Shen, Xin Peng, Zhaojin Lv, Wenyun Zhao
When performing software maintenance tasks, developers often need to understand a series of background knowledge based on information distributed in different software repositories such as source codes, version control systems and bug tracking systems. An effective way to support developers to understand such knowledge is to provide an integrated knowledge base and allow them to ask questions using natural language. Existing approaches cannot well support natural language questions that involve a series of conceptual relationships and are phrased in a flexible way. In this paper, we propose an interactive approach for understanding developers' natural language queries. The approach can understand a developer's natural language questions phrased in different ways by generating a set of ranked and human-readable candidate questions and getting feedback from the developer. Based on the candidate question confirmed by the developer, the approach can then synthesize an answer by constructing and executing a structural query to the knowledge base. We have implemented a tool following the proposed approach and conducted a user study using the tool. The results show that our approach can help developers get the desired answers more easily and accurately.
在执行软件维护任务时,开发人员通常需要了解一系列基于分布在不同软件存储库(如源代码、版本控制系统和bug跟踪系统)中的信息的背景知识。支持开发人员理解这些知识的有效方法是提供一个集成的知识库,并允许他们使用自然语言提出问题。现有的方法不能很好地支持涉及一系列概念关系和以灵活方式表达的自然语言问题。在本文中,我们提出了一种交互式方法来理解开发人员的自然语言查询。该方法可以通过生成一组排序的、人类可读的候选问题,并从开发人员那里获得反馈,从而理解以不同方式表达的开发人员的自然语言问题。基于开发人员确认的候选问题,该方法可以通过构造和执行对知识库的结构化查询来合成答案。我们已经按照建议的方法实现了一个工具,并使用该工具进行了用户研究。结果表明,我们的方法可以帮助开发人员更容易、更准确地获得所需的答案。
{"title":"Understanding developers' natural language queries with interactive clarification","authors":"Shihai Jiang, Liwei Shen, Xin Peng, Zhaojin Lv, Wenyun Zhao","doi":"10.1109/SANER.2015.7081811","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081811","url":null,"abstract":"When performing software maintenance tasks, developers often need to understand a series of background knowledge based on information distributed in different software repositories such as source codes, version control systems and bug tracking systems. An effective way to support developers to understand such knowledge is to provide an integrated knowledge base and allow them to ask questions using natural language. Existing approaches cannot well support natural language questions that involve a series of conceptual relationships and are phrased in a flexible way. In this paper, we propose an interactive approach for understanding developers' natural language queries. The approach can understand a developer's natural language questions phrased in different ways by generating a set of ranked and human-readable candidate questions and getting feedback from the developer. Based on the candidate question confirmed by the developer, the approach can then synthesize an answer by constructing and executing a structural query to the knowledge base. We have implemented a tool following the proposed approach and conducted a user study using the tool. The results show that our approach can help developers get the desired answers more easily and accurately.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124409994","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}
引用次数: 3
Trusting a library: A study of the latency to adopt the latest Maven release 信任库:采用最新Maven版本的延迟研究
R. Kula, D. Germán, T. Ishio, Katsuro Inoue
With the popularity of open source library (re)use in both industrial and open source settings, `trust' plays vital role in third-party library adoption. Trust involves the assumption of both functional and non-functional correctness. Even with the aid of dependency management build tools such as Maven and Gradle, research have still found a latency to trust the latest release of a library. In this paper, we investigate the trust of OSS libraries. Our study of 6,374 systems in Maven Super Repository suggests that 82% of systems are more trusting of adopting the latest library release to existing systems. We uncover the impact of maven on latent and trusted library adoptions.
随着开源库在工业和开源环境中的流行,“信任”在第三方库的采用中起着至关重要的作用。信任涉及功能正确性和非功能正确性的假设。即使有依赖管理构建工具(如Maven和Gradle)的帮助,研究仍然发现信任库的最新版本存在延迟。本文研究了开源软件库的信任问题。我们对Maven超级存储库中的6374个系统的研究表明,82%的系统更信任对现有系统采用最新的库版本。我们揭示了maven对潜在库和可信库采用的影响。
{"title":"Trusting a library: A study of the latency to adopt the latest Maven release","authors":"R. Kula, D. Germán, T. Ishio, Katsuro Inoue","doi":"10.1109/SANER.2015.7081869","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081869","url":null,"abstract":"With the popularity of open source library (re)use in both industrial and open source settings, `trust' plays vital role in third-party library adoption. Trust involves the assumption of both functional and non-functional correctness. Even with the aid of dependency management build tools such as Maven and Gradle, research have still found a latency to trust the latest release of a library. In this paper, we investigate the trust of OSS libraries. Our study of 6,374 systems in Maven Super Repository suggests that 82% of systems are more trusting of adopting the latest library release to existing systems. We uncover the impact of maven on latent and trusted library adoptions.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"67 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133062242","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
JCHARMING: A bug reproduction approach using crash traces and directed model checking JCHARMING:使用崩溃跟踪和定向模型检查的bug再现方法
Mathieu Nayrolles, A. Hamou-Lhadj, S. Tahar, Alf Larsson
Due to their inherent complexity, software systems are pledged to be released with bugs. These bugs manifest themselves on client's computers, causing crashes and undesired behaviors. Field crashes, in particular, are challenging to understand and fix as the information provided by the impacted customers are often scarce and inaccurate. To address this issue, there is a need to find ways for automatically reproducing the crash in a lab environment in order to fully understand its root causes. Crash reproduction is also an important step towards developing adequate patches. In this paper, we propose a novel crash reproduction approach, called JCHARMING (Java CrasH Automatic Reproduction by directed Model checkING). JCHARMING uses crash traces and model checking to identify program statements needed to reproduce a crash. Our approach takes advantage of the completeness provided by model checking while ignoring unneeded system states by means of information found in crash traces combined with static slices. We show the effectiveness of JCHARMING by applying it to seven different open source programs cumulating more than one million lines of code scattered in around 7000 classes. Overall, JCHARMING was able to reproduce 85% of the submitted bugs.
由于其固有的复杂性,软件系统被承诺在发布时带有错误。这些错误在客户的计算机上表现出来,导致崩溃和不希望的行为。由于受影响的客户提供的信息通常是稀缺和不准确的,因此现场崩溃尤其难以理解和修复。为了解决这个问题,需要找到在实验室环境中自动重现崩溃的方法,以便完全了解其根本原因。崩溃再现也是开发适当补丁的重要一步。在本文中,我们提出了一种新的崩溃再现方法,称为JCHARMING(通过定向模型检查的Java崩溃自动再现)。JCHARMING使用崩溃跟踪和模型检查来识别重现崩溃所需的程序语句。我们的方法利用了模型检查提供的完整性,同时通过在崩溃跟踪中发现的信息与静态切片相结合,忽略了不需要的系统状态。我们通过将JCHARMING应用于七个不同的开源程序来展示它的有效性,这些程序累积了分布在大约7000个类中的100多万行代码。总的来说,JCHARMING能够重现85%的提交bug。
{"title":"JCHARMING: A bug reproduction approach using crash traces and directed model checking","authors":"Mathieu Nayrolles, A. Hamou-Lhadj, S. Tahar, Alf Larsson","doi":"10.1109/SANER.2015.7081820","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081820","url":null,"abstract":"Due to their inherent complexity, software systems are pledged to be released with bugs. These bugs manifest themselves on client's computers, causing crashes and undesired behaviors. Field crashes, in particular, are challenging to understand and fix as the information provided by the impacted customers are often scarce and inaccurate. To address this issue, there is a need to find ways for automatically reproducing the crash in a lab environment in order to fully understand its root causes. Crash reproduction is also an important step towards developing adequate patches. In this paper, we propose a novel crash reproduction approach, called JCHARMING (Java CrasH Automatic Reproduction by directed Model checkING). JCHARMING uses crash traces and model checking to identify program statements needed to reproduce a crash. Our approach takes advantage of the completeness provided by model checking while ignoring unneeded system states by means of information found in crash traces combined with static slices. We show the effectiveness of JCHARMING by applying it to seven different open source programs cumulating more than one million lines of code scattered in around 7000 classes. Overall, JCHARMING was able to reproduce 85% of the submitted bugs.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132873379","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
amAssist: In-IDE ambient search of online programming resources 在ide环境中搜索在线编程资源
HongWei Li, Xuejiao Zhao, Zhenchang Xing, Lingfeng Bao, Xin Peng, Dongjing Gao, Wenyun Zhao
Developers work in the IDE, but search online resources in the web browser. The separation of the working and search context often cause the ignorance of the working context during online search. Several tools have been proposed to integrate the web browser into the IDE so that developers can search and use online resources directly in the IDE. These tools enable only the shallow integration of the web browser and the IDE. Some tools allow the developer to augment search queries with program entities in the current snapshot of the code. In this paper, we present an in-IDE ambient search agent to bridge the separation of the developer's working context and search context. Our approach considers the developers' working context in the IDE as a time-series stream of programming event observed from the developer's interaction with the IDE over time. It supports the deeper integration of the working context in the entire search process from query formulation, custom search, to search results refinement and representation. We have implemented our ambient search agent and integrate it into the Eclipse IDE. We conducted a user study to evaluate our approach and the tool support. Our evaluation shows that our ambient search agent can better aid developers in searching and using online programming resources while working in the IDE.
开发人员在IDE中工作,但在web浏览器中搜索在线资源。工作语境和搜索语境的分离往往会导致在线搜索过程中对工作语境的忽视。已经提出了几个工具来将web浏览器集成到IDE中,以便开发人员可以直接在IDE中搜索和使用在线资源。这些工具只支持web浏览器和IDE的浅层集成。一些工具允许开发人员在代码的当前快照中使用程序实体来增加搜索查询。在本文中,我们提出了一个ide环境搜索代理,以弥合开发人员的工作环境和搜索环境的分离。我们的方法将开发人员在IDE中的工作环境视为从开发人员与IDE的交互中观察到的编程事件的时间序列流。它支持在从查询公式、自定义搜索到搜索结果细化和表示的整个搜索过程中更深层次地集成工作上下文。我们已经实现了环境搜索代理并将其集成到Eclipse IDE中。我们进行了一项用户研究,以评估我们的方法和工具支持。我们的评估表明,我们的环境搜索代理可以更好地帮助开发人员在IDE中工作时搜索和使用在线编程资源。
{"title":"amAssist: In-IDE ambient search of online programming resources","authors":"HongWei Li, Xuejiao Zhao, Zhenchang Xing, Lingfeng Bao, Xin Peng, Dongjing Gao, Wenyun Zhao","doi":"10.1109/SANER.2015.7081849","DOIUrl":"https://doi.org/10.1109/SANER.2015.7081849","url":null,"abstract":"Developers work in the IDE, but search online resources in the web browser. The separation of the working and search context often cause the ignorance of the working context during online search. Several tools have been proposed to integrate the web browser into the IDE so that developers can search and use online resources directly in the IDE. These tools enable only the shallow integration of the web browser and the IDE. Some tools allow the developer to augment search queries with program entities in the current snapshot of the code. In this paper, we present an in-IDE ambient search agent to bridge the separation of the developer's working context and search context. Our approach considers the developers' working context in the IDE as a time-series stream of programming event observed from the developer's interaction with the IDE over time. It supports the deeper integration of the working context in the entire search process from query formulation, custom search, to search results refinement and representation. We have implemented our ambient search agent and integrate it into the Eclipse IDE. We conducted a user study to evaluate our approach and the tool support. Our evaluation shows that our ambient search agent can better aid developers in searching and using online programming resources while working in the IDE.","PeriodicalId":355949,"journal":{"name":"2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)","volume":"194 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-03-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114737447","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
期刊
2015 IEEE 22nd International Conference on Software Analysis, Evolution, and Reengineering (SANER)
全部 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