Software Reengineering
Software Reengineering
R Reengineering i i
What is it? g a software to create a more p powerful p product. Rebuilding Who does it? g level: business specialists. p -Organizational -Software level:Software engineers. Why it is important? The rapid change in information technology.
System Reengineering
Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems of a larger system require frequent maintenance Reengineering involves putting in the effort to make it easier to maintain The reengineered system may also be restructured and should be redocumented
Code restructuring
source code is analyzed and violations of structured programming p g gp practices are noted and repaired p revised code needs to be reviewed and tested
Forward engineering
sometimes i called ll d reclamation l i or renovation i recovers design information from existing source code uses this design information to reconstitute the existing system to improve its overall quality or performance
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.)
Completeness
level of detail provided at a given abstraction level
Interactivity
d degree to which hi h humans h are integrated i d with i h automated d reverse engineering tools
Extract abstractions
meaningful specification of processing performed is d i d from derived f old ld source code d
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 p of equivalence q of interfaces is relevant?
Increased cost
Restructuring Benefits
Improved program and documentation quality Makes programs easier to learn
improves productivity reduces developer frustration
Reduces effort required to maintain software Software is easier to test and debug
May only l be b realistic li i (e.g. ( cost and d time i effective) ff i ) if an automatic translator is available Manual M l fi fine tuning t i of f new code d is i always l required i d
Data Reengineering
Involves analyzing and reorganizing data structures or data values used in a program Might be part of the process of migrating from a file-based system to a DBMS or changing from one DBMS to another h DBMS The goal to create an environment where is managed d not t just j t used d
Data migration
data is moved to modern DBMS data might be stored in separate files or an older DBMS
Data Problems
Data naming problems
names be hard to understand heavy h use of f aliasing li i by b programmers
Data analysis
Entity name modification Literal replacement Data definition re-ordering Stage 1 Stage 2
Data conversion
Modified data
Economics of Reengineering
Cost of maintenance = cost annual of operation and maintenance over application lifetime Cost of reengineering = predicted return on investment reduced by cost of implementing changes h and d engineering i i risk i k factors f Cost benefit = Cost of reengineering - Cost of maintenance i t