CS 477 Lecture Notes
Week One, Thursday: Introduction (cont.)
Today we will talk more about projects and team formation options. We will also
discuss the paper "No Silver Bullet," by Fred Brooks, handed out in class
last session. If you didn't get a copy, the TA has some outside her office door
(SAL 317).
Continuing our introduction to software engineering, we will talk about
the various phases in the software lifecycle. Different process models
make different resource allocations across or among these phases.
Important: there is no separate testing phase and no separate documentation phase.
These activities are distributed throughout the project.
Requirements Phase
Frequently carried out improperly. Client may not know what he needs.
Team must understand client's business first. Client frequently asks
for wrong product because software is complex.
Specification Phase
The specification document constitutes a contract with the client. It
describes what is to be built. Must be complete and unambiguous.
SQA must inspect for contradictions, ambiguities, and incompleteness.
Planning Phase
Estimate duration and manpower requirements to fulfill the specification.
Write a project management plan that shows the team organization.
Design Phase
Algorithms, data structures, modules, data modeling. Keep a record of
design decisions.
Implementation Phase
Code and compile modules. Test modules. SQA does formal testing to test
plans developed from the specification.
Integration Phase
Link modules. Install system. System test.
Maintenance Phase
Corrective, perfective, adaptive maintenance. Regression testing is
important.
Production Problems
Complexity
Software is complex. Really complex.
Conformity
Software must conform to the real world, not the other way around.
Changeability
Software is changeable, therefore it will change.
Invisibility
Software is hard to visualize. Visual aids like flow charts and object
models are always helpful.
This page established January 14, 1998; last updated January 13, 2000.