首页 > 最新文献

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

英文 中文
Automated Refactoring of Legacy Java Software to Default Methods 遗留Java软件到默认方法的自动重构
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.16
Raffi Khatchadourian, H. Masuhara
Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive rule set that covers various corner-cases where default methods cannot be used. To demonstrate applicability, we implemented our approach as an Eclipse plug-in and applied it to 19 real-world Java projects, as well as submitted pull requests to popular GitHub repositories. The indication is that it is useful in migrating skeletal implementation methods to interfaces as default methods, sheds light onto the pattern's usage, and provides insight to language designers on how this new construct applies to existing software.
Java 8默认方法允许接口包含(实例)方法实现,对于框架实现软件设计模式非常有用。然而,将现有软件转换为利用默认方法并不容易,因为它需要分析复杂的类型层次结构,解决多个实现继承问题,协调类方法和接口方法之间的差异,并通过重写类方法分析tie-breakers(调度优先级)以保持类型正确性并确认语义保留。在本文中,我们提出了一种高效、全自动、基于类型约束的重构方法,帮助开发人员利用其遗留Java软件的增强接口。该方法具有广泛的规则集,涵盖了不能使用默认方法的各种极端情况。为了演示适用性,我们将方法实现为Eclipse插件,并将其应用于19个真实的Java项目,以及向流行的GitHub存储库提交拉取请求。这表明,它在将框架实现方法作为默认方法迁移到接口时很有用,阐明了模式的用法,并为语言设计者提供了关于如何将这种新结构应用于现有软件的见解。
{"title":"Automated Refactoring of Legacy Java Software to Default Methods","authors":"Raffi Khatchadourian, H. Masuhara","doi":"10.1109/ICSE.2017.16","DOIUrl":"https://doi.org/10.1109/ICSE.2017.16","url":null,"abstract":"Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive rule set that covers various corner-cases where default methods cannot be used. To demonstrate applicability, we implemented our approach as an Eclipse plug-in and applied it to 19 real-world Java projects, as well as submitted pull requests to popular GitHub repositories. The indication is that it is useful in migrating skeletal implementation methods to interfaces as default methods, sheds light onto the pattern's usage, and provides insight to language designers on how this new construct applies to existing software.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"16 10 1","pages":"82-93"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83497206","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 15
PEoPL: Projectional Editing of Product Lines 人物:产品线投影编辑
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.58
B. Behringer, Jochen Palz, T. Berger
The features of a software product line—a portfolio of system variants—can be realized using various implementation techniques (a. k. a., variability mechanisms). Each technique represents the software artifacts of features differently, typically classified into annotative (e.g., C preprocessor) and modular representations (e.g., feature modules), each with distinct advantages and disadvantages. Annotative representations are easy to realize, but annotations clutter source code and hinder program comprehension. Modular representations support comprehension, but are difficult to realize. Most importantly, to engineer feature artifacts, developers need to choose one representation and adhere to it for evolving and maintaining the same artifacts. We present PEoPL, an approach to combine the advantages of annotative and modular representations. When engineering a feature artifact, developers can choose the most-suited representation and even use different representations in parallel. PEoPL relies on separating a product line into an internal and external representation, the latter by providing editable projections used by the developers. We contribute a programming-language-independent internal representation of variability, five editable projections reflecting different variability representations, a supporting IDE, and a tailoring of PEoPL to Java. We evaluate PEoPL's expressiveness, scalability, and flexibility in eight Java-based product lines, finding that all can be realized, that projections are feasible, and that variant computation is fast (
软件产品线的特性——系统变体的组合——可以使用各种实现技术(也就是可变性机制)来实现。每种技术都以不同的方式表示功能的软件工件,通常分为注释表示(例如,C预处理器)和模块化表示(例如,功能模块),每种技术都具有不同的优点和缺点。注释表示很容易实现,但是注释使源代码混乱,妨碍程序理解。模块化表示支持理解,但难以实现。最重要的是,为了设计特性工件,开发人员需要选择一种表示,并坚持它来发展和维护相同的工件。我们提出了peoplel,一种结合注释表示和模块化表示优点的方法。当设计一个特性工件时,开发人员可以选择最适合的表示,甚至可以并行地使用不同的表示。peoplel依赖于将产品线划分为内部和外部表示,后者通过提供开发人员使用的可编辑投影来实现。我们提供了一个独立于编程语言的可变性内部表示,五个反映不同可变性表示的可编辑投影,一个支持IDE,以及一个针对Java的personl裁剪。我们在八个基于java的产品线中评估了peoplel的表达性、可伸缩性和灵活性,发现所有这些都可以实现,预测是可行的,并且变体计算速度很快(
{"title":"PEoPL: Projectional Editing of Product Lines","authors":"B. Behringer, Jochen Palz, T. Berger","doi":"10.1109/ICSE.2017.58","DOIUrl":"https://doi.org/10.1109/ICSE.2017.58","url":null,"abstract":"The features of a software product line—a portfolio of system variants—can be realized using various implementation techniques (a. k. a., variability mechanisms). Each technique represents the software artifacts of features differently, typically classified into annotative (e.g., C preprocessor) and modular representations (e.g., feature modules), each with distinct advantages and disadvantages. Annotative representations are easy to realize, but annotations clutter source code and hinder program comprehension. Modular representations support comprehension, but are difficult to realize. Most importantly, to engineer feature artifacts, developers need to choose one representation and adhere to it for evolving and maintaining the same artifacts. We present PEoPL, an approach to combine the advantages of annotative and modular representations. When engineering a feature artifact, developers can choose the most-suited representation and even use different representations in parallel. PEoPL relies on separating a product line into an internal and external representation, the latter by providing editable projections used by the developers. We contribute a programming-language-independent internal representation of variability, five editable projections reflecting different variability representations, a supporting IDE, and a tailoring of PEoPL to Java. We evaluate PEoPL's expressiveness, scalability, and flexibility in eight Java-based product lines, finding that all can be realized, that projections are feasible, and that variant computation is fast (","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"20 1","pages":"563-574"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78010615","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}
引用次数: 28
Machine Learning-Based Detection of Open Source License Exceptions 基于机器学习的开源许可证异常检测
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.19
Christopher Vendome, M. Vásquez, G. Bavota, M. D. Penta, D. Germán, D. Poshyvanyk
From a legal perspective, software licenses govern the redistribution, reuse, and modification of software as both source and binary code. Free and Open Source Software (FOSS) licenses vary in the degree to which they are permissive or restrictive in allowing redistribution or modification under licenses different from the original one(s). In certain cases, developers may modify the license by appending to it an exception to specifically allow reuse or modification under a particular condition. These exceptions are an important factor to consider for license compliance analysis since they modify the standard (and widely understood) terms of the original license. In this work, we first perform a large-scale empirical study on the change history of over 51K FOSS systems aimed at quantitatively investigating the prevalence of known license exceptions and identifying new ones. Subsequently, we performed a study on the detection of license exceptions by relying on machine learning. We evaluated the license exception classification with four different supervised learners and sensitivity analysis. Finally, we present a categorization of license exceptions and explain their implications.
从法律的角度来看,软件许可证管理软件作为源代码和二进制代码的再分发、重用和修改。自由和开放源码软件(FOSS)许可证在允许在不同于原始许可证下进行再分发或修改的程度上是允许的还是限制的。在某些情况下,开发人员可以通过附加例外来修改许可证,以明确允许在特定条件下重用或修改。这些例外是进行许可遵从性分析时要考虑的一个重要因素,因为它们修改了原始许可的标准(并且被广泛理解)条款。在这项工作中,我们首先对超过51K个自由/开源软件系统的变化历史进行了大规模的实证研究,旨在定量调查已知许可例外的流行程度并识别新的许可例外。随后,我们通过机器学习对许可证异常的检测进行了研究。我们用四种不同的监督学习器和敏感性分析来评估许可证例外分类。最后,我们给出了许可例外的分类并解释了它们的含义。
{"title":"Machine Learning-Based Detection of Open Source License Exceptions","authors":"Christopher Vendome, M. Vásquez, G. Bavota, M. D. Penta, D. Germán, D. Poshyvanyk","doi":"10.1109/ICSE.2017.19","DOIUrl":"https://doi.org/10.1109/ICSE.2017.19","url":null,"abstract":"From a legal perspective, software licenses govern the redistribution, reuse, and modification of software as both source and binary code. Free and Open Source Software (FOSS) licenses vary in the degree to which they are permissive or restrictive in allowing redistribution or modification under licenses different from the original one(s). In certain cases, developers may modify the license by appending to it an exception to specifically allow reuse or modification under a particular condition. These exceptions are an important factor to consider for license compliance analysis since they modify the standard (and widely understood) terms of the original license. In this work, we first perform a large-scale empirical study on the change history of over 51K FOSS systems aimed at quantitatively investigating the prevalence of known license exceptions and identifying new ones. Subsequently, we performed a study on the detection of license exceptions by relying on machine learning. We evaluated the license exception classification with four different supervised learners and sensitivity analysis. Finally, we present a categorization of license exceptions and explain their implications.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"136 1","pages":"118-129"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76377096","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}
引用次数: 28
Supporting Software Developers with a Holistic Recommender System 用整体推荐系统支持软件开发人员
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.17
Luca Ponzanelli, Simone Scalabrino, G. Bavota, Andrea Mocci, R. Oliveto, M. D. Penta, Michele Lanza
The promise of recommender systems is to provide intelligent support to developers during their programming tasks. Such support ranges from suggesting program entities to taking into account pertinent Q&A pages. However, current recommender systems limit the context analysis to change history and developers' activities in the IDE, without considering what a developer has already consulted or perused, e.g., by performing searches from the Web browser. Given the faceted nature of many programming tasks, and the incompleteness of the information provided by a single artifact, several heterogeneous resources are required to obtain the broader picture needed by a developer to accomplish a task. We present Libra, a holistic recommender system. It supports the process of searching and navigating the information needed by constructing a holistic meta-information model of the resources perused by a developer, analyzing their semantic relationships, and augmenting the web browser with a dedicated interactive navigation chart. The quantitative and qualitative evaluation of Libra provides evidence that a holistic analysis of a developer's information context can indeed offer comprehensive and contextualized support to information navigation and retrieval during software development.
推荐系统的承诺是在开发人员的编程任务期间为他们提供智能支持。这种支持的范围从建议程序实体到考虑相关的问答页面。然而,当前的推荐系统将上下文分析限制在更改IDE中的历史和开发人员的活动,而不考虑开发人员已经咨询或阅读的内容,例如,通过从Web浏览器执行搜索。考虑到许多编程任务的多面性,以及单个工件提供的信息的不完整性,需要几个异构资源来获得开发人员完成任务所需的更广泛的图像。我们提出Libra,一个全面的推荐系统。它通过构建开发人员所阅读的资源的整体元信息模型,分析它们的语义关系,并使用专用的交互式导航图来增强web浏览器,从而支持搜索和导航所需信息的过程。Libra的定量和定性评估证明,对开发人员信息上下文的整体分析确实可以为软件开发过程中的信息导航和检索提供全面和情境化的支持。
{"title":"Supporting Software Developers with a Holistic Recommender System","authors":"Luca Ponzanelli, Simone Scalabrino, G. Bavota, Andrea Mocci, R. Oliveto, M. D. Penta, Michele Lanza","doi":"10.1109/ICSE.2017.17","DOIUrl":"https://doi.org/10.1109/ICSE.2017.17","url":null,"abstract":"The promise of recommender systems is to provide intelligent support to developers during their programming tasks. Such support ranges from suggesting program entities to taking into account pertinent Q&A pages. However, current recommender systems limit the context analysis to change history and developers' activities in the IDE, without considering what a developer has already consulted or perused, e.g., by performing searches from the Web browser. Given the faceted nature of many programming tasks, and the incompleteness of the information provided by a single artifact, several heterogeneous resources are required to obtain the broader picture needed by a developer to accomplish a task. We present Libra, a holistic recommender system. It supports the process of searching and navigating the information needed by constructing a holistic meta-information model of the resources perused by a developer, analyzing their semantic relationships, and augmenting the web browser with a dedicated interactive navigation chart. The quantitative and qualitative evaluation of Libra provides evidence that a holistic analysis of a developer's information context can indeed offer comprehensive and contextualized support to information navigation and retrieval during software development.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"47 1","pages":"94-105"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76381865","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
On Cross-Stack Configuration Errors 关于跨堆栈配置错误
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.31
M. Sayagh, Noureddine Kerzazi, Bram Adams
Today's web applications are deployed on powerful software stacks such as MEAN (JavaScript) or LAMP (PHP), which consist of multiple layers such as an operating system, web server, database, execution engine and application framework, each of which provide resources to the layer just above it. These powerful software stacks unfortunately are plagued by so-called cross-stack configuration errors (CsCEs), where a higher layer in the stack suddenly starts to behave incorrectly or even crash due to incorrect configuration choices in lower layers. Due to differences in programming languages and lack of explicit links between configuration options of different layers, sysadmins and developers have a hard time identifying the cause of a CsCE, which is why this paper (1) performs a qualitative analysis of 1,082 configuration errors to understand the impact, effort and complexity of dealing with CsCEs, then (2) proposes a modular approach that plugs existing source code analysis (slicing) techniques, in order to recommend the culprit configuration option. Empirical evaluation of this approach on 36 real CsCEs of the top 3 LAMP stack layers shows that our approach reports the misconfigured option with an average rank of 2.18 for 32 of the CsCEs, and takes only few minutes, making it practically useful.
今天的web应用程序部署在强大的软件堆栈上,比如MEAN (JavaScript)或LAMP (PHP),它们由多个层组成,如操作系统、web服务器、数据库、执行引擎和应用程序框架,每个层都为其上面的层提供资源。不幸的是,这些强大的软件堆栈受到所谓的跨堆栈配置错误(csce)的困扰,其中堆栈中的较高层突然开始表现不正确,甚至由于较低层的错误配置选择而崩溃。由于编程语言的差异以及不同层的配置选项之间缺乏明确的联系,系统管理员和开发人员很难确定欧安会的原因,这就是为什么本文(1)对1,082个配置错误进行定性分析,以了解处理欧安会的影响、努力和复杂性,然后(2)提出一种模块化方法,该方法插入现有的源代码分析(切片)技术。为了推荐罪魁祸首配置选项。对LAMP堆栈前3层的36个实际cse的经验评估表明,我们的方法报告了32个cse的错误配置选项,平均排名为2.18,并且只需要几分钟,使其具有实际意义。
{"title":"On Cross-Stack Configuration Errors","authors":"M. Sayagh, Noureddine Kerzazi, Bram Adams","doi":"10.1109/ICSE.2017.31","DOIUrl":"https://doi.org/10.1109/ICSE.2017.31","url":null,"abstract":"Today's web applications are deployed on powerful software stacks such as MEAN (JavaScript) or LAMP (PHP), which consist of multiple layers such as an operating system, web server, database, execution engine and application framework, each of which provide resources to the layer just above it. These powerful software stacks unfortunately are plagued by so-called cross-stack configuration errors (CsCEs), where a higher layer in the stack suddenly starts to behave incorrectly or even crash due to incorrect configuration choices in lower layers. Due to differences in programming languages and lack of explicit links between configuration options of different layers, sysadmins and developers have a hard time identifying the cause of a CsCE, which is why this paper (1) performs a qualitative analysis of 1,082 configuration errors to understand the impact, effort and complexity of dealing with CsCEs, then (2) proposes a modular approach that plugs existing source code analysis (slicing) techniques, in order to recommend the culprit configuration option. Empirical evaluation of this approach on 36 real CsCEs of the top 3 LAMP stack layers shows that our approach reports the misconfigured option with an average rank of 2.18 for 32 of the CsCEs, and takes only few minutes, making it practically useful.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"243 1","pages":"255-265"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73863965","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
Analyzing APIs Documentation and Code to Detect Directive Defects 分析api文档和代码以检测指令缺陷
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.11
Yu Zhou, Ruihang Gu, Taolue Chen, Zhiqiu Huang, Sebastiano Panichella, H. Gall
Application Programming Interface (API) documents represent one of the most important references for API users. However, it is frequently reported that the documentation is inconsistent with the source code and deviates from the API itself. Such inconsistencies in the documents inevitably confuse the API users hampering considerably their API comprehension and the quality of software built from such APIs. In this paper, we propose an automated approach to detect defects of API documents by leveraging techniques from program comprehension and natural language processing. Particularly, we focus on the directives of the API documents which are related to parameter constraints and exception throwing declarations. A first-order logic based constraint solver is employed to detect such defects based on the obtained analysis results. We evaluate our approach on parts of well documented JDK 1.8 APIs. Experiment results show that, out of around 2000 API usage constraints, our approach can detect 1158 defective document directives, with a precision rate of 81.6%, and a recall rate of 82.0%, which demonstrates its practical feasibility.
应用程序编程接口(API)文档是API用户最重要的参考之一。然而,经常有报道说文档与源代码不一致,并且偏离了API本身。文档中的这种不一致不可避免地会让API用户感到困惑,这在很大程度上阻碍了他们对API的理解,也影响了基于这些API构建的软件的质量。在本文中,我们提出了一种自动化的方法,通过利用程序理解和自然语言处理技术来检测API文档的缺陷。我们特别关注API文档中与参数约束和异常抛出声明相关的指令。利用基于一阶逻辑的约束解算器对缺陷进行检测。我们用部分文档完备的JDK 1.8 api来评估我们的方法。实验结果表明,在约2000个API使用约束条件下,该方法可以检测出1158个缺陷文档指令,准确率为81.6%,召回率为82.0%,证明了该方法的实际可行性。
{"title":"Analyzing APIs Documentation and Code to Detect Directive Defects","authors":"Yu Zhou, Ruihang Gu, Taolue Chen, Zhiqiu Huang, Sebastiano Panichella, H. Gall","doi":"10.1109/ICSE.2017.11","DOIUrl":"https://doi.org/10.1109/ICSE.2017.11","url":null,"abstract":"Application Programming Interface (API) documents represent one of the most important references for API users. However, it is frequently reported that the documentation is inconsistent with the source code and deviates from the API itself. Such inconsistencies in the documents inevitably confuse the API users hampering considerably their API comprehension and the quality of software built from such APIs. In this paper, we propose an automated approach to detect defects of API documents by leveraging techniques from program comprehension and natural language processing. Particularly, we focus on the directives of the API documents which are related to parameter constraints and exception throwing declarations. A first-order logic based constraint solver is employed to detect such defects based on the obtained analysis results. We evaluate our approach on parts of well documented JDK 1.8 APIs. Experiment results show that, out of around 2000 API usage constraints, our approach can detect 1158 defective document directives, with a precision rate of 81.6%, and a recall rate of 82.0%, which demonstrates its practical feasibility.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"11 1","pages":"27-37"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85431061","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}
引用次数: 101
From Diversity by Numbers to Diversity as Process: Supporting Inclusiveness in Software Development Teams with Brainstorming 从数字多样性到过程多样性:用头脑风暴支持软件开发团队的包容性
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.22
Anna Filippova, E. Trainer, J. Herbsleb
Negative experiences in diverse software development teams have the potential to turn off minority participants from future team-based software development activity. We examine the use of brainstorming as one concrete team processes that may be used to improve the satisfaction of minority developers when working in a group. Situating our study in time-intensive hackathon-like environments where engagement of all team members is particularly crucial, we use a combination of survey and interview data to test our propositions. We find that brainstorming strategies are particularly effective for team members who identify as minorities, and support satisfaction with both the process and outcomes of teamwork through different mechanisms.
在不同的软件开发团队中的消极经历有可能使少数参与者从未来的基于团队的软件开发活动中退出。我们研究了头脑风暴作为一个具体的团队过程的使用,它可以用来提高少数开发人员在团队中工作时的满意度。将我们的研究置于时间密集的黑客马拉松式环境中,在这种环境中,所有团队成员的参与尤为重要,我们使用调查和访谈数据相结合的方法来验证我们的主张。我们发现,头脑风暴策略对认同为少数群体的团队成员特别有效,并通过不同的机制支持对团队合作过程和结果的满意度。
{"title":"From Diversity by Numbers to Diversity as Process: Supporting Inclusiveness in Software Development Teams with Brainstorming","authors":"Anna Filippova, E. Trainer, J. Herbsleb","doi":"10.1109/ICSE.2017.22","DOIUrl":"https://doi.org/10.1109/ICSE.2017.22","url":null,"abstract":"Negative experiences in diverse software development teams have the potential to turn off minority participants from future team-based software development activity. We examine the use of brainstorming as one concrete team processes that may be used to improve the satisfaction of minority developers when working in a group. Situating our study in time-intensive hackathon-like environments where engagement of all team members is particularly crucial, we use a combination of survey and interview data to test our propositions. We find that brainstorming strategies are particularly effective for team members who identify as minorities, and support satisfaction with both the process and outcomes of teamwork through different mechanisms.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"49 1","pages":"152-163"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88941779","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}
引用次数: 52
Characterizing and Detecting Anti-Patterns in the Logging Code 日志代码中反模式的表征和检测
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.15
Boyuan Chen, Z. Jiang
Snippets of logging code are output statements (e.g., LOG.info or System.out.println) that developers insert into a software system. Although more logging code can provide more execution context of the system's behavior during runtime, it is undesirable to instrument the system with too much logging code due to maintenance overhead. Furthermore, excessive logging may cause unexpected side-effects like performance slow-down or high disk I/O bandwidth. Recent studies show that there are no well-defined coding guidelines for performing effective logging. Previous research on the logging code mainly tackles the problems of where-to-log and what-to-log. There are very few works trying to address the problem of how-to-log (developing and maintaining high-quality logging code). In this paper, we study the problem of how-to-log by characterizing and detecting the anti-patterns in the logging code. As the majority of the logging code is evolved together with the feature code, the remaining set of logging code changes usually contains the fixes to the anti-patterns. We have manually examined 352 pairs of independently changed logging code snippets from three well-maintenance open source systems: ActiveMQ, Hadoop and Maven. Our analysis has resulted in six different anti-patterns in the logging code. To demonstrate the value of our findings, we have encoded these anti-patterns into a static code analysis tool, LCAnalyzer. Case studies show that LCAnalyzer has an average recall of 95% and precision of 60% and can be used to automatically detect previously unknown anti-patterns in the source code. To gather feedback, we have filed 64 representative instances of the logging code anti-patterns from the most recent releases of ten open source software systems. Among them, 46 instances (72%) have already been accepted by their developers.
日志代码片段是开发人员插入到软件系统中的输出语句(例如,LOG.info或system. out.println)。虽然更多的日志代码可以在运行时提供更多的系统行为的执行上下文,但由于维护开销,不希望使用太多的日志代码来检测系统。此外,过多的日志记录可能会导致意想不到的副作用,如性能下降或磁盘I/O带宽高。最近的研究表明,没有定义良好的编码准则来执行有效的日志记录。以往对日志代码的研究主要是解决在哪里记录和记录什么内容的问题。很少有作品试图解决如何记录日志的问题(开发和维护高质量的日志代码)。本文通过对日志代码中的反模式进行表征和检测,研究如何进行日志记录的问题。由于大多数日志代码与特性代码一起演进,其余的日志代码变更通常包含对反模式的修复。我们手工检查了来自三个维护良好的开源系统(ActiveMQ、Hadoop和Maven)的352对独立更改的日志代码片段。我们的分析在日志代码中产生了六种不同的反模式。为了演示我们的发现的价值,我们将这些反模式编码到静态代码分析工具LCAnalyzer中。案例研究表明,LCAnalyzer的平均召回率为95%,精度为60%,可用于自动检测源代码中以前未知的反模式。为了收集反馈,我们从10个开源软件系统的最新版本中整理了64个具有代表性的日志代码反模式实例。其中,46个实例(72%)已经被开发人员接受。
{"title":"Characterizing and Detecting Anti-Patterns in the Logging Code","authors":"Boyuan Chen, Z. Jiang","doi":"10.1109/ICSE.2017.15","DOIUrl":"https://doi.org/10.1109/ICSE.2017.15","url":null,"abstract":"Snippets of logging code are output statements (e.g., LOG.info or System.out.println) that developers insert into a software system. Although more logging code can provide more execution context of the system's behavior during runtime, it is undesirable to instrument the system with too much logging code due to maintenance overhead. Furthermore, excessive logging may cause unexpected side-effects like performance slow-down or high disk I/O bandwidth. Recent studies show that there are no well-defined coding guidelines for performing effective logging. Previous research on the logging code mainly tackles the problems of where-to-log and what-to-log. There are very few works trying to address the problem of how-to-log (developing and maintaining high-quality logging code). In this paper, we study the problem of how-to-log by characterizing and detecting the anti-patterns in the logging code. As the majority of the logging code is evolved together with the feature code, the remaining set of logging code changes usually contains the fixes to the anti-patterns. We have manually examined 352 pairs of independently changed logging code snippets from three well-maintenance open source systems: ActiveMQ, Hadoop and Maven. Our analysis has resulted in six different anti-patterns in the logging code. To demonstrate the value of our findings, we have encoded these anti-patterns into a static code analysis tool, LCAnalyzer. Case studies show that LCAnalyzer has an average recall of 95% and precision of 60% and can be used to automatically detect previously unknown anti-patterns in the source code. To gather feedback, we have filed 64 representative instances of the logging code anti-patterns from the most recent releases of ten open source software systems. Among them, 46 instances (72%) have already been accepted by their developers.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"53 1","pages":"71-81"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91009200","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}
引用次数: 90
Performance Diagnosis for Inefficient Loops 无效率循环的性能诊断
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.41
Linhai Song, Shan Lu
Writing efficient software is difficult. Design and implementation defects cancause severe performance degradation. Unfortunately, existing performance diagnosis techniques like profilers are still preliminary. They can locate code regions that consume resources, but not the ones that waste resources. In this paper, we first design a root-causeand fix-strategy taxonomy for inefficient loops, one of the most common performance problems in the field. We then design a static-dynamic hybrid analysis tool, LDoctor, toprovide accurate performance diagnosis for loops. We further use sampling techniques to lower the run-time overhead withoutdegrading the accuracy or latency of LDoctor diagnosis. Evaluation using real-world performanceproblems shows that LDoctor can provide better coverage and accuracy thanexisting techniques, with low overhead.
编写高效的软件是困难的。设计和实现缺陷会导致严重的性能下降。不幸的是,现有的性能诊断技术(如分析器)仍处于初级阶段。它们可以定位消耗资源的代码区域,但不能定位浪费资源的代码区域。在本文中,我们首先为低效循环设计了一个根源和修复策略分类,低效循环是该领域最常见的性能问题之一。然后,我们设计了一个静态动态混合分析工具LDoctor,为回路提供准确的性能诊断。我们进一步使用采样技术来降低运行时开销,而不会降低LDoctor诊断的准确性或延迟。使用实际性能问题进行的评估表明,LDoctor可以提供比现有技术更好的覆盖率和准确性,并且开销较低。
{"title":"Performance Diagnosis for Inefficient Loops","authors":"Linhai Song, Shan Lu","doi":"10.1109/ICSE.2017.41","DOIUrl":"https://doi.org/10.1109/ICSE.2017.41","url":null,"abstract":"Writing efficient software is difficult. Design and implementation defects cancause severe performance degradation. Unfortunately, existing performance diagnosis techniques like profilers are still preliminary. They can locate code regions that consume resources, but not the ones that waste resources. In this paper, we first design a root-causeand fix-strategy taxonomy for inefficient loops, one of the most common performance problems in the field. We then design a static-dynamic hybrid analysis tool, LDoctor, toprovide accurate performance diagnosis for loops. We further use sampling techniques to lower the run-time overhead withoutdegrading the accuracy or latency of LDoctor diagnosis. Evaluation using real-world performanceproblems shows that LDoctor can provide better coverage and accuracy thanexisting techniques, with low overhead.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"43 1","pages":"370-380"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83623844","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}
引用次数: 47
An Empirical Study on Mutation, Statement and Branch Coverage Fault Revelation That Avoids the Unreliable Clean Program Assumption 避免不可靠干净程序假设的突变、声明和分支覆盖故障揭示的实证研究
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.61
T. Chekam, Mike Papadakis, Yves Le Traon, M. Harman
Many studies suggest using coverage concepts, such as branch coverage, as the starting point of testing, while others as the most prominent test quality indicator. Yet the relationship between coverage and fault-revelation remains unknown, yielding uncertainty and controversy. Most previous studies rely on the Clean Program Assumption, that a test suite will obtain similar coverage for both faulty and fixed ('clean') program versions. This assumption may appear intuitive, especially for bugs that denote small semantic deviations. However, we present evidence that the Clean Program Assumption does not always hold, thereby raising a critical threat to the validity of previous results. We then conducted a study using a robust experimental methodology that avoids this threat to validity, from which our primary finding is that strong mutation testing has the highest fault revelation of four widely-used criteria. Our findings also revealed that fault revelation starts to increase significantly only once relatively high levels of coverage are attained.
许多研究建议使用覆盖概念,例如分支覆盖,作为测试的起点,而其他研究建议使用最突出的测试质量指标。然而,报道和断层揭露之间的关系仍然未知,产生了不确定性和争议。大多数先前的研究都依赖于Clean Program Assumption,即测试套件对于有缺陷的和固定的(“干净的”)程序版本将获得相似的覆盖率。这个假设可能看起来很直观,特别是对于表示小语义偏差的bug。然而,我们提出的证据表明,清洁计划假设并不总是成立,从而对先前结果的有效性提出了重大威胁。然后,我们使用一种强大的实验方法进行了一项研究,避免了这种对有效性的威胁,从中我们的主要发现是强突变测试在四种广泛使用的标准中具有最高的错误揭示。我们的发现还表明,只有在达到相对较高的覆盖水平时,断层显示才开始显著增加。
{"title":"An Empirical Study on Mutation, Statement and Branch Coverage Fault Revelation That Avoids the Unreliable Clean Program Assumption","authors":"T. Chekam, Mike Papadakis, Yves Le Traon, M. Harman","doi":"10.1109/ICSE.2017.61","DOIUrl":"https://doi.org/10.1109/ICSE.2017.61","url":null,"abstract":"Many studies suggest using coverage concepts, such as branch coverage, as the starting point of testing, while others as the most prominent test quality indicator. Yet the relationship between coverage and fault-revelation remains unknown, yielding uncertainty and controversy. Most previous studies rely on the Clean Program Assumption, that a test suite will obtain similar coverage for both faulty and fixed ('clean') program versions. This assumption may appear intuitive, especially for bugs that denote small semantic deviations. However, we present evidence that the Clean Program Assumption does not always hold, thereby raising a critical threat to the validity of previous results. We then conducted a study using a robust experimental methodology that avoids this threat to validity, from which our primary finding is that strong mutation testing has the highest fault revelation of four widely-used criteria. Our findings also revealed that fault revelation starts to increase significantly only once relatively high levels of coverage are attained.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"20 1","pages":"597-608"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79577770","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}
引用次数: 128
期刊
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