Traditional Software Process Models
Zhipeng Huang Lecture 5: Traditional Software Process Models
CMPSC 345 Software Engineering
Date: Jan. 27, 2026
Last Class Review
Key topics discussed include:
Characterizing the Size and Complexity: Understanding how size and complexity affect software development and support.
Technical Issues: Identifying technical challenges in developing and supporting software systems.
Nontechnical Issues: Exploring human and organizational factors impacting software development.
Payroll System Example: Using a payroll system as a case study to illustrate concerns in development and support activities for large application software.
Coordination Efforts: Highlighting the necessary coordination among processes, products, and personnel in software development.
These topics will be elaborated upon in later lectures.
Software Development Life Cycle (SDLC)
Definition: The Software Development Life Cycle is a structured methodology used for designing, developing, and testing high-quality software.
Purpose: It delineates the complete procedure of software development step-by-step.
Importance: It ensures systematic and efficient development, delivery, and maintenance of software.
Source: Reference link: GeeksforGeeks
Lecture Objectives
Introduce: The generic concept of software engineering process models.
Discuss: Traditional process models:
Code-and-Fix Model
Waterfall Model
Incremental Model
Spiral Model
Describe: The Rational Unified Process (RUP).
Assess: These processes in relation to the Capability Maturity Model (CMM) and Capability Maturity Model Integrated (CMMI).
Discuss: The necessity for modifying and refining standard processes.
Software Process Overview
Definition: The software process refers to the methods used in developing and supporting software.
Examples of Activities: Requirements gathering, design, coding, testing, release, and maintenance.
Systematic Process Benefits: Aligns tasks to ensure consistent and high-quality results.
Consequences of No Designed Process: Inconsistency or skipped tasks leading to poor products or project failures.
Software Process Models Purpose: To provide guidance for achieving software objectives by defining:
Tasks to be performed
Inputs and outputs for each task
Preconditions and postconditions for tasks
Sequence and flow of tasks
Simplest Process Model (Code-and-Fix Model)
Characteristics:
Focus is primarily on coding.
Minimal formal requirements, ideal for small projects.
Tasks Include:
Problem Statement
Code
Compile
Debug
Unit Test
Release
Example Scenario: A student is asked to quickly write a small C++ program to sort a list of integers.
Limitations of the Simplest Model
**Suitable For: **
Small homework assignments
Quick scripts
Prototypes
One-time tools
Problems for Large Projects:
Code becomes messy and difficult to maintain.
Increased number of bugs.
Lack of clear structure or documentation.
Historical Context: Early projects often employed this model despite its limitations but were eventually outgrown in favor of more structured models as complexity grew.
Waterfall Model
Overview:
One of the oldest software development models, introduced by Royce in 1970.
Represents the software life cycle as a linear sequence of stages, akin to a waterfall.
Process Structure:
Each stage is completed before moving onto the next; outputs from one stage become inputs for the next. Once a phase is completed, going back is difficult.
Example Application: Online Course Registration System.
Stages:
Requirements: Features like student login, course registration, and class capacity enforcement.
Design: Database tables setup (Students, Courses, Enrollments) and user interface decisions.
Implementation: Separately developed backend and frontend code.
Testing: Login functionality, registration limits, and error handling tests.
Deployment: Release the system to university users.
Maintenance: Handle bug fixes or update policies.
Advantages & Disadvantages of Waterfall Model
Advantages:
Clear Structure: Provides a well-defined approach.
Documentation: Generates comprehensive documents at each stage.
Tracking: Allows for progress tracking through distinct stages.
Disadvantages:
Changes are difficult once a phase is completed, often leading to late discovery of problems.
Modifications: Incorporation of iterative activities allowing for task overlapping and revision (including techniques like Joint Application Development - JAD).
Incremental Model
Purpose: Designed to manage larger software projects by breaking them into smaller, manageable components.
Adaptation of Waterfall: Each increment undergoes the full cycle (requirements, design, implementation, testing), but only for a segment of the entire system.
Integration: Continuously integrates completed components into the overall system for testing.
Multiple-Release Incremental Model
Structure:
Release 1 contains core functionality.
Subsequent releases add additional features and bug fixes incrementally.
Facilitates evolutionary software development—enables continuous improvement.
New releases build on previous designs and code.
Example of Incremental Model: Mobile Banking App
Release 1: Core functionality (user login, account balance view). Testing login and balance display followed by user feedback collection.
Release 2: Introduces fund transfer and transaction history features.
Release 3: Includes bill payment features and mobile check deposit.
Future Releases: Additional features added in following iterations.
Advantages & Disadvantages of Incremental Model
Advantages:
Early delivery of working software.
Reduced risk compared to the Waterfall Model.
Easier to accommodate changes.
Progress is visible and measurable.
Disadvantages:
Requires a good architectural foundation up front.
Integration complexity may escalate.
Planning of increments can be challenging.
Not ideal for components that are highly interdependent.
Ideal Use Cases:
Requirements are stable but may evolve.
The system can be divided into independent features.
Early user feedback is critical for success.
Suited for medium to large projects.
Spiral Model
Introduction:
Proposed by Barry Boehm in 1988, the Spiral Model is an evolutionary and risk-driven approach to software development.
Focuses on reducing risks through iterative cycles.
Four Quadrants of Spiral Model:
Determine Objectives, Alternatives, Constraints.
Evaluate Alternatives, Identify and Resolve Risks.
Develop and Test.
Plan the Next Phase.
In-Depth Exploration of Spiral Model Phases
First Quadrant:
Identify goals and limitations for each iteration.
Second Quadrant:
Assess risks and evaluate alternatives to mitigate them.
Third Quadrant:
Create prototypes or implement incremental developments based on risk assessments.
Fourth Quadrant:
Validate achievements and strategize for the following cycle.
Example of Spiral Model: Self-Driving Car Software Development
Cycle 1: Basic Navigation
Objective: Develop fundamental navigation capabilities.
Alternatives: Use existing algorithms vs. custom solutions.
Constraints: Safety and accuracy must be prioritized.
Risk Assessment: Testing custom algorithms for accuracy; use pre-built algorithms initially to mitigate risk.
Development Phase: Conduct prototype tests of basic navigation with pre-built algorithms.
Planning Next Cycle: Assess results and prepare for obstacle detection inclusion in Cycle 2.
Cycle 2: Obstacle Detection
Objective: Integrate obstacle detection capabilities.
Alternatives: Selection between LIDAR or camera-based systems.
Constraints involve cost and reliability.
Risk Mitigation: Ensure better accuracy with LIDAR testing in low light conditions.
Cycle 3: Lane Detection
Develop and test lane detection systems using machine learning vs. rule-based methodologies.
Advantages & Challenges of the Spiral Model
Key Focus: Unlike other models, risk analysis drives the Spiral model rather than feature order or time.
Advantages:
Continuous risk assessment reduces potential issues early on.
Flexible, allowing for development evolution as new challenges arise.
Ensures production of operational software early in the development cycle.
Challenges:
Requires specialized skills in risk assessment, not always available.
Complexity in managing iterative risks, which can become resource-intensive.
Rational Unified Process (RUP) Framework
Overview: RUP is defined as an iterative, incremental, use-case-driven framework emphasizing architecture and risk management at the outset.
Core features:
Iterative and incremental development cycles.
Use-case driven, where requirements are expressed as use cases.
Focus on architecture to establish a solid foundation early on.
Emphasis on risk management, particularly during initial project phases.
RUP Phases
Inception Phase:
Evaluate whether to build the system based on initial requirements.
Elaboration Phase:
Assess safety in building the system by examining architecture and potential risks.
Construction Phase:
Focus on correct development and quality assurance testing.
Transition Phase:
Final validation and preparation for user readiness and release decisions.
Activities in RUP Phases
Common Activities Include:
Requirements gathering
Design outline
Implementation circuitry
Testing cycles
Integration tasks
Phase Considerations:
Clarifying timing for emphasizing different tasks and decision-making.
Assessment Questions
Waterfall Process Disadvantages:
A. Very little overlapping of tasks
B. It is a single iteration
C. Sequential order of tasks
D. All of these are correct
Correct Answer: D
RUP Objectives for Requirements:
A. Inception
B. Elaboration
C. Construction
D. Transition
E. All of these are correct
Correct Answer: B
Code-and-Fix Model Scenario:
A student writes code, runs it, fixes errors, and repeats without planning. Process Model: Code-and-Fix.
Startup Product Development:
A startup wants a product quickly with feature additions based on user feedback. Best Model: Incremental model.
High-Risk Medical Device Project:
High safety risk, unclear requirements, and expensive failures. Best Model: Spiral model.
What's Next?
Future Topics:
Process Assessment Models
Agile Software Process Models
Preparation for Quiz 2 (Lecture 5)