Software Development

Different approaches to organise the software development process

As anyone who has ever tackled a software development project can tell you, building digital solutions implies going through a complex process. That process has different stages that cover everything from the idea and design of the software to its release and maintenance. Development teams refer to that process as the software development life cycle (SDLC).

Perhaps you know it, perhaps you don’t, but there are plenty of ways in which a team can tackle the SDLC. In fact, we talk about different software development models depending on how the team organizes the stages and how it approaches the workflow. There are more than 50 SDLC models in use today, each and every one with its own way to arrange the development process.
However, teams mostly resort to just a handful of these models, as they have proven time and time again that they can deliver outstanding results. Which models are those? The following are the most popular SDLC models.

Waterfall

Waterfall is one of the most widely known SDLC models, as it’s been in use for decades. In it, all development stages are sequential, meaning that the team has to finish one stage before moving on to the next. That way, the tasks “cascade” into the next, which is where the model gets its name from.

Waterfall is a very structured model. That means that each stage has its own set of deliverables and documents that the team has to achieve to move to the next stage. Such an approach to development provides high predictability in terms of schedule and resources, but it makes it impossible to accommodate new requirements that might have emerged during development. Besides, testing is often the last stage, so any issue that engineers find is very costly to fix, as the product is almost finished when it arrives at that stage.

When to use it

  • Small and straightforward projects.
  • Projects with unmodifiable requirements.
  • Projects that need predictable budgets and schedules.
  • Highly regulated projects (such as those related to healthcare)

V-Model

A lot of people see the V-model as an extension of the Waterfall model in that it uses the cascading stages in its first part only to move the process upward after the coding stage. That initial downward movement and the subsequent upward movement form a V-shape, giving this model its name. It’s also known as the Verification and Validation model because each stage of the verification phase has a corresponding stage in the validation phase.

The difference with the Waterfall model, then, is that the V-model has testing performed at each stage rather than at the end of the process. This increases the overall quality of the product, but it also means that it takes more time and money to release the software. Besides that, requirements gathering happens at the beginning, and they can’t be changed during development, which implies that the V-model isn’t flexible.

When to use it:

  • Complex projects that require high predictability levels and the best possible quality (such as those related to navigational or medical systems)

Agile Models

You don’t need to be too involved in software development to know a little about Agile. That’s because Agile is the primary mindset software development companies use to work on their solutions. Agile practices provide a lot of flexibility, which allows developers to make adjustments and corrections to the project as they move forward.

The agile mindset is all about the collaboration of self-organising teams that adopt adaptive planning, evolutionary development, iterative work, and continuous improvement to deliver highly functional solutions.

The Agile umbrella is far-reaching and encompassing. Behind it, you can find different models that follow Agile’s principles of collaboration, continuous improvement, value-driven development, and technical excellence with simple and high-quality outcomes. Given that Agile models all share a common philosophy about development, their use cases are all very similar.

When to use Agile models:

  • Innovative projects where early feedback is key.
  • Projects where requirements can’t be properly detailed.
  • Large projects that can be developed iteratively.
  • Most modern software development projects.

A lot of models use Agile as their guiding mindset, including the 3 most popular ones: Scrum, Kanban, and Extreme Programming (XP).

Scrum
The most popular Agile model, Scrum uses time-boxed iterations (called sprints) to work on specific parts of the final product. The idea is to break down the product into small goals that can be completed in a limited time frame (commonly between 2 and 4 weeks). Scrum is all about collaboration and communication, which is why the team gathers every day in meetings called daily scrums. There, they monitor what the team is doing and where they are heading while discovering issues and potential solutions.

When a sprint ends, the whole team gathers once again to show the work that’s been done in that time (which usually consists of a working version of the final product). The same meeting also provides the team with the possibility to analyse the process and check what improvement opportunities they might leverage in the next sprint.

Kanban
Kanban leaves the sprints aside in favor of a visual plan represented by a Kanban Board. In it, the team lays out the tasks they need to complete, the roles, and the progress for each one. Thus, this model is more about transparency about the project’s progress that allows the team to detect issues and prioritise tasks in a more effective way.

Another important aspect of Kanban is that work isn’t pushed onto the team according to a timeline. Rather, work is allocated according to the team’s capacity to tackle it. That way, teams can decide what, when, and how to work on the different tasks that need to be done. Kanban is highly flexible, as it allows requirements and changes to be introduced at any time. That increases the team’s agility to work on any project but also dramatically reduces predictability.

Extreme Programming (XP)
Extreme Programming (XP) is yet another Agile model that also advocates for frequent releases in short development cycles. The main difference with other models is that XP doesn’t require developers to build any feature unless it’s actually needed. 

XP’s flexibility is somewhat in the middle of that of Scrum and Kanban: not as structured as the former but not as free-form as the latter. Changes can be introduced after each iteration. To guarantee the final quality of the product, XP teams use pair programming, test-driven development, and continuous integration practices.

Find all this too overwhelming? Don’t worry. At Aspira, we have vast experience working with most software development methodologies. We can assess your projects and define which model is the best for you with high accuracy. Contact us and let us help you discover which is the best road to make your digital projects a reality.

Deirdre Lysaght, Digital Presence Manager

Scroll naar top