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