The development process named Waterfall model consist of a series of phases that must be completed following a strict order. Said phases can be summed up as follows:
• Analysis of requirements
The special feature of this process lies in the fact that the various phases (in theory) do not overlap: each phase must be completed before the following one can start. Generally, at the end of each phase, the project should undergo a review, in order to check if it is going according to plan or any corrective measures should be adopted.
The V-Model is often considered an extension of the waterfall model. Unlike the waterfall model, with it the activities form a “V”, with the coding taking place at the bottom of the “V”. Each phase of the software development cycle corresponds to a phase of the test cycle.
- This model identifies and extrapolates the key activities of software development and presents them in the “most basic” order, providing a common terminology and a basis for more complex development methods. In reality, projects seldom follow the model in a literal way.
- This model can be controlled easily, in terms of project management; however, it is the most difficult model to follow for developers.
- Theoretically, the number of feedbacks at every phase is endless, which means that, if necessary, a phase can be repeated a considerably large number of times, until a result that may be considered satisfactory is achieved, whether in terms of project requirements or system usability. This clearly implies considerable risks with reference to the project duration.
- In reality, the model is not applicable. The problem consists in the fact that it is improbable for a medium to large-sized project to thoroughly complete a phase before moving on to the next one. For example, the first phase is often closed as late as the codification phase.
- The management of resources can be very complex, since, with respect to the relevant phase, the quantity and type of resources can vary considerably, making it difficult to create steady teams. Moreover, the final phases of the project can be complex, in consideration of the fact that frequently developers at the end of a project are already starting a new one.
- Risk management is very complex, since all risks must be managed simultaneously.
“Agile” is a conceptual framework focused on the iterative and incremental release of software. Normally, in an Agile project:
- It is necessary to release software every 1 or maximum 2 weeks.
- There is a high-level overview of the project, which must be perfected subsequently, before it starts
- Once the project has started, all the work will be based on fixed-length iterations
- Each iteration will start with a planning meeting
An important aspect of agile methods consists in the release of functioning software at the end of each iteration. An iteration is not only a development period, but also includes the updating of the software developed. This means that a software must be integrated and tested before the iteration is completed.
- Greater attention to results in terms of business – the client is much more involved.
- Faster time to market – the iterative approach reduces development time.
- Greater organisational efficiency and a more motivated team.
- Increased productivity and greater cost-effectiveness.
- Potentially higher quality; the test is an integral part of the development process.
- Creating a truly collaborative environment is not easy.
- It requires a strong participation by the organisation’s management (the Sponsor’s cooperation, cultural change, adequate training of participants).
- The type of business can imply some limitations
- It is necessary to rethink the approach to project management
- It cannot be applied to all types of projects (e.g. design of hardware boards)
With iterative methods, the same activities that in a Waterfall development process are considered phases that must be followed in a strict order, are performed iteratively and each work cycle (or iteration) implies the following steps:
Each iteration is aimed at reducing project-related risks. Initially, through the creation of prototypes, iteration prototypes (user interfaces), architectural prototypes (creation and testing of infrastructural aspects), all risks connected to the selection of technologies and doubts concerning the system’s building are tackled. When the biggest risks are under control, every iteration is aimed at creating new portions of the system, which are progressively integrated with the previous ones, and verifying them with the client and the other stakeholders.
- Systematic management and progressive reduction of project-related risks.
- In comparison with the waterfall method, improved product quality and increased productivity (time and cost reduction).
None, but two aspects should be considered:
- The planning of projects conducted with an iterative method is more complex. The planning of an iterative project develops throughout the entire project, and requires a systematic verification of the progress made.
- A key element to the success of an iterative project is the systematic collaboration between the customer (and the other stakeholders) and the project team.