|
Definition
Producing software is a
very complex process that takes a considerable time to evolve. To help with development
there are a number of software lifecycle models which aid to manage this process.A
model breaks down the problem into smaller more manageable parts that are individually
_ developed iteratively until all the requirements are met. However
using such models do not take into consideration some reality factors that have
direct influence on developing software. These factors are, the requirements changing
to accommodate clients' needs, new functionality arises, pressures of meeting
deadlines and the evolution of developers changing have an over all effect on
the whole quality of the system design. These are some of the problems that relate
to maintaining software. Software maintenance is described formally as "the
process of modifying a software system or component after delivery to correct
faults, improve performance or other attributes, or adapt to a changed environment".
Software maintenance can take up to 50% of
the overall development costs of producing software. Boehm carried out a study
in 1975 on a project being developed and concluded that it cost $30 per line of
code during development which increased to $4,000 per line for maintenance costs.
One of the main attributes to these high costs is poorly designed code, which
makes it difficult for developers to understand the system even before considering
implementing new code. Understanding a system requires the "Software engineer
to extract high-level information from low level code". These high level
abstractions use approximations to produce abstract models of the underlying system.
These models will produce a limited level of under-standing of the system through
information that has been lost in using the approximations to produce these models. This
makes the design of code an increasingly important part of the overall development
I of software. Refactoring "is the process of changing a software system
in such a way that it does not alter the external behavior of the code yet improves
its internal structure" Refactoring can have a direct influence on reducing
the cost of software maintenance through changing the internal structure of the
code to increase the design which helps the present and future developers evolve
and understand the system. The aim of this report is to outline the importance
of refactoring through a comprehensive literature review and also identifying
possible research questions, which could be considered for future work. Refactoring
is relatively a new area of research and so is not well defined. There are a vast
number of definitions for refactoring, most of them are mentioned below. This
list is quite large to correlate to the many different areas which refactoring
covers. Refactoring (noun): a change made to
the internal structure of software to make it easier to understand and cheaper
to modify without changing its observable behavior. Refactoring (verb): to restructure
software by applying a series of Refactoring without changing its observable behavior.
Refactoring is the process of taking an object design and rearranging it in various
ways to make the design more flexible and/or reusable. There are several reasons
you might want to do this, efficiency and maintainability being probably the most
important. To ref actor programming code is
to rewrite the code, to "clean it up" Refactoring is the moving of units
of functionality from one place to another in your program. Refactoring has
as a primary objective, getting each piece of functionality to exist in exactly
one place in the software Refactoring is the process of taking an object design
and rearranging it in various ways to make the design more flexible and/or reusable.
There are several reasons you might want to do this, efficiency and maintainability
being probably the most important. <<back |