Download presentation
Presentation is loading. Please wait.
1
Software Maintenance
2
What is Reverse Engineering ?
You have an unexpected case: You finished one course project using Java Your program runs OK But, by accident, you delete the java file How to hand in your project? Reverse Engineering
3
Reverse Engineering Analyzing software with a view to understanding its design and specification May be part of the reengineering process May be used to specify a system for prior to reimplementation Program understanding tools may be useful (browsers, cross-reference generators, etc.)
4
What is Reverse Engineering ?
Forward Engineering Reverse Engineering Requirements Design Source Code Behavior
5
What is Reverse Engineering ?
Abstraction System Reverse Engineering Abstraction Forward Engineering Re-Implementation Old system New System
6
What is Reverse Engineering?
RE encompasses any activity that is done to determine how a product works, to learn the ideas and technology that were used in developing that product. RE can be done at many levels RE generally belongs to Software Maintenance
7
Why do we need RE ? Recovery of lost information
providing proper system documentation Assisting with maintenance identification of side effects and anomalies Migration to another hw/sw platform Facilitating software reuse
8
Why do we need RE ? Benefits maintenance cost savings
quality improvements competitive advantages software reuse facilitation
9
Reverse Engineering Concepts part 1
Abstraction level ideally want to be able to derive design information at the highest level possible Completeness level of detail provided at a given abstraction level Interactivity degree to which humans are integrated with automated reverse engineering tools
10
Reverse Engineering Concepts part 2
Directionality one-way means the software engineer doing the maintenance activity is given all information extracted from source code two-way means the information is fed to a reengineering tool that attempts to regenerate the old program Extract abstractions meaningful specification of processing performed is derived from old source code
11
Reverse Engineering Process
12
Reverse Engineering Activities part 1
Understanding process source code is analyzed to at varying levels of detail system program component pattern statement to understand procedural abstractions and overall functionality
13
Reverse Engineering Activities part 2
Understanding data internal data structures database structure User interfaces what are the basic actions (e.g. key strokes or mouse operations) processed by the interface? what is a compact description of the system's behavioral response to these actions? what concept of equivalence of interfaces is relevant?
14
Difficulties of Reverse Engineering
Gap between problem /solution domain Gap between concrete and abstract Gap between coherency/disintegration Gap between hierarchical/associational
15
Scope and Task of Reverse Engineering
program understanding Problem/Application domain Mapping Program/Implemen. domain
16
Scope and Task of Reverse Engineering
Redocumentation and/or document generation Recovery of design approach and design details at any level of abstraction Identifying reusable components and components that need restructuring Recovering business rules Understanding high-level system description.
17
Maintenance Costs Usually greater than development costs (2* to 100* depending on the application) Affected by both technical and non-technical factors. Increases as software is maintained. Maintenance corrupts the software structure so makes further maintenance more difficult. Ageing software can have high support costs (e.g. old languages, compilers etc.)
18
Maintenance Costs (cont’d)
Time and money (software that costs £ 10 a line to develop costs £ 400 a line to maintain) Organizations become maintenance bound and cannot produce new software Customer dissatisfaction when seemingly legitimate requests for repair or modification cannot be addressed in a timely manner Reduction in overall software quality as changes introduce latent errors in the maintained software Upheaval caused during development efforts when staff must be “pulled” to work on a maintenance task
19
Maintenance Cost Factors
Team stability Maintenance costs are reduced if the same staff are involved with them for some time Contractual responsibility The developers of a system may have no contractual responsibility for maintenance so there is no incentive to design for future change Staff skills Maintenance staff are often inexperienced and have limited domain knowledge Program age and structure As programs age, their structure is degraded and they become harder to understand and change
20
Estimation of Maintenance Cost
Maintenance efforts – 60% of the total life cycle cost. It varies widely from one application domain to another. 2 to 4 times of the development cost. Boehm – MC estimation as a part of COCOMO. He defines it as a Annual Change Traffic (ACT).
21
Con.. ACT= KLOC(added) +KLOC(deleted) /KLOC(total).
KLOC(added) : Total kilo lined of source code added during maintenance. KLOC(deleted): Total KLOC deleted during maintenance. MC= ACT*Development cost. The results are approximate
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.