Software development life cycle is a period of time that begins from the moment of deciding on the need to create a software product and ends at the time of its complete decommissioning.
To facilitate the design, creation and release of a quality software product, there are various models of the software life cycle.
Project requirements are crucial when choosing a development cycle approach. In this article, we will consider the basic methodologies of the software development.
Cascade or Waterfall model
In such a model, each of the phases of the project is carried out once, following one after the other. In order to start the next stage, it is necessary to complete the previous one.
- all stages of the project are carried out in a clear sequence;
- the clarity of the stages allows to plan the timing of the completion of all work and the corresponding resources (monetary and human);
- requirements remain unchanged throughout the cycle.
- difficulties in formulating clear requirements and the impossibility of changing them;
- testing starts only from the middle of the development of the project;
- until the development process is completed, users cannot make sure the quality product that is being developed.
This model comes from the waterfall model, since it can be used to eliminate the shortcomings that existed before.
The essence of this model is that processes at all stages are monitored to ensure that it is possible to move to the next stage. The testing process begins at the stage of writing requirements.
- strict stageization;
- minimization of risks and elimination of potential problems due to the fact that testing begins at the earliest stages;
- improved time management.
- the inability to adapt to the changed requirements of the customer;
- a long development time (sometimes it lasts up to several years) leads to the fact that the product may no longer be needed by the customer, since his needs change;
- there are no actions aimed at analyzing risks.
According to the incremental model, software is developed with a linear sequence of stages, but in several increments (versions). Thus, product improvement is planned all the time until the software development life cycle is completed.
System requirements are determined at the very beginning of work, after which the development process is carried out in the form of a sequence of versions, each of which is a complete and workable product.
- the customer can give his feedback on each version of the product;
- it is possible to view the risks associated with costs and adherence to the schedule;
- the customer gets used to the new technology gradually.
- the functional system must be fully defined at the beginning of the life cycle to isolate iterations;
- the structure of the system can be violated with constant changes;
- the delivery time of the system can be increased due to limited resources (performers, finances).
In the spiral model, the life path of the product developed is depicted as a spiral, which, starting at the planning stage, unwinds with the passage of each next round. Thus, at the exit from the next round, we get a ready-tested prototype that complements the existing assembly. A prototype that satisfies all requirements is ready for release.
- special attention is paid to risk management;
- additional features can be added at a later stage;
- there is a possibility of flexible design.
- risk assessment at each stage is quite costly;
- constant feedback and customer reaction can provoke more and more iterations, which can lead to a temporary delay in product development;
- more applicable for large projects.
It is a collection of different approaches to software development. It includes a series of approaches to software development focused on the use of iterative development ( in Scrum, iterations are called sprints), dynamic formation of requirements and ensuring their implementation as a result of constant interaction within self-organizing working groups consisting of specialists of various profiles. A separate iteration is a miniature software project. One of the main ideas of Agile is interaction within the team and with the customer directly.
- quick decision making thanks to constant communication;
- minimization of risks;
- simplified work with documentation.
- a large number of meetings and discussions can increase the time for product development;
- it is difficult to plan processes, since the requirements are constantly changing;
- rarely used for large projects.
Scrum is an agile software development model that focuses on quality control of the development process.
Roles in the methodology (Scrum Master, Product Owner, Team) allow to clearly assign responsibilities in the development process. The Scrum Master is responsible for the success of Scrum in the project and is the link between the management and the team. The Product Owner is responsible for product development, and also sets tasks and makes final decisions for the team.
The team is a single whole, in which the results are evaluated not for each individual participant, but according to what is obtained as a result for everyone.
Sprints in this methodology last from 1 to 4 weeks. After each sprint, the team provides a version of the finished product.
- quick feedback from specialists in various fields (designers, architects, testers, etc.);
- due to the involvement of the tester in the work, new functionality is quickly added and the product is quickly launched with minimal functions;
- independent and self-organizing team.
- some people who know the product become irreplaceable, since the documentation is not provided during the development process;
- it is impossible to plan an exact completion date, since everything is clarified based on the results of the previous sprint;
- customers cannot always understand the essence of this methodology and it is necessary to spend time on an «educational program».
There are many options for software development models. The choice of this or that option depends on the features and requirements of the project, payment models. Partially, the methodologies overlap and are similar to each other, but nevertheless, each finds its fans.