Beruflich Dokumente
Kultur Dokumente
1
Software re-engineering
Software re-engineering
Software re-engineering
3
Software Re-engineering is the examination, analysis and alteration of an existing software system to reconstitute it in a new form, and the subsequent implementation of the new form.
Software re-engineering
Objectives
4
To explain why software re-engineering is a cost-effective option for system evolution To describe the activities involved in the software re-engineering process To distinguish between software and data reengineering and to explain the problems of data re-engineering
Software re-engineering
Topics covered
5
Software Maintenance Source code translation Reverse engineering Program structure improvement Program modularisation
Software re-engineering
Software re-engineering
Software Maintenance
7
Adaptive maintenance: Changes are made in response to changes in the environment the product operates Corrective maintenance: Changes are made for the removal of faults, leaving the specifications unchanged Perfective maintenance: Changes are made for the improvement of product effectiveness (e.g., additional functionality, decreased response time) re-engineering Software
Software Maintenance
8
Classification
Software re-engineering
Software Maintenance
9
Software re-engineering
Software Maintenance
10
Maintenance staff are often inexperienced and unfamiliar with the application domain Programs being maintained may have been developed without modern techniques; they may be unstructured, or optimized for efficiency, not maintainability Changes may introduce new faults, which trigger further changes As a system is changed, its structure tends to degrade, which makes it harder to change With time, documentation may no longer reflect the implementation
Software re-engineering
Why Reengineering?
11
Pros:
Reengineering can help build on existing software than embarking on a high risk re-implementation Reengineering can help reduce maintenance costs Reengineering can help evaluate software assets Reengineering can help integrate strategic legacy applications with new software packages
Software re-engineering
Why Reengineering?
12
Cons:
Reengineering projects if not carefully planned and technically justified can be very high risk projects Technical and business success criteria often are not in alignment There are not generic success criteria for a reengineering project
Software re-engineering
When to re-engineer
13
When system changes are mostly confined to part of the system then re-engineer that part When hardware or software support becomes obsolete When tools to support re-structuring are available
Software re-engineering
System re-engineering
14
Re-structuring or re-writing part or all of a legacy system without changing its functionality Applicable where some but not all subsystems 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
Software re-engineering
Definition
15
Forward Engineering is the traditional process of moving from high-level abstractions and logical, implementation independent designs to the physical implementation of a system. Reverse Engineering is the process of analyzing a subject system to
identify the systems components and their interrelationships and create representations of the system in another form or at a higher level of abstraction.
Reengineering ... is the examination and alteration of a subject system to reconstitute it in a new form and the subsequent implementation of the new form.
Software re-engineering
Ne w system
Re-engineered system
Software re-engineering
Involves converting the code from one 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
18
System to be re-engineered
System to be re-engineered
Re-engineered system
Software re-engineering
Software re-engineering
Reverse engineering
20
Analysing software with a view to understanding its design and specification May be part of a re-engineering process but may also be used to re-specify a system for reimplementation Builds a program data base and generates information from this Program understanding tools (browsers, crossreference generators, etc.) may be used in this process
Software re-engineering
Reverse engineering
21
Reverse engineering often precedes reengineering but is sometimes worthwhile in its own right
The design and specification of a system may be reverse engineered so that they can be an input to the requirements specification process for the systems replacement The design and specification may be reverse engineered to support program maintenance
Software re-engineering
Maintenance tends to corrupt the structure of a program. It becomes harder and harder to understand The program may be automatically restructured to remove unconditional branches Conditions may be simplified to make them more readable
Software re-engineering
Program modularisation
23
The process of re-organising a program so that related program parts are collected together in a single module Usually a manual process that is carried out by program inspection and re-organisation
Software re-engineering
Data re-engineering
24
Involves analysing and reorganising the data structures (and sometimes the data values) in a program May be part of the process of migrating from a file-based system to a DBMS-based system or changing from one DBMS to another Objective is to create a managed data environment
Software re-engineering
Data problems
25
End-users want data on their desktop machines rather than in a file system. They need to be able to download this data from a DBMS Systems may have to process much more data than was originally intended by their designers Redundant data may be stored in different formats in different places in the system
Software re-engineering
Data conversion
26
Data re-engineering may involve changing the data structure organisation without changing the data values Data value conversion is very expensive. Special-purpose programs have to be written to carry out the conversion
Software re-engineering
Key points
27
The objective of re-engineering is to improve the system structure to make it easier to understand and maintain The re-engineering process involves source code translation, reverse engineering, program structure improvement, program modularisation and data re-engineering Source code translation is the automatic conversion of of program in one language to another
Software re-engineering
Key points
28
Reverse engineering is the process of deriving the system design and specification from its source code Program structure improvement replaces unstructured control constructs with while loops and simple conditionals Program modularisation involves reorganisation to group related items Data re-engineering may be necessary because of inconsistent data management
Software re-engineering
29
Software re-engineering