There exist a wide variety of software development models, that have evolved to address the evolving challenges facing the software industry. In this post, the following models are reviewed:
- Waterfall Model
- Sashimi Model
- Incremental Model
- Unified Process Model
- Spiral Model
We present a summary of their pros and cos, and the cases for which each model is best suited for. Note that the same models apply to other product (or system) development, therefore, we will use software and product interchangeably in this post. It is worth noting also that, in practice, most organizations combine two or more models in their development process.
First, let’s take a look at the software development phases.
Software Development Phases
The conventional way to conduct software development projects consists broadly of the following steps:
- Requirements: they are gathered from the customer/user at the beginning of the project. Requirements are system-level and independent of the technical solution.
- Architecture & Design: architecture deals with the high level design, and the definition of the interfaces and interactions between subsystems. Then detailed design deals with components, functions, subsystems, etc.
- Implementation: the design is now a coded software that is ready to be tested.
- Testing: it includes verification and validation (V&V) of the product. First, the verification means to check that what we designed is working as expected (unit testing for instance). Then the validation is to check that what we designed and implemented actually fulfills the requirements (system testing).
- Release: the software is released and is ready for deployment. Sometimes, deployment and maintenance are considered to be part of the software development phases.
This sequential process is called Waterfall, as it can be illustrated in the figure above. Continue reading “Software Development Models”