Tori Bowman CSSE 375, Rose-Hulman September 11, 2007.

Slides:



Advertisements
Similar presentations
Chapter 27 Software Change.
Advertisements

Clean code. Motivation Total cost = the cost of developing + maintenance cost Maintenance cost = cost of understanding + cost of changes + cost of testing.
Unit 2. Software Lifecycle
Chapter 29: Integration Jacob Harper. The Integration Approach The order of adding components to a system is crucial Benefits to careful integration –
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
CMMI – Continuous as well as staged model CMMI capability levels – Incomplete, performed, managed, defined, quantitatively managed, optimized Example.
Implementation and Integration1 Concepts and practices.
SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Introduction to Software Evolution and Maintenance
Software Evolution Managing the processes of software system change
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Unit Testing CS 414 – Software Engineering I Don Bagert Rose-Hulman Institute of Technology January 16, 2003.
Chapter 2 A Strategy for the Appraisal of Public Sector Investments.
©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
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.
Software Evolution Planning CIS 376 Bruce R. Maxim UM-Dearborn.
1 Defensive Programming and Debugging (Chapters 8 and 23 of Code Complete) Tori Bowman CSSE 375, Rose-Hulman September 21, 2007.
1 Software Construction Software Construction Chapter 1.
Different Levels of Testing
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
TOPIC R Software Maintenance, Evolution, Program Comprehension, and Reverse Engineering SEG4110 Advanced Software Design and Reengineering.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l 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.
©Ian Sommerville 2000Software Engineering, 6th edition. Chapter 23Slide 1 Chapter 23 Software Cost Estimation.
Levels of Software Applications Up to now we have focused on testing techniques at the unit (or program) level. In any medium to large software systems,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
Historical Aspects Origin of software engineering –NATO study group coined the term in 1967 Software crisis –Low quality, schedule delay, and cost overrun.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Figures – Chapter 9. Figure 9.1 A spiral model of development and evolution.
Maintenance Reverse Engineering Ethics
REFACTORINGREFACTORING. Realities Code evolves substantially during development Requirements changes 1%-4% per month on a project Current methodologies.
©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.
CS 351/ IT 351 Modeling and Simulation Technologies Review ( ) Dr. Jim Holten.
©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.
CS223: Software Engineering Lecture 32: Software Maintenance.
1 The Software Engineering Education at CSULA Jiang Guo Jose M. Macias June 4, 2010.
Tutorial 4 IT323.  Q1. As a software project manager in a company that specializes in the development of software for the offshore oil industry, you.
Environment Assessment
Managing the System PPT SOURCE : Shari L. Pfleeger Joann M. Atlee.
Software Maintenance
Reverse Engineering: A Roadmap
Program Restructuring
Chapter 8 Software Evolution.
Software Maintenance Main issues: why maintenance is such an issue
Unit 5 15SE202 Software engineering Principles
Chapter 2. Problem Solving and Software Engineering
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Information Hidding Dr. Veton Kepuska.
Presentation transcript:

Tori Bowman CSSE 375, Rose-Hulman September 11, 2007

 Maintenance text, Chapter 7  Code Complete, Chapter 24  Code Complete, Chapter 29 2

 Reverse engineering is the process of analyzing a system to  Identify the system’s components and interrelationships  Create representations of system in another form or at higher levels of abstraction 4

 Product/Environment Related  Maintenance Process Related  Commercially Related 5

6

 In groups of 4, discuss your functional requirements (5 min.)  Around the room discussion (5 min) **Homework: Write design level requirements 7

 Refactoring is the process of rewriting a computer program or other material to improve its structure or readability, while explicitly preserving its meaning or behavior. [Wikipedia]  In that manner, refactoring has similar goals to preventive maintenance 9

 As we will see later, one of the Laws of Software Evolution is:  “As a program is evolved its complexity increases unless work is done to maintain or reduce it.”  Refactoring (as well as reverse engineering) can help to reduce such complexity 10

 Data-level (e.g. give a variable a better name)  Statement-level (e.g. consolidate if-then-else options using && or II)  Routine-level (e.g. splitting a routine into two routines which each have a single clearly defined function)  Class Implementation-level (e.g. changing use of a data member to a method or vice versa)  Class Interface-level (e.g. creating an abstract class out of an existing class)  System-level (e.g. replace error codes with exceptions or vice versa) 11

12

Economics 1 Cost associated with continuing maintenance: C maint = [P 3 – (P 1 + P 2 )] X L Cost associated with refactoring: 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 13 Maintenance or refactoring? 1 Sneed, H., “Planning the Reengineering of Legacy Systems”, IEEE Software, January 1995, pp

 System integration refers to the combination of separate components into a single software system 15

1. Design, code, test, and debug each class (unit development) 2. Combine the classes into on whopping- big system (“system integration”) 3. Test and debug the whole system What are the potential problems/issues with this approach? Advantage of this approach? 16

1. Develop a small, functional part of the system (the “skeleton”) 2. Design, code, test, and debug a class 3. Integrate the new class with the skeleton What are the potential problems/issues with this approach? Advantage of this approach? 17

 Top-down  Across levels (pg. 695)  Vertical slices (pg. 696)  Bottom-up  Across levels (pg. 697)  Vertical slices (pg. 698)  Sandwich  Risk-oriented  Feature-oriented  T-Shaped 18

19