Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
2003, Electronic Notes in …
In this paper we provide an extensive overview of existing research in the field of software restructuring and refactoring, from a formal as well as a practical point of view. Next, we propose an extensive list of open questions that indicate future research directions, and we provide some partial answers to these questions.
Proceedings First International Workshop on …, 2003
This position paper identifies emerging trends in refactoring research, and enumerates a list of open questions, from a practical as well as a theoretical point of view. We suggest these directions for further research based on our own experience with refactoring, as well as on a detailed literature survey on software refactoring.
2004
ABSTRACT In this paper we provide a detailed overview of the field of software restructuring and refactoring from a formal as well as a from a practical point of view. After summarizing refactoring's current applications and tool support, we discuss the current research on refactoring in a number of essential research questions. Lastly, we highlight the key directions in which refactoring research is moving forward.
Software Engineering, IEEE Transactions …, 2005
This paper provides an extensive overview of existing research in the field of software refactoring. This research is compared and discussed based on a number of different criteria: the refactoring activities that are supported; the specific techniques and formalisms that are used for supporting these activities; the types of software artifacts that are being refactored; the important issues that need to be taken into account when building refactoring tool support; and the effect of refactoring on the software process. A running example is used throughout the paper to explain and illustrate the main concepts.
2014
This report documents the program and the outcomes of Dagstuhl Seminar 14211 on “The Future of Refactoring.” Over the past decade, refactoring has become firmly established as an essential part of industrial software development. At the same time, academic interest in refactoring has grown at a fast pace, resulting in a large body of literature on many dierent aspects of refactoring. The aim of this seminar was to provide a forum for refactoring researchers and practitioners to discuss what has been achieved, get to know each others’ work, and plan future collaboration. This report presents abstracts of the participants’ talks and summaries of breakout sessions, and introduces some joint projects that were started as a result of the seminar. Seminar May 18‐23, 2014 ‐ http://www.dagstuhl.de/14211 1998 ACM Subject Classification D.2.7 Restructuring, reverse engineering, and reengineering
2020
Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied at different levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloud computing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include other non-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are, nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities, and testi...
2016
research towards reformulating traditional software engineering challenges as optimization problems and consequently deploying search heuristics to solve them. From the search-based perspective, any SE problem can be defined by a set of conflicting objectives, accompanied multiples constraints and other factors. Instead of targeting an optimal solution, the metaheuristic search has the capability of generating multiple near-optimal solutions that eventually In both categories, cohesion and coupling are the main metrics used to improve the quality of existing packages (e.g. modules) by determining which classes need to be grouped in a package. Research Problem 1: The majority of existing contributions have formulated the restructuring problem as a single-objective problem where the goal is to improve the cohesion and coupling of packages. Even though most of the existing approaches are powerful enough to provide remodularization solutions, some issues still need to be addressed. Research Problem 2: One of the most important issues is the semantic coherence of the design. The restructured program could improve structural metrics but become semantically incoherent. In this case, the design will become difficult to understand since classes are placed in wrong packages to improve the structure in terms of cohesion and coupling. Also, the number of code changes is not considered when suggesting remodularization solutions; the only aim is to improve the structure of packages independently of the cost of code changes. However, in realworld scenarios, developers prefer, in general, remodularization solutions that improve the structure with a minimum number of changes. It is important to minimize code changes to help developers in understanding the design after applying suggested changes. Research Problem 3: Existing remodularization studies are also limited to few types of changes mainly move class and split packages [18] [19]. However, refactoring at the class and method levels can improve remodularization solutions such as by moving methods between classes located in different packages. The use of development history can be an efficient aid when proposing remodularization solutions. For example, packages that were extensively modified in the past may have a high probability of being also changed in the future. Moreover, the packages to modify can be similar to some patterns that can be found in the development history, thus, developers can easily recognize and adapt them. 1.2.3 Software Refactoring: Software Refactoring is defined as the process of improving code after it has been written by changing its internal structure without changing its external behavior [15]. The idea is to reorganize variables, classes and methods to facilitate future adaptations and extensions and Proposed Research Contributions Our primary goal was to explore a higher dimensionality of different SE problems. Problems belonging to different domains, such as model transformation, software refactoring and remodularization, have eventually different formulations (objectives, constraints etc.). The following figure will cluster our contributions according to their application domains.
Software-refactoring improves the quality and reduces the complexity during the whole life cycle of the software system. The objective of this work is to elicit the existing challenges and refactoring techniques and practices to counter those challenges. This study presents a systematic literature review based upon the scientific literature published since January 2000. After rigorously applying the SLR protocol defined by Barbara Kitchenham, we identify 36 articles discussing software- refactoring challenges, techniques, and practices. We point out complexity, understandability, and maintainability as three challenges of traditional software engineering that are resolved by software-refactoring. This SLR identifies assertions, program slicing, graph transformation, software metrics, and metamodeling, as five commonly used refactoring techniques. Moreover, eight main challenges of software-refactoring, namely determining refactoring and code location, selecting refactoring type and ...
It is not uncommon to find that many of the data processing systems of today have been in operation for as many as 10 – 30 years back. Legacy systems are older software systems that remain vital to an organization. Many software systems that are still in use were developed many years using technology that are now obsolete. Re-engineering is the systematic transformation of an existing system into a new form to realize quantity improvements in operation, system capability, functionality, performance or evolveability at a lower cost. This publication explores data restructuring as the common type of reengineering and its application.
2008
Abstract. This paper proposes a case for the GraBaTs' 08 tool contest. The graph transformation system to be implemented shall (i) import a graph-based representation of models of Java programs in a Gxl-based format,(ii) allow these models to be transformed interactively with three well-known program refactorings Encapsulate Field, Move Method, and Pull-up Method, and (iii) export the resulting models in the same Gxlformat.
Advanced Science and Technology Letters, 2014
Software refactoring is a technique that transforms a program to improve its internal structure, design, simplicity, understandability or other features without affecting its external behavior. Researchers have studied the different angles of the refactoring activity to develop knowledge. Currently, there is an accumulation of knowledge which needs classification and summarization. We collected and studied refactoring research papers published since 1999 to classify and summarize. This can is help to reveal the research pattern, common concerns, and statistics to formulate better research topics.
2018
Department of Software Engineering B. Thomas Golisano College of Computing and Information Sciences Master of Science in Software Engineering Advances and Challenges in Software Refactoring: A Tertiary Systematic Literature Review
Pro PHP Refactoring, 2010
The drive for this report is to inaugurate the innumerable techniques espoused by the refactoring tools in coding development. The software product is a very complex and timeconsuming process of development. Difficulty understanding and maintaining poorly designed software systems Software maintenance can take up to 50% of total development costs for software production. As a modus operando, the refactoring tools purpose ultimately to amend the basis codes into an easier and more comprehensible way. Moreover, refactoring succors to check the trifle of the coding procedure. This is apparent through having deliberation on the program catalog, precision and the use of the deconstruct trees. Refactoring tools are convenient for innumerable observes done by the human beings. Software refactoring has a direct impact on reducing the cost of software maintenance by changing the internal structure of the code without changing its external behavior. So the time taken to process as well as doing a critical analysis of complex codes is reduced. This report proposes to have a precarious scrutiny on the various use including the pluses of using refactoring tools.
IEEE International Conference on Computer Systems and Applications, 2006., 2006
Poorly designed software systems are difficult to understand and maintain. Modifying code in one place could lead to unwanted repercussions elsewhere due to high coupling. Adding new features can cause further quality degradation to the code if proper design and architectural concerns were not implemented. Development in a large enterprise system with such attributes will, over time, lead to a myriad of concerns unless the system is periodically overhauled or refactored in some way. Refactoring can aid the developer to improve the design of the code and to make it cleaner, without changing its behaviour. This study provides answers for some of the questions on refactoring. A refactoring tool survey is given. The IDEs surveyed include some of the most popular commercial and open source offerings from IntelliJ's IDEA, IBM's Eclipse and Sun's Netbeans. We also explain a way to automatically find targets for refactorings via automatic detection of code smells from static code analysis. Concerns on viewing compiler refactorings as a fully automated refactorings are raised. We will perform a critical evaluation of refactoring by surveying these tools.
Refactoring is a crucial process to improve the quality of software. Refactoring is part of software engineering that improves more readability of program and maintainability of the software. Refactoring is a most widely used technique that gives the code simpler, cleaner, reusable, extendable, maintainable or other characteristics by transforming a program. In programming languages, bad smell or code smell is a code or design problem that makes the software hard to understand and maintain the code. Basically, bad smells are structured characteristics of software that indicate a problem, may be need it refactoring of code. In this paper some refactoring techniques discussed that are used to remove code smells from code or program. Simulation has been done for some refactoring techniques like Rename method, Extract method, Move method, Pull up method using Eclipse tool. Eclipse refactoring tool supports the java development language. It has been observed that pull up method is better as compared to other refactoring methods because pull up method dispose the complexity and duplicate code from program.
The modular design of software systems is an important factor that contributes to the success of software engineering projects. It is enabled by a set of design principles, among which information hiding and separation of concerns are the most influential ones. Their application limits coordination needs and fosters the simple replacement of components, thus facilitating sustainable software engineering processes. Many software systems are initially created in a modular way. However, over time modularity often degrades as components are reused outside the context where they were created. My work proposes an automated strategy to remodularize software based on move refactoring, i.e. the simplest possible refactoring which moves classes between packages without changing other aspects of the code. Main goal is to automatically identify move refactoring that result in a large improvement of modularity.
Journal of Information and Communication Technology, 2021
Refactoring is a critical task in software maintenance and is commonly applied to improve system design or to cope with design defects. There are 68 different types of refactoring techniques and each technique has a particular purpose and effect. However, most prior studies have selected refactoring techniques based on their common use in academic research without obtaining evidence from the software industry. This is a shortcoming that points to the existence of a clear gap between academic research and the corresponding industry practices. Therefore, to bridge this gap, this study identified the most frequently used refactoring techniques, the commonly used programming language, and methods of applying refactoring techniques in the current practices of software refactoring among software practitioners in the industry, by using an online survey. The findings from the survey revealed the most used refactoring techniques, programming language, and the methods of applying the refactor...
The Journal of Object Technology, 2009
In this paper, we provide a detailed overview of existing researches in the field of software restructuring and model refactoring, from a formal as well as a practical point of view. We propose a possible taxonomy for the classification of several existing and proposed model refactoring approaches. The taxonomy is described with a feature model that makes the different design choices for model refactoring explicit.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.