Unit 7 Notes
Unit 7 Notes
• 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.
• 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.
•