Foundations of Software Engineering

Kenneth M. Anderson <kena@cs.colorado.edu>

Lecture 04: Software Process, Part 1

Relationship to Textbook

But first…

Software Process

Process, continued

Since there are many different activities that occur during a software development project, it is better to think of a software process as being composed of sub-processes or component software processes. Each of these processes may be performed by different people playing different roles.

Software Process at a high-level

Process Specification

Desired Characteristics of Software Process

Predictability

Support Testability and Maintainability

Support Change

Support Early Defect Removal

Support Feedback and Process Improvement

Development Process

Requirements Analysis

Design

Implementation

Testing

Common Software Development Processes

Waterfall Model

Waterfall Advantages

Waterfall disadvantages

Prototyping

Development of Prototype

Managing Costs

Iterative Development

Iterative

Spiral Model

Timeboxing

Timeboxing Illustrated

Implications

Team Size

Advantages and Disadvantages

Summary

Summary of Development Processes

Model Strengths Weaknesses Applicability
Waterfall Simple
Easy to execute
Intuitive and logical
Easy contractually
All or nothing — too risky
Reqs. frozen early
May chose outdated hardware/tech
Disallows changes
No feedback from users
Encourages reqs. bloating
Well understood problems
short duration projects
automation of existing manual systems
Prototyping Helps reqs. elicitation
Reduces risk
Better and more stable final system
Front heavy
Possibly higher cost and schedule
Encourages reqs. bloating
Disallows later change
Systems with novice users; or areas with reqs. uncertainity
Heavy reporting based systems can benefit from UI prototypes
Iterative Regular deliveries, leading to business benefit
Can accommodate changes naturally
Allows user feedback
Avoids reqs. bloating
Naturally prioritizes reqs.
Allows reasonable exit points
Reduces risks
Overhead of planning each iteration
Total costs may increase
System architecture and design may suffer
Rework may increase
For businesses where time is important, risk of long projects cannot be taken
reqs not known and evolve with time
Timeboxing All benefits of iterative
Planning for iterations somewhat easier
Very short delivery times
Project management becomes more complex
Team size is larger
Complicated — lapses can lead to losses
Where short delivery times are very important
Where flexibility in grouping features is needed
When overall architecture of system is stable

Coming Up Next