Common methodologies for developing custom software solutions

11 min read
February 13, 2023

Methodologies are the how in software development. They can dictate the exact steps you need and when to take them.

No two software projects are the same, so you can’t approach all of them the same way.

Fortunately, there are several methodologies to choose from.

The right methodology can speed up software development, lower costs, and deliver quality results. They’re that crucial.

In this article, we’ll help you familiarize yourself with the different methodologies available.

Let’s start with one of our favorites—Scrum.

Scrum methodology

The Scrum methodology is an Agile approach that divides a project into multiple sprints.

A sprint is essentially a mini-development in itself. It lasts anywhere from a few weeks to a month.

It also contains all the development phases, from designing, planning, and building, to testing.

The last part is a review phase, where clients and other stakeholders evaluate the work-in-progress. Any feedback is then noted and incorporated at the start of the next sprint.

Scrum methodology

Source: DECODE

This iterative approach is why the Scrum methodology is so effective—and why it’s the preferred method of the DECODE team.

Here’s DECODE co-founder and CEO, Marko Strizic, breaking down why that’s the case in more detail:

Scrum is flexible by nature. With it, it’s easier to react to any sudden change in project requirements because the whole process is done in manageable chunks.

This makes it suitable for the uncertainty that complex projects can pose.

development

Need to create
a software product?
Hire our dedicated team
.

You can also detect errors much earlier in the process, allowing you to tackle them sooner and thus avoid costly fixes later on.

You can see this benefit clearly in the chart below.

Notice that in Agile, defects are often found immediately during the development phases that caused them. Contrast this with the Waterfall approach, where errors are spotted much later.

Agile vs Waterfall defect detection

Source: Scrum.nl

The Scrum methodology is also fantastic for gathering feedback from clients quickly and regularly.

They can see the software as it’s being built, allowing them to give their comments or request changes.

Overall, Scrum allows your team to build better software faster.

These benefits aren’t just from personal experience. Microsoft, a big proponent of Agile methods, surveyed their internal team to determine the benefits of using Agile.

The result was overwhelmingly positive—60% of teams surveyed reported greater collaboration and teamwork after adopting Scrum and Agile.

Other figures also showed the huge impact of the methodology.

Agile methodology impact

Source: Andrew Begel

No wonder Scrum is also a favorite approach among other leading companies.

For example, the British Broadcasting Company (BBC) switched to a Scrum methodology for a number of their projects.

As a result, they solved lots of roadblocks like creative chaos and a lack of a clear delivery model.

Another noteworthy user of Scrum is Adobe, who used the methodology to develop its video editing software Premiere Pro.

As a result, they improved code quality and delivered better features in subsequent releases.

The bottom line is that Scrum is one of the most flexible and versatile methodologies, which allows developers to respond rapidly to changes.

That makes it an effective approach for custom software development.

Feature-driven development

Feature-driven development, or FDD, is another type of Agile framework.

It’s similar to Scrum in that development is done iteratively. But this time, everything is focused on progressing software features. Scrum, in contrast, is a delivery-focused approach.

Here’s an overview of the steps:

Feature-driven development steps

Source: Product Plan

The first step is to develop an overall model. This is where you define the big goal or problem your project is trying to achieve, then devise an outline of the software that can tackle that.

Next, the team will build a features list based on the model. In this step, the client is often consulted to find out the product capabilities and functionality that’s most important to them.

Features should describe the action and the objects involved, such as create a new user account or validate a user login. 

Here are some examples:

Features list example

Source: Feature Driven Development

The third step is to plan by feature. Here, you essentially prioritize your features list, so you know which ones to tackle first.

Generally, core features should be implemented first, with more nice-to-have functions further down the list.

This is where you can use prioritization methods to help sort your list. To learn more, you can read our excellent article here.

The fourth step is to design by feature, where you plan out how the feature will work, what you need to build, and the teams assigned to develop it.

Finally, you build the feature. The code for the feature is written, and a prototype is created when necessary.

This step also involves testing and reviewing the feature before finally approving it for the main build.

The process then loops back, similar to a sprint in the Scrum methodology.

Feature-driven development loop

Source: Net Solutions

Like any Agile methodology, feature-driven development is fantastic because it divides the project into smaller cycles.

This promotes iterative building, which is great for spotting errors and incorporating client feedback throughout the process.

But what sets FDD apart is that it’s a more client-centric approach. Here, the client is the end-user, and everything is planned with that in mind.

In contrast, Scrum treats the product manager as the end user.

However, due to its nature, FDD is only possible with larger teams. It is also more individualistic, as there’s less emphasis on collective decision-making and ownership.

Prototype methodology

This methodology, as the name suggests, is an approach that centers around creating a prototype of the software.

Briefly, a prototype is a pared-down early version of an app. It mostly only contains the core features. Sometimes, there isn’t even a working code yet—everything is just simulated.

The goal of a prototype is to build a working software model as quickly as possible. It’s then tested and revised several times until the developers and clients are happy with the project.

Here’s how it works in a nutshell:

Prototype methodology steps

Source: Guru 99

The process starts by defining the project’s requirements, including the scope and deliverables.

Next, the team creates a quick design of the software, mostly using a wireframe. This is a rough sketch of what the final app will look like.

It can even be as simple as a quick pencil drawing on paper.

Paper wireframe

Source: Adam Fard

Using the wireframe design, the team will then build the prototype. Speed is of the essence here—thus, creating it shouldn’t take more than a month or two.

Once the prototype is complete, you evaluate it. The client often does this, but in some cases, the end-user is also invited to test it.

Feedback is used to refine the prototype, after which it’s evaluated again.

This process repeats until the client is happy with the result. After this, the final software version will be implemented based on the approved prototype.

Feedback loop

Source: Tom Waterton

This feedback loop is one of the best features of the prototyping method.

The trial-and-error nature makes it very flexible and adaptable. Thus, it’s one of the best approaches if you’re unsure about the project’s requirements or expect it to change drastically.

It’s also one of the most collaborative software methodologies. That’s because the prototype requires constant review and feedback from the client.

As a result of this tight integration, there’s a higher chance that the client will happily approve the final product.

But the big drawback of prototyping is that, with all the evaluation and refining, it’s a slow and expensive process.

Plus, there’s always the temptation to apply excessive changes to the prototype, which will further stretch development.

Spiral methodology

The Spiral methodology is an iterative approach that divides software development into phases, which are then looped repeatedly.

When plotted in a diagram, it forms the shape of a spiral, hence the name.

Spiral methodology

Source: Sketch Bubble

Each phase (or spiral) comprises four activities, which you can see as the four quadrants in the graphic above.

The first step is planning for the current phase. Here, the team determines things like the schedule, costs, requirements, and deliverables.

The next step is risk analysis, which is the most critical task in the Spiral methodology. The team will try to identify any potential vulnerabilities and issues and devise solutions in advance.

Risk analysis also involves testing prototypes from a previous phase, if available.

The third activity is engineering, where production begins. In earlier spirals, teams would focus on software design. In subsequent phases, this is where actual coding and testing are done.

The final part of the spiral is evaluation. In this step, clients and stakeholders use the product and give feedback.

These insights are then incorporated into the planning phase of the next spiral.

Spirals are repeated until the customer approves the software. Only then will it go through the final testing and deployment.

So, when’s the best time to use this approach?

When to use spiral methodology

Source: Bi Plus

The Spiral methodology’s biggest strength is risk management since it’s built into the process.

Thus, it works best in high-risk, mission-critical projects. It’s also ideal if you’re unsure of the requirements.

The iterative nature of the Spiral methodology also makes it great for rapidly releasing software updates and features.

For instance, you can use it to launch software with basic features, then add new functions incrementally over time.

But the drawback of the Spiral methodology is that it’s very expensive and time-consuming to implement. Thus, it would only make sense for larger, more complex projects.

Waterfall methodology

The Waterfall methodology is the classic software development approach. Here, phases are done linearly. Teams cannot move on to the next step until a previous one has been completed.

When plotted into a diagram, it looks like a waterfall, hence the name.

Waterfall methodology

Source: Lucid Chart

The Waterfall approach starts with gathering requirements. This is perhaps the most critical phase to make or break your project, and here’s why.

Unlike other iterative methodologies, the Waterfall process doesn’t let you backtrack to a previous step.

If you make a mistake defining your project requirements, it will magnify once you reach the end of the project.

Thus, you must clearly define your requirements at the beginning. This is why Waterfall only works if your project has set requirements that don’t change over time.

Once you’ve set your requirements, you can begin designing the software. You can use wireframing and prototyping in this stage to nail down the look and feel of the final product.

Your team also decides the appropriate tech stack to use in this phase.

Tech stack example

Source: Aha

The next step is implementation, where developers start coding the software. Initial testing can also be done at this step, but you still need a dedicated verification phase later.

This is your make-or-break point. If testing reveals any serious issues in the software, you might need to go back to the requirements phase and re-evaluate the project.

Need to make a software product? We have developers just for you —

Let’s talk →

senior software developer

But if everything goes well, the software gets launched and maintained.

As you can see, the draw of the Waterfall method is its simplicity.

That makes it suitable for smaller projects with tighter budgets, as you don’t need to hire extra staff as you need to do with, say, a Scrum approach.

Of course, the biggest weakness of Waterfall is its rigidity. Its inability to adapt to changing requirements limits its use, especially with modern software’s demanding and fluid nature.

Can’t decide which methodology to use?

The thing with software methodologies is that it can be difficult to settle on the right one.

Much of it relies on experience and expertise. It also depends greatly on the project’s scope, budget, and requirements.

Hence, we advise against deciding on your own.

Instead, you should partner with a development team like DECODE. We’ll use our experience and expertise to help you choose the appropriate methodology for your project.

And don’t worry—our consultations are free and covered by a non-disclosure agreement (NDA).

Interested? Get in touch with us today, and let’s talk!

Categories
Written by

Marko Strizic

Co-founder and CEO

Marko started DECODE with co-founders Peter and Mario, and a decade later, leads the company as CEO. His role is now almost entirely centred around business strategy, though his extensive background in software engineering makes sure he sees the future of the company from every angle. A graduate of the University of Zagreb’s Faculty of Electrical Engineering and Computing, he’s fascinated by the architecture of mobile apps and reactive programming, and a strong believer in life-long learning. Always ready for action. Or an impromptu skiing trip.

Related articles