Redesign
Encyclopedia
Software redesign is the process of designing and implementing a new overall structure of a software system
Software system
A software system is a system based on software forming part of a computer system . The term "software system" is often used as a synonym of computer program or software; is related to the application of systems theory approaches in software engineering context and are used to study large and...

, without changing its external behavior. The changes aim to fix deficiencies in the software design and create structure that allow for incorporating future enhancements and greater flexibility. The process of redesigning a software systems may result in a modified static structure and dynamic behavior.

With the use of object oriented programming languages, such as Java and C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, software architecture has become an important issue. Software systems often suffer during software evolution due to quick and dirty implementations of new features, which leads to degeneration. Redesign addresses this issue and restores the software design to decrease the maintenance costs.

Background

The term redesign is often used along with the terms refactoring and reengineering
Reengineering
Reengineering can refer to:* Trouble shooting* Business process reengineering* Reengineering * Reengineering * User reengineering...

. The relationships of these terms can be clarified by defining a hierarchy. Reengineering is the general term for conducting major changes of a software system. It does not specify the software aspects that are changed. Redesign stands for creating a new software design for an existing software system, and may include requirements analysis
Requirements analysis
Requirements analysis in systems engineering and software engineering, encompasses those tasks that go into determining the needs or conditions to meet for a new or altered product, taking account of the possibly conflicting requirements of the various stakeholders, such as beneficiaries or users...

 activities. The new design may then be implemented by refactoring the pre-existing software, or may require a new programming paradigm
Programming paradigm
A programming paradigm is a fundamental style of computer programming. Paradigms differ in the concepts and abstractions used to represent the elements of a program and the steps that compose a computation A programming paradigm is a fundamental style of computer programming. (Compare with a...

, such as a transition from unstructured to structured programming
Structured programming
Structured programming is a programming paradigm aimed on improving the clarity, quality, and development time of a computer program by making extensive use of subroutines, block structures and for and while loops - in contrast to using simple tests and jumps such as the goto statement which could...

 or to Object-oriented programming
Object-oriented programming
Object-oriented programming is a programming paradigm using "objects" – data structures consisting of data fields and methods together with their interactions – to design applications and computer programs. Programming techniques may include features such as data abstraction,...

. Changes to the implementation due to a new Programming paradigm are usually too extensive to be described as Refactoring. Code refactoring is making a change to the software implementation in a way that thoroughly maintains internal consistency. Refactoring carries out modifications as a series of small steps. Each of these transformations is called refactoring, and if done correctly will introduce no change to the behavior of the system.
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK