By Gemma Penson - Computer Science Student @ Trinity Hall, Cambridge
Software development models are a means of structuring, simplifying and standardising the process of creating software. As each of these models has different strengths, weaknesses and exists for a different reason, this article will explore some of the ways in which you can transform ideas to innovative software.
One such model is that of the waterfall, which many consider to be the most traditional model. This involves decomposing the project into linear, sequential phases where each depends on the delivery of the previous phase and corresponds to a specialisation of tasks (requirements, design, implementation etc). In this model there’s usually no process for going back to modify the project, unlike in other models. People do often suggest adding an overall feedback loop from testing back to requirements, but this would erode much of the value that you get from the top-down development style of the waterfall model.
The most critical use factor of the waterfall model is whether or not you can define the requirements, in detail, in advance of development. This often isn’t possible if graphics or user interfaces are vastly prominent but the model is generally used when adding features, taking a system to a new version or when projects needs to be completed in a hurry.
✔️ Compels the early clarification of system goals and is conducive to good design practice.
✔️ Enables the developer to charge for changes to the requirements.
❌ A lack of feedback from the later stages may mean that the system can never be made to
If you’d prefer to develop your software using repeated cycles, an iterative method may be more appropriate. These methods allow developers to take advantage of what they learned during the development of early system versions but may theoretically never terminate, and thus will become very expensive, if clients are being too particular. One way of managing these risks and costs is to use the risk-driven spiral model.
The spiral model, which puts a focus on software aspects that you don’t understand, combines iterative development with the top-down approach of the waterfall model. Its use involves defining a fixed number of development iterations in advance and then executing these in accordance with the waterfall model. It’s often used for large, expensive and complicated projects, when releases need to be frequent or when a long term project commitment isn’t feasible.
✔️ Appropriate when the project requirements are unclear or complex.
✔️ Cost estimation becomes easy as prototype building is done in small fragments.
❌ There’s more documentation due to the intermediate stages.
Finally, if you want to not only design, but also deliver your end solution in cycles, then the iterative evolutionary model may be for you. It involves dividing up the development cycle into smaller incremental models and granting users granted access to the product at the end of each subcycle. The user feedback gained often then affects the planning stage of the next cycle where product, plan or process changes are discussed. This style of development model is often popular with object-oriented programming such as Java and Python!
2010. Govardhan, Dr. (2010). A Comparison Between Five Models Of Software Engineering. International Journal of Computer Science Issues 1694-0814.7.94 - 101. Available at: <https://www.researchgate.net/publication/258959806_A_Comparison_Between_Five_Models_Of_Software_Engineering>
2021. Sulemani, Maryam. Educative. What is a Software Process Model? Top 7 models explained. Available at: <https://www.educative.io/blog/software-process-model-types>