Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.

Slides:



Advertisements
Similar presentations
Software Re-engineering
Advertisements

Software Re-engineering
Chapter 11 Software Evolution
SWE 316: Software Design and Architecture Objectives Lecture # 23 Software Reengineering SWE 316: Software Design and Architecture  To describe the activities.
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
Introduction to Software Evolution and Maintenance
Software Evolution Managing the processes of software system change
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Software evolution.
Software maintenance and evolution Software re-engineering and reverse engineering Prof. Robertas Damaševičius, Prof. Vytautas.
Supplement 02CASE Tools1 Supplement 02 - Case Tools And Franchise Colleges By MANSHA NAWAZ.
Software evolution.
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
Software Reengineering
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Software Re-engineering
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.
Chapter 1 Database Systems. Good decisions require good information derived from raw facts Data is managed most efficiently when stored in a database.
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Software change  Managing the processes of software system change.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Chapter 2: Software Process Omar Meqdadi SE 2730 Lecture 2 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Chapter 11: Software Prototyping Omar Meqdadi SE 273 Lecture 11 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
Chapter 13: Regression Testing Omar Meqdadi SE 3860 Lecture 13 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
©Ian Sommerville 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapters 26,27,28 Slide 1 Legacy Systems l Older software.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Copyright 2002 Prentice-Hall, Inc. Chapter 4 Automated Tools for Systems Development 4.1 Modern Systems Analysis and Design.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
1 Software Maintenance The process of changing the system after it has been delivered and in operation Software change is inevitable –New requirements.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 9 – Software Evolution 1Chapter 9 Software evolution.
© SERG Reverse Engineering (Software Maintenance & Reengineering) Software Maintenance Managing the processes of system change.
CASE Tools and their Effect on Software Quality
CS223: Software Engineering Lecture 33: Software Maintenance.
Tempus Software Maintenance and Evolution JMSE-SM&E Unit 6: Reengineering and Maintenance in software cycle Prof. Mohammad A. Mikki Gaza, Palestine,
CS223: Software Engineering Lecture 34: Software Maintenance.
Laurea Triennale in Informatica – Corso di Ingegneria del Software I – A.A. 2006/2007 Andrea Polini XVI. Software Evolution.
Chapter 1 The Systems Development Environment
CS223: Software Engineering
Modern Systems Analysis and Design Third Edition
Environment Assessment
Introduction to Software Evolution and Maintenance
Chapter 1 The Systems Development Environment
Software Maintenance.
Chapter 1 The Systems Development Environment
Software Maintenance
Software Maintenance PPT By :Dr. R. Mall.
Tools of Software Development
Modern Systems Analysis and Design Third Edition
Legacy Systems Older software systems that remain vital to an organisation.
IS301 – Software Engineering V:
Modern Systems Analysis and Design Third Edition
Software Re-Engineering
Chapter 27 Software Change.
Chapter 8 Software Evolution.
Lecture 06:Software Maintenance
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Re- engineeniering.
Chapter 1 The Systems Development Environment
Software Re-engineering and Reverse Engineering
Presentation transcript:

Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville

2 Topic Covered Software Re-engineering Life-Cycle of Software Re-engineering Reverse Engineering Software Re-engineering Process

3 Definitions Forward Engineering is the traditional process of moving from high-level abstractions and logical, implementation- independent designs to the physical implementation of a system. Reverse Engineering is the process of analyzing a subject system to Identify the system's components and their interrelationships and Create representations of the system in another form or a higher level of abstraction.

4 Definitions Reengineering - Reorganising and modifying existing software systems to make them more maintainable by first reverse engineering and then forward engineering Refactoring - A program restructuring (rearranging) in a series of small, semantics preserving transformations in order to make the code easier to maintain and modify

Forward EngineeringReverse Engineering Requirements Analysis Design Implementation Forward Engineering and Reverse Engineering

6 Forward Engineering and Re- Engineering

7 System Re-engineering A Preventive Maintenance activity Re-structuring or re-writing part or all of a legacy system without changing its functionality Applicable where some but not all sub-systems of a larger system require frequent maintenance Re-engineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented.

8 When to Re-engineer? Port to other Platform  when hardware or software support becomes obsolete Design extraction  to improve maintainability, portability, etc. Exploitation of New Technology  new language features, standards, libraries, etc.  when tools to support restructuring are readily available

9 Re-engineering Advantages Reduced risk  There is a high risk in new software development. There may be development problems, staffing problems and specification problems Reduced cost  The cost of re-engineering is often significantly less than the costs of developing new software

10 Re-engineering Cost Factors The quality of the software to be re-engineered The tool support available for re-engineering The extent of the data conversion which is required The availability of expert staff for re-engineering

11 Re-engineering Cost

Life-Cycle of Re-engineering Requirements Designs Code (1) requirement analysis (2) model capture (3) problem detection (4) problem resolution (5) program transformation people centric lightweight

Life-Cycle of Re-engineering Reverse Engineering Phase  Requirement analysis: analyze on which parts of your requirements have changed  Model capture: reverse engineer from the source-code into a more abstract form, typically some form of a design model Forwarded Engineering Phase  Problem detection: identify design problems in that abstract model  Problem resolution: propose an alternative design that will solve the identified problem  Program transformations: make the necessary changes to the code, so that it adheres to the new design yet preserves all the required functionality

14 Re-engineering Process Activities Source code translation  Convert code to a new language Reverse engineering  Analyze the program to understand it Program structure improvement  Restructure automatically for understandability Design recovery and reimplementation Pr ogram modularization  Reorganize the program structure Data reengineering  Clean-up and restructure system data

15 Source Code Translation Involves converting the code from one language (or language version) to another e.g. FORTRAN to C May be necessary because of:  Hardware platform update  Staff skill shortages  Organisational policy changes Only realistic if an automatic translator is available

16 Source Code Translation

17 Reverse Engineering Program Comprehension  Analysing existing software with a view to understand its design and specification  Systematic process of acquiring important design factors and information regarding engineering aspects from an existing product  A process which analyses a product/technology to find out the design aspects and its functions Builds a program data base and generates information from this

18 Reverse Engineering Goals Cope with complexity  need techniques to understand large, complex systems Recover lost information  extract what changes have been made and why Detect side effects  help understand ramifications of changes Synthesize higher abstractions  identify latent abstractions in software Facilitate reuse  detect candidate reusable artifacts and components

19 Reverse Engineering Activities Understanding process  source code is analyzed to at varying levels of detail  to understand procedural abstractions and overall functionality Understanding data  internal data structures  database structure Understanding user interfaces  what are basic actions processed by the interface?  what is system's behavioral response to these actions?

20 Reverse Engineering Process

21 Reverse Engineering Techniques Re-documentation  pretty printers  diagram generators  cross-reference listing generators Design recovery  software metrics  browsers  visualization tools  static analyzers  dynamic (trace) analyzers

22 Reverse Engineering for Software Maintenance Corrective maintenance:  Easier to identify defective program components and the source of residual errors Adaptive/Perfective maintenance:  Eases understanding of system’s components and their interrelationships, showing where new requirements fit and how they relate to existing components Preventive Maintenance  Represent the first phase of the re-engineering process

23 Code Restructuring (Refactoring) Maintenance tends to corrupt the structure of a program. It becomes harder and harder to understand So, the program may be automatically restructured  Source code is analyzed and violations of structured programming practices are noted and repaired  Examples: Remove unconditional branches Conditions may be simplified to make them more readable  Revised code needs to be reviewed and tested

24 Code Restructuring (Refactoring) Example1: Spaghetti logic

25 Code Restructuring (Refactoring) Example1: Structured control logic

26 Code Restructuring (Refactoring) Example2: Condition simplification -- Complex condition if not (A > B and (C F) ) ) Simplified condition if (A = D or E > F)...

27 Program Modularization The process of re-organising a program so that related program parts are collected together in a single module Usually a manual process that is carried out by program inspection and re-organisation

28 Module Types Data abstractions  Abstract data types where data structures and associated operations are grouped Hardware modules  All functions required to interface with a hardware unit Functional modules  Modules containing functions that carry out closely related tasks Process support modules  Modules where the functions support a business process or process fragment

29 Data Re-Engineering Involves analysing and reorganising the data structures (and sometimes the data values) in a program Existing data structures are reviewed for quality Integrating and centralizing multiple databases Unifying multiple, inconsistent representations Upgrading data models Objective is to create a managed data environment

30 Data Problems End-users want data on their desktop machines rather than in a file system. Systems may have to process much more data than was originally intended by their designers Redundant data may be stored in different formats in different places in the system Data naming problems  Names may be hard to understand. The same data may have different names in different programs

31 Data Problems Field length problems  The same item may be assigned different lengths in different programs Record organisation problems  Records representing the same entity may be organised differently in different programs Hard-coded literals No data dictionary

32 Data Re-engineering Approaches

33 Data Re-engineering Process

34 Data Conversion Changing the data structure organisation without changing the data values Data value conversion is very expensive. Special-purpose programs have to be written to carry out the conversion