Introduction to System Maintenance

Download Report

Transcript Introduction to System Maintenance

Software Maintenance
• The process of changing the system after it
has been delivered and in operation
• Software change is inevitable
– New requirements emerge
– The business environment changes
– Errors must be repaired
– New equipment must be accommodated
– The performance or reliability may have to be
improved
1
Types of maintenance
• Maintenance to repair software faults
(Corrective)
– Changing a system to correct deficiencies in the way
meets its requirements
• Maintenance to adapt software to a different
operating environment (Adaptive)
– Changing a system so that it operates in a different
environment (computer, OS, etc.) from its initial
implementation
• Maintenance to add to or modify the system’s
functionality (Perfective)
– Modifying the system to satisfy new requirements
2
Legacy systems
• Older software systems that remain vital to
an organisation
• Many software systems that are still in use
were developed many years ago using
technologies that are now obsolete
• These systems are still business critical
that is, they are essential for the normal
functioning of the business
3
Legacy system change
• Systems must change in order to remain useful
• However, changing legacy systems is often expensive
– Different parts implemented by different teams so
no consistent programming style
– The system may use an obsolete programming
language
– The system documentation is often out-of-date
– The system structure may be corrupted by many
years of maintenance
• It is expensive and risky to replace the legacy system
• It is expensive to maintain the legacy system
4
Software re-engineering
• Reorganising and modifying existing software systems to
make them more maintainable
• Re-structuring or re-writing part or all of a legacy system
without changing its functionality
• The system may be re-structured and re-documented
• Advantages
– Reduced risk
• There is a high risk in new software development.
– Reduced cost
• The cost of re-engineering is often significantly less than the
costs of developing new software
5
Forward engineering and reengineering
System
specification
Design and
implementation
Ne w
system
Understanding and
transformation
Re-engineered
system
Forward engineering
Existing
software system
Software re-engineering
6
The re-engineering process
Program
documentation
Original
program
Modularised
program
Original data
Reverse
engineering
Program
modularisation
Source code
translation
Data
reengineering
Program
structure
improvement
Structured
program
Reengineered
data
7
Source code translation
• Involves converting the code from old
programming language (or language
version) to another e.g. FORTRAN to C
• May be necessary because of:
– Hardware platform update
– Staff skill shortages
– Organisational policy changes
• Only realistic if an automatic translator is
available
8
Reverse engineering
• Analysing software to understanding its
design and specification
• The program is unchanged
• Program understanding tools may be used
in this process
• The output is documents showing:
– Program structure diagrams
– Data structure diagrams
– Traceability matrices (where system entities
are defined and referenced)
9
Program structure improvement
• The control structures of the program is
analysed to make it easier to read and
understand
• Maintenance tends to corrupt the structure
of a program.
– The program may be automatically
restructured to remove unconditional
branches
– Conditions may be simplified to make them
more readable
10
Program modularisation
• The process of re-organising a program so
that related program parts are collected
together in a single module
– Redundancy is removed
– Simplify interfaces
• Usually a manual process that is carried
out by program inspection and reorganisation
11
Data re-engineering
• Involves analysing and reorganising the data
structures (and sometimes the data values) in a
program to match new changes
• May be part of the process of migrating from a filebased system to a DBMS-based system or
changing from one DBMS to another
• Data re-engineering approaches
– Data cleanup: duplicate removal, formats improved
– Data extension: increase fields length, storage
capacity
– Data migration: move data to different storage
12
Re-engineering approaches
Automated progr am
restructuring
Automated source
code conversion
Program and data
restructuring
Automated r estructuring
with manual changes
Restructuring plus
architectural changes
Increased cost
• Disadvantage of re-engineering is the limited
program improvement possible
13