A software process model is a simplified representation of a software process, showing certain perspectives like activities or roles. These models serve as frameworks for understanding and improving software development.
The main process models include:
- The Waterfall Model: Divides development into phases such as requirements, design, implementation, and testing.
- Incremental Development: Builds the system in a series of versions, each adding functionality.
- Reuse-Oriented Software Engineering: Focuses on integrating existing reusable components.
Large systems often combine different models. For instance, core requirements might use a waterfall approach, while user interfaces are developed incrementally.
The first published model of the software development process was derived from more general system engineering processes (Royce, 1970). This model is illustrated in Figure 2.1. Because of the cascade from one phase to another, this model is known as the ‘waterfall model’ or software life cycle. The waterfall model is an example of a plan-driven process—in principle, you must plan and schedule all of the process activities before starting work on them.
Principal Stages of the Waterfall Model Reflect the Fundamental Development Activities:
- Requirements analysis and definition: The system’s services, constraints, and goals are established by consultation with users and documented in detail.
- System and software design: Requirements are allocated to system components, defining architecture and software abstractions.
- Implementation and unit testing: The design is realized through coding, and each unit is tested to meet specifications.
- Integration and system testing: Components are integrated and tested as a complete system to ensure requirements are met.
- Operation and maintenance: The system is deployed and maintained; errors are corrected, and enhancements are made as new requirements arise.
Each phase produces documentation that is reviewed and approved before the next phase begins. However, in practice, feedback loops occur — issues in design may lead to revisiting requirements, and testing can reveal design flaws. This iterative reality makes the process more dynamic than a simple linear flow.
The waterfall model is consistent with engineering discipline — structured, document-driven, and predictable. Its downside lies in inflexibility; adapting to changing requirements can be costly once stages are locked.
This model works best when requirements are stable and well understood from the start. It’s still widely used because it aligns with standard project management practices and offers visibility through documentation.
Variants like formal system development introduce mathematical precision to improve safety and reliability, making it suitable for mission-critical or security-critical systems.