Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Tori Bowman CSSE 375, Rose-Hulman September 11, 2007."— Presentation transcript:

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

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

3

4  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

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

6 6

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

8

9  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

10  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

11  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 12

13 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. 24-25

14

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

16 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

17 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

18  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 19


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

Similar presentations


Ads by Google