Waterfall Mode:
The Waterfall Model is a linear sequential flow. In which progress is seen as
flowing steadily downwards (like a waterfall) through the phases of software
implementation. This means that any phase in the development process begins only
if the previous phase is complete. The waterfall approach does not define the
process to go back to the previous phase to handle changes in requirement.
In this article, we will discuss the advantages and disadvantages of the waterfall,
should we avoid it? when to use it? and the waterfall model pitfall, and why I see it
as the father of the SDLC models.
Waterfall Model Phases
Waterfall Model contains the main phases similarly to other process models, you
can read this article for more information about phases definitions.
When to use Waterfall Model?
Due to the nature of the waterfall model, it is hard to get back to the previous phase
once completed. Although, this is can be very rigid in some software projects
which need some flexibility, while, this model can be essential or the most suitable
model for other software projects’ contexts.
The usage of the waterfall model can fall under the projects which do not focus on
changing the requirements, for example:
1. Projects initiated from a request for proposal (RFP), the customer has a very
clear documented requirements
2. Mission Critical projects, for example, in a Space shuttle
3. Embedded systems.
We can notice some similarities of these types of projects that they cannot be
delivered in iterative, incremental, or agile manner, for example, in embedded
systems for the elevator, you cannot deliver an elevator who can go up only
without going down, or handling only users requests from inside and ignore
outside calls for the elevator.
Validation and Verification Model –V-Model
V-Model is mostly known as the validation and verification software development
process model (The Vee Model), and It is one of the most know software
development methodology. Although it is considered as an improvement to the
waterfall model and it has some similarities as the process also based on sequential
steps moving down in a linear way, it differs from the waterfall model as the steps
move upwards after the coding phase to form the typical V shape. This V shape
demonstrates the relationships between each phase of the development life cycle
and its associated phase of testing.
The V-Model
This means that any phase in the development process begins only if the previous
phase is complete and has a correspondence related testing phase which is
performed against this phase completion. Similar to the Waterfall model, the V-
Model does not define the process to go back to the previous phase to handle
changes in requirement.
The technical aspect of the project cycle is considered as a V shape starting with
the business needs on the upper left and ending with the user acceptance testing on
the upper right.
V-Model Model Phases
The V-Model Model contains the main phases similarly to other process models,
you can read this article for more information about SDLC phases definitions.
Moreover, it breaks down the testing phase into detailed steps to ensure the
validation and verification process. So, it contains the below testing phases:
Unit Testing
The Unit testing is the testing at the code level and helps eliminate issues at an
early stage, mainly the developer is responsible to perform the unit test for his code
while not all the defects cannot be discovered at the unit testing.
Functional Testing
Functional testing is associated with the low-level design phase which ensures that
collections of codes and units are working together probably to execute new
function or service.
Integration Testing
Integration testing is associated with the high-level design phase. Integration
testing ensures the integration between all system modules after adding any new
functions or updates.
System Testing
System testing is associated with the system requirements and design phase. It
combines the software, hardware, and the integration of this system with the other
external systems.
User Acceptance Testing
User Acceptance testing is associated with the business and operations analysis
phase. The customer users are the main performers of this testing based on test
cases and scenarios that cover the business requirements to ensure that they have
delivered the right software as per the specifications.