0% found this document useful (0 votes)
14 views

Unit 7 Notes

Software maintenance is the final phase of the Software Development Life Cycle (SDLC) and is crucial for keeping software updated with changing requirements and environments, consuming 40-70% of the total lifecycle cost. It encompasses various types of maintenance such as corrective, adaptive, perfective, and preventive, each addressing different needs for software improvement and error correction. Software re-engineering, which includes reverse engineering and restructuring, aims to enhance maintainability and adapt software to current market demands without altering its core functionality.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Unit 7 Notes

Software maintenance is the final phase of the Software Development Life Cycle (SDLC) and is crucial for keeping software updated with changing requirements and environments, consuming 40-70% of the total lifecycle cost. It encompasses various types of maintenance such as corrective, adaptive, perfective, and preventive, each addressing different needs for software improvement and error correction. Software re-engineering, which includes reverse engineering and restructuring, aims to enhance maintainability and adapt software to current market demands without altering its core functionality.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

7.

Software Maintenance and Software Re-engineering


• Software Maintenance is the last phase of SDLC.
• After the product has been released, the maintenance phase keeps the software up to date with
environment changes and changing user requirements.
• It consumes about 40-70% of the cost of the entire life cycle.
• Maintenance can only happen efficiently if the earlier phases are done properly.
• Need Of Maintenance :-
• Correct errors
• Change in user requirement with time
• Changing hardware/software requirements
• To improve system efficiency
• To optimize the code to run faster
• To modify the components
• To reduce any unwanted side effects.
Software Maintenance
• Software Maintenance is the process of modifying a software product after it has been
delivered to the customer.
• The main purpose of software maintenance is to modify and update software application
after delivery to correct faults and to improve performance.

• Corrective maintenance:
• Corrective maintenance of a software product may be essential either to rectify some bugs
observed while the system is in use, or to enhance the performance of the system.
• Adaptive maintenance:
This includes modifications and updation when the customers need the product to run on new
platforms, on new operating systems, or when they need the product to interface with new
hardware and software.
• Perfective maintenance:
A software product needs maintenance to support the new features that the users want
or to change different types of functionalities of the system according to the customer
demands.

• Preventive maintenance:
This type of maintenance includes modifications and updations to prevent future
problems of the software. It goals to attend problems, which are not significant at this
moment but may cause serious issues in future.
Cost Of Maintenance :-

a) Application Domain:
If the application of the Program is design and well understood, the system requirements may
be defined and maintenance due to changing needs minimized.
If the form is entirely new, it is likely that the initial Conditions will be modified frequently, as
user gain Experience with the system.

b) Staff Stability :
It is simple for the original writer of a program to understand and change an application rather
than some other person who must understand the program by the Study of the reports and code
listing.
If the implementation of a system also maintains that systems, maintenance costs will reduce.
Program Lifetime :-
when the program becomes obsolete, or their original hardware is replaced, and conversion
costs exceed rewriting costs.
Dependence on External Environment:-
If an application is dependent on its External Environment, it most be modified as the
climate changes.
Hardware Stability :-
If an application is designed to operate on a Specific hardware Configuration and that
Configuration does not changes during the program's lifetime, no maintenance Costs due to
hardware changes will be incurred.
Technical Factors :-

Module Independence :-
It should be possible to Change one program Unit of a system without affecting any other unit.
Programming Language:
Programs written in a high-Level Programming Language are generally easier to understand than
programs written in a Low-Level Language
Program Validation & Testing :
more the time and effort are spent on design validation and program testing, the few bugs in the
program and, consequently maintenance Costs resulting from bugs Correction are Lower.
Documentation:-
If a program is Supported by clear, Complete yet concise documentation, the function of understanding
the application Can be associatively straight- forward.
Program maintenance Costs tends to be Less for well- reported System than for the sim Supplied with r
incomplete documentation.
f) Configuration Management Techniques :
• One of the essential costs of maintenance is Keeping track of all system documents and ensuring that
these are kept consistent.
Maintenance Activities :-
Maintenance Activities :-
Identification & Tracing –
It involves activities pertaining to identification of requirement of modification or maintenance. It is
generated by user or system may itself report via logs or error messages. Here, the maintenance type is
classified also.
Analysis Phase:
The feasibility and scope of each validated modification request are determined and a plan is prepared
to incorporate the changes in the software.
The input attribute comprises validated modification request, initial estimate of resources, project
documentation, and repository information. The cost of modification and maintenance is also estimated.

Design Phase:
The new modules that need to be replaced or modified are designed as per the requirements specified in
the earlier stages. Test cases are developed for the new design including the safety and security issues.
These test cases are created for the validation and verification of the system.
Implementation Phase:
In the implementation phase, the actual modification in the software code are made, new features that
support the specifications of the present software are added, and the modified software is installed.
The new modules are coded with the assistance of structured design created in the design phase.

System Testing Phase:


Regression testing is performed on the modified system to ensure that no defect, error or bug is left
undetected. Furthermore, it validates that no new faults are introduced in the software as a result of
maintenance activity. Integration testing is also carried out between new modules and the system.
Acceptance Testing Phase:
Acceptance testing is performed on the fully integrated system by the user or by the third party
specified by the end user. The main objective of this testing is to verify that all the features of the
software are according to the requirements stated in the modification request.
Delivery Phase:
Once the acceptance testing is successfully accomplished, the modified system is delivered to the users.
In addition to this, the user is provided proper consisting of manuals and help files that describe the
operation of the software along with its hardware specifications. The final testing of the system is done
by the client after the system is delivered.
Software Reengineering :-
• It is process of software development which is done to improve the maintainability of the software
system
• When we need the update software to keep it to the current market ,without impact its functionality
it is called as software reengineering .
• It is a through process where are design of software is changed and programs are re written .
ADVANTAGES
• Reduced Risk: As the software is already existing, the risk is less as compared to new software
development. Development problems, staffing problems and specification problems are the lots of
problems which may arise in new software development.
• Reduced Cost: The cost of re-engineering is less than the costs of developing new software.
• Revelation of Business Rules: As a system is re-engineered, business rules that are embedded in the
system are rediscovered.
• Better use of Existing Staff: Existing staff expertise can be maintained and extended accommodate
new skills during re-engineering.
Reverse Engineering :
• Software reverse engineering can help to improve the understanding of the underlying source code for
the maintenance and improvement of the software.
In some cases the goal of the reverse engineering process can simply be a documentation of legacy
systems.
• objective of the reverse engineering is to derive the design & specification of a system from its
Source Code.
• The program itself is unchanged by Reverse engineering process.
• The S/w Source code is usually available as the input.
• Reverse engineering is not the same as reengineering but it is part of reengineering .
• Reverse engineering perform transformation from lower abstraction level to higher level.

Existing Reverse Program


Software engineering Specification
Restructuring :-
• Restructuring is a process of re engineering the source code & deciding to retain or change the
programming language .
• Restructuring does not impact the functionality of the s/w but enhance reliability Maintainability.
• In Restructuring he parts of the source code that often cause error in the software can be changed or
updated.
• In Restructuring we eliminate older version of certain parts of the system so that software perform up
to date.
• Forward Engineering :-
• Forward engineering is same as software engineering process , but it is carried out of the reverse
engineering in reengineering .

• Forward engineering is a process of obtaining desired software from the specifications, which were
brought by reverse engineering.
• Forward engineering is same as software engineering process with only one difference it is carried
out always after reverse engineering.
• In most cases, forward engineering does not simply create a modern equivalent of an older program.
• New user and technology requirements are integrated into the reengineering effort.
• The redeveloped program extends the capabilities of the older application.
Forward Engineering Reverse Engineering
• In forward engineering, the application • In reverse engineering or backward
are developed with the given engineering, the information are
requirements. collected from the given application.
• Forward Engineering is a high • Reverse Engineering or backward
proficiency skill. engineering is a low proficiency skill.
• Forward Engineering takes more time • while Reverse Engineering or
to develop an application. backward engineering takes less time to
develop an application.
• The nature of forward engineering is
Prescriptive. • The nature of reverse engineering or
backward engineering is Adaptive.
• Forward engineering is process of
moving from a high-level abstraction to • Reverse engineering is a process of
a detailed implementation. moving from a low-level
implementation to a higher-level
abstraction.
• Forward engineering is generally more • Reverse engineering is generally less
time-consuming and expensive. time-consuming and less expensive.

You might also like