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