Software Engineering Re Engineering

33
REENGINEERING

Transcript of Software Engineering Re Engineering

Page 1: Software Engineering  Re Engineering

REENGINEERING

Page 2: Software Engineering  Re Engineering

Table of Contents1 . Introduction/Quick Review

2.Business Process Re-engineering2.1 BPR Model

1.Software Re-engineering3.1 Process Model3.2 Stages of Re-engineering1.Reverse Engineering4.1 The reverse engineering process4.2 Reverse Engineering to Understand Processing4.3 Reverse Engineering to Understand Data4.4 Reverse Engineering User Interfaces

Page 3: Software Engineering  Re Engineering

Table of Contents

5.Restructuring5.1 Problems of Restructuring5.2 Code Restructuring5.3 Data Restructuring1.Forward Engineering

Page 4: Software Engineering  Re Engineering

1. Introduction/Quick Review

“ ...we should reengineer our businesses: use the powerof modern information technologies to radicallyredesign our business processes in order to achievedramatic improvements in theirperformance...Reengineering strives to break away

from the old rules about how we organize andconduct our business...”

Michael Hammer, in Harvard Business Review

Page 5: Software Engineering  Re Engineering

1. Introduction/Quick ReviewWhat is it ?: a technology product has served well, you rely on it but itsgetting old and breaks to often it takes longer to repair than you like it doesn’t longer represent the state-of-art technologyWhat to do? hardware throw away, buy new custom-built software need for rebuildcreate a product with added functionality, betterperformance, reliability and improved maintainability

== that is what we call re-engineering

Page 6: Software Engineering  Re Engineering

1. Introduction/Quick ReviewWho is executing? at business level business specialists (consultingcompanies) at the software level software engineersWhy is it important?

IT supports fast changing business functions on demandthat causes a enormous pressure on every commercial

organisationboth business and software that support the business must bereengineered to keep pace

Page 7: Software Engineering  Re Engineering

1. Introduction/Quick ReviewWhat are the steps of Business-Process-Reengineering-(BRP)? define goals identifying and evaluating existing processes create new processes that better meet the goalsWhat are the steps of Software-Reengineering ? encompassing inventory analysis document restructuring program and data reconstruction forward engineering Intent: creation of a version existing program with higherquality and better maintainability

Page 8: Software Engineering  Re Engineering

1. Introduction/Quick Review

What is the work product?: reengineering products like:analysis modelsdesign modelstest procedures final output: reengineered and software that

supportthe reengineered processHave I done it right?: use the well known SQA practices likeformal reviewsassessment of analysis and design modelstesting for errors, functionality and interoperability

Page 9: Software Engineering  Re Engineering

2. Business Process Reengineering

Definition no unique definition “... the search for, and the implementation of, radical change

in business process to achieve breakthrough results...” (FortuneMagazine)Business Processes set of logical related tasks for defined output combining people, equipment, material, procedures e.g. designing new product, purchasing services and

supplies, hirering a new employee, paying suppliers... receiver of the outcome: the customer cross organizational boundaries, lots of organizational

groups participating

Page 10: Software Engineering  Re Engineering

2. Business Process

Reeng i neeri ng

business segments:risk high

the business

business systems

business process

business sub processes risk low

most BPR efforts focus on individual processes orsub processes

Page 11: Software Engineering  Re Engineering

Reeng i neeri ngPrinciples of Business Process Reengineering top- down mannerbeginning with the identification of major businessobjectives and goals and culminating with more detailedspecification of tasks principals that guide BPR activities:organize around outcomes, not taskslet users of the output of the process perform the processintegrate information processing work into real worktreat geographical disperse resources as them werecentralizedlink parallel activities instead of integrating their resultsset decision points, where the work is performed, processbased controlcapture data once, at its source

2. Business Process

Page 12: Software Engineering  Re Engineering

2.1 BPR Model

Businessdefinition

20092006

P rototyp i ng

Processspecificationand design

SE7161 Software Quality Assurance

Refinement &instantiation

Processevaluation

Processidentification

12

Page 13: Software Engineering  Re Engineering

2.1 BPR Modelbusiness reengineering iterative process

no start, no end, evolutionalsix elements: business definition:identify goals by using four drivers (cost reduction, timereduction, quality improvement, personal development)define at the business level or for a specific component process identification:identify critical processes for goals defined in the businessdefinitionrank them by importance, need for change... process evaluation:measure and identify tasksnote costs and time consumptionisolate quality/performance

Page 14: Software Engineering  Re Engineering

2.1 BPR Model Process specification and design:prepare use-cases (for each process) based on the informationcollected during the first three stepsidentify use-cases to scenarios that deliver outcome to thecustomersuse-cases design new set of tasks (conform with SoftwareEngineering principles) Prototyping:test the process to make refinements Refinement and instantiation:based on feedback from the prototyperefine and instantiate with the business systemintent of these tools: building a model of existingworkflow in an effort to better analyze existing processes

Page 15: Software Engineering  Re Engineering

WarningBPR works if it is applied by motivated, trained,peoplereengineering = continuous activityif BPR is conducted efficiently informationsystem better support the business processsoftware reengineering something that have tobe done because of the needs that a lot ofbusiness applications need to be refurbish orrebuild

Page 16: Software Engineering  Re Engineering

3. Software Reengineeringsoftware was used for a long time; corrected,adapted, enhanced many timesunstable application, side effects etc.there is always change in computer sciencemechanisms for evaluating, controlling andmaking modificationsSoftware Maintenance (60% of costs): morethan just „fixing mistakes“also: Reengineering (Rebuilding an existingSoftware System)

Page 17: Software Engineering  Re Engineering

3.1 Process Modelreengineering needs time (maybe years) and moneypragmatic strategy

Forwardengineering

Inventory analysis mostly linear

cyclical model

Datarestructuring

Documentrestructuring

Code Reverse

Restructuring engineering

Page 18: Software Engineering  Re Engineering

3.2 Stages of ReengineeringInventory Analysis

inventory: attributes of application (size, age,business criticality, etc.)

changes revisit inventory regularly!Document Restructuring

no re- documentation (relatively static, not much longer used, no changes expected)

update documentation when changes were made

complete re- documentation, but kept at a minimum(business critical systems)

Page 19: Software Engineering  Re Engineering

3.2 Stages of ReengineeringReverse Engineering analyze program code to create a representation ofthe program at a higher level of abstraction (e.g. UMLdiagrams)

design and specification recoveryCode Restructuring

most common type

analyze source code (restructuring tool), possibleautomatically restructuring

review and test the result, update codedocumentation!

Page 20: Software Engineering  Re Engineering

3.2 Stages of ReengineeringData Restructuring

restructuring begins mostly with reverse engineering(define/review data models and structures) restructure weak data architectures

data restructuring requires changes in architectural orsource- code changesForward Engineering

recover design information from existing softwareAND alter/restore system to improve overall quality

re- implement old function, add new ones, improveoverall performance and quality

Page 21: Software Engineering  Re Engineering

4. Reverse Engineeringpossibly part of the reengineering processcan used to re-specify a system for re-implementationused to analyze software and get a bettercomprehension about design and specificationcreates a program database and generatesinformation from thisuse of tools that understand the program is helpful browsers

cross- reference- generators

Page 22: Software Engineering  Re Engineering

20092006 SE7161 Software Quality Assurance 22

4.1 The reverse engineeringprocess

System to bere-engineered

Automatedanalysis

Manualannotation

Systeminformation

store

Documentgeneration

Program stucturediagrams

Data stucturediagrams

Traceabilitymatrices

Page 23: Software Engineering  Re Engineering

20092006 SE7161 Software Quality Assurance 23

4.2 Reverse Engineering toUnderstand Processinganalyzing code at varying levels of abstraction(system, program, component, pattern, statement)important interoperability issues among applicationwithin the systemblock diagram, representing the interactions between

functional abstractions of all programs of the systemprocessing narrative for each component of a programupdate of specifications (if system, program,component specification already exists)CASE Tools to analyze semantic of existing codeautomatically Restructuring / Forward Engineering

Page 24: Software Engineering  Re Engineering

4.3 Reverse Engineering toUnderstand Data• Internal Data Structures (Program Level) identifying classes within the program that interact with theglobal data structures

examining program code with intent of grouping relatedprogram variables

Three Steps for reverse engineering of classes identify flags and local data structures, that holds important

information about global data structures define relationship between flags and local data structuresand global data structures

list all other variables that are connected to Array/Filestructures

Page 25: Software Engineering  Re Engineering

4.3 Reverse Engineering toUnderstand Data• Database Structure (System Level) Reengineering one database schema into anotherrequires knowledge about existing objects /relationships

Five Steps to reengineer a new database model Build initial object Model Determine candidate keys Refine the temporary classes Define generalizations Discover associations

Page 26: Software Engineering  Re Engineering

4.4 Reverse Engineering UserInterfacesWhat are the basic actions that the Interface mustprocess (e.g., keystrokes, mouse clicks)?What is a compact description of the behavioralresponse of the system to these actions?What concept equivalence of interface is relevanthere?

Result:revised GUI may not mirror the old interfaceoften contains new interaction metaphors

Page 27: Software Engineering  Re Engineering

5. Restructuringmodifying source code/data to make it accessible for furtherchangesno change of the overall program architectureeffort extends beyond module boundaries, encompasses softwarearchitecture Forward Engineering

Beneficial effects:

higher quality of programs, better documentation compliance to modern software engineering practices and

standards

structured code facilitate co-operation among involved softwaredevelopers less maintenance cost

software easier to test and debug

Page 28: Software Engineering  Re Engineering

5.1 Problems of Restructuring

Loss of Information Comments Documentation

Heavy computational demandsnot useful help with poor modularisation where related components are dispersed throughout the codenot to improve the understand ability of data-driven programs.

Page 29: Software Engineering  Re Engineering

5.2 Code Restructuring

to reach a design that is congruent with formerfunctions, but higher quality than original programusing Boolean algebra for applying a series oftransformation rulesgoals: reach restructured logic

derive a procedural design that conforms the structuredprogramming philosophy from former “spaghetti-bowl” code

Page 30: Software Engineering  Re Engineering

Spaghetti Code Structured Code

Page 31: Software Engineering  Re Engineering

5.3 Data Restructuring

1. data analysis (analysis of source code )evaluation of all program language statements that contains datadefinitions, I/O and Interface descriptionsextract data items and objects to get information about data flowand comprehend implemented data structures2.. data redesigndata record standardization simplest form(clarify data definitions to reach consistency concerning data itemnames or physical record formats within an existing data structure)data name rationalization(used data naming conventions must conform to local standardsand aliases have to be eliminated as data flow through the system)

Page 32: Software Engineering  Re Engineering

20092006 SE7161 Software Quality Assurance 32

6. Forward Engineering

software engineering principles, concepts andmethods to re-create an existing applicationmostly not a modern equivalent of older program rather

new user and technology requirements are integratedre-created program has more functionality than olderprogrampreventive maintenance „new releases“ of aprogram

Page 33: Software Engineering  Re Engineering

6. Forward Engineering• consider these points: can make future maintenance easier when using moderndesign concepts

development productivity is much higher than average(software exists) new requirements and direction of change can be definedwith greater ease (user knows software) CASE tools for reengineering automate some parts ofthe job preventive maintenance done complete softwareconfiguration will exist