A sequential software development process where progress flows steadily downward through phases.