July 2024
·
6 Reads
This page lists works of an author who doesn't have a ResearchGate profile or hasn't added the works to their profile yet. It is automatically generated from public (personal) data to further our legitimate goal of comprehensive and accurate scientific recordkeeping. If you are this author and want this page removed, please let us know.
July 2024
·
6 Reads
June 2023
·
29 Reads
·
2 Citations
IEEE Transactions on Software Engineering
Refactoring is a program transformation to improve the internal structure of a program while preserving its external behavior. Developers frequently apply multiple refactorings that depend on each other to achieve goals such as improving code reusability. Although manually applying a sequence of dependent refactorings is a common practice, existing refactoring recommendation tools treat refactorings in isolation without revealing the dependencies among them to developers. One reason is that these relationships among refactorings are poorly understood. Current approaches treat refactoring recommendations as a strictly ordered sequence limiting developers’ ability to understand, validate, and apply recommended refactorings. To address this gap, this paper describes a theory for reasoning about collections of refactorings through defining an ordering dependency relation among refactorings and organizing collection of refactorings as a set of refactoring graphs. We propose an algorithm for identifying refactoring dependencies and illustrate these concepts with a tool for visualizing such refactoring dependencies and refactoring graphs. Our validation results demonstrate that 43% of the 1,457,873 recommended refactorings from 9,595 projects that we studied are part of dependent refactoring graphs. Furthermore, refactorings are not only commonly involved in dependent relations, but also when applied, dependent refactoring graphs improve all of the quality attribute metrics in our experiments more than individual refactorings.
November 2022
·
16 Reads
·
11 Citations
October 2022
·
14 Reads
·
3 Citations
May 2022
·
19 Reads
·
1 Citation
March 2022
·
22 Reads
·
7 Citations
January 2022
·
263 Reads
Software refactoring plays an important role in software engineering. Developers often turn to refactoring when they want to restructure software to improve its quality without changing its external behavior. Studies show that small-scale (floss) refactoring is common in industry and can often be performed by a single developer in short sessions, even though developers do much of this work manually instead of using refactoring tools. However, some refactoring efforts are much larger in scale, requiring entire teams and months of effort, and the role of tools in these efforts is not as well studied. In this paper, we report on a survey we conducted with developers to understand large-scale refactoring, its prevalence, and how tools support it. Our results from 107 industry developers demonstrate that projects commonly go through multiple large-scale refactorings, each of which requires considerable effort. While there is often a desire to refactor, other business concerns such as developing new features often take higher priority. Our study finds that developers use several categories of tools to support large-scale refactoring and rely more heavily on general-purpose tools like IDEs than on tools designed specifically to support refactoring. Tool support varies across the different activities, with some particularly challenging activities seeing little use of tools in practice. Our study demonstrates a clear need for better large-scale refactoring tools and an opportunity for refactoring researchers to make a difference in industry. The results we summarize in this paper is one concrete step towards this goal.
November 2021
·
18 Reads
·
3 Citations
August 2021
·
48 Reads
http://deepblue.lib.umich.edu/bitstream/2027.42/170139/1/ASE2021_DependencyIntelligentRefcatoringfv__Copy_.pdf
November 2020
·
30 Reads
·
11 Citations
... They determined the optimal strategy using a profit function, and concluded that their approach successfully eliminates cyclic dependencies between packages. Ferreira et al. (2023) claimed that the orderings of recommended refactoring is difficult for developers to understand. They proposed an algorithm for detecting these dependencies among refactoring operations and defined refactoring recommendations as sets of refactoring graphs instead of sequences. ...
June 2023
IEEE Transactions on Software Engineering
... Code refactoring is the process of improving the internal structure of a program without affecting its observable behaviour [1]. Admittedly, one of the main challenges of refactoring is correctness [2,3] as "refactoring might not always be behaviour-preserving in practice" [4]. Most refactoring tools lack a precise specification of how they affect the code, are only verified via testing, and in peculiar circumstances they can introduce bugs. ...
November 2022
... The prevalence of legacy software, whether in industrial or open-source applications, has heightened the demand for automated tools capable of processing and updating them while preserving their original functionality [1]. The task of modernizing or enhancing large-scale legacy code [2] remains challenging due to the inherent risks of introducing new bugs and errors into the existing codebase [3]. Furthermore, there is a risk for the modified code to face compilation or runtime issues after replacing critical components in the legacy software. ...
October 2022
... Instead of using the code quality at the code implementation level as the main objective, Ivers et al. [24] focused on the architecture level and proposed a technique to recommend refactorings to isolate entangled software. They designed fitness functions for five objectives and conducted experiments on two of the objectives. ...
March 2022
... In a recent study (Ahmadi et al. 2022), the artifact is represented as a 26-element vector capturing software metrics, while the solution representation is a sequence of refactoring actions determined by an agent trained using deep Q-learning. Similarly, Abid et al. (2021) uses the software codebase as the artifact and a sequence of refactorings as a solution representation, emphasizing refactoring dependencies and the application of intelligent change operators. A sequence of refactorings is also used to encode the solution representation in Ghannem et al. (2013), where the artifact representation is the UML class diagram. ...
November 2021
... The rapid evolution of hardware and software wheels bring more capabilities to intelligent applications meanwhile making the creation and maintenance of that software more intricate [13,74], both fields of software engineering and intelligent applications are eager for breakthroughs in higher-level automation (HLA) -collaboratively resolving the challenges by benefiting from AI techniques. One form of HLA of the two fields can be Automated Software Evolution / Evolvement (ASEv) [29,47], which is a term derived from software evolution and Automated Software Engineering(ASE). Software evolution [36] refers to a continuous change from a lesser, simpler, or worse state to a higher or better state. ...
November 2020
... • Effective feature engineering: Features represent the problem-specific knowledge in pieces extracted from the data; the effectiveness of any ml model depends on the features fed into it. Many studies identified the importance of effective feature engineering and the challenges in gathering the same [143,240,287,317,332]. Specifically, software engineering researchers have notified that identifying and extracting relevant features beyond code quality metrics is non-trivial. ...
November 2019
... HLA is an IEEE standard to provide an architecture to facilitate distributed simulation [89]. Based on HLA, each instance of distributed simulation is called a Federation constituting several HLA entities, called Federate. ...
November 1998
ACM SIGSOFT Software Engineering Notes
... The results of the Agile (agile development of embedded systems) project www.agile-itea.org/public/news.php provide the necessary technological starting point that enables this (Abrahamsson 2007). Scaling up involves different companies and countries, and off-shored and globally outsourced agile teams. ...
December 2013
... Step 1: The component models that were taken into account in our searches are: AUTomotive Open System Architecture (AUTOSAR) [12], BIP (Behavior, Interaction, Priority) [13], BlueArX [14], CORBA Component Model (CCM) [15], COMponent-based design of software for Distributed Embedded Systems, version II (COMDES II) [16], CompoNETS [17], Enterprise JavaBeans (EJB) [18], Fractal [19], Koala [20], KOmponentenBasieRte Anwendungsentwicklung (KOBRA) [21], IEC 61131 [22], IEC 61499 [23], Java Beans [24], Microsoft Component Object Model [25], OpenCOM [26], Open Services Gateway Initiative (OSGI) [27], Palladio Component Model [28], PErvasive COmponent Systems (PECOS) [29], Pin [30], PROGRESS Component Model (ProCom) [31], Robust Open Component Based Software Architecture for Configurable Devices Project (ROBOCOP) [32], Rubus [33], Save Components Component Model (SaveCCM) [34] and Software Appliances (SOFA) [35]. ...
January 2005