Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.

Slides:



Advertisements
Similar presentations
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Advertisements

SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Software Reuse SEII-Lecture 28
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
Lecture 12 Reengineering Computer-aided Software Engineering Cleanroom Software Engineering.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Software Reuse Building software from reusable components Objectives
Software Evolution Managing the processes of software system change
© Prentice Hall CHAPTER 9 Application Development by Information Systems Professionals.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
Software Reengineering
1 These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 5/e and are provided with permission by.
Developed by Reneta Barneva, SUNY Fredonia Component Level Design.
Building software from reusable components.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Reengineering
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
1 ECE 453 – CS 447 – SE 465 Software Testing & Quality Assurance Case Studies Instructor Paulo Alencar.
Chapter 29 Maintenance and Reengineering
Chapter 9 – Software Evolution and Maintenance
Software Construction and Evolution - CSSE 375 Reverse Engineering and Reengineering Approaches Shawn & Steve In long-term software developments, the “elephant.
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
Software Reuse Prof. Ian Sommerville
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
Software Engineering Reuse.
Software change  Managing the processes of software system change.
Case Studies on Design Patterns Design Refinements Examples.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Software Engineering Management Lecture 1 The Software Process.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 10 Use Case Design.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
9 Systems Analysis and Design in a Changing World, Fourth Edition.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Next week Tuesday Report on the project Demo of the working model. Today at the conclusion of lecture, class get together to figure out how you will present.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
21/1/ Analysis - Model of real-world situation - What ? System Design - Overall architecture (sub-systems) Object Design - Refinement of Design.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
CASE Tools and their Effect on Software Quality
A Method for Improving Code Reuse System Prasanthi.S.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
Chapter 16 – Software Reuse
Modern Systems Analysis and Design Third Edition
Modern Systems Analysis and Design Third Edition
Object oriented system development life cycle
Software Maintenance
Software Reuse Objectives
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Modern Systems Analysis and Design Third Edition
Modern Systems Analysis and Design Third Edition
Program Restructuring
Chapter 27 Software Change.
Chapter 8 Software Evolution.
Unit 5 15SE202 Software engineering Principles
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Modern Systems Analysis and Design Third Edition
For University Use Only
Presentation transcript:

Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process identification, Process evaluation, process specification and design, prototyping, refinement and instantiation Software reengineering process model – Inventory analysis, document restructuring, reverse engineering, code restructuring, data restructuring, forward engineering Reverse engineering 2

Modification of source code and/or data In general, no modification of all program architecture Focus on design details of individual modules and local data structure If it involves program architecture, it becomes forward engineering Restructuring occurs when the basic architecture is solid 3

Better design to perform the same function Different techniques – Warnier’s logical simplification techniques Boolean algebra Conversion of “spaghetti-bowl” code into structured program – Reengineering tools Resource exchange diagram maps program module and resources Program architecture is restructured to minimize coupling 4

Analysis of source code prior to data restructuring Data definitions, file descriptions, I/O, and interface descriptions are evaluated Objective is to extract data related information It is also called data analysis Data redesign – Data record standardization – Data name rationalization – Physical modifications to existing data structures 5

Consider an example – “spaghetti bowl” code – Modules are 2000 statements long – Few meaningful comment lines – 290,000 statements – No other documentation Modification options – Continue the ad hoc design – Try to understand inner workings of the program – Redesign, recode, and test the relevant portions – Complete redesign, recode, and test No single “correct” choice 6

Do not wait for maintenance request Select a program that – Will remain in use for preselected number of years – Is currently being used successfully – Is likely to undergo major modifications – Option 2, 3, and 4 should be applied Why we redevelop – The cost to maintain one line of source code may be 20 to 40 times the cost of initial development of that line 7

– Redesign of the software architecture (program and/or data structure), using modern design concepts, can greatly facilitate future maintenance – Because a prototype of the software already exists, development productivity should be much higher than average – The user now has experience with the software. Therefore, new requirements and the direction of change can be ascertained with greater ease – Automated tools for reengineering will facilitate some parts of the job – A complete software configuration (documents, programs, and data) will exist upon completion of preventive maintenance 8

Consider a large organization – production programs – Ranked based on the importance – Reviewed for the possible candidates Forward engineering process applies SE principles, concepts, and methods It does not simply re-create a modern equivalent program of an older version If focuses on the use of new user and technology requirements 9

Many mainframe applications are reengineered to accommodate client-server architectures – Application functionality migrates to each client computer – New GUI interfaces are implemented at the client sites – Database functions are allocated to the server – Specialized functionality (e.g. compute-intensive analysis) may remain at the server site – New communications, security, archiving, and control requirements must be established at both the client and server sites It requires business reengineering, software reengineering, and enterprise network infrastructure 10

It starts with thorough analysis of the business environment Three layers of abstraction can be identified Database layer Business rules layer Client applications layer 11

Choice of many organizations Some applications remain “as is” but some reengineered Appropriate data, functional, and behavioral models are created by reverse engineering If extended functionality/behavior is required, use cases are also created Class hierarchies, object-relationship models, object- behavior models, and subsystems are defined Component library can be used if exists for that domain Otherwise algorithms and data structures may be reused 12

Reengineering needs resources Resources are limited that may be used for other business purposes Cost-benefit analysis Nine parameters are proposed P 1 = current annual maintenance cost for an application P 2 = current annual operations cost for an application P 3 = current annual business value of an application P 4 = predicted annual maintenance cost after reengineering P 5 = predicted annual operations cost after reengineering 13

P 6 = predicted annual business value after reengineering P 7 = estimated reengineering costs P 8 = estimated reengineering calendar time P 9 = reengineering risk factor L = expected life of the system Cost associated with continuing maintenance C maint = [P 3 – (P 1 + P 2 )] * L 14

Cost associated with reengineering C reeng = P 6 + (P 4 + P 5 ) * (L – P 8 ) – (P 7 * P 9 ) Overall benefit of reengineering Cost benefit = C reeng – C maint It should be for high-priority applications Highest cost-benefit applications can be targeted Others can be postponed until resources are available 15

Reuse-based software engineering is a strategy Originally, it was started as development strategy Factors – Lower software production and maintenance costs – Faster delivery of systems – Improved software quality Software is a valuable asset for an organization Reuse to increase return on investment Availability of reuse software is also dramatically increased – Open source movement – Organizations provide reusable components – Standards help to develop reusable general services 16

Application system reuse – The whole application may be reused – Application families with a common architecture Component reuse – Subsystems to single objects – Example: pattern matching system (text-process system) may be used in a database management system Object and function reuse – Component for a single function / an object class – Standard libraries Concept reuse 17

Software development processes should be adapted for reuse strategy Requirements refinement stage Design and implementation stages may include explicit activities Software reuse is more effective when planned as an organization-wide reuse program – Creation of reusable assets – Adaptation of development processes Japanese industry is quite mature in reuse 18

Increased dependability – Tested software – More reliable Reduced process risk – Cost of existing software is already known – Margin of error is reduced in cost estimation Effective use of specialists – No reinvent the wheel – Domain specialist can encapsulate their knowledge 19

Standard compliance – User interface standards – Fewer mistakes Accelerated development – Time to market – Speed up system production 20

Restructuring – Code restructuring, data restructuring Forward engineering – Client-server architectures, object-oriented architectures Economics of reengineering – Cost benefit analysis Software reuse – Benefits of reuse 21