Beruflich Dokumente
Kultur Dokumente
2
Software Change
Software change is inevitable.
» New requirements emerge when the software is used;
» The business environment changes;
» Errors must be repaired;
» New computers and equipment is added to the system;
» The performance or reliability of the system may have to be improved.
A key problem for organizations is implementing and
managing change to their existing software systems.
3
Types of Changes
Repair software faults
» Changing a system to correct deficiencies in the way meets its
requirements.
Adapt software to a different operating environment
» Changing a system so that it operates in a different environment
(computer, OS, etc.) from its initial implementation.
Add to or modify the system’s functionality
» Modifying the system to satisfy new requirements.
Improve the program structure and system performance
» Rewriting all or parts of the system to make it more efficient and
maintainable.
4
Software Evolution and Software Maintenance
Generally, software evolution refers to the study and
management of the process of making changes to software over
time.
» In this definition, software evolution comprises:
– Development activities
– Maintenance activities
– Reengineering activities
Narrow definition of evolution: Sometimes, software evolution is
used to refer to the activity of adding new functionality to existing
software.
5
Software Maintenance
Modifying a program after it has been put into use.
Maintenance does not normally involve major changes to the
system’s architecture.
Changes are implemented by modifying existing components and
adding new components to the system.
6
Types of Maintenance
More precisely, even though software doesn’t age in the same was as
physical equipment, it still needs to be:
– fixed (corrective maintenance),
– adapted to changing needs (adaptive maintenance),
– improved in performance or maintainability (perfective
maintenance)
– improved by fixing bugs before they activate (preventive
maintenance)
7
Maintenance Costs
Usually greater than development costs.
Affected by both technical and non-technical factors.
Increases as software is maintained.
Maintenance corrupts the software structure so it makes
further maintenance more difficult.
Ageing software can have high support costs (e.g. old
languages, compilers etc.).
8
Software Evolution Processes
Processes for evolving a software product depend on:
» The type of software being maintained;
» The development processes used;
» The skills and experience of the people involved.
Proposals for change are the drivers for system evolution. Change
identification and evolution continue throughout the system lifetime.
Platform System
Fault repair
adaptation enhancement
10
Legacy Systems
For many systems, the software evolution process is not as
straightforward as described.
» Associated models and documentation of the software may be missing or
hopelessly outdated.
» The new requirements may not be anticipated by the design of the software,
making the resulting changes difficult to implement correctly.
» Such kind of systems are termed as Legacy Systems.
Legacy systems are old systems that have become significantly
difficult to modify.
» Accumulation of changes have eroded the modularity of the original design.
» The documentation has not been maintained and has become obsolete.
» One or more pieces of its underlying technologies have become obsolete.
Two complementary techniques are employed to support the continued
evolution of legacy systems:
» Reengineering
» Reverse engineering
11
Reengineering
Creating a maintainable system out of an un-maintainable one (at a larger
scale than refactoring).
Re-structuring or re-writing part or all of a legacy system without
changing its functionality.
Applicable where some but not all sub-systems of a larger system require
frequent maintenance.
Re-engineering involves adding effort to make them easier to maintain.
The system may be re-structured and re-documented.
Advantages of Reengineering
» Reduced risk
– There is a high risk in new software development. There may be
development problems, staffing problems and specification problems.
» Reduced cost
– The cost of re-engineering is often significantly less than the costs of
developing new software.
12
Forward Engineering and Reengineering
13
The Reengineering Process
14
Reengineering Process
Source code translation
» Convert code to a new language.
Reverse engineering
» Analyze the program to understand it;
Program structure improvement
» Restructure automatically for understandability;
Program modularization
» Reorganize the program structure;
Data reengineering
» Clean-up and restructure system data
15
Reverse Engineering
In many legacy systems, the only reliable information about the
system is the source code.
17
System Reengineering
Fully re-engineer the entire system (data files, source code, new
platform, etc.), validate the functionality, then implement the newly
re-engineered system.
19
Cont’d
Disadvantages
» The system takes longer to complete with multiple intermediate
versions that require careful configuration control.
» The entire structure of the system cannot be altered, only the
structure within the specific component sections being reengineered.
This requires careful identifications of components in the existing
system and extensive planning of the structure of the target system.
This approach has a lower risk than the Big Bang because as each
component is re-engineered, the risks for that portion of the code can be
identified and monitored.
20