Anyone who’s watched a few episodes of Silicon Valley knows a little bit about software development: Jared gets around to explaining the Scrum method in Season 1. But when it comes time to put your own software development plan into action, you should know a lot more about what each of the major development models entails.
That way, you can choose the right method and the right team to develop your software, taking into account your budget, timeframe, and other relevant factors.
What is a software development model?
First, what is software development? According to Wikipedia, most pieces of software are developed for one of three reasons: business use, personal use, or consumer use.
Client or business software (which often takes the form of custom software) is software that’s designed to meet the requirements of a particular business or industry.
Consumer software (including commercial and open-source software) refers to software that’s developed with the intent to be shared or sold to individual users.
And personal software is developed to meet the needs of a particular user, such as a developer writing code to assist in the completion of ongoing tasks.
Regardless of the end goal of your software, there are several other factors to take into account, such as whether your software is being developed alongside a product -- as is the case with an operating system for a smartphone, for example.
Also, your budget, timeframe, and the size and structure of your team, may impact the way you choose to develop your product.
Software development includes everything from planning and designing your software, to testing it, deploying it, and maintaining it after it’s released.
Rather than start from scratch each time, developers have created several models or frameworks they use to structure the development process.
These include everything from free-flowing, flexible methods to structured techniques with their own terminology and training programs.
From start to finish, this process is known as the software development life-cycle, or SDLC, and helps keep your development team on track.
Here are some of the most popular software development models and how/why they work.
Why would you choose one model over another? Essentially, different approaches are right for different kinds of teams and types of software. Some projects require top-down direction to meet a client’s needs or be finished in a tight time-frame. Others can afford to be more adaptable and allow teams to organize themselves.
Let’s look at some of the pros and cons to each of these seven models:
The waterfall model is one of the oldest software development models, and is based on techniques used in manufacturing and other physical industries.
Essentially, it’s a sequential approach in which each step comes after the next, without any overlap between phases.
The rationale is that by completing each phase before moving to the next phase, you’ll catch bugs before they become an issue.
You can also better estimate how long the entire SDLC will take, and set aside a portion of your schedule for each stage in the process, with the bulk of it on coding.
The method was originally outlined by Winston W. Royce in 1970, with six main phases:
The waterfall model also calls for extensive documentation, making it easy for new team members to catch up on what happened before they arrived.
The downside is that this is a more rigid approach, so it’s harder to change course if the terms of your project change. It also doesn’t provide the option of releasing an MVP, or minimum viable product, early in the research and development phase.
As a result, some developers use a modified waterfall that allows for some overlapping phases, which we’ll look at later.
The V-model is similar to the waterfall model in that it’s also a very linear process with a clearly-defined workflow. However, the V-model places more emphasis on verification and validation, with the development and testing stages happening side-by-side.
The validation process may include stages such as unit testing, integration testing, and systems testing that are less of a focus in the waterfall model.
The main benefit to the V-model is its focus on quality control, making it a popular model for government agencies and large, bureaucratic industries that can’t afford mistakes.
But just like the waterfall method, it can be too rigid for some projects, and requires an up-front investment in time and money.
That’s why this model is chosen by companies that want to spare no expense in getting it right, to reduce the risk of bugs or downtime later.
Incremental and Iterative
The incremental and iterative model is very much what it sounds like: instead of taking a linear, sequential approach, this model is more flexible.
Developers using this approach may still apply waterfall and V-model techniques, but in smaller stages, sometimes referred to as “mini waterfalls.”
This allows for subsequent stages to incorporate new ideas or requirements that weren’t included in the initial stage, without having to start all over again.
Multiple iterations of the software may be in development at the same time (sometimes referred to as parallel development) or in back-to-back cycles.
This approach can result in a shorter development timeframe, as each cycle can build on the next, using interchangeable parts or modules.
The limitations to this approach include more input required from the customer or client, and a reduced capacity to handle larger, non-iterative components.
The spiral model is another customer-oriented model that is built around risk analysis. It makes use of prototypes, simulations, and continuous project evaluations.
It’s designed for projects in which the goal is vague or unclear, and more information is needed to determine the best path forward.
The amount of effort put into each stage is based on reducing total risk. For example, the time spent testing a product must be balanced against the risk that a competitor brings the product to market before you do.
The spiral model takes these risks into account, cycling through the process repeatedly until a sufficient degree of confidence has been reached.
The spiral model is great for projects that require client or user feedback, but can be a time-consuming process that can, true to its name, spiral out of control if there isn’t a clear timeline for delivering a product.
RUP (Rational Unified Process)
The Rational Unified Process was developed by the Rational Software Company, now a part of IBM. It’s a flexible model that includes both linear and iterative approaches.
The four main stages are: Inception, Elaboration, Construction, and Transition. Each of these stages can have multiple iterations.
The key to the RUP model is that all of the activities that go into software development are “active” throughout the process, but at various levels of intensity.
You can think of it as a graph with peaks and valleys. The business modeling activities peak during the Inception phases, and gradually reduce in intensity.
Testing and deployment peak during the latter phases, while implementation is mostly active during the Construction period.
The benefit to RUP is a linear process, but with fewer discrete stages than the waterfall model. Activities can rise and fall based on their relevance to each phase.
The Scrum model is one of the most well-known software development models, and is based on the agile development methodology.
As its name implies, agile development is flexible and adaptive. It encourages a greater degree of collaboration, and prioritizes cross-functional teams.
The Scrum model is specifically intended for small teams with no more than 10 people on each team, and requires daily 15-minute meetings called scrums.
The model accounts for “requirements volatility” -- or the expectation that the client’s needs may change -- and encourages adaptation and use of the empirical process.
Instead of linear stages, tasks are broken up into goal-based periods called “sprints,” which typically last for two weeks to a month.
Scrum includes three main roles: the development team; the product owner, who acts as a liaison between the customer and the team; and the scrum master, who facilitates the process and makes sure that the scrum model is applied properly.
Because Scrum is designed for small teams, it places less emphasis on scalability and documentation, and more focus on customer satisfaction on a tight timeframe.
XP (Extreme Programming)
Finally, there’s extreme programming, which prioritizes short development timeframes and the continuous integration of software.
This means that development teams can respond more quickly to user feedback, and release new iterations of the product on a regular basis.
Because each development phase takes only 1 or 2 weeks, a big part of XP is having automated testing procedures in place, including unit and acceptance testing.
XP requires frequent code review, including pair programming, in which one developer codes while another observes their work for accuracy and efficiency.
XP is built around software engineering rather than project management, so it requires a different set of skills and programming style.
No matter your model, find someone that can help you develop the right software for the right job.
These are seven of the most common software development models, each of which has its own pros and cons, depending on your timeline, budget, and more. Whichever model you use, you’ll need a developer who can take your existing workflow into account. The team at Zibtek offers software development, mobile development, QA testing, and more, and can adapt to your existing workflows, including waterfall and scrum models. Reach out to Zibtek today to find out how we can develop your next product!