UNIT 6 Maintanance
UNIT 6 Maintanance
Dr.G.Jose Moses
B.Tech(CSE).,M.Tech(CSE).,Ph.D(CSE).,LMCSI.,MBA(F&M).,Ph.D(MBA).
Professor of CSE
Recognised Research Supervisor of JNTUK & GIETU
Raghu Engineering College(Autonomous)
Visakhapatnam
Mobile:+91-9701329977.
Software Maintenance: Software maintenance, Maintenance Process
Models, Maintenance Cost, Reengineering, Reengineering activities,
Software Reuse.
Software Maintenance is a process of modifying a software system after
the delivery to correct faults, improve or other attributes.
Sometimes, users do not wait for long time. Rather, they require the modified software
system to be delivered to them in the least possible time. As a result, the software
maintenance team needs to use a quick-fix model to avoid the time consuming process
of SMLC.
This model is beneficial when a single user is using the software system. As the user has
proper knowledge of the software system, it becomes easier to maintain the software
system without having need to manage the detailed documentation.
This model is also advantageous in situations when the software system is to be
maintained with certain deadlines and limited resources. However, this model is not
suitable to fix errors for a longer period.
The iterative enhancement model:
The iterative enhancement model can be easily adapted for maintaining a
software system.
It considers that the changes made to the software system are iterative in
nature.
The iterative enhancement model comprises three stages, namely, analysis
of software system, classification of requested modifications, and
implementation of requested modifications.
In the analysis stage, the requirements are analyzed to begin the software
maintenance process. After analysis, the requested modifications are
classified according to the complexity, technical issues, and identification of
modules that will be affected. At the end, the software is modified to
implement the modification request. At each stage, the documentation is
updated to accommodate changes of requirements analysis, design, coding,
and testing phases.
Note: It is essential to have a complete documentation before the
implementation of iterative enhancement model begins.
The Reuse-oriented Model
The reuse-oriented model assumes that the existing program components
can be reused to perform maintenance.
It consists of the following steps.
Identifying the components of the old system which can be reused
Understanding these components
Modifying the old system components so that they can be used in the new
system
Integrating the modified components into the new system.
Define Re Engineering.
When we need to update the software to keep it to the current market,
without impacting its functionality, it is called software re-engineering. It is
a thorough process where the design of software is changed and programs
are re-written.
Reengineering Activities:
Reverse Engineering
It is a process to achieve system specification by thoroughly analyzing,
understanding the existing system. This process can be seen as reverse SDLC
model, i.e. we try to get higher abstraction level by analyzing lower
abstraction levels.
An existing system is previously implemented design, about which we know
nothing. Designers then do reverse engineering by looking at the code and
try to get the design. With design in hand, they try to conclude the
specifications. Thus, going in reverse from code to system specification.
Program Restructuring
It is a process to re-structure and re-construct the existing software. It is all
about re-arranging the source code, either in same programming language or
from one programming language to a different one. Restructuring can have
either source code-restructuring and data-restructuring or both.
Re-structuring does not impact the functionality of the software but enhance
reliability and maintainability. Program components, which cause errors very
frequently can be changed, or updated with re-structuring.
The dependability of software on obsolete hardware platform can be
removed via re-structuring.
Forward Engineering
Forward engineering is a process of obtaining desired software from the
specifications which were brought down by means of reverse engineering. It
assumes that there was some software engineering already done in the past.
Forward engineering is same as software engineering process with only one
difference – it is carried out always after reverse engineering.
Component reusability
A component is a part of software program code, which executes an
independent task in the system. It can be a small module or sub-system
itself.
Software Reuse
A definition of software reuse is the process of creating software systems from predefined software
components.
The advantage of software reuse:
The systematic development of reusable components.
The systematic reuse of these components as building blocks to create new systems.
A reusable component may be code, but the bigger benefits of reuse come from a broader and higher-
level view of what can be reused. Software specifications, designs, tests cases, data, prototypes, plans,
documentation, frameworks, and templates are all candidates for reuse.