Improving the Design - Multimedia University
Download
Report
Transcript Improving the Design - Multimedia University
Software Maintenance
“Taking care of the software”
TCS2411 Software Engineering
1
Lecture Objectives
To understand the activities in software
maintenance
To identify the factors that affect the
effectiveness of maintenance activities
To describe the different types of
maintenance activities
TCS2411 Software Engineering
2
A Few Questions
“Have you tried to modify someone else’s
program?”
“Would you like someone else to modify
your program?”
“How easy is it to update your program?”
“Have you looked at a program that you
have completed a few months ago and
tried to make changes to it?”
TCS2411 Software Engineering
3
Software Maintenance
Process of changing a system after it has
been delivered and is in use
Last phase in software engineering
process
Evolution of software - changing it to
maintain its ability to survive
Goal of software engineering - to ease the
maintenance process & reduce costs
TCS2411 Software Engineering
4
Maintenance Activities
Corrective Maintenance - diagnosis and
correction of reported errors
Adaptive Maintenance - modifications to
properly interface with changing
environments new hardware, OS, devices
Perfective Maintenance - implementing
new system requirements after system is
successful
TCS2411 Software Engineering
5
Maintenance Effort
Distribution
Adaptive
Maintenance
18%
Corrective
Maintenance
17%
TCS2411 Software Engineering
Perfective
Maintenance
65%
6
Maintainability
The ease with which software can be
understood, corrected, adapted and/or
enhanced
Key goal that guides the SE process
Important quality to be considered in all
activities including design, coding and
testing
TCS2411 Software Engineering
7
Classic Maintenance
Problems
Difficult or impossible to trace evolution of
software through many versions/releases
Difficult or impossible to trace the process
through which software was created
Difficult to understand “someone else’s”
program
“Someone else” is often not around to
explain
TCS2411 Software Engineering
8
Classic Maintenance
Problems (Continued)
Documentation doesn’t exist or is awful
Most software is not designed for change
Maintenance has not been viewed as
glamorous work
TCS2411 Software Engineering
9
Maintenance Cost
Factors
Non-technical factors
Application domain
Staff stability
Program age
External environment
Hardware stability
TCS2411 Software Engineering
Technical factors
Module independence
Programming
language
Programming style
Program Validation
Documentation
Configuration
Management
10
Structured vs
Unstructured Maintenance
Maintenance request
Software
Configuration?
Code
Evaluate design
Evaluate code
Plan approach
?
Modify design
Evaluate design
Recode
Review
Review
Test and release
TCS2411 Software Engineering
11
Structured Maintenance
Software configuration exists
Tasks include evaluation of design
documentation, assessment of change
impact, modify design, review, & coding
Regression tests conducted before release
Can be done due to earlier SE approach
Amount of wasted effort reduced, overall
quality of change/correction is enhanced
TCS2411 Software Engineering
12
Unstructured
Maintenance
Only source code available
Tasks include evaluation of code, make
changes, review
Impact of changes difficult to assess
Regression testing cannot be done
because no records of previous testing
Difficulties due to development without
well-defined methodology
TCS2411 Software Engineering
13
Preventive Maintenance
Software is changed to improve future
maintainability or reliability
More common term in maintenance of
hardware and other physical systems
Characterised by
reverse engineering
re-engineering
TCS2411 Software Engineering
14
Software Reverse
Engineering
Originally a process in hardware disassemble a hardware product to
understand the design and specifications
In software, it’s the process of analysing a
program to create a representation at a
higher level of abstraction
Usually from the source code or
executable code, create the design and
specifications of a software
TCS2411 Software Engineering
15
Reverse Engineering
Process
Program structured
diagrams
Automated
analysis
System to be
re-engineered
Manual
annotation
TCS2411 Software Engineering
System
information
store
Document
generation
Data structured
diagrams
Traceability
materials
16
Software Reengineering
Takes information of an existing system
and restructures the system to achieve
higher quality
Usually takes the result of reverse
engineering as starting point
Makes the system more maintainable improve the structure, create new
documentation, and easier to understand
TCS2411 Software Engineering
17
Re-engineering
Activities
Source code translation
Language upgrade, new platform, new
language
Program restructuring
Structure corrupted in maintenance, improve
logic, program modularisation
Data re-engineering
Clean up data problems and inconsistencies,
database migration
TCS2411 Software Engineering
18
References
“Software Engineering: A Practitioner’s
Approach” 5th Ed. by Roger S. Pressman,
Mc-Graw-Hill, 2001
“Software Engineering” by Ian Sommerville,
Addison-Wesley, 2001
TCS2411 Software Engineering
19