Software evolution analytics can be supported by generating and comparing call graph evolution information over versions of a software system. Call Graph evolution analytics can assist a software engineer when maintaining or evolving a software system. This paper proposes Call Graph Evolution Analytics to extract information from a set of Evolving Call Graphs ECG = {CG1, CG2,… CGN} representing a Version Series VS = {V1, V2, … VN} of an evolving software system. This is done using Call Graph Evolution Rules (CGERs) and Call Graph Evolution Subgraphs (CGESs). Similar to association rule mining, the CGERs are used to capture co-occurrences of dependencies in the system. Like subgraph patterns in a call graph, the CGESs are used to capture evolution of dependency patterns in evolving call graphs. Call graph analytics on the evolution in these patterns can identify potentially affected dependencies (or procedure calls) that need attention. The experiments are done on the evolving call graphs of 10 large evolving systems to support dependency evolution management. This is demonstrated with detailed results for evolving call graphs of Maven-Core’s version series.
DOI Pre-printC has been regarded as a dominant programming language for system software implementation. Meanwhile, it often suffers from various memory vulnerabilities due to its low-level memory control. Quite massive approaches are proposed to enhance memory security, among which Coverage-based Greybox Fuzzing (CGF) is considered to be effective because of its practicality and satisfactory vulnerability detection ability. However, CGF identifies vulnerability based on the verification of detected crashes, thus cannot detect vulnerabilities with non-crash. In this paper, we consider to trace pointer metadata (status, bounds and referents) to detect more various vulnerabilities. Additionally, since pointers in C are often directly related to memory operations, we design two standards to further use pointer metadata as the guidance of CGF, make fuzzing process target to the vulnerable part of programs.
Social
Mon 10 Oct 2022 10:00 - 10:15 at Gold B - Coffee BreakThe coffee break is an intentional allocation of time toward low-fidelity activities like chatting and brain storming. The idea is to help break the flow of the conference in a way that helps restore energy and create engagement.
Social
Mon 10 Oct 2022 12:00 - 13:30 at Gold B - LunchLunch
Social
Mon 10 Oct 2022 16:00 - 19:00 at Gold B - Reception for the ASE Organization and Technical Program Committeeno description available
no description available
Refactoring is an increasingly well studied practice at small scales, with most tool support and research focusing on floss refactoring. However, industry engages in refactoring at many scales and the implications for practices, tools, and needed research are less well understood. This talk will describe ways in which large-scale refactoring differs from more local refactoring efforts, industry examples of larger problems, results from an industry survey on large-scale refactoring, and a few automation needs that would help industry scale refactoring activities.
no description available
Dr. Marouane Kessentini is currently a full professor, chair of the Department of Computer Science and Engineering at Oakland University in Michigan and director of the NSF IUCRC center on Pervasive AI; Michigan Site. He received his Ph.D. from the University of Montreal in Canada in 2012. Dr. Kessentini is a recipient of the prestigious 2018 President of Tunisia distinguished research award, the University distinguished teaching award, the University distinguished digital education award, the College of Engineering and Computer Science distinguished research award, 4 best paper awards including an IEEE 10 Year Most Influential Paper award in Program Comprehension (2011-2021), and his AI-based software refactoring invention, licensed and deployed by Fortune 500 companies, and selected as one of the Top 8 inventions at the University of Michigan for 2018 among over 500 inventions, by the UM Technology Transfer Office. He received various grants from both industry and federal agencies and published over 160 papers in top journals and conferences. Dr. Kessentini has extensive collaborations with the industry on different areas related to refactoring, software engineering intelligence, search-based software engineering, Edge AI, AI/MLOps, AI and cyber-physical systems, intelligent software bots, etc. He is the co-founder of many workshops, General Chair of SSBSE16 and ASE22, and PC chair of MODELS19, SANER 2021, GECCO, etc. He served as a keynote speaker at various venues including ICSR, SSBSE, GECCO, WCCI, etc. He graduated 15+ Ph.D. students and served as associate editor in 7 journals and PC member of over 150 conferences.
Complex software can be hard to read, adapt, and maintain. Refactoring it can create cleaner and self-explanatory code. Refactoring tools try to guide developers towards better code, with more quality. However, most of them take too long to provide feedback, support, and guidance on how developers should improve their software. To reduce this problem, we explored the concept of Live Refactoring, focusing on visually suggesting and applying refactorings, in real-time. With this in mind, we developed a Live Refactoring Environment that visually identifies, recommends, and applies Extract Method refactorings. To validate it, we conducted an empirical experiment. Early results showed that our approach improved several code quality metrics. Besides, we also concluded that our results were significantly different and better than the ones from refactoring the code manually without further help.
Identifier names play a significant role in program comprehension activities, with high-quality names improving developer productivity and system quality. To correct poor-quality names, developers rename identifiers to reflect their intended purpose better. However, renames do not always result in high-quality, long-lasting names; in many cases, developers perform multiple rename operations on the same identifier throughout the system’s lifetime. In this paper, we report on a large-scale empirical study that examines the occurrence of identifiers undergoing multiple renames (i.e., rename chains). Our findings show the presence of rename chains in almost every project, with methods typically having more rename chains than other identifier types. Furthermore, it is usually the same developer responsible for creating all renames within a chain, with most names maintaining the same grammatical structure. Understanding rename chains can help us provide stronger advice, and targeted research, on how to craft high-quality, long-lasting identifiers.
no description available