Software development
Choose the right software development model
Waterfall, spiral or agile? Nik Rawlinson picks through the most popular approaches to development – and asks which you should be using for your next project
@PCPROFACEBOOK.COM/PCPRO
M
odern software development methods might seem a world away from the early days of punch-card programming, but it turns out that some things are timeless. Winston Royce was a computer scientist for Lockheed Martin and TRW in the 1960s, working on space mission planning, orbit selection and developing the software on which America’s rapidly expanding space sector relied. As part of this work, he wrote an influential report advocating a standard approach to producing code – particularly for large projects – which split the overall development cycle into seven steps. Each stage fed into the next, like a cascade of waterfalls where each drop lands in a pool that goes on to feed the next fall.
Today, Royce is widely credited with inventing the “waterfall model”, as used in software development worldwide – though similar practices had been in use at least a decade before, and there’s some doubt as to whether he ever actually used the word “waterfall”. Regardless, his report was one of the first documents to clearly set out a method of software development. Waterfall remains in use today alongside methodologies such as agile, incremental and iterative.
Which is best? It depends on your circumstances and the nature of the project. Each has its strengths and weaknesses; the trick is identifying the most appropriate model for your job and using it to drive your workflow.
FOR LINEAR PROJECTS
Waterfall and V-model
For projects with clearly defined objectives and interim milestones – such as putting a man on the moon – waterfall makes sense. It’s particularly appropriate where, although several rounds of testing may be conducted as part of the development, the results aren’t expected to change the overall goal of the project. NASA still uses the waterfall model for some projects, but its contractors may have adopted more agile processes (see below).
“For projects with clearly defined objectives and interim milestones – such as putting a man on the moon – waterfall makes sense”
A classic waterfall project proceeds through somewhere between five and seven phases, depending on how you choose to break them up. It starts with collecting requirements and analysing them to build conceptual models and rules for the desired system. The next phase is designing the software architecture itself, then implementing that as code. After this comes testing and debugging to ensure the code works as planned, before the final phase of deployment and ongoing maintenance of the code.