For a successful IT-project, you have to choose efficient technologies and development tools, provide the necessary budget and find qualified developers. However, it is equally important to define the rules and methods, according to which the project participants will interact with each other. The set of such rules is a development process that builds on different models. Today we’ll look at the most common models of software development, what are their features and when to use them better.
Cascade (waterfall) model
It is the oldest and well-known model of construction of multi-level development process. In it, every stage of development, corresponding to the stage of the software life cycle, continues the previous one. That is, in order to move on to a new stage, the current one must be fully completed.
The classic waterfall model includes the following stages:
- Requirements: gathering customer`s business requirements and their transformation into functional requirements for the software product.
- Analysis and design: development of domain model, the design of the database schema, the object model, the UI etc.
- Implementation: creating a product according to the specifications developed in the previous stage.
- Testing: includes verification of compliance with the functionality of software to user needs, as well as finding flaws in implementation.
- Deployment: user training, system installation, transfer into commercial operation.
Pros and cons of cascade model:
+ Full documentation of each stage.
+ Accurate planning of time and costs.
+ Transparency of processes for the customer.
– The need for the approval of the full scope of the system requirements yet at the first stage.
– In the case of the need to amend the requirements later – a return to the first stage and remake all the work done.
– An increase of costs and time in case of requirements change.
- In projects with clearly defined requirements, for which the changes in their development process are not envisaged.
- For projects that migrate from one platform to another. That is, the requirements remain the same, only the system environment and/or programming language change.
Today, the waterfall model is mostly used by large companies for major and complex projects that require a comprehensive risk control. However, its weaknesses are quite significant, and there are much better alternatives for the development of commercial software.
V-model is an improved version of the classical cascade model. Here, the current process is controlled on every stage, in order to verify that you can go to the next level. In this model testing begins with the stage of writing the requirements, and for each subsequent phase its own level of test coverage is provided. As shown in the scheme, the development process is represented by the descending sequence at the left part of the conditional letter V, and the testing stage – at its right edge. Horizontal lines indicate the conformity of stages of development and testing.
Pros and сons of V-model:
+ Strict division into stages.
+ Test planning and verification of the system are produced in the early stages.
+ Improved (compared to the cascade model) time management.
+ Intermediate testing.
– Insufficient flexibility of the model.
– The actual creation of the program takes place on the stage of writing the code i.e. already in the middle of the development process.
– Insufficient risk analysis.
– There is no possibility of dynamic changes.
- In projects where there are time and financial restrictions.
- For tasks that require wider (in comparison with the cascade model) test coverage.
The process of iterative (or incremental) development became an evolution of waterfall model. The process consists of a series of repeated iterations (the number depends on the particular project) each of which is actually a full mini-project with the phases of requirements definition, analysis, design, etc. As a result of each iteration the product acquires new features or improvement in existing functionality. Eventually, when all the requirements are embodied in the product – the release occurs.
Pros and cons of the iterative model:
+ Early creation of working software.
+ Early detection of conflicts between requirements, design models and implementation of the project.
+ Flexibility – a willingness to changing requirements at any stage of development.
+ Organization of effective feedback of the project team with the clients and creation a product that really meets their needs.
+ Continuous iterative testing, which allows to evaluate the success of the overall project.
– Some problems may arise with the implementation of the overall architecture of the system, because not all requirements are known at the beginning of designing.
- In major projects.
- When at least the key requirements are known.
- When the project requirements can change during the development process.
Iterative model is a key element of the so-called Agile approaches to software development, the main of which will be discussed in the following publications.
The spiral model is a template of the software development process that combines the ideas of an iterative and cascade models. Its essence is that the entire process of creating the final product presented in the form of conditional plane that is broken up into four sectors, each of which represents the individual stages of its development: the definition of objectives, risk assessment, development and testing, planning a new iteration.
In the spiral model the life path of the developed product is depicted as a spiral, which unwinds with the passage of each step. Thus, on the output of the next loop we have to get ready and tested prototype that complements the existing build. The prototype that satisfies all requirements is ready for release.
The main feature of the spiral model is concentration on possible risks. For their evaluation even the appropriate stage is allocated. The main types of risks that may arise in the process of software development:
- unrealistic budget and timeline;
- the deficit of specialists;
- frequent changes in the requirements;
- an excessive optimization;
- slow system performance;
- the mismatch of qualification levels of specialists in different departments.
Pros and cons of the spiral model:
+ Improved risk analysis.
+ Good documentation of the development process.
+ Flexibility – the ability to make changes and add new features even at a relatively late stages.
+ Early creation of working prototypes.
– It can be quite expensive to use.
– Risk management requires the involvement of highly qualified specialists.
– The success of the process depends largely on the stage of the risk analysis.
– Not suitable for small projects.
- On the projects where it is very important to analyze the risks and costs.
- On the major long-term projects with a lack of clear requirements and the likelihood of their dynamic changes.
- When developing a new product line.
To sum up, today there are many different approaches to software development. They are partly similar to each other and partly overlap in the means and methods of working. Unfortunately there is no universal model that uniquely well suites to all projects. Although an iterative is considered as more modern and optimal approach, it still cannot be applied ubiquitously because of the unwillingness of some clients or inability of flexible financing. The choice of model depends on the size of the team, on the specifics and complexity of the project, on the stability and maturity of the processes in the company and even on the personal qualities of employees. The task of project manager is to correctly assess the resources, the team and choose the most appropriate development model in order to achieve the project objectives.