Developing Software Using the V Model

Developing software using the V model

Over the past decades, many different software development methodologies have been used. Generally these fall into one of two categories: heavyweight or lightweight.

Heavyweight (predictive) methodologies such as the Waterfall model, Spiral model and V-model are based on a linear, sequential, step-by-step approach to software development. They are usually used for longer development cycles, which can last several months or even a year.

Lightweight (agile) methodologies such as Scrum, Lean and XP are flexible and used in short development cycles (iterations) that last two to four weeks. This way your teams can quickly respond to the rapidly changing demands of your customers.

Heavyweight models are hardly in fashion anymore and have been replaced by light methodologies, but that does not mean that no one uses the heavyweight methods anymore. When developing new software, the development model you choose is key to your success. And there is no specific method that works always and for everyone.

In this article we discuss a heavyweight model known as the V model. We explain what the V model is and how it could serve you in this age of lightweight development.

What is the V model?

This software development method is a variation on the classic Waterfall model. The difference is that at Waterfall each development phase flows into the next in a simple linear process. With the V-model, a test phase runs parallel to each development phase. Each parallel development and testing phase must be completed before the next phase begins.

This model is named for its primary focus on verification and validation. And when you graph these parallel development and testing phases, the resulting diagram resembles the shape of the letter V.

What is the difference between verification and validation?

Some people get confused and think that verification and validation are synonyms. So let's look at the differences.

Verification is the process of ensuring that project requirements are met. This involves the verification of documentation, design and code at some point during the development of the project. You ensure that the project is developed correctly.

For example, if you're developing a spreadsheet app, you need to verify during the process that the basic math calculations are correct before moving on to more complex code and formulas. This type of testing takes place parallel to the development of the product.

Validation is the process of ensuring you develop the right product. This type of testing takes place when the development phase is completed. You test to ensure that the product meets the customer's needs.

How does the V model work?

The V-model consists of a series of linear phases that are executed one by one until the project is completed. On the left side of the V-model are the verification phases of the development. The right side shows the parallel validation phases. The verification and validation phases come together at the tip of the V-shape.

The V-model for technology described below contains various verification and validation phases.

Requirements

During the requirements phase, stakeholders and the team analyze customer needs and determine what will be included in the feature package. Take plenty of time for a thorough analysis so that you don't miss anything that is important to your customers. Also create detailed documentation so that everyone involved understands the requirements. At the same time, the acceptance tests are planned and designed.

System design

Using the requirements documents and feedback from customers and stakeholders, determine what methods or techniques you could use to implement the requirements. Prepare a specification document showing overall system organization, menu structures, business logic, data layers, and so on.

In this phase, the system tests are planned and designed based on the system design documents.

Architectural design

In this phase you document specifications that detail how all the different components in the software will be linked and interact with each other via internal or external integrations. This phase is also called high-level design (HLD).

Based on the information documented during this phase, the integration tests are developed at the same time.

Module design

This phase is also called low-level design for your system. In this phase you determine the details for the internal design of the system. You need to document the details of how models, components, interfaces, etc. are implemented and how they interact with other modules in the system.

During this phase, the unit tests must be planned and created. These unit tests serve to ensure that the individual components of the module function correctly.

Coding

Here we come to the point of the V-shape, where the verification side of the model is connected to the validation side. In this phase, your developers work on coding using the guidelines and standards outlined in the design documents. Using the design and specification documents, your team writes code and creates a functioning system. Before the final version, the code is first checked and optimized. The testing phases begin after the final version is submitted.

Unit testing

The validation phases of the V-model begin with unit testing. The unit tests must be planned and designed during the module design phase. These tests check the code in individual parts of the module. Unit testing helps you find and fix bugs and other possible problems.

Because unit testing is an extremely precise process, this phase is likely to take more time than the other validation phases. But this phase is very important because it will help you eliminate the vast majority of potential bugs and issues, so that the next phases of testing will run smoother and faster.

Test integration

The test plans for this phase must have been created during the architectural design phase. The tests are used to see how well your software works and communicates with both internal and external components in the system.

System testing

The system tests are made during the system design phase. These tests mainly focus on general performance, to ensure that the new software works properly and communicates within the system. System testing can help you find compatibility issues between software and hardware.

Acceptance testing

The acceptance test is the final testing phase. Acceptance testing takes place in a user environment. The purpose is to check whether the new software is compatible with other systems in the user environment or will function properly in a live environment.

Why do you use a V model?

Now that most companies work in an agile environment, you may wonder why you would use a V-model derived from the Waterfall method. If the global pandemic has taught us one thing, it's that businesses need to be flexible to succeed. Flexibility doesn't just mean that you can keep your employees at home, in the office or in a...work late.It also means that many organizations have experienced a shift in how they plan and execute their projects.

IT Project Management Institute (PMI) calls these companies gymnastics companies. A gymnastics company focuses more on outcomes and results. This means that these companies are more open to different processes that can help them achieve the desired outcome. So based on the type of project, complexity and employee distribution, a gymnastics company may sometimes decide that it makes sense to develop a project using a heavyweight method such as the V-model.

You may consider a V model because of the following benefits:

  • It is relatively easy to understand and implement: With each phase completed before the next begins, it's easy to stay on track and achieve goals.
  • It is easy to manage: The linear nature of the model lets you know where you were, where you are and where you need to go.
  • The V model is linear, rigid and restrictive: That may not sound like an advantage. But a linear, rigid approach works well for projects with a tight scope and timeline.
  • The V model is good for time management: This model works very well for projects that need to maintain a tight deadline and meet certain milestones along the way.