Essential Software Process Models and Methodologies
Posted on Jul 16, 2025 in Software Engineering
Software Development Processes
- A structured set of activities required to develop a software system.
- Many different software processes, but all involve:
- Specification: Defining what the system should do;
- Design and Implementation: Defining the system’s organization and implementing it;
- Validation: Checking that it meets customer requirements;
- Evolution: Adapting the system to changing customer needs.
- A software process model is an abstract representation of a process, presenting a description from a particular perspective.
Software Process Descriptions
- When describing and discussing processes, we typically focus on the activities involved, such as specifying a data model or designing a user interface, and their ordering.
- Process descriptions may also include:
- Products: The outcomes of a process activity;
- Roles: The responsibilities of individuals involved in the process;
- Pre- and Post-conditions: Statements that are true before and after a process activity is enacted or a product is produced.
Plan-Driven vs. Agile Processes
- Plan-driven processes are those where all activities are planned in advance, and progress is measured against this predefined plan.
- In agile processes, planning is incremental, allowing for easier adaptation to changing customer requirements.
- In practice, most real-world processes incorporate elements of both plan-driven and agile approaches.
- There are no inherently ‘right’ or ‘wrong’ software processes.
Key Software Process Models
The Waterfall Model
- A plan-driven model with separate and distinct phases of specification and development.
Incremental Development
- Specification, development, and validation are interleaved. This model can be plan-driven or agile.
Reuse-Oriented Software Engineering
- The system is assembled from existing components. This approach can be plan-driven or agile.
Reuse Process Stages
- Component analysis;
- Requirements modification;
- System design with reuse;
- Development and integration.
- In practice, most large systems are developed using a process that incorporates elements from all of these models.
Waterfall Model Challenges
- The inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
- Therefore, this model is only appropriate when requirements are well-understood and changes are expected to be limited during the design process.
- Few business systems have truly stable requirements.
- The Waterfall model is primarily used for large systems engineering projects where a system is developed across multiple sites.
- In such circumstances, the plan-driven nature of the Waterfall model helps coordinate the work.
Incremental Development Challenges
- The process visibility can be low.
- The system structure tends to degrade as new increments are added.
Requirements Engineering Process
Feasibility Study
- Assessing if it is technically and financially feasible to build the system.
Requirements Elicitation and Analysis
- Determining what system stakeholders require or expect from the system.
Requirements Specification
- Defining the requirements in detail.
Requirements Validation
- Checking the validity of the requirements.
Software Design Activities
- Architectural Design: Identifying the overall system structure, principal components (sub-systems or modules), their relationships, and distribution.
- Interface Design: Defining the interfaces between system components.
- Component Design: Designing the operation of each system component.
- Database Design: Designing system data structures and their representation in a database.