首页 > 最新文献

2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)最新文献

英文 中文
The Energy Cost of the Visitor Pattern 访客模式的能源成本
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00036
D. Bree, M. Cinnéide
Design patterns are applied frequently during software evolution in order to make the software more flexible and amenable to extension. One little-studied aspect of design patterns is their propensity to increase run time energy consumption due to the indirection and additional structure they introduce. In this paper we study the impact of the Visitor pattern on energy efficiency. The Visitor pattern separates an algorithm from the objects it acts upon and improves maintainability by placing each algorithm within a single visitor class, at the cost of increased indirection due to the double dispatch required when the algorithm is invoked. We experimentally investigate the energy impact of varying the implementation of this pattern, and of removing the pattern entirely from the software. In our results we observe energy consumption reductions of greater than 7% in the textbook example when the pattern is implemented using reflective casting, and reductions of over 10% when experimenting with an open source project, JavaParser. The complete removal of the pattern yields more complex results, with little impact in the textbook example but reductions of over 7% in the JavaParser study. Our results highlight the energy savings that may be achieved when the Visitor pattern is removed, and show that energy savings may also be achieved by varying the implementation of the pattern.
为了使软件更加灵活和易于扩展,在软件发展过程中经常应用设计模式。设计模式的一个很少被研究的方面是,由于它们引入的间接和额外结构,它们倾向于增加运行时能耗。本文研究了访客模式对能源效率的影响。访问者模式将算法与它所作用的对象分开,并通过将每个算法放在单个访问者类中来提高可维护性,但代价是在调用算法时需要进行双重分派,从而增加了间接性。我们通过实验研究了改变该模式的实现以及从软件中完全删除该模式对能量的影响。在我们的结果中,我们观察到,当使用反射转换实现模式时,教科书示例中的能耗降低幅度大于7%,而在使用开源项目JavaParser进行实验时,能耗降低幅度超过10%。完全删除模式会产生更复杂的结果,在教科书示例中影响很小,但在JavaParser研究中减少了7%以上。我们的结果突出显示了删除访问者模式时可能实现的节能,并表明通过改变模式的实现也可以实现节能。
{"title":"The Energy Cost of the Visitor Pattern","authors":"D. Bree, M. Cinnéide","doi":"10.1109/ICSME55016.2022.00036","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00036","url":null,"abstract":"Design patterns are applied frequently during software evolution in order to make the software more flexible and amenable to extension. One little-studied aspect of design patterns is their propensity to increase run time energy consumption due to the indirection and additional structure they introduce. In this paper we study the impact of the Visitor pattern on energy efficiency. The Visitor pattern separates an algorithm from the objects it acts upon and improves maintainability by placing each algorithm within a single visitor class, at the cost of increased indirection due to the double dispatch required when the algorithm is invoked. We experimentally investigate the energy impact of varying the implementation of this pattern, and of removing the pattern entirely from the software. In our results we observe energy consumption reductions of greater than 7% in the textbook example when the pattern is implemented using reflective casting, and reductions of over 10% when experimenting with an open source project, JavaParser. The complete removal of the pattern yields more complex results, with little impact in the textbook example but reductions of over 7% in the JavaParser study. Our results highlight the energy savings that may be achieved when the Visitor pattern is removed, and show that energy savings may also be achieved by varying the implementation of the pattern.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"31 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115462943","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}
引用次数: 2
What Is Thrown? Lightweight Precise Automatic Extraction of Exception Preconditions in Java Methods 扔了什么?Java方法中异常前提条件的轻量级精确自动提取
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00038
Diego Marcilio, Carlo A. Furia
When a method throws an exception—its exception precondition—is a crucial element of the method’s documentation that clients should know to properly use it. Unfortunately, exceptional behavior is often poorly documented, and sensitive to changes in a project’s implementation details that can be onerous to keep synchronized with the documentation.We present WIT, an automated technique that extracts the exception preconditions of Java methods. WIT uses static analysis to analyze the paths in a method’s implementation that lead to throwing an exception. WIT’s analysis is precise, in that it only reports exception preconditions that are correct and correspond to feasible exceptional behavior. It is also lightweight: it only needs the source code of the class (or classes) to be analyzed— without building or running the whole project. To this end, its design uses heuristics that give up some completeness (WIT cannot infer all exception preconditions) in exchange for precision and ease of applicability.We ran WIT on 46 Java projects, where it discovered 11 875 exception preconditions in 10 234 methods, taking just 1 second per method on average. A manual analysis of a significant sample of these exception preconditions confirmed that WIT is 100% precise, and demonstrated that it can accurately and automatically document the exceptional behavior of Java methods.
当一个方法抛出异常时——它的异常前提条件——是方法文档中的一个关键元素,客户机应该知道这个元素才能正确地使用它。不幸的是,异常行为通常没有得到很好的文档记录,并且对项目实现细节的变化很敏感,要与文档保持同步是很困难的。我们介绍了WIT,这是一种提取Java方法异常前提条件的自动化技术。WIT使用静态分析来分析方法实现中导致抛出异常的路径。WIT的分析是精确的,因为它只报告正确且对应于可行异常行为的异常前提条件。它也是轻量级的:它只需要分析一个类(或多个类)的源代码,而不需要构建或运行整个项目。为此,它的设计使用了启发式方法,放弃了一些完整性(WIT不能推断所有异常前提条件),以换取精度和适用性。我们在46个Java项目上运行了WIT,它在10234个方法中发现了11875个异常前提条件,平均每个方法只需要1秒。对这些异常前提条件的重要样本进行的手工分析证实了WIT是100%精确的,并且证明了它可以准确、自动地记录Java方法的异常行为。
{"title":"What Is Thrown? Lightweight Precise Automatic Extraction of Exception Preconditions in Java Methods","authors":"Diego Marcilio, Carlo A. Furia","doi":"10.1109/ICSME55016.2022.00038","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00038","url":null,"abstract":"When a method throws an exception—its exception precondition—is a crucial element of the method’s documentation that clients should know to properly use it. Unfortunately, exceptional behavior is often poorly documented, and sensitive to changes in a project’s implementation details that can be onerous to keep synchronized with the documentation.We present WIT, an automated technique that extracts the exception preconditions of Java methods. WIT uses static analysis to analyze the paths in a method’s implementation that lead to throwing an exception. WIT’s analysis is precise, in that it only reports exception preconditions that are correct and correspond to feasible exceptional behavior. It is also lightweight: it only needs the source code of the class (or classes) to be analyzed— without building or running the whole project. To this end, its design uses heuristics that give up some completeness (WIT cannot infer all exception preconditions) in exchange for precision and ease of applicability.We ran WIT on 46 Java projects, where it discovered 11 875 exception preconditions in 10 234 methods, taking just 1 second per method on average. A manual analysis of a significant sample of these exception preconditions confirmed that WIT is 100% precise, and demonstrated that it can accurately and automatically document the exceptional behavior of Java methods.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"153 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125382788","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
A First Look at Information Highlighting in Stack Overflow Answers 堆栈溢出答案中的信息高亮的第一眼
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00041
Shahla Shaan Ahmed, Shaowei Wang, Haoxiang Zhang, T. Chen, Yuan Tian
Technical question and answer (Q&A) sites such as Stack Overflow (SO) have become increasingly important for software developers to share knowledge and contribute to communities. Despite their success and prevalence, navigating the knowledge on these sites remains challenging. To make the posts vivid to users, the Stack Overflow platform allows users to write and edit posts with Markdown or HTML, so that users can leverage various formatting styles (e.g., bold, italic, and code) to highlight the important information.In this study, we carry out the first large-scale exploratory study on the information highlighting in SO answers. We observe that overall, information highlighting is prevalent on SO, i.e., 47.6% of the answers have information highlighted. More specifically, 38.5%, 11.3%, 7.2% of the answers use Code, Bold, and Italic, respectively. Besides source code related content (e.g., identifiers, and programming keywords), users also frequently highlight updates (e.g., updates of answers), caveats (i.e., a reminder or warn of in which context or condition the provided solution works or does not work), and reference. Our findings provide insights for future research, e.g., future research should consider the highlighted content for the downstream tasks that leverage information from the SO answers.
像Stack Overflow (SO)这样的技术问答网站对于软件开发人员分享知识和为社区做贡献已经变得越来越重要。尽管这些网站取得了成功和普及,但在这些网站上浏览知识仍然具有挑战性。为了让帖子对用户生动,Stack Overflow平台允许用户使用Markdown或HTML编写和编辑帖子,这样用户就可以利用各种格式样式(例如,粗体、斜体和代码)来突出重要信息。在本研究中,我们对SO答案中的信息突出进行了首次大规模的探索性研究。我们观察到,总体而言,信息突出在SO上很普遍,即47.6%的答案有信息突出。更具体地说,38.5%、11.3%、7.2%的答案分别使用了代码、粗体和斜体。除了与源代码相关的内容(例如,标识符和编程关键字),用户还经常突出显示更新(例如,答案的更新)、警告(例如,提示或警告所提供的解决方案在哪个上下文或条件下工作或不工作)和参考。我们的发现为未来的研究提供了见解,例如,未来的研究应该考虑利用SO答案信息的下游任务的突出内容。
{"title":"A First Look at Information Highlighting in Stack Overflow Answers","authors":"Shahla Shaan Ahmed, Shaowei Wang, Haoxiang Zhang, T. Chen, Yuan Tian","doi":"10.1109/ICSME55016.2022.00041","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00041","url":null,"abstract":"Technical question and answer (Q&A) sites such as Stack Overflow (SO) have become increasingly important for software developers to share knowledge and contribute to communities. Despite their success and prevalence, navigating the knowledge on these sites remains challenging. To make the posts vivid to users, the Stack Overflow platform allows users to write and edit posts with Markdown or HTML, so that users can leverage various formatting styles (e.g., bold, italic, and code) to highlight the important information.In this study, we carry out the first large-scale exploratory study on the information highlighting in SO answers. We observe that overall, information highlighting is prevalent on SO, i.e., 47.6% of the answers have information highlighted. More specifically, 38.5%, 11.3%, 7.2% of the answers use Code, Bold, and Italic, respectively. Besides source code related content (e.g., identifiers, and programming keywords), users also frequently highlight updates (e.g., updates of answers), caveats (i.e., a reminder or warn of in which context or condition the provided solution works or does not work), and reference. Our findings provide insights for future research, e.g., future research should consider the highlighted content for the downstream tasks that leverage information from the SO answers.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"71 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122562964","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}
引用次数: 0
DiscOrDance: Visualizing Software Developers Communities on Discord DiscOrDance:在Discord上可视化软件开发人员社区
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00062
Marco Raglianti, Csaba Nagy, Roberto Minelli, Michele Lanza
New communication platforms have emerged to support developers in finding and creating the knowledge they need for program comprehension, maintenance, and evolution. Instant messaging applications are supplanting developer mailing lists in collaborative development toolchains. These applications provide a new medium, supporting faster and richer communication (e.g., embedded previews, images, files, videos). Research so far focused on extracting information from these platforms, but there is a lack of tools to visually and interactively explore them.We present DiscOrDance, a tool for the interactive visual exploration of the complete message history of a Discord server. We show how three categories of views elicit insights on aspects of the structure, members, and software related content of a Discord server. We demonstrate use cases of DiscOrDance to support software maintenance and evolution activities on an active software developer community, the Pharo Discord server.Demo video: https://youtu.be/eYCLGWwM9HYTool homepage: https://DiscOrDance.si.usi.ch
新的交流平台已经出现,以支持开发人员查找和创建他们需要的知识,以理解、维护和发展程序。即时消息应用程序正在协作开发工具链中取代开发人员邮件列表。这些应用程序提供了一种新的媒介,支持更快、更丰富的通信(例如,嵌入式预览、图像、文件、视频)。迄今为止的研究主要集中在从这些平台中提取信息,但缺乏以可视化和交互式方式探索它们的工具。我们提出DiscOrDance,一个工具的交互式视觉探索的完整的消息历史的一个不和谐的服务器。我们展示了三类视图如何引出对Discord服务器的结构、成员和软件相关内容方面的见解。我们演示了DiscOrDance的用例,以支持活跃的软件开发人员社区(Pharo Discord服务器)上的软件维护和发展活动。演示视频:https://youtu.be/eYCLGWwM9HYTool主页:https://DiscOrDance.si.usi.ch
{"title":"DiscOrDance: Visualizing Software Developers Communities on Discord","authors":"Marco Raglianti, Csaba Nagy, Roberto Minelli, Michele Lanza","doi":"10.1109/ICSME55016.2022.00062","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00062","url":null,"abstract":"New communication platforms have emerged to support developers in finding and creating the knowledge they need for program comprehension, maintenance, and evolution. Instant messaging applications are supplanting developer mailing lists in collaborative development toolchains. These applications provide a new medium, supporting faster and richer communication (e.g., embedded previews, images, files, videos). Research so far focused on extracting information from these platforms, but there is a lack of tools to visually and interactively explore them.We present DiscOrDance, a tool for the interactive visual exploration of the complete message history of a Discord server. We show how three categories of views elicit insights on aspects of the structure, members, and software related content of a Discord server. We demonstrate use cases of DiscOrDance to support software maintenance and evolution activities on an active software developer community, the Pharo Discord server.Demo video: https://youtu.be/eYCLGWwM9HYTool homepage: https://DiscOrDance.si.usi.ch","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"195 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122519231","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}
引用次数: 2
FuzzNT : Checking for Program Non-termination FuzzNT:检查程序不终止
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00049
Hrishikesh Karmarkar, Raveendra Kumar Medicherla, Ravindra Metta, Prasanth Yeduru
Unintended non-termination of programs could lead to attacks such as Denial-of-Service(DoS). Current testing techniques are not geared to detect such errors. Towards this, we present FuzzNT, a hybrid testing technique to check non-termination of C programs by combining Coverage Guided Fuzzing (CGF) and abstract interpretation based static analysis. Given a program P and the coverage test inputs generated using CGF, P is transformed into a set of specialized programs, each of which under-approximates P. Abstract interpretation is then used to check each of these smaller programs for non-termination. The key advantage of this approach for checking non-termination is that it reuses the test case corpus created during software development and maintenance. Our preliminary experimental evaluation of FuzzNT shows highly promising results.
意外的不终止程序可能导致诸如拒绝服务(DoS)之类的攻击。目前的测试技术还不能检测到这样的错误。为此,我们提出了一种混合测试技术FuzzNT,通过结合覆盖引导模糊(CGF)和基于静态分析的抽象解释来检查C程序的非终止性。给定一个程序P和使用CGF生成的覆盖率测试输入,将P转换为一组专门的程序,每个程序都低于P。然后使用抽象解释来检查这些较小的程序中的每个程序是否不终止。这种检查非终止性的方法的主要优点是它重用了在软件开发和维护期间创建的测试用例语料库。我们对FuzzNT的初步实验评估显示了非常有希望的结果。
{"title":"FuzzNT : Checking for Program Non-termination","authors":"Hrishikesh Karmarkar, Raveendra Kumar Medicherla, Ravindra Metta, Prasanth Yeduru","doi":"10.1109/ICSME55016.2022.00049","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00049","url":null,"abstract":"Unintended non-termination of programs could lead to attacks such as Denial-of-Service(DoS). Current testing techniques are not geared to detect such errors. Towards this, we present FuzzNT, a hybrid testing technique to check non-termination of C programs by combining Coverage Guided Fuzzing (CGF) and abstract interpretation based static analysis. Given a program P and the coverage test inputs generated using CGF, P is transformed into a set of specialized programs, each of which under-approximates P. Abstract interpretation is then used to check each of these smaller programs for non-termination. The key advantage of this approach for checking non-termination is that it reuses the test case corpus created during software development and maintenance. Our preliminary experimental evaluation of FuzzNT shows highly promising results.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"83 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128168709","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
Guiding Automated Test Case Generation for Transaction-Reverting Statements in Smart Contracts 指导智能合约中事务恢复语句的自动测试用例生成
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00023
Mitchell Olsthoorn, A. van Deursen, Annibale Panichella
Transaction-reverting statements are key constructs within Solidity that are extensively used for authority and validity checks. Current state-of-the-art search-based testing and fuzzing approaches do not explicitly handle these statements and therefore can not effectively detect security vulnerabilities. In this paper, we argue that it is critical to directly handle and test these statements to assess that they correctly protect the contracts against invalid requests. To this aim, we propose a new approach that improves the search guidance for these transaction-reverting statements based on interprocedural control dependency analysis, in addition to the traditional coverage criteria. We assess the benefits of our approach by performing an empirical study on 100 smart contracts w.r.t. transaction-reverting statement coverage and vulnerability detection capability. Our results show that the proposed approach can improve the performance of Dy-naMOSA, the state-of-the-art algorithm for test case generation. On average, we improve transaction-reverting statement coverage by 14 % (up to 35 %), line coverage by 8 % (up to 32 %), and vulnerability-detection capability by 17 % (up to 50 %).
事务恢复语句是Solidity中的关键结构,广泛用于权威和有效性检查。当前最先进的基于搜索的测试和模糊测试方法不能显式地处理这些语句,因此不能有效地检测安全漏洞。在本文中,我们认为直接处理和测试这些语句以评估它们是否正确地保护契约免受无效请求的影响是至关重要的。为此,除了传统的覆盖标准之外,我们还提出了一种新的方法,该方法基于过程间控制依赖分析改进了对这些事务恢复语句的搜索指导。我们通过对100个智能合约w.r.t.事务恢复语句覆盖率和漏洞检测能力进行实证研究来评估我们方法的好处。我们的结果表明,所提出的方法可以提高Dy-naMOSA的性能,Dy-naMOSA是最先进的测试用例生成算法。平均而言,我们将事务恢复语句的覆盖率提高了14%(最高35%),将行覆盖率提高了8%(最高32%),将漏洞检测能力提高了17%(最高50%)。
{"title":"Guiding Automated Test Case Generation for Transaction-Reverting Statements in Smart Contracts","authors":"Mitchell Olsthoorn, A. van Deursen, Annibale Panichella","doi":"10.1109/ICSME55016.2022.00023","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00023","url":null,"abstract":"Transaction-reverting statements are key constructs within Solidity that are extensively used for authority and validity checks. Current state-of-the-art search-based testing and fuzzing approaches do not explicitly handle these statements and therefore can not effectively detect security vulnerabilities. In this paper, we argue that it is critical to directly handle and test these statements to assess that they correctly protect the contracts against invalid requests. To this aim, we propose a new approach that improves the search guidance for these transaction-reverting statements based on interprocedural control dependency analysis, in addition to the traditional coverage criteria. We assess the benefits of our approach by performing an empirical study on 100 smart contracts w.r.t. transaction-reverting statement coverage and vulnerability detection capability. Our results show that the proposed approach can improve the performance of Dy-naMOSA, the state-of-the-art algorithm for test case generation. On average, we improve transaction-reverting statement coverage by 14 % (up to 35 %), line coverage by 8 % (up to 32 %), and vulnerability-detection capability by 17 % (up to 50 %).","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127902814","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}
引用次数: 0
On Quantifying the Benefits of Dead Code Removal 关于量化去除死代码的好处
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00076
Gunnar Kudrjavets, Ayushi Rastogi, Jeff Thomas, Nachiappan Nagappan
Engineers consider the presence of dead code as an undesirable attribute of the code base. The industry lacks methods to quantify the benefits of deleting dead code efficiently. The current approach utilizes a simplistic metric that uses the lines of code (LOC) deleted as a proxy to estimate the benefit gained. However, not all LOC are equal. The research community can support the industry and propose methods and metrics that can help to (a) determine the priority order for dead code removal, and (b) quantify the benefits of dead code removal. Improved metrics can result in a more objective ranking of dead code deletion efforts when compared to other competing tasks.
工程师认为存在死代码是代码库的一个不受欢迎的属性。业界缺乏量化有效删除死代码的好处的方法。当前的方法使用一种简单的度量,使用删除的代码行(LOC)作为代理来估计所获得的好处。然而,并非所有LOC都是相同的。研究社区可以支持这个行业,并提出方法和指标来帮助(a)确定去除死代码的优先顺序,以及(b)量化去除死代码的好处。与其他竞争任务相比,改进的度量标准可以对死代码删除工作进行更客观的排名。
{"title":"On Quantifying the Benefits of Dead Code Removal","authors":"Gunnar Kudrjavets, Ayushi Rastogi, Jeff Thomas, Nachiappan Nagappan","doi":"10.1109/ICSME55016.2022.00076","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00076","url":null,"abstract":"Engineers consider the presence of dead code as an undesirable attribute of the code base. The industry lacks methods to quantify the benefits of deleting dead code efficiently. The current approach utilizes a simplistic metric that uses the lines of code (LOC) deleted as a proxy to estimate the benefit gained. However, not all LOC are equal. The research community can support the industry and propose methods and metrics that can help to (a) determine the priority order for dead code removal, and (b) quantify the benefits of dead code removal. Improved metrics can result in a more objective ranking of dead code deletion efforts when compared to other competing tasks.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132208623","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}
引用次数: 0
Dazed and Confused: Studying the Prevalence of Atoms of Confusion in Long-Lived Java Libraries 茫然和困惑:研究长期存在的Java库中混乱原子的流行
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00018
Wendell Mendes, Oton Pinheiro, Emanuele Santos, Lincoln S. Rocha, Windson Viana
Program comprehension is a fundamental activity in software maintenance and evolution, impacting several tasks such as bug fixing, code reuse, and implementation of new features. The Atom of Confusion (AC) is considered the smallest piece of code that can confuse programmers, difficulting the correct understanding of the source code under consideration. Previous studies have shown that these atoms can significantly impact the presence of bugs in C++ projects and increase the time and effort to code understanding in C++ and Java programs. To gather more evidence about the diffusion of ACs in the Java ecosystem, we conduct a study to analyze the prevalence, co-occurrences (at the class level), and evolution of ACs in 27 long-lived Java libraries. To support our investigation, we developed an ACs automatic search tool, which found 11.404 occurrences in the studied libraries. The Conditional Operator and Logic as Control Flow ACs were the most prevalent among the 10 types of ACs assessed. Our findings show that Conditional Operator and Logic as Control Flow were more likely to co-occur in the same class. Finally, we observed that the prevalence of ACs did not decrease over time. On the contrary, in 13 libraries, the presence grew proportionally more than the size of the library in lines of code. Furthermore, in 15 libraries, the fraction of Java classes containing at least one AC also increases over time.
程序理解是软件维护和发展中的一项基本活动,影响诸如bug修复、代码重用和新特性实现等几个任务。混淆原子(Atom of Confusion, AC)被认为是能够使程序员感到困惑的最小代码片段,使他们难以正确理解所考虑的源代码。先前的研究表明,这些原子可以显著地影响c++项目中bug的存在,并增加理解c++和Java程序中的代码的时间和精力。为了收集更多关于Java生态系统中ACs扩散的证据,我们进行了一项研究,分析了27个长期存在的Java库中ACs的流行、共同出现(在类级别上)和演变。为了支持我们的调查,我们开发了一个ACs自动搜索工具,在研究的库中发现了11.404个事件。在被评估的10种ac类型中,条件运算符和逻辑作为控制流ac最为普遍。我们的研究结果表明,条件运算符和逻辑作为控制流更有可能在同一类中同时出现。最后,我们观察到ACs的患病率并没有随着时间的推移而下降。相反,在13个库中,代码行数的增长比例超过了库的大小。此外,在15个库中,包含至少一个AC的Java类的比例也随着时间的推移而增加。
{"title":"Dazed and Confused: Studying the Prevalence of Atoms of Confusion in Long-Lived Java Libraries","authors":"Wendell Mendes, Oton Pinheiro, Emanuele Santos, Lincoln S. Rocha, Windson Viana","doi":"10.1109/ICSME55016.2022.00018","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00018","url":null,"abstract":"Program comprehension is a fundamental activity in software maintenance and evolution, impacting several tasks such as bug fixing, code reuse, and implementation of new features. The Atom of Confusion (AC) is considered the smallest piece of code that can confuse programmers, difficulting the correct understanding of the source code under consideration. Previous studies have shown that these atoms can significantly impact the presence of bugs in C++ projects and increase the time and effort to code understanding in C++ and Java programs. To gather more evidence about the diffusion of ACs in the Java ecosystem, we conduct a study to analyze the prevalence, co-occurrences (at the class level), and evolution of ACs in 27 long-lived Java libraries. To support our investigation, we developed an ACs automatic search tool, which found 11.404 occurrences in the studied libraries. The Conditional Operator and Logic as Control Flow ACs were the most prevalent among the 10 types of ACs assessed. Our findings show that Conditional Operator and Logic as Control Flow were more likely to co-occur in the same class. Finally, we observed that the prevalence of ACs did not decrease over time. On the contrary, in 13 libraries, the presence grew proportionally more than the size of the library in lines of code. Furthermore, in 15 libraries, the fraction of Java classes containing at least one AC also increases over time.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"438 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134178391","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
On the Evolution of Code Readability 论代码可读性的演变
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00082
Valentina Piantadosi
Code reading is an activity frequently performed by developers. Before modifying code, developers have to read it, especially if it was authored by others. Several studies have been carried out to find insights related to code readability. However, they were mostly conducted on single (static) code snippets, i.e., they did not consider the ever-changing nature of software. In a preliminary study, we observed that refactoring operations performed by developers to improve several nonfunctional aspects of open-source software systems often result in improved code readability. Motivated by such results, in this research, we studied code readability in the context of software evolution. Especially, we aimed at understanding: (i) to what extent software developers are interested in code readability; (ii) how to code readability evolves in complex software systems;(iii) the influence of developers’ personal characteristics on the evolution of code readability. The results achieved indicate that most of the developers we surveyed reported that they consider readability as an important aspect of the source code. Then, by mining several software repositories we observed that readability rarely changes in software evolution. Therefore, files created unreadable rarely become readable, and vice versa. Finally, we noticed that some personal characteristics of developers have an impact on code readability. In particular, developers’ orienting network (related to their attention) positively correlates with code readability.
代码阅读是开发人员经常执行的一项活动。在修改代码之前,开发人员必须阅读它,特别是如果它是由其他人编写的。为了找到与代码可读性相关的见解,已经进行了一些研究。然而,它们大多是在单个(静态)代码片段上进行的,也就是说,它们没有考虑到软件不断变化的本质。在初步研究中,我们观察到开发人员为改进开源软件系统的几个非功能方面而执行的重构操作通常会提高代码的可读性。受这些结果的启发,在本研究中,我们研究了软件进化背景下的代码可读性。特别是,我们旨在理解:(i)软件开发人员对代码可读性感兴趣的程度;(ii)复杂软件系统中代码的可读性是如何演变的;(iii)开发人员的个人特征对代码可读性演变的影响。获得的结果表明,我们调查的大多数开发人员报告说,他们认为可读性是源代码的一个重要方面。然后,通过挖掘几个软件存储库,我们观察到可读性在软件进化中很少发生变化。因此,创建的不可读文件很少变成可读的,反之亦然。最后,我们注意到开发人员的一些个人特征会影响代码的可读性。特别是,开发人员的定向网络(与他们的注意力相关)与代码可读性呈正相关。
{"title":"On the Evolution of Code Readability","authors":"Valentina Piantadosi","doi":"10.1109/ICSME55016.2022.00082","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00082","url":null,"abstract":"Code reading is an activity frequently performed by developers. Before modifying code, developers have to read it, especially if it was authored by others. Several studies have been carried out to find insights related to code readability. However, they were mostly conducted on single (static) code snippets, i.e., they did not consider the ever-changing nature of software. In a preliminary study, we observed that refactoring operations performed by developers to improve several nonfunctional aspects of open-source software systems often result in improved code readability. Motivated by such results, in this research, we studied code readability in the context of software evolution. Especially, we aimed at understanding: (i) to what extent software developers are interested in code readability; (ii) how to code readability evolves in complex software systems;(iii) the influence of developers’ personal characteristics on the evolution of code readability. The results achieved indicate that most of the developers we surveyed reported that they consider readability as an important aspect of the source code. Then, by mining several software repositories we observed that readability rarely changes in software evolution. Therefore, files created unreadable rarely become readable, and vice versa. Finally, we noticed that some personal characteristics of developers have an impact on code readability. In particular, developers’ orienting network (related to their attention) positively correlates with code readability.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131159882","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
An Empirical Study on the Fault-Inducing Effect of Functional Constructs in Python Python中函数结构诱导错误效应的实证研究
Pub Date : 2022-10-01 DOI: 10.1109/ICSME55016.2022.00013
Fiorella Zampetti, Francois Belias, Cyrine Zid, G. Antoniol, M. D. Penta
Functional programming is expected to introduce several benefits to programs, including fewer side effects, easier parallelization, and even, in some circumstances, better comprehensibility. This paper investigates the extent to which the addition/modification of certain programming language constructs, i.e., lambdas, comprehensions, and map/filter/reduce, have higher chances to induce fixes than other changes. To this extent, we analyze the change history of 200 popular open-source programs written in Python, accounting for ≃ 630k commits and 6M changes. The study results show that changes to functional constructs have higher odds to induce fixes than other changes, and that some functional constructs, such as lambdas and comprehensions, have higher odds to induce fixes than others. Finally, a qualitative analysis revealed different scenarios in which functional constructs have been fixed. Results of this study may trigger better development support when using functional constructs during development, and prioritize code review and testing on certain areas of the source code.
函数式编程有望给程序带来一些好处,包括更少的副作用、更容易并行化,甚至在某些情况下,更好的可理解性。本文研究了添加/修改某些编程语言结构(即lambda、推导式和map/filter/reduce)比其他更改更有可能引起修复的程度。在此范围内,我们分析了200个流行的用Python编写的开源程序的变化历史,统计了630k次提交和6M次更改。研究结果表明,功能构式的改变比其他构式的改变更容易引起修复,而一些功能构式,如lambda和推导式,更容易引起修复。最后,定性分析揭示了功能结构固定的不同场景。当在开发过程中使用功能结构时,这项研究的结果可能会触发更好的开发支持,并优先考虑对源代码的某些区域进行代码审查和测试。
{"title":"An Empirical Study on the Fault-Inducing Effect of Functional Constructs in Python","authors":"Fiorella Zampetti, Francois Belias, Cyrine Zid, G. Antoniol, M. D. Penta","doi":"10.1109/ICSME55016.2022.00013","DOIUrl":"https://doi.org/10.1109/ICSME55016.2022.00013","url":null,"abstract":"Functional programming is expected to introduce several benefits to programs, including fewer side effects, easier parallelization, and even, in some circumstances, better comprehensibility. This paper investigates the extent to which the addition/modification of certain programming language constructs, i.e., lambdas, comprehensions, and map/filter/reduce, have higher chances to induce fixes than other changes. To this extent, we analyze the change history of 200 popular open-source programs written in Python, accounting for ≃ 630k commits and 6M changes. The study results show that changes to functional constructs have higher odds to induce fixes than other changes, and that some functional constructs, such as lambdas and comprehensions, have higher odds to induce fixes than others. Finally, a qualitative analysis revealed different scenarios in which functional constructs have been fixed. Results of this study may trigger better development support when using functional constructs during development, and prioritize code review and testing on certain areas of the source code.","PeriodicalId":300084,"journal":{"name":"2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"27 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132874383","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}
引用次数: 0
期刊
2022 IEEE International Conference on Software Maintenance and Evolution (ICSME)
全部 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