Software Construction and Evolution - CSSE 375 Reverse Engineering and Reengineering Approaches Shawn & Steve In long-term software developments, the “elephant.

Slides:



Advertisements
Similar presentations
Reverse Engineering Computer Science Computer Science University of Windsor University of Windsor Shaochun Xu.
Advertisements

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.
Software Construction
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
1 Software Maintenance and Evolution CSSE 575: Session 1, Part 1 Course Introduction Steve Chenoweth Office Phone: (812) Cell: (937)
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Lesson-12 Information System Development-2
Introduction to Software Evolution and Maintenance
Software Evolution Managing the processes of software system change
Dr Kettani, Spring 2002 Software Engineering IIFrom Sommerville, 6th edition Software change l Managing the processes of software system change.
Software Reengineering
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
1 Software Maintenance and Evolution CSSE 575: Session 5, Part 1 Reverse Engineering and Reengineering Approaches Steve Chenoweth Office Phone: (812)
Software evolution.
Software evolution.
Driss Kettani Sommerville, 6th edition Software Engineering II Software re-engineering l Reorganising and modifying existing software systems to make them.
Software Engineering Tools and Methods Presented by: Mohammad Enamur Rashid( ) Mohammad Rashim Uddin( ) Masud Ur Rahman( )
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Chapter 29 Maintenance and Reengineering
Software Re-engineering
Chapter 9 – Software Evolution and Maintenance
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Software Evolution Planning CIS 376 Bruce R. Maxim UM-Dearborn.
Chapter 10.
Software Engineering Reuse.
Page 1 MODEL TEST in the small GENERALIZE PROGRAM PROCESS allocated maintenance changes management documents initial requirement project infrastructure.
Software Construction and Evolution - CSSE 375 Reverse Engineering Tools and Techniques Shawn & Steve Left – Reengineering from the competition can be.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
Chapter 3: Software Maintenance Process Omar Meqdadi SE 3860 Lecture 3 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Lucian Voinea Visualizing the Evolution of Code The Visual Code Navigator (VCN) Nunspeet,
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Tori Bowman CSSE 375, Rose-Hulman September 11, 2007.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
Planning the Reengineering of Legacy Systems, by Harry M. Sneed Reviewed by Odd Petter N. Slyngstad for DT8100, 27/1/2005.
CS251 – Software Engineering Lecture 9: Software Design Slides by Mohammad El-Ramly, PhD
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Introduction Problem Statement Research Goals Conclusion Contact / More Information { shimin, ltahvild Componentizing legacy system.
©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.
Reverse Engineering Dept. of I&CT, MIT, Manipal. Aspects To Be Covered Introduction to reverse engineering. Comparison between reverse and forward engineering.
Decomposing Java Legacy Systems into Components Shimin Li and Ladan Tahvildari Software Technologies Applied Research Lab Department of Electrical & Computer.
CS223: Software Engineering Lecture 32: Software Maintenance.
Contents What is Reverse Engineering (RE)? Why do we need Reverse Engineering? Scope and Tasks of Reverse Engineering Reverse Engineering Tools Reverse.
Environment Assessment
Introduction to Software Evolution and Maintenance
Software Maintenance.
Software Maintenance
Model-Driven Analysis Frameworks for Embedded Systems
Reverse Engineering: A Roadmap
Software Maintenance Main issues: why maintenance is such an issue
Software Maintenance Main issues: why maintenance is such an issue
Program Restructuring
Chapter 8 Software Evolution.
Unit 5 15SE202 Software engineering Principles
Automated Analysis and Code Generation for Domain-Specific Models
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Re- engineeniering.
Software Re-engineering and Reverse Engineering
Presentation transcript:

Software Construction and Evolution - CSSE 375 Reverse Engineering and Reengineering Approaches Shawn & Steve In long-term software developments, the “elephant in the room” that the system needs to be reengineered to make it easier to change, but nobody wants to do that because it’s so much work! At left – I’m looking for the elephant in the room when, in fact, there are about 3 to choose from – the one I’m wearing, the one dangling from the ceiling (if you look carefully), and probably myself.

2 Let’s start with Software Construction

3 What is Software Construction? From the Guide to the Software Engineering Body of Knowledge (SWEBOK), 2004 edition: Software construction refers to the detailed creation of working, meaningful software through a combination of coding, verification, unit testing, integration testing, and debugging. Q1

4 How Steve McConnell looks at Construction

5 Why is Software Construction Important?  It’s a large part and at the center of software development and maintenance  Focusing on construction can greatly improve an individual’s programming productivity  Source code is the only completely accurate description of the software  It’s the only activity that must be done! l That’s a hot topic in Agile development methods

Software is Constructed… What’s Next?  It changes, it evolves, it grows, it ages…  Why can’t we just transform the thing to work on new platforms and do the new things?  Reconstruction AKA Reengineering 6 Q2

Reengineer Strategies and Drivers  Evolution vs. Revolution  With New Functionality or Without  Motivations/Drivers l Product/Environment Related l Maintenance Process Related l Commercially Related 7 Q3

8 Maintain or Reengineer? Cost associated with continuing maintenance: C maint = [P 3 – (P 1 + P 2 )] X L Cost associated with reengineering: C reeng = [P 6 – (P 4 + P 5 )] X (L – P 8 ) – (P 7 X P 9 ) Overall benefit can be computed cost benefit = C reeng – C maint P 1 = current annual maintenance cost for an application P 2 = current annual operation 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 P 6 = predicted annual business value after reengineering P 7 = estimated reengineering costs P 8 = estimated reengineering calendar time P 9 = reengineering risk factor (P 9 = 1.0 is nominal) L = expected life of the system 1 Sneed, H., “Planning the Reengineering of Legacy Systems”, IEEE Software, January 1995, pp Q4

9 Exercise: Reengineer, or Continue to Maintain System? Cost associated with continuing maintenance: C maint = [P 3 – (P 1 + P 2 )] X L Cost associated with reengineering: C reeng = [P 6 – (P 4 + P 5 )] X (L – P 8 ) – (P 7 X P 9 ) Calculate the overall cost benefit = C reeng – C maint Need to understand the reengineering cost/benefit for the purchasing application (PA) in BuyNLarge Inc. The accountants calculated the current annual business value of PA (P3) to be $300K. The annual maintenance cost for PA (P1) is $22K and its annual operation cost (P2) is $50K. It is estimated that the reengineering effort will take about 10 months (P8) and cost (P7) $65K. The projected annual business value of PA after reengineering (P6) is $360K. The projected annual maintenance cost after reengineering (P4) is $10K and annual operations cost after reengineering (P5) is $255K. The amortized expected life of the system will be 48 months after the reengineering effort (L). The Reengineering project is projected to have a variance of 10% (risk factor slightly above nominal, thus P9 = 1.1) due to some changes in the user interface. Q5 Note: Times need to be converted to years!

Reverse Engineering “Software must have first been Engineered to be successfully Reverse Engineered.” Shawn Bohner

11 Definitions of Software Reverse Engineering  Reverse engineering (RE) is the process of extracting the knowledge or models of man made things. Some assumption is made that it is engineered.  “[Software] Reverse Engineering is the process of analyzing an existing software system to identify the system's components and their inter-relationships, and to create representations of the system in another form at higher levels of abstraction.” -- Ira Baxter Semantic Designs, Inc. Q6

Reverse Engineering a Mechanical Pencil Q7

What are the Relevant Pencil Parts?

Evaluate the Pencil Parts: Cone Metal to prevent wear Tapered to: 1) provide writing control subject to preference, 2) maximize writing space or options

15 Levels of Abstraction

16 Software Reengineering Techniques  Reverse Engineering / Redocumentation /Design Recovery  Restructuring /Refactoring  Conversion  Migration  Software Salvaging Requirements Forward Engineer Architecture Physical Design Implementation Reverse Engineer Q8 This is the famous “Reengineering U”

17 Software Reengineering Techniques Redocumentation Reverse Engineering RestructuringConversion

18 Software Salvaging and Migration Software Salvaging (for reuse) Q9 Software Migration

19 Software Salvaging for Reuse (Archeology?) Asset Management System Acquisition Management System Existing Systems Reverse Engineer Software Artifacts Captured Artifacts Identify and Prepare Reusable Parts Reusable Components Converged/ Reengineered Systems Asset Management System Acquisition Management System Integrate Reusable and New Parts to Construct System Q10