You are on page 1of 6

OVERVIEW OF

SOFTWARE
REENGINEERING
LEGACY SOFTWARE
Definition:
 Any existing project that’s difficult to maintain or extend
 Project is legacy not just the code

Characteristics of legacy projects


 Old
 Difficult to maintain after a few years
 Large
 constant defect rate in software, more code = more bugs
 Inherited
 projects are usually inherited from a previous developer or team
 Poorly documented
SOFTWARE MAINTENANCE
Fixing bugs but preserving their functionalities
Maintenance tasks are very much planned
 For example, bug fixing must be done and it is a planned activity.

Generally, maintenance does not involve making major changes to the architecture
of the system
In other words, maintenance means keeping an installed system running with no
change to its design
SOFTWARE EVOLUTION
creating new but related designs from existing ones
The objectives include supporting new functionalities, making the system perform
better, and making the system run on a different operating system.
Basically, as time passes, the stakeholders develop more knowledge about the
system. Therefore, the system evolves in several ways. As time passes, not only new
usages emerge, but also the users become more knowledgeable.
“Over time what evolves is not the software but our knowledge about a particular
type of software”
LAWS OF SOFTWARE
EVOLUTION
Continuing change
Unless a system is continually modified to satisfy emerging needs of users, the system becomes increasingly less
useful

Increasing complexity
Unless additional work is done to explicitly reduce the complexity of a system, the system will become increasingly
more complex due to maintenance-related changes

Continuing growth
As time passes, the functional content of a system is continually increased to satisfy user needs.

Declining quality
Unless the design of a system is diligently fine-tuned and adapted to new operational environments, the system’s
qualities will be perceived as declining over the lifetime of the system.

Self-regulation, Conservation of familiarity, Conservation of organizational stability, Feedback system


SOFTWARE REENINEERING
Evolution is the process of conducting continuous software reengineering
Reengineering implies a single cycle of taking an existing system and generating
from it a new system, whereas evolution can go forever
transform an existing “lesser or simpler” system into a new “better” system
the examination and alteration of a subject system to reconstitute it in a new form
and the subsequent implementation of the new form
Reengineering = Reverse engineering + Δ + Forward engineering

You might also like