CSE 5324:

Software Engineering I

(Analysis, Design, Creation) Spring 1998

Important Reminder:

 

I MUST have a completed Information sheet

from each student or you won't be in a team for a

project, and you won't get that part of your grade.

 

 

Today's class:

 

    1. Review from last time
    2. Brooks Book Chapter
    3. Today:
    4. Re-engineering

      Requirements - Analysis

      Finalize Teams (for projects)

    5. Review

 

 

Last:

 

System Engineering

 

(System is a bad word! It is too "generic")

 

 

Re-engineering

 

(This is a good "YAB" - Yet Another Buzzword)

 

As the rules of business change the software

supporting those rules must change.

 

A Business Process ("BP") - like other processes

is a set of related tasks to achieve a defined outcome

 

BPR (Reengineering) is implementing change for

"breakthroughs"

 

BP has a "customer" - who receives the outcome (product)

 

 

Hammer suggests:

 

Organize around outcomes (not tasks)

(easier to "track" work status)

 

The process customer performs (controls)

the process.

 

Put information processing into place where

work is done.

 

Get the data once, where it is produced.

 

View distributed (geographically) resources

as if they were centralized.

 

Make decisions where work is done (not higher up).

 

 

BPR is a cycle, including:

 

Define Business Goals

 

Identify process, prioritize

 

Evaluate processes, measure

 

Specify and design process

 

Prototype (try it out)

 

Refine and use

 

Software Re-engineering:

 

Maintenance is:

Corrective

Adaptive

Perfective (enhance)

Preventive (re-engineer)

 

Process Model:

Inventory Analysis - details of applications

Document restructuring

Reverse Engineer - create an abstract representation

Restructure Code - most common

Restructure Data - may actually be more valuable

Forward Engineering - apply SE principles to recreate

existing application (with new features)

 

 

Some details:

 

Reverse Engineer to understand:

Data Structures

Database Model

User IF

 

Restructure to:

Improve quality (how to measure?)

Improve programmer productivity

Maintainable, testable

 

Forward Engineer to:

Use new technology:

Distributed, new GUI, OO methods, CASE Tools

 

Is it worth it?

Cost benefit is Maintenance costs - Re-engineering costs