Classic Models Part I

 

Software Enginners Wish List

 

General Principles of Software Engineering

 

Waterfall Model Revisit

 

Requirement Analysis

 

What Kind of Info Should be Included

 

Requirement Specifications

 

Functional Specifications

 

Faking the Waterfall Model

 

Spiral Model

1) identify the objective of the product, to design, buy or re-use

2) perform prototyping or simulation

3) developing and verifying the product

4) review everything so far, coding, unit testing, integration testing

 

Spiral Model in Practice

 

Prototyping

 

Expert System Development

 

Analyzing the Expert System Lifecycle

 

Maintenance of Expert Systems

Better knowledge representation

use natural language interface

explanation

knowledge-based revision

Building small prototypes

Problems must be small enough single persons can handle the job.

The system is for experimentation only, no need of maintenance or modification.

A tool is available for developing the prototype.

 

The Solution ?

 

Knowledge-Based Software Development

 

Very High-Level Language

 

Reusability

All software artifacts are reusable including requirement items, design patterns, design items, code segments, and test cases.

Most large programs are domain-specific and involve many versions

Software development process definitions can also be reused.

 

Software Reusability

reusable objects

mostly primitive objects

Cut and Paste Code ?

reusable software components -- Microsoft Word as an object

Lotus eSuite DevPack

require a flexible software architecture

 

Software Reusability

 

What are their Techniques?

 

What is the Most Important lesson with this?

 

IBM Cleanroom Method

 

Three Teams of the Cleanroom

 

Evaluation of Cleanroom Method

 

Waterfall Model as Meta-Model

Requirement -- design -- coding and testing are basically generic activities.

 

Can we be Creative?

Use Divide and Conqueur

Can we skip R?

we may not know exactly what the user wanted

Can we skip D?

we may have unstructured design

Can we combine R & D?

the design may become requirements or assumptions

Can we combine R & D & C?

Hacking

requirement, design and implementation issues all mix together

 

Analyzing Software Maintenance

Problem identification -- requirements

Program understanding -- requirements

propose design changes -- design

modification -- coding

re-validation -- testing

Software maintenance is essentially a repetitive waterfall model

 

Reference

All materials are from work experience, software engineering books and ideas & notes from my advisor in University of Minnesota