outline 30

4
Chapter 30 - Reengineering Overview This chapter defines reengineering as the process of legacy software products. The new software products often have increased functionality, better performance, greater reliability, and are easier to maintain than their predecessors. Business process reengineering (BPR) defines business goals, evaluates existing business processes, and creates revised business processes that better meet current goals. Software reengineering involves inventory analysis, document restructuring, reverse engineering, program and data restructuring, and forward engineering. Many reengineering work products are the same as those generated for any software engineering process (analysis models, design models, test procedures). The final product for any reengineering process is a reengineered business process and/or the reengineered software to support it. The same SQA practices are applied to software reengineering as to they would to any other software development process. Testing is used to uncover errors in content, functionality, and interoperability. Business Process Reengineering Principles Organize around outcomes, not tasks. Have those people who use the output of a 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 the data once, at its source. Business Process Reengineering Model Business redefinition (business goals are identified in the context of four key drivers - cost reduction, time reduction, quality improvement, empowerment) Process identification (processes critical to achieving business goals are identified and prioritized) Process evaluation (existing processes are analyzed and measured, costs and time consumed by processes are noted, quality/performance problems are isolated) Process specification and design(use-cases are prepared for each process to be redesigned, these use-case scenarios deliver some outcome to a customer, new tasks are design for each process) Prototyping (used to test processes before integrating them into the business) http://mail.svce.ac.in/~uvarajan/softeng/outline30.html 1 of 4 12/31/2012 11:34 AM

Upload: bhuvi2312

Post on 23-May-2017

216 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Outline 30

Chapter 30 - Reengineering

Overview

This chapter defines reengineering as the process of legacy software products. The new software products often have increasedfunctionality, better performance, greater reliability, and are easier to maintain than their predecessors. Business processreengineering (BPR) defines business goals, evaluates existing business processes, and creates revised business processes thatbetter meet current goals. Software reengineering involves inventory analysis, document restructuring, reverse engineering,program and data restructuring, and forward engineering. Many reengineering work products are the same as those generated forany software engineering process (analysis models, design models, test procedures). The final product for any reengineeringprocess is a reengineered business process and/or the reengineered software to support it. The same SQA practices are applied tosoftware reengineering as to they would to any other software development process. Testing is used to uncover errors in content,functionality, and interoperability.

Business Process Reengineering Principles

Organize around outcomes, not tasks.Have those people who use the output of a 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 the data once, at its source.

Business Process Reengineering Model

Business redefinition (business goals are identified in the context of four key drivers - cost reduction, time reduction, qualityimprovement, empowerment)Process identification (processes critical to achieving business goals are identified and prioritized)Process evaluation (existing processes are analyzed and measured, costs and time consumed by processes are noted,quality/performance problems are isolated)Process specification and design(use-cases are prepared for each process to be redesigned, these use-case scenarios deliversome outcome to a customer, new tasks are design for each process)Prototyping (used to test processes before integrating them into the business)

http://mail.svce.ac.in/~uvarajan/softeng/outline30.html

1 of 4 12/31/2012 11:34 AM

Page 2: Outline 30

Refinement and instantiation (based on feedback from the prototype, business processes are refined and then instantiatedwithin a business system)

Software Reengineering Process Model

Inventory analysis(sorting active software applications by business criticality, longevity, current maintainability, and other localcriteria helps to identify reengineering candidates)Document restructuring (need to decide to live with weak documentation, update poor documents if they are used, or fullyrewrite the documentation for critical systems focusing on the "essential minimum")Reverse engineering (process of design recovery - analyzing a program in an effort to create a representation of the programat some abstraction level higher than source code)Code restructuring (source code is analyzed and violations of structured programming practices are noted and repaired, therevised code also needs to be reviewed and tested)Data restructuring (usually requires full reverse engineering, current data architecture is dissected and data models aredefined, existing data structures are reviewed for quality)Forward engineering (also called reclamation or renovation - recovers design information from existing source code and usesthis information to reconstitute the existing system to improve its overall quality and/or performance)

Reverse Engineering Concepts

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)Directionality (one-way means the software engineer doing the maintenance activity is given all information extracted fromsource 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)

Reverse Engineering Activities

Understanding process (source code is analyzed to at varying levels of detail - system, program, component, pattern,statement - to understand procedural abstractions and overall functionality)Understanding data

internal data structures

http://mail.svce.ac.in/~uvarajan/softeng/outline30.html

2 of 4 12/31/2012 11:34 AM

Page 3: Outline 30

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 here?

Restructuring Benefits

Improved program and documentation qualityMakes programs easier to learn, improves productivity, reduces developer frustrationReduces effort required to maintain softwareSoftware is easier to test and debug

Types of Restructuring

Code restructuring

program logic modeled using Boolean algebra and series of transformation rules are applied to yield restructured logiccreate resource exchange diagram showing data types, procedure and variables shared between modules, restructureprogram architecture to minimize module coupling

Data restructuring

analysis of source codedata redesigndata record standardizationdata name rationalizationfile or database translation

Forward Engineering

Client/Server architectures

http://mail.svce.ac.in/~uvarajan/softeng/outline30.html

3 of 4 12/31/2012 11:34 AM

Page 4: Outline 30

application functionality migrates to each client computernew GUI interfaces implemented at client sitesdatabase functions allocated to serversspecialized functionality may remain at server sitenew communications, security, archiving, and control requirements must be established at both client and server sites

Object-oriented architectures

existing software is reverse engineered so that appropriate data, functional, and behavioral models can be createduse-cases are created if reengineered system extends functionality of applicationdata models created during reverse engineering are used with CRC modeling as a basis to define classescreate class hierarchies, object-relationship models, object-behavior models and begin object-oriented designa component-based process model may be used if a robust component library already existswhere components must be built from scratch, it may be possible to reuse algorithms and data structures from the originalapplication

User interfaces

understand the original user interface and how the data moves between the user interface and the remainder of theapplicationremodel the behavior implied by the existing user interface into a series of abstractions that have meaning in the context of aGUIintroduce improvements that make the mode of interaction more efficientbuild and integrate the new GUI

Economics of Reengineering

Cost of maintenance =cost annual of operation and maintenance over application lifetimeCost of reengineering = predicted return on investment reduced by cost of implementing changes and engineering risk factorsCost benefit = Cost of reengineering - Cost of maintenance

http://mail.svce.ac.in/~uvarajan/softeng/outline30.html

4 of 4 12/31/2012 11:34 AM