Software Metrics II - San Jose State University

Reengineering
Speaker: Jerry Gao Ph.D.
San Jose State University
email: jerrygao@email.sjsu.edu
URL: http://www.engr.sjsu.edu/gaojerry
Sept., 2001
Topic: Reengineering
Presentation Outline
- Introduction to Reengineering
- Business Reengineering
- Software Reengineering
- Reverse Engineering
- Restructuring
- Forward Engineering
- The Economics of Reengineering
Jerry Gao Ph.D. 9/2001
All Rights Reserved
Topic: Reengineering
What Is Reengineering?
When old legacy systems have following problems:
- very difficult to repair the bugs
- very hard to add and enhance the required new functions
- poor performance, reliability, ..….
- out of date (in technology, platform, techniques…)
What we need to do is to rebuild a new one with better quality, new features,
and good performance. That is what we call reengineering.
Who does it?
Business specialists perform reengineering at the business level.
Software engineers perform reengineering at the software level.
Why this is important? -> Make sure to keep a customer-built system in a good shape:
- good serviceable functioning
- easy to be maintained and extended
- better performance and behaviors
- updated HW/SW technology and environment
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Software Reengineering
- Reengineering Model
Forward Engineering
Architecture
Requirements
Code/Test
Design
Requirements
recovery
Implementation
Design
recovery
Reverse Engineering
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Software Reengineering
-Why Reengineering?
Reengineering legacy system software results in a number of benefits:
- Improved software maintainability
- Identify candidates for reuse
- Added value of reengineered system
- Time benefit of a reengineered system
- Improved project risk management
Others:
- Replaced by new systems with new technology and environment
-Understand the behaviors and functions of a legacy system
- Reduced cost and efforts in building new systems
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Principles of Business Process Reengineering
The major principles that guide BRP activities:
- Organize around outcomes, not tasks
- Have those who use the output of the process perform the process
- Incorporate information processing work into the real work that produces
the raw information.
- Treat geographically dispersed resources as though they were centralized.
- Link parallel activities instead of integrating their results
- Put the decision point where the work is performed, and build control into
the process.
- Capture data once, at its source.
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Business Process Reengineering (BPR Model)
Business
definition
Refinement &
instantiation
Process
identification
Prototyping
Process
specification
and design
Jerry Gao Ph.D. 9/2001
Process
Evaluation
Topic: Reengineering
Business Process Reengineering
The model defines six activities:
- Business definition. Identify business goals based four key drivers:
--> cost reduction, time reduction, quality improvement, personnel development
- Process identification. Identify processes to achieve the goals.
- Process evaluation. Analyze and measure the existing processes
- Process specification and design..
Prepare use-cases fir each process
-Prototyping.
If necessary, build a prototype for a redesigned business process
- Refinement and instantiation.
Based on the feedback from the prototype, refine the process,
and then instantiated it,
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Software Reengineering (process model)
Forward
engineering
Data
restructuring
Code
restructuring
Jerry Gao Ph.D. 9/2001
Inventory
analysis
Document
restructuring
Reverse
engineering
Topic: Reengineering
Software Reengineering
Document restructuring:
Weak documentation is the trademark of many legacy systems.
- Creating documentation is far too time consuming.
- Documentation must be updated, but we have limited resources.
- The system is business critical and must be fully re-documented.
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Reverse Engineering
- the reverse engineering process
Dirty source code
Restructure
code
Processing
Clean source code
Extract
abstractions
Interface
Initial specification
Refine &
simplify
Final specification
Jerry Gao Ph.D. 9/2001
Database
Topic: Reengineering
Reverse Engineering
What is reverse engineering?
-> extract design information from source code and generate abstract
level information about the program for code re-generation.
Full Documentation
for the program
Unstructured and
undocumented program
Reverse Engineering
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Reverse Engineering
- to understand process
Reverse engineering of data occurs at different levels of abstraction.
Abstract data types,
files and records
Program level
Internal data structure
System level
Global data structure
Global data structures,
variables, and their
relationships to internal
data structures
Database Structure
Data objects, keys and
attributes, relationships
among them
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Reverse Engineering
- to understand data
Reverse engineering of data occurs at different levels of abstraction.
Abstract data types,
files and records
Program level
Internal data structure
System level
Global data structure
Global data structures,
variables, and their
relationships to internal
data structures
Database Structure
Data objects, keys and
attributes, relationships
among them
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Reverse Engineering
- to understand interface
Reverse engineering of user interface must be conducted before rebuilding a user
interface for a system.
To understand an existing user interface (UI), we must understand and specify:
- the structure of UI
- the behavior of UI
We can ask the three basic questions:
- What are the basic actions that interface must process?
- What is a compact description of the behavioral response of the system to these
actions?
- What is meant by a “replacement”, or what concept of equivalence of interfaces is
relevant here?
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Restructuring
What is restructuring?
Software restructuring modifies source code and /or data in an effort to make it
amenable to future changes. In general, restructuring does not modify the overall
program structure.
When should we do it?
Restructuring occurs when the basic architecture of an application is
solid, even though technical internals need work. Assume that major
parts of the system are serviceable, only a subset of modules and data
need extensive changed.
The major benefits of restructuring are:
- High quality program (better documentation, less complexity, and …)
- Operation cost and user efforts can be reduced
- Maintenance efforts can be reduced
- Software is easier to test and debug
Jerry Gao Ph.D. 9/2001
Topic: Reengineering
Restructuring
(A) Code restructuring
-> yield a design that produces the high quality code for the same functions.
(a)
use a model to present the given program logic and behaviors
(b)
restructuring the “spaghetti-bowl” code with well-structured code
(B) Data restructuring:
(a)
data analysis through analysis of source code
- evaluation of data, including definition, file descriptions, I/O & interface
(b)
data redesign
- data definition standardization
-> consistent data names, definitions, formats, and records
- data name rationalization
-> ensure data naming conventions based on local standards.
(c )
physical modifications to existing data structures
Jerry Gao Ph.D. 9/2001
The Economics of Reengineering
A cost/benefit analysis model for reengineering has been proposed:
- P1 = current annual maintenance cost for an application
- P2 = current annual operation cost for an application
- P3 = current annual business value of an application
- P4 = predicted annual maintenance cost after reengineering
- P5 = predicted annual operations cost after reengineering
- P6 = predicated annual business value after reengineering
- P7 = estimated reengineering costs
- P8 = estimated reengineering calendar time
- P9 = reengineering risk factor
- L = expected life of the syst defined usingem
The cost associated with continuing maintenance of a candidate application can be as:
C maint = [P3 - (P1 + P2)] * L
The cost associated with reengineering are defined as:
Creeng = [P6 - (P4+P5)*(L-P8) - (P7*P9)]
The cost benefit = Creeng - Cmaint
Jerry Gao Ph.D. 9/2001