0% found this document useful (0 votes)
20 views19 pages

SE UNIT 5 Part1

The document discusses software maintenance and re-engineering. It defines software maintenance as modifying software after delivery to correct faults and improve performance, noting its high cost. It describes categories of maintenance and the re-engineering process which involves reverse engineering, restructuring code and data, and forward engineering.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views19 pages

SE UNIT 5 Part1

The document discusses software maintenance and re-engineering. It defines software maintenance as modifying software after delivery to correct faults and improve performance, noting its high cost. It describes categories of maintenance and the re-engineering process which involves reverse engineering, restructuring code and data, and forward engineering.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 19

Unit 5

Software Maintenance and


Software Project Management
Software Maintenance and Software Project
Management: Syllabus
• Software as an Evolutionary Entity,
• Need for Maintenance,
• Categories of Maintenance: Preventive, Corrective and Perfective Maintenance,
• Cost of Maintenance,
• Software Re- Engineering, Reverse Engineering.
• Software Configuration Management Activities,
• Change Control Process,
• Software Version Control,
• An Overview of CASE Tools.
• Estimation of Various Parameters such as Cost, Efforts Schedule/Duration,
• Constructive Cost Models (COCOMO),
• Resource Allocation Models,
• Software Risk Analysis and Management

2
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.
• On an average, the cost of software maintenance
is more than 50% of all SDLC phases.
3
Software Maintenance Cost

4
Several Key Aspects of Software
Maintenance
• Bug Fixing: The process of finding and fixing errors and problems in the
software.
• Enhancements: The process of adding new features or improving
existing features to meet the evolving needs of the users.
• Performance Optimization: The process of improving the speed,
efficiency, and reliability of the software.
• Porting and Migration: The process of adapting the software to run on
new hardware or software platforms.
• Re-Engineering: The process of improving the design and architecture
of the software to make it more maintainable and scalable.
• Documentation: The process of creating, updating, and maintaining
the documentation for the software, including user manuals, technical
specifications, and design documents.

5
Need for Maintenance
• Correct faults
• Improve the design
• Implement enhancements
• Retire software
• Interface with other systems.
• Accommodate programs so that different hardware,
software, system features, and telecommunications facilities
can be used.
• Migrate legacy software.
• Requirement of user changes.
• Run the code fast
6
Maintenance Activities

7
Categories of Software Maintenance
• 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.
8
Categories of Software Maintenance
• 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’s demands.
• Preventive maintenance: This type of maintenance
includes modifications and updation to prevent
future problems with the software. It goals to
attend to problems, which are not significant at this
moment but may cause serious issues in the future.
9
Software 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 rewritten.
• Legacy software cannot keep tuning with the latest
technology available in the market.
• As the hardware become obsolete, updating of
software becomes headache. Even if software grows
old with time , its functionality does not.
10
Software Re-Engineering
• Example: Initially Unix was developed in
assembly language. When language C came
into existence , Unix was re-engineered in C ,
because working in assembly language was
difficult.
• Other than this , sometimes programmers
notice that few parts of software need more
maintenance than others and they also need
re-engineering.
11
Re-Engineering Process
• Decide- what to re-engineer. Is it whole software or
a part of it?
• Perform- Reverse Engineering, in order to obtain
specifications of existing software.
• Restructure Program- if required. For example,
changing function oriented programs into object-
oriented programs.
• Re-structure Data as required.
• Apply Forward Engineering concepts in order to get
re-engineered software.
12
Software Re-Engineering Activities

13
Software Re-Engineering Activities
1. Inventory Analysis:

• Every software organization should have an inventory of all the


applications.

• Inventory can be nothing more than a spreadsheet model containing


information that provides a detailed description of every active
application.
• By sorting this information according to business criticality, longevity,
current maintainability, and other local important criteria,
candidates for re-engineering appear.
• The resource can then be allocated to a candidate application for re-
engineering work.
14
Software Re-Engineering Activities
2. Document reconstructing:

• Documentation of a system either explains how it


operates or how to use it.

• Documentation must be updated.


• It may not be necessary to fully document an
application.
• The system is business-critical and must be fully re-
documented.
15
Software Re-Engineering Activities
3. Reverse Engineering:
• Reverse engineering is a process of design
recovery. Reverse engineering tools extract
data and architectural and procedural design
information from an existing program.

16
Software Re-Engineering Activities
4. Code Reconstructing:
• To accomplish code reconstruction, the source
code is analyzed using a reconstructing tool.
Violations of structured programming
construct are noted and code is then
reconstructed.
• The resultant restructured code is reviewed
and tested to ensure that no anomalies have
been introduced.
17
Software Re-Engineering Activities
5. Data Restructuring:
• Data restructuring begins with a reverse
engineering activity.
• The current data architecture is dissected, and
the necessary data models are defined.
• Data objects and attributes are identified, and
existing data structures are reviewed for
quality.

18
Software Re-Engineering Activities
6. Forward Engineering:
• Forward Engineering also called renovation or
reclamation not only recovers design
information from existing software but uses
this information to alter or reconstitute the
existing system to improve its overall quality.

19

You might also like