首页 > 最新文献

2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)最新文献

英文 中文
On the Equivalence of Information Retrieval Methods for Automated Traceability Link Recovery: A Ten-Year Retrospective 自动追溯链路恢复中信息检索方法的等价性:十年回顾
Pub Date : 2020-10-01 DOI: 10.1145/3387904.3394491
R. Oliveto, Malcom Gethers, D. Poshyvanyk, A. De Lucia
At ICPC 2010 we presented an empirical study to statistically analyze the equivalence of several traceability recovery methods based on Information Retrieval (IR) techniques [1]. We experimented the Vector Space Model (VSM) [2], Latent Semantic Indexing (LSI) [3], the Jensen-Shannon (JS) method [4], and Latent Dirichlet Allocation (LDA) [5]. Unlike previous empirical studies we did not compare the different IR based traceability recovery methods only using the usual precision and recall metrics. We introduced some metrics to analyze the overlap of the set of candidate links recovered by each method.We also based our analysis on Principal Component Analysis (PCA) to analyze the orthogonality of the experimented methods. The results showed that while the accuracy of LDA was lower than previously used methods, LDA was able to capture some information missed by the other exploited IR methods. Instead, JS, VSM, and LSI were almost equivalent. This paved the way to possible integration of IR based traceability recovery methods [6]. Our paper was one of the first papers experimenting LDA for traceability recovery. Also, the overlap metrics and PCA have been used later to compare and possibly integrate different recommendation approaches not only for traceability recovery, but also for other reverse engineering and software maintenance tasks, such as code smell detection, design pattern detection, and bug prediction.
在ICPC 2010上,我们提出了一项实证研究,统计分析了几种基于信息检索(Information Retrieval, IR)技术的可追溯性恢复方法的等效性[1]。我们实验了向量空间模型(VSM)[2]、潜在语义索引(LSI)[3]、Jensen-Shannon (JS)方法[4]和潜在狄利克莱分配(LDA)[5]。与以往的实证研究不同,我们没有比较不同的基于红外的可追溯性恢复方法,只使用通常的精度和召回率指标。我们引入了一些指标来分析每种方法恢复的候选链接集的重叠程度。我们还基于主成分分析(PCA)来分析实验方法的正交性。结果表明,虽然LDA的精度低于以往使用的方法,但LDA能够捕获其他红外方法所遗漏的一些信息。相反,JS、VSM和LSI几乎相等。这为基于IR的可追溯性恢复方法的可能集成铺平了道路[6]。我们的论文是最早用LDA进行追溯性恢复实验的论文之一。此外,稍后将使用重叠度量和PCA来比较和可能集成不同的推荐方法,不仅用于可追溯性恢复,还用于其他逆向工程和软件维护任务,如代码气味检测、设计模式检测和错误预测。
{"title":"On the Equivalence of Information Retrieval Methods for Automated Traceability Link Recovery: A Ten-Year Retrospective","authors":"R. Oliveto, Malcom Gethers, D. Poshyvanyk, A. De Lucia","doi":"10.1145/3387904.3394491","DOIUrl":"https://doi.org/10.1145/3387904.3394491","url":null,"abstract":"At ICPC 2010 we presented an empirical study to statistically analyze the equivalence of several traceability recovery methods based on Information Retrieval (IR) techniques [1]. We experimented the Vector Space Model (VSM) [2], Latent Semantic Indexing (LSI) [3], the Jensen-Shannon (JS) method [4], and Latent Dirichlet Allocation (LDA) [5]. Unlike previous empirical studies we did not compare the different IR based traceability recovery methods only using the usual precision and recall metrics. We introduced some metrics to analyze the overlap of the set of candidate links recovered by each method.We also based our analysis on Principal Component Analysis (PCA) to analyze the orthogonality of the experimented methods. The results showed that while the accuracy of LDA was lower than previously used methods, LDA was able to capture some information missed by the other exploited IR methods. Instead, JS, VSM, and LSI were almost equivalent. This paved the way to possible integration of IR based traceability recovery methods [6]. Our paper was one of the first papers experimenting LDA for traceability recovery. Also, the overlap metrics and PCA have been used later to compare and possibly integrate different recommendation approaches not only for traceability recovery, but also for other reverse engineering and software maintenance tasks, such as code smell detection, design pattern detection, and bug prediction.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127164369","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}
引用次数: 208
Investigating Near-Miss Micro-Clones in Evolving Software 研究进化软件中的微克隆
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389262
Manishankar Mondal, B. Roy, C. Roy, Kevin A. Schneider
Code clones are the same or nearly similar code fragments in a software system's code-base. While the existing studies have extensively studied regular code clones in software systems, micro-clones have been mostly ignored. Although an existing study investigated consistent changes in exact micro-clones, near-miss micro-clones have never been investigated. In our study, we investigate the importance of near-miss micro-clones in software evolution and maintenance by automatically detecting and analyzing the consistent updates that they experienced during the whole period of evolution of our subject systems. We compare the consistent co-change tendency of near-miss micro-clones with that of exact micro-clones and regular code clones. According to our investigation on thousands of revisions of six open-source subject systems written in two different programming languages, near-miss micro-clones have a significantly higher tendency of experiencing consistent updates compared to exact micro-clones and regular (both exact and near-miss) code clones. Consistent updates in near-miss micro-clones have a high tendency of being related with bug-fixes. Moreover, the percentage of commit operations where near-miss micro-clones experience consistent updates is considerably higher than that of regular clones and exact micro-clones. We finally observe that nearmiss micro-clones staying in close proximity to each other have a high tendency of experiencing consistent updates. Our research implies that near-miss micro-clones should be considered equally important as of regular clones and exact micro-clones when making clone management decisions.
代码克隆是软件系统代码库中相同或几乎相似的代码片段。虽然现有的研究广泛地研究了软件系统中的常规代码克隆,但微克隆却大多被忽视。虽然现有的研究调查了精确微克隆的一致变化,但从未调查过未遂微克隆。在我们的研究中,我们通过自动检测和分析在我们的主题系统的整个进化过程中它们所经历的一致更新,来研究近靶微克隆在软件进化和维护中的重要性。我们比较了近靶微克隆与精确微克隆和规则码克隆的一致共变趋势。根据我们对用两种不同编程语言编写的六个开源主题系统的数千个修订的调查,与精确的微克隆和常规的(精确的和接近的)代码克隆相比,差一点的微克隆具有明显更高的经历一致更新的趋势。近乎失败的微型克隆的持续更新往往与bug修复有关。此外,与常规克隆和精确微克隆相比,差一点的微克隆经历一致更新的提交操作的百分比要高得多。我们最后观察到,彼此接近的近距离微克隆具有较高的持续更新倾向。我们的研究表明,在进行克隆管理决策时,应将“未遂微克隆”与“常规克隆”和“精确微克隆”同等重要。
{"title":"Investigating Near-Miss Micro-Clones in Evolving Software","authors":"Manishankar Mondal, B. Roy, C. Roy, Kevin A. Schneider","doi":"10.1145/3387904.3389262","DOIUrl":"https://doi.org/10.1145/3387904.3389262","url":null,"abstract":"Code clones are the same or nearly similar code fragments in a software system's code-base. While the existing studies have extensively studied regular code clones in software systems, micro-clones have been mostly ignored. Although an existing study investigated consistent changes in exact micro-clones, near-miss micro-clones have never been investigated. In our study, we investigate the importance of near-miss micro-clones in software evolution and maintenance by automatically detecting and analyzing the consistent updates that they experienced during the whole period of evolution of our subject systems. We compare the consistent co-change tendency of near-miss micro-clones with that of exact micro-clones and regular code clones. According to our investigation on thousands of revisions of six open-source subject systems written in two different programming languages, near-miss micro-clones have a significantly higher tendency of experiencing consistent updates compared to exact micro-clones and regular (both exact and near-miss) code clones. Consistent updates in near-miss micro-clones have a high tendency of being related with bug-fixes. Moreover, the percentage of commit operations where near-miss micro-clones experience consistent updates is considerably higher than that of regular clones and exact micro-clones. We finally observe that nearmiss micro-clones staying in close proximity to each other have a high tendency of experiencing consistent updates. Our research implies that near-miss micro-clones should be considered equally important as of regular clones and exact micro-clones when making clone management decisions.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126603578","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
An Empirical Study on Dynamic Typing Related Practices in Python Systems Python系统中动态类型相关实践的实证研究
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389253
Zhifei Chen, Yanhui Li, Bihuan Chen, Wanwangying Ma, Lin Chen, Baowen Xu
The dynamic typing discipline of Python allows developers to program at a high level of abstraction. However, type related bugs are commonly encountered in Python systems due to the lack of type declaration and static type checking. Especially, the misuse of dynamic typing discipline produces underlying bugs and increases maintenance efforts. In this paper, we introduce six types of dynamic typing related practices in Python programs, which are the common but potentially risky usage of dynamic typing discipline by developers. We also implement a tool named PYDYPE to detect them. Based on this tool, we conduct an empirical study on nine real-world Python systems (with the size of more than 460KLOC) to understand dynamic typing related practices. We investigate how widespread the dynamic typing related practices are, why they are introduced into the systems, whether their usage correlates with increased likelihood of bug occurring, and how developers fix dynamic typing related bugs. The results show that: (1) dynamic typing related practices exist inconsistently in different systems and Inconsistent Variable Types is most prevalent; (2) they are introduced into systems mainly during early development phase to promote development efficiency; (3) they have a significant positive correlation with bug occurring; (4) developers tend to add type checks or exception handling to fix dynamic typing related bugs. These results benefit future research in coding convention, language design, bug detection and fixing.
Python的动态类型原则允许开发人员在高层次的抽象上进行编程。然而,由于缺乏类型声明和静态类型检查,在Python系统中经常遇到与类型相关的错误。特别是,误用动态类型规则会产生潜在的错误并增加维护工作。在本文中,我们介绍了Python程序中与动态类型相关的六种类型的实践,这是开发人员对动态类型原则的常见但潜在风险的使用。我们还实现了一个名为pytype的工具来检测它们。基于这个工具,我们对9个真实的Python系统(规模大于460KLOC)进行了实证研究,以了解与动态类型相关的实践。我们研究了与动态类型相关的实践有多普遍,为什么将它们引入系统,它们的使用是否与错误发生的可能性增加相关,以及开发人员如何修复与动态类型相关的错误。结果表明:(1)不同系统中动态类型相关实践存在不一致性,其中变量类型不一致最为普遍;(2)主要在开发初期将其引入系统,以提高开发效率;(3)与虫患呈显著正相关;开发人员倾向于添加类型检查或异常处理来修复与动态类型相关的错误。这些结果对今后在编码规范、语言设计、bug检测和修复方面的研究有一定的帮助。
{"title":"An Empirical Study on Dynamic Typing Related Practices in Python Systems","authors":"Zhifei Chen, Yanhui Li, Bihuan Chen, Wanwangying Ma, Lin Chen, Baowen Xu","doi":"10.1145/3387904.3389253","DOIUrl":"https://doi.org/10.1145/3387904.3389253","url":null,"abstract":"The dynamic typing discipline of Python allows developers to program at a high level of abstraction. However, type related bugs are commonly encountered in Python systems due to the lack of type declaration and static type checking. Especially, the misuse of dynamic typing discipline produces underlying bugs and increases maintenance efforts. In this paper, we introduce six types of dynamic typing related practices in Python programs, which are the common but potentially risky usage of dynamic typing discipline by developers. We also implement a tool named PYDYPE to detect them. Based on this tool, we conduct an empirical study on nine real-world Python systems (with the size of more than 460KLOC) to understand dynamic typing related practices. We investigate how widespread the dynamic typing related practices are, why they are introduced into the systems, whether their usage correlates with increased likelihood of bug occurring, and how developers fix dynamic typing related bugs. The results show that: (1) dynamic typing related practices exist inconsistently in different systems and Inconsistent Variable Types is most prevalent; (2) they are introduced into systems mainly during early development phase to promote development efficiency; (3) they have a significant positive correlation with bug occurring; (4) developers tend to add type checks or exception handling to fix dynamic typing related bugs. These results benefit future research in coding convention, language design, bug detection and fixing.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"52 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121631991","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
Just-In-Time Test Smell Detection and Refactoring: The DARTS Project 即时测试气味检测和重构:DARTS项目
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389296
Stefano Lambiase, Andrea Cupito, Fabiano Pecorelli, A. D. Lucia, Fabio Palomba
Test smells represent sub-optimal design or implementation solutions applied when developing test cases. Previous research has shown that these smells may decrease both maintainability and effectiveness of tests and, as such, researchers have been devising methods to automatically detect them. Nevertheless, there is still a lack of tools that developers can use within their integrated development environment to identify test smells and refactor them. In this paper, we present DARTS (Detection And Refactoring of Test Smells), an Intellij plug-in which (1) implements a state-of-the-art detection mechanism to detect instances of three test smell types, i.e., General Fixture, Eager Test, and Lack of Cohesion of Test Methods, at commit-level and (2) enables their automated refactoring through the integrated APIs provided by Intellij. Video. https//youtu.be/sd3V2J7k8Zs Source Code. https://github.com/StefanoLambiase/DARTS
测试气味表示在开发测试用例时应用的次优设计或实现解决方案。先前的研究表明,这些气味可能会降低测试的可维护性和有效性,因此,研究人员一直在设计自动检测它们的方法。然而,仍然缺乏开发人员可以在集成开发环境中使用的工具来识别测试气味并对其进行重构。在本文中,我们介绍了DARTS(测试气味的检测和重构),这是一个Intellij插件,它(1)实现了一种最先进的检测机制,可以在提交级别检测三种测试气味类型的实例,即通用夹具、急切测试和缺乏测试方法的内聚性;(2)通过Intellij提供的集成api实现它们的自动重构。视频。https / / youtu。/sd3V2J7k8Zs源代码。https://github.com/StefanoLambiase/DARTS
{"title":"Just-In-Time Test Smell Detection and Refactoring: The DARTS Project","authors":"Stefano Lambiase, Andrea Cupito, Fabiano Pecorelli, A. D. Lucia, Fabio Palomba","doi":"10.1145/3387904.3389296","DOIUrl":"https://doi.org/10.1145/3387904.3389296","url":null,"abstract":"Test smells represent sub-optimal design or implementation solutions applied when developing test cases. Previous research has shown that these smells may decrease both maintainability and effectiveness of tests and, as such, researchers have been devising methods to automatically detect them. Nevertheless, there is still a lack of tools that developers can use within their integrated development environment to identify test smells and refactor them. In this paper, we present DARTS (Detection And Refactoring of Test Smells), an Intellij plug-in which (1) implements a state-of-the-art detection mechanism to detect instances of three test smell types, i.e., General Fixture, Eager Test, and Lack of Cohesion of Test Methods, at commit-level and (2) enables their automated refactoring through the integrated APIs provided by Intellij. Video. https//youtu.be/sd3V2J7k8Zs Source Code. https://github.com/StefanoLambiase/DARTS","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124936191","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}
引用次数: 22
How Graduate Computing Students Search When Using an Unfamiliar Programming Language 计算机专业研究生在使用不熟悉的编程语言时如何搜索
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389274
Gina R. Bai, Joshua Kayani, Kathryn T. Stolee
Developers and computing students are usually expected to master multiple programming languages. To learn a new language, developers often turn to online search to find information and code examples. However, insights on how learners perform code search when working with an unfamiliar language are lacking. Under-standing how learners search and the challenges they encounter when using an unfamiliar language can motivate future tools and techniques to better support subsequent language learners. Research on code search behavior typically involves monitoring developers during search activities through logs or in situ surveys. We conducted a study on how computing students search for code in an unfamiliar programming language with 18 graduate students working on VBA tasks in a lab environment. Our surveys explicitly asked about search success and query reformulation to gather reliable data on those metrics. By analyzing the combination of search logs and survey responses, we found that students typically search to explore APIs or find example code. Approximately 50% of queries that precede clicks on documentation or tutorials successfully solved the problem. Students frequently borrowed terms from languages with which they are familiar when searching for examples in an unfamiliar language, but term borrowing did not impede search success. Edit distances between reformulated queries and non-reformulated queries were nearly the same. These results have implications for code search research, especially on reformulation, and for research on supporting programmers when learning a new language.
开发人员和计算机专业的学生通常需要掌握多种编程语言。为了学习一门新语言,开发人员经常求助于在线搜索来查找信息和代码示例。然而,缺乏关于学习者在使用不熟悉的语言时如何执行代码搜索的见解。了解学习者如何搜索以及他们在使用不熟悉的语言时遇到的挑战,可以激励未来的工具和技术更好地支持后续的语言学习者。对代码搜索行为的研究通常包括通过日志或现场调查在搜索活动期间监视开发人员。我们对计算机专业的学生如何用一种不熟悉的编程语言搜索代码进行了一项研究,18名研究生在实验室环境中处理VBA任务。我们的调查明确询问了搜索成功和查询重新制定,以收集有关这些指标的可靠数据。通过分析搜索日志和调查回复的组合,我们发现学生通常会搜索api或查找示例代码。在点击文档或教程之前,大约有50%的查询成功地解决了这个问题。学生在用不熟悉的语言搜索例子时,经常从他们熟悉的语言中借用术语,但借用术语并不妨碍搜索成功。重新制定查询和非重新制定查询之间的编辑距离几乎相同。这些结果对代码搜索研究,特别是对重新表述的研究,以及对程序员学习一门新语言时的支持研究具有启示意义。
{"title":"How Graduate Computing Students Search When Using an Unfamiliar Programming Language","authors":"Gina R. Bai, Joshua Kayani, Kathryn T. Stolee","doi":"10.1145/3387904.3389274","DOIUrl":"https://doi.org/10.1145/3387904.3389274","url":null,"abstract":"Developers and computing students are usually expected to master multiple programming languages. To learn a new language, developers often turn to online search to find information and code examples. However, insights on how learners perform code search when working with an unfamiliar language are lacking. Under-standing how learners search and the challenges they encounter when using an unfamiliar language can motivate future tools and techniques to better support subsequent language learners. Research on code search behavior typically involves monitoring developers during search activities through logs or in situ surveys. We conducted a study on how computing students search for code in an unfamiliar programming language with 18 graduate students working on VBA tasks in a lab environment. Our surveys explicitly asked about search success and query reformulation to gather reliable data on those metrics. By analyzing the combination of search logs and survey responses, we found that students typically search to explore APIs or find example code. Approximately 50% of queries that precede clicks on documentation or tutorials successfully solved the problem. Students frequently borrowed terms from languages with which they are familiar when searching for examples in an unfamiliar language, but term borrowing did not impede search success. Edit distances between reformulated queries and non-reformulated queries were nearly the same. These results have implications for code search research, especially on reformulation, and for research on supporting programmers when learning a new language.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"60 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133726381","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
Program Comprehension in Virtual Reality 虚拟现实中的程序理解
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389287
James Dominic, Brock Tubre, Jada Houser, Charles Ritter, Deborah Kunkel, Paige Rodeghero
Virtual reality is an emerging technology for various domains such as medicine, psychotherapy, architecture, and gaming. Recently, software engineering researchers have started to explore virtual reality as a tool for programmers. However, few studies examine source code comprehension in a virtual reality (VR) environment. In this paper, we explore the human experience of comprehending source code in VR. We conducted a study with 26 graduate students. We found that the programmers experienced more challenges when reading and comprehending code in VR. We found no statistically significant difference in the programmers' perceived productivity between our VR and traditional comprehension studies.
虚拟现实是一项新兴技术,适用于医学、心理治疗、建筑和游戏等各个领域。最近,软件工程研究人员已经开始探索虚拟现实作为程序员的工具。然而,很少有研究研究在虚拟现实(VR)环境中对源代码的理解。在本文中,我们探讨了人类在VR中理解源代码的体验。我们对26名研究生进行了一项研究。我们发现程序员在VR中阅读和理解代码时遇到了更多的挑战。我们发现,在我们的VR和传统的理解研究中,程序员的感知生产力没有统计学上的显著差异。
{"title":"Program Comprehension in Virtual Reality","authors":"James Dominic, Brock Tubre, Jada Houser, Charles Ritter, Deborah Kunkel, Paige Rodeghero","doi":"10.1145/3387904.3389287","DOIUrl":"https://doi.org/10.1145/3387904.3389287","url":null,"abstract":"Virtual reality is an emerging technology for various domains such as medicine, psychotherapy, architecture, and gaming. Recently, software engineering researchers have started to explore virtual reality as a tool for programmers. However, few studies examine source code comprehension in a virtual reality (VR) environment. In this paper, we explore the human experience of comprehending source code in VR. We conducted a study with 26 graduate students. We found that the programmers experienced more challenges when reading and comprehending code in VR. We found no statistically significant difference in the programmers' perceived productivity between our VR and traditional comprehension studies.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114379512","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Program Slicing and Execution Tracing for Differential Testing at Adobe Analytics 程序切片和执行跟踪的差异测试在Adobe分析
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389292
Darryl C. Jarman, Scott Hunt, D. Towey
This paper reports on the use of program slicing concepts and partial execution tracing at Adobe Analytics to address a major limitation of differential testing - namely, how to deal with the large numbers of differences typically produced by this regression testing technique. Manual verification, typically used to verify detected differences, is tedious, time-consuming and error-prone. This severely limits the volume of testing that can be done and thereby reduces adoption of differential testing. It is hoped that, by sharing this experience, researchers with expertise in program slicing might be motivated to help solve some of the issues and limitations encountered during this novel application of slicing to a real-world industrial problem.
本文报告了在Adobe Analytics中使用程序切片概念和部分执行跟踪来解决差异测试的主要限制——即,如何处理这种回归测试技术通常产生的大量差异。手动验证通常用于验证检测到的差异,这是乏味、耗时且容易出错的。这严重限制了可以完成的测试量,从而减少了差分测试的采用。希望通过分享这一经验,具有程序切片专业知识的研究人员可以帮助解决切片在实际工业问题中的新应用过程中遇到的一些问题和限制。
{"title":"Program Slicing and Execution Tracing for Differential Testing at Adobe Analytics","authors":"Darryl C. Jarman, Scott Hunt, D. Towey","doi":"10.1145/3387904.3389292","DOIUrl":"https://doi.org/10.1145/3387904.3389292","url":null,"abstract":"This paper reports on the use of program slicing concepts and partial execution tracing at Adobe Analytics to address a major limitation of differential testing - namely, how to deal with the large numbers of differences typically produced by this regression testing technique. Manual verification, typically used to verify detected differences, is tedious, time-consuming and error-prone. This severely limits the volume of testing that can be done and thereby reduces adoption of differential testing. It is hoped that, by sharing this experience, researchers with expertise in program slicing might be motivated to help solve some of the issues and limitations encountered during this novel application of slicing to a real-world industrial problem.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128928312","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Knowledge Transfer in Modern Code Review 现代代码审查中的知识转移
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389270
Maria Caulo, B. Lin, G. Bavota, G. Scanniello, Michele Lanza
Knowledge transfer is one of the main goals of modern code review, as shown by several studies that surveyed and interviewed developers. While knowledge transfer is a clear expectation of the code review process, there are no analytical studies using data mined from software repositories to assess the effectiveness of code review in “training” developers and improve their skills over time. We present a mining-based study investigating how and whether the code review process helps developers to improve their contributions to open source projects over time. We analyze 32,062 peer-reviewed pull requests (PRs) made across 4,981 GitHub repositories by 728 developers who created their GitHub account in 2015. We assume that PRs performed in the past by a developer $D$ that have been subject to a code review process have “transferred knowledge” to D. Then, we verify if over time (i.e., when more and more reviewed PRs are made by D), the quality of the contributions made by $D$ to open source projects increases (as assessed by proxies we defined, such as the acceptance of PRs, or the polarity of the sentiment in the review comments left for the submitted PRs). With the above measures, we were unable to capture the positive impact played by the code review process on the quality of developers' contributions. This might be due to several factors, including the choices we made in our experimental design.Additional investigations are needed to confirm or contradict such a negative result.
知识转移是现代代码审查的主要目标之一,正如一些调查和采访开发人员的研究所显示的那样。虽然知识转移是对代码审查过程的明确期望,但没有使用从软件存储库中挖掘的数据来评估“培训”开发人员代码审查的有效性并随着时间的推移提高他们的技能的分析研究。我们提出了一项基于挖掘的研究,调查代码审查过程如何以及是否随着时间的推移帮助开发人员改进他们对开源项目的贡献。我们分析了728名在2015年创建GitHub账户的开发者在4,981个GitHub存储库中发出的32,062个同行评审的pull request (pr)。我们假设PRs过去由开发人员执行D,一直受到美元代码评审过程有“知识”转移到D。然后,我们验证(例如,当越来越多的审查PRs由D),贡献的质量由D开源项目增加美元(评估代理我们定义,如PRs的验收,或情绪的极性评论留给提交PRs)。使用以上的方法,我们无法捕捉代码审查过程对开发人员贡献的质量所产生的积极影响。这可能是由几个因素造成的,包括我们在实验设计中所做的选择。需要进一步的调查来证实或反驳这一否定结果。
{"title":"Knowledge Transfer in Modern Code Review","authors":"Maria Caulo, B. Lin, G. Bavota, G. Scanniello, Michele Lanza","doi":"10.1145/3387904.3389270","DOIUrl":"https://doi.org/10.1145/3387904.3389270","url":null,"abstract":"Knowledge transfer is one of the main goals of modern code review, as shown by several studies that surveyed and interviewed developers. While knowledge transfer is a clear expectation of the code review process, there are no analytical studies using data mined from software repositories to assess the effectiveness of code review in “training” developers and improve their skills over time. We present a mining-based study investigating how and whether the code review process helps developers to improve their contributions to open source projects over time. We analyze 32,062 peer-reviewed pull requests (PRs) made across 4,981 GitHub repositories by 728 developers who created their GitHub account in 2015. We assume that PRs performed in the past by a developer $D$ that have been subject to a code review process have “transferred knowledge” to D. Then, we verify if over time (i.e., when more and more reviewed PRs are made by D), the quality of the contributions made by $D$ to open source projects increases (as assessed by proxies we defined, such as the acceptance of PRs, or the polarity of the sentiment in the review comments left for the submitted PRs). With the above measures, we were unable to capture the positive impact played by the code review process on the quality of developers' contributions. This might be due to several factors, including the choices we made in our experimental design.Additional investigations are needed to confirm or contradict such a negative result.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130808508","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
When Are Smells Indicators of Architectural Refactoring Opportunities? A Study of 50 Software Projects 什么时候气味是架构重构机会的指示器?50个软件项目的研究
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389276
L. Sousa, W. Oizumi, Alessandro F. Garcia, Anderson Oliveira, Diego Cedrim, C. Lucena
Refactoring is a widely adopted practice for improving code comprehension and for removing severe structural problems in a project. When refactorings affect the system architecture, they are called architectural refactorings. Unfortunately, developers usually do not know when and how they should apply refactorings to remove architectural problems. Nevertheless, they might be more susceptible to applying architectural refactoring if they rely on code smells and code refactoring - two concepts that they usually deal with through their routine programming activities. To investigate if smells can serve as indicators of architectural refactoring opportunities, we conducted a retrospective study over the commit history of 50 software projects. We analyzed 52,667 refactored elements to investigate if they had architectural problems that could have been indicated by automatically-detected smells. We considered purely structural refactorings to identify elements that were likely to have architectural problems. We found that the proportion of refactored elements without smells is much lower than those refactored with smells. By analyzing the latter, we concluded that smells can be used as indicators of architectural refactoring opportunities when the affected source code is deteriorated, i.e., the code hosting two or more smells. For example, when God Class or Complex Class appear together with other smells, they are indicators of architectural refactoring opportunities. In general, smells that often co-occurred with other smells (67.53%) are indicators of architectural refactoring opportunities in most cases (88.53% of refactored elements). Our study also enables us to derive a catalog with patterns of smells that indicate refactoring opportunities to remove specific types of architectural problems. These patterns can guide developers and make them more susceptible to apply architectural refactorings.
重构是一种被广泛采用的实践,用于提高代码的可理解性和消除项目中严重的结构性问题。当重构影响系统架构时,它们被称为架构重构。不幸的是,开发人员通常不知道何时以及如何应用重构来消除架构问题。然而,如果他们依赖于代码气味和代码重构——这是他们通常通过日常编程活动处理的两个概念——他们可能更容易应用架构重构。为了研究气味是否可以作为架构重构机会的指示器,我们对50个软件项目的提交历史进行了回顾性研究。我们分析了52,667个重构元素,以调查它们是否存在可以通过自动检测到的气味指出的架构问题。我们考虑纯粹的结构重构来识别可能存在架构问题的元素。我们发现,没有气味的重构元素的比例远低于带有气味的重构元素。通过分析后者,我们得出结论,当受影响的源代码恶化时,气味可以作为架构重构机会的指示器,例如,代码包含两个或更多气味。例如,当God Class或Complex Class与其他气味一起出现时,它们是架构重构机会的指示器。一般来说,气味经常与其他气味(67.53%)同时出现,在大多数情况下(88.53%的重构元素)是架构重构机会的指示器。我们的研究还使我们能够获得带有气味模式的目录,这些气味模式指示重构机会,以消除特定类型的体系结构问题。这些模式可以指导开发人员,并使他们更容易应用架构重构。
{"title":"When Are Smells Indicators of Architectural Refactoring Opportunities? A Study of 50 Software Projects","authors":"L. Sousa, W. Oizumi, Alessandro F. Garcia, Anderson Oliveira, Diego Cedrim, C. Lucena","doi":"10.1145/3387904.3389276","DOIUrl":"https://doi.org/10.1145/3387904.3389276","url":null,"abstract":"Refactoring is a widely adopted practice for improving code comprehension and for removing severe structural problems in a project. When refactorings affect the system architecture, they are called architectural refactorings. Unfortunately, developers usually do not know when and how they should apply refactorings to remove architectural problems. Nevertheless, they might be more susceptible to applying architectural refactoring if they rely on code smells and code refactoring - two concepts that they usually deal with through their routine programming activities. To investigate if smells can serve as indicators of architectural refactoring opportunities, we conducted a retrospective study over the commit history of 50 software projects. We analyzed 52,667 refactored elements to investigate if they had architectural problems that could have been indicated by automatically-detected smells. We considered purely structural refactorings to identify elements that were likely to have architectural problems. We found that the proportion of refactored elements without smells is much lower than those refactored with smells. By analyzing the latter, we concluded that smells can be used as indicators of architectural refactoring opportunities when the affected source code is deteriorated, i.e., the code hosting two or more smells. For example, when God Class or Complex Class appear together with other smells, they are indicators of architectural refactoring opportunities. In general, smells that often co-occurred with other smells (67.53%) are indicators of architectural refactoring opportunities in most cases (88.53% of refactored elements). Our study also enables us to derive a catalog with patterns of smells that indicate refactoring opportunities to remove specific types of architectural problems. These patterns can guide developers and make them more susceptible to apply architectural refactorings.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"97 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116107626","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
A Literature Review of Automatic Traceability Links Recovery for Software Change Impact Analysis 软件变更影响分析中自动跟踪链接恢复的文献综述
Pub Date : 2020-07-13 DOI: 10.1145/3387904.3389251
Thazin Win Win Aung, Huan Huo, Yulei Sui
In large-scale software development projects, change impact analysis (CIA) plays an important role in controlling software design evolution. Identifying and accessing the effects of software changes using traceability links between various software artifacts is a common practice during the software development cycle. Recently, research in automated traceability-link recovery has received broad attention in the software maintenance community to reduce the manual maintenance cost of trace links by developers. In this study, we conducted a systematic literature review related to automatic traceability link recovery approaches with a focus on CIA. We identified 33 relevant studies and investigated the following aspects of CIA: traceability approaches, CIA sets, degrees of evaluation, trace direction and methods for recovering traceability link between artifacts of different types. Our review indicated that few traceability studies focused on designing and testing impact analysis sets, presumably due to the scarcity of datasets. Based on the findings, we urge further industrial case studies. Finally, we suggest developing traceability tools to support fully automatic traceability approaches, such as machine learning and deep learning.
在大型软件开发项目中,变更影响分析(CIA)在控制软件设计演进中起着重要的作用。在软件开发周期中,使用各种软件工件之间的可追溯性链接来识别和访问软件变更的影响是一种常见的实践。近年来,为了减少开发人员手工维护跟踪链接的成本,对自动跟踪链接恢复的研究受到了软件维护界的广泛关注。在本研究中,我们以CIA为重点,对自动可追溯链接恢复方法进行了系统的文献综述。本文选取了33项相关研究,从溯源途径、溯源集、评价程度、溯源方向和恢复不同类型工件之间溯源联系的方法等方面对CIA进行了研究。我们的回顾表明,很少有可追溯性研究关注于设计和测试影响分析集,可能是由于数据集的稀缺性。基于这些发现,我们敦促进行进一步的工业案例研究。最后,我们建议开发可追溯性工具来支持全自动的可追溯性方法,例如机器学习和深度学习。
{"title":"A Literature Review of Automatic Traceability Links Recovery for Software Change Impact Analysis","authors":"Thazin Win Win Aung, Huan Huo, Yulei Sui","doi":"10.1145/3387904.3389251","DOIUrl":"https://doi.org/10.1145/3387904.3389251","url":null,"abstract":"In large-scale software development projects, change impact analysis (CIA) plays an important role in controlling software design evolution. Identifying and accessing the effects of software changes using traceability links between various software artifacts is a common practice during the software development cycle. Recently, research in automated traceability-link recovery has received broad attention in the software maintenance community to reduce the manual maintenance cost of trace links by developers. In this study, we conducted a systematic literature review related to automatic traceability link recovery approaches with a focus on CIA. We identified 33 relevant studies and investigated the following aspects of CIA: traceability approaches, CIA sets, degrees of evaluation, trace direction and methods for recovering traceability link between artifacts of different types. Our review indicated that few traceability studies focused on designing and testing impact analysis sets, presumably due to the scarcity of datasets. Based on the findings, we urge further industrial case studies. Finally, we suggest developing traceability tools to support fully automatic traceability approaches, such as machine learning and deep learning.","PeriodicalId":231095,"journal":{"name":"2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-07-13","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115745456","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
期刊
2020 IEEE/ACM 28th International Conference on Program Comprehension (ICPC)
全部 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