Widely-Used Software Development Methodologies: Pros And Cons
Tags: testdev, testing, softwaredevelopment, devmethodologies
Published: 2022-04-07 10:11:23

Methodologies in software development are processes, tips, and tools that allow you to create the right environment for development. Knowledge of different methodologies makes it easier to select the right technologies and optimize the development process.

There are a dozen of software development methodologies, each with its pros and cons. Waterfall Model and the V-Model are the most commonly-used classic approaches. Scrum and Kanban are the most popular among Agile methodologies. 

So let's take a look at the pros and cons of the most popular methodologies.

##Waterfall Model

Although widely-known, this model will not suit every project. Nevertheless, it is relevant in case timing and compliance are the priority, and a team commits to finishing each stage with a correct and completed solution.

The highlight of this model is the sequence of stages. Each upcoming phase starts only after the previous one ends.

From the QA engineer’s perspective, this model contradicts one of the core principles of quality assurance – early testing. QA resources are involved only after the development part is over. Various new functions tend to come with a bunch of errors. As a result, it takes many days (or weeks) and money to find and fix the defects. 

###Stages of the Waterfall Model

Still, let’s take a closer look at each of the stages that compose the Waterfall software methodology.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/421szfy7skwo5dol4f85.png)

1. **System engineering.** A team prepares hardware and servers they are going to use during the project.
2. **Analysis.** Business Analysts identify all the existing customer needs and prepare the requirements. Stakeholders also discuss the timing, funds, structure, and skills of the development team at this stage.
3. **Design.** The team thinks over the technologies, tools, frameworks, and programming languages that will be best to use for product development.
4. **Coding,** as you can guess from the name, is about creating the software. Developers also run unit tests at this stage. 
5. **Testing.** This stage begins only after the code is supposedly ready for release. QA engineers join the project and begin to test the product from an end-user point. At first, we run smoke tests to ensure that core features work. Then, we proceed with all the necessary types of functional and non-functional tests, looking for the critical deviations from the expected behavior. We need to make sure that nothing is going to deteriorate the user experience. This stage implies close cooperation between the development and testing teams during bug fixing. QA engineers report the defects to developers who fix these errors based on the priorities set by a Team Lead or Project Manager.
6. **Maintenance.** The final stage comes after the release when a company rolls out the software product, and users finally get access to it. It is necessary to keep an eye on quality. Most likely, the team will fix some minor defects after the release. Users tend to find some minor issues on production as well.

You can learn more about the particularities of the Waterfall testing process in one of our previous posts about SDLC ([software development life cycle](https://dev.to/qamadness/the-essential-phases-of-every-software-development-life-cycle-1m13)).

###Advantages of the Waterfall Model

+ All phases have clearly defined timeframes and the scope of tasks.
+ Each development phase has a set order in the development pipeline. 
+ The methodology works great for small projects with stable requirements.

###Disadvantages of the Waterfall Model

- The boundaries between the project phases can get blurry. 
- A working prototype takes a back seat.
- Any uncertainty comes with high risks, interrupting the smooth project flow.

## V-Model

V-model is an advanced version of the Waterfall Model. It gives the team more control over the process and transitioning before the stages. According to V-model, testing begins along with the requirements writing.

For every phase of the software development cycle, there is a corresponding testing phase. And each testing phase comes with a dedicated test plan with activities, entry and exit criteria, and expected results for each level. A QA team creates test suites before coding, during a corresponding phase. Each testing phase is strictly parallel to the corresponding development phase. If you visualize the connections, you’ll get a V-shaped model, just like this one: 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ndqt06qmwa7bzlq7q3tt.png)

The left side reflects the software design process, and the right side shows the testing process. The two intersect that the bottom – coding sums up the design and is a final step before testing. Please note that development and testing stages may be interpreted differently across companies.

### Advantages of the V-Model

+ A project team wraps up each stage with concrete results.
+ Thanks to early testing, team performance is higher compared to the Waterfall Model.
+ Time savings can reach up to 50% compared to the Waterfall Model
+ The methodology works perfectly for small projects with stable and clear requirements.

### Disadvantages of the V-Model

- It is difficult and expensive to make changes at the later stages.
- The development begins strictly with the corresponding phase, with no prototypes coming at the earlier stages. 
- Risk management is complicated since it is not specified how to solve critical problems that might come up during testing.

##Scrum

Scrum is one of the flexible development methodologies. The highlight of Scrum is working in sprints. Sprints are short periods dedicated to the development and testing of the new functionality. As a result, a team delivers software piece by piece, gradually releasing new features. A sprint usually lasts two to four weeks.

Scrum is also known for the close cooperation between the team members. A proactive approach and questions are welcome. The team gathers daily to discuss how the project progresses and all the process-related issues.

QA specialists are involved in the development at the early stages – for example, when the requirement writing starts. Bringing in the QA perspective this early helps to prevent some issues from the very beginning. Analysts and QA engineers often refer to their previous experiences, helping avoid gaps in logic or ambiguous demands. 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pqg3m3db40kcb5p0rt1m.png)

### Advantages of Scrum

+ The elimination of stages makes it possible to respond to customer needs instantly.
+ An opportunity to make frequent changes helps to minimize risks.
+ It is possible to change requirements at any stage without damaging consequences.

### Disadvantages of Scrum

- To make Scrum work, everyone should be a team player, and that is not always the case.
- If a team member leaves in the middle of a sprint, it is difficult to meet a set deadline.
- Sometimes daily meetings are transformed into rallies for the sake of rallies.

## Kanban

Kanban is one more flexible development methodology that is very easy to understand and use. The highlight is the visualization of tasks that makes it easier to track the work progress. 

Usually, a team uses a board with three columns charted on it, one for each task status – _To Do, In Progress,_ and _Done_. Team members can use paper stickers or simply write down the tasks, moving them from one column to the other when the time comes. 

This practice allows you to see how much has been already done and how many tasks are there to complete. It also allows keeping track of the process in general, making the information transparent. In the present-day realities, teams can use software like Trello to visualize the progress and work scope.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6z661qbbqwbypappo6vj.png)

Just like in Agile, Kanban implies involving QA engineers at the early stages, aiming to improve team efficiency and the quality of a developed product.

###Advantages of Kanban

+ Kanban guarantees complete transparency. All team members are well-informed about the progress, gaining full access to this information in one glance.
+ The methodology is flexible and easy to apply in practice. 
+ Despite the absence of a strict structure, Kanban still provides a high level of control.

###Disadvantages of Kanban

- Kanban works only for highly organized teams.
- This model is suitable for a five-member or bigger squad.
- It is not an option for long-term management and works better as an additional model.

##To Sum Up

The right choice of methodology always depends on the project particularities. What works perfectly for one case can be a complete disaster for another. You should consider the number of people in the team, project duration, expectations of the stakeholders, and a company’s processes in general. 

As a rule, software testing services providers can adjust to whatever model a client uses. As for full-cycle development or big product companies, switching from one methodology to another can take much time and effort.