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




Expert System Development


Analyzing the Expert System Lifecycle


Maintenance of Expert Systems

Better knowledge representation

use natural language interface


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



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?


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



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