What is a software process model?
1. A software process model is an abstraction of the software
development process.
2. The models specify the stages and order of a process.
3. This is a representation of the order of activities of the
process and the sequence the performed.
A model will define the following:
The tasks to be performed
The input and output of each task
The pre and post-conditions for each task
The flow and sequence of each task
Factors in choosing a software process
Choosing the right software process model for your project
can be difficult.
If you know your requirements well, it will be easier to select
a model.
You need to keep the following factors in mind when
selecting your software process model:
Project requirements
Before you choose a model, take some time to go through the
project requirements and clarify them.
Project size
Consider the size of the project you will be working on.
Project complexity
Complex projects may not have clear requirements. The
requirements may change often, and the cost of delay is high
Cost of delay
Is the project highly time-bound with a huge cost of delay, or are
the timelines flexible?
Customer involvement
Do you need to consult the customers during the process?
Familiarity with technology
This involves the developers’ knowledge and experience with the
project domain, software tools, language, and methods needed
for development.
Project resources
This involves the amount and availability of funds, staff, and other
resources.
Types of software process models
The most popular and important SDLC models (Software
Development Life Cycle models) models are as follows:
Waterfall model
V model
Incremental model
RAD model
Agile model
Iterative model
Prototype model
Spiral model
Waterfall Model
The waterfall model is a sequential, plan driven-
process where you must plan and schedule all your activities
before starting the project.
Each activity in the waterfall model is represented as a separate
phase arranged in linear order.
It has the following phases:
Requirements
Design
Implementation
Testing
Deployment
Maintenance
Each of these phases produces one or more documents that
need to be approved before the next phase begins.
The waterfall model is easy to understand and follow. It
doesn’t require a lot of customer involvement after the
specification is done.
The waterfall model has a rigid structure, so it should be
used in cases where the requirements are understood
completely and unlikely to radically change.
V Model
The V model (Verification and Validation model) is an
extension of the waterfall model.
All the requirements are gathered at the start and cannot be
changed.
For every phase in the development cycle, there is
an associated testing phase.
The V model is highly disciplined, easy to understand, and makes
project management easier.
But it isn’t good for complex projects or projects that have unclear
or changing requirements.
Incremental Model
The incremental model divides the system’s functionality
into small increments that are delivered one after the other in
quick succession.
The most important functionality is implemented in the initial
increments.
Incremental development is based on developing an initial
implementation,
Each iteration passes through the requirements, design, coding,
and testing stages.
The incremental model lets stakeholders and developers see
results with the first increment.
If the stakeholders don’t like anything, everyone finds out a lot
sooner.
The incremental model is great for projects that have loosely
coupled parts and projects with complete and clear requirements.
Iterative Model
The iterative development model develops a system by building
small portions of all the features.
In the iterative model, you start off by implementing a small set of
software requirements.
These are then enhanced iteratively in the evolving versions
until the system is completed.
This process model starts with part of the software, which is then
implemented and reviewed to identify further requirements.
Like the incremental model, the iterative model allows you to see
the results at the early stages of development. This makes it easy
to identify and fix any functional or design flaws.
The deadline and budget may change throughout the
development process,
The iterative model is a good choice for large software that can
be easily broken down into modules.
RAD Model
The Rapid Application Development (RAD model) is based on
iterative development and prototyping with little planning
involved.
It involves the following phases:
1. Business modeling
2. Data modeling
3. Process modeling
4. Application generation
5. Testing and turnover
The RAD concept focuses on gathering requirements using focus
groups and workshops, reusing software components, and
informal communication.
The RAD model accommodates changing requirements, reduces
development time, and increases the reusability of components.
But it can be complex to manage.
Spiral Model
The spiral model is a risk driven iterative software process model.
The spiral model delivers projects in loops.
Phases are addressing whatever problem has the greatest risk of
causing a failure.
It was designed to include the best features from the waterfall
and introduces risk-assessment.
You have the following phases for each cycle:
1. Address the highest-risk problem and determine the
objective and alternate solutions
2. Evaluate the alternatives and identify the risks involved and
possible solutions
3. Develop a solution and verify if it’s acceptable
4. Plan for the next cycle
The spiral model can be used for projects with unclear needs or
projects still in research and development.