All articles

Incremental Model of Software Development Life Cycle

Incremental development is a process of partial implementation of the entire system and a slow build-up of functionality. This approach allows you to reduce the costs incurred before reaching the level of initial productivity. With the help of this model, the process of creating a functioning system is accelerated. This is facilitated by the applied principle of layout from standard blocks, through which it provides control over the process of developing changing requirements.

The incremental model operates on the principle of a cascade model with overlapping, so that the functionality of the product, suitable for operation, is formed earlier. This may require a complete pre-established set of requirements that are implemented in the form of consecutive, small-sized projects, or the project can begin with the formulation of common goals, which are then refined and implemented by the development teams.

The incremental model describes a process in which priority attention is paid to system requirements, and then to their implementation in development teams. As a rule, with time, the increments decrease and each time less requirements are realized. Each subsequent version of the system adds to the previous defined functionality until all the planned features are implemented. In this case, you can reduce costs, monitor the impact of changing requirements, and accelerate the creation of a functional system through the use of the standard block layout method.

Phases of the incremental model of the software development life cycle

It is assumed that in the early stages of the life cycle (planning, analysis and design of the project), the system is designed as a whole. At these stages, the increments and functions related to them are determined.

Each increment then passes through the remaining phases of the life cycle: coding, testing, and delivery.

First, we design, test and implement a set of functions that form the basis of the product, or the requirements of paramount importance, which play the main role for the successful implementation of the project or reduce the degree of risk. The subsequent iterations extend to the core of the system, gradually improving its functionality or performance. The addition of functions is carried out by performing significant increments in order to fully satisfy the user’s needs. Each additional function is certified in accordance with a set of requirements.

Advantages of the incremental model

Applying an incremental model in the development of a project for which it is suitable to a sufficient extent, one can be convinced of its following advantages:

  • You do not need to spend in advance the funds necessary for the development of the entire project (since the development and implementation of the main function or function from the high-risk group is first carried out);
  • As a result of each increment, a functional product is obtained;
  • The customer has the opportunity to comment on each developed version of the system;
  • The rule of “divide and conquer” allows you to break up the problem on managed parts, thereby preventing the formation of cumbersome lists of requirements put forward to the development team;
  • There is an opportunity to maintain constant progress during the implementation of the project;
  • Costs for the initial delivery of the software product are reduced;
  • The initial delivery schedule is accelerated (which allows to meet the increased market requirements);
  • The risk of failure and changing requirements is reduced;
  • Customers can recognize the most important and useful functional capabilities of the product at earlier stages of development;
  • The risk is divided into several smaller increments (not comprehensible in one large development project);
  • Requirements are stabilized (by inclusion in the user process) at the time of the creation of a certain increment, since no significant changes are moved back to the time of the creation of subsequent increments;
  • Incremental functionality is more useful and easier to test than middle-tier products with level-by-level “top-down”
  • Improved understanding of the requirements for later increments (which is ensured by the user’s ability to get an idea of ​​the earlier received increments at a practical level);
  • At the end of each incremental delivery, it is possible to review the risks associated with costs and compliance with the established schedule;
  • The use of successive increments makes it possible to combine the experience gained by users in the form of an improved product, while at the same time spending much less money than is required to carry out a re-development;
  • In the development process, you can limit the number of personnel in such a way that the same team works consistently on the delivery of each increment and all the teams involved in the development process did not stop working on the project (the schedule of the workforce distribution can be equalized by the time distribution of the amount of work on the project );
  • The possibility to start building the next version of the project in the transitional phase of the previous version smooths out the changes caused by the personnel change;
  • At the end of each incremental delivery, it is possible to review the risks associated with costs and compliance with the established schedule;
  • Customer needs are better manageable, since the development time of each increment is very small;
  • Because the transition from the present to the future does not happen instantly, the customer can get used to the new technology gradually;
  • Significant signs of progress in the implementation of the project help to maintain a “pressure” at the managed level caused by compliance with the schedule.

Disadvantages of the incremental model

When using this model for a project for which it does not approach adequately, the following drawbacks appear:

  • The model does not provide iterations within each increment;
  • The definition of a complete functional system should be implemented at the beginning of the life cycle to ensure the determination of increments;
  • Formal critical analysis and verification is much more difficult to perform for increments than for the system as a whole;
  • The customer should be aware that the total costs of the project will not be reduced;
  • Since the creation of some modules will be completed much earlier than others, there is a need for clearly defined interfaces;
  • The use of common objectives at the analysis stage, rather than the fully formulated requirements, may be inconvenient for management;
  • Good planning and design are necessary for the model: management should take care of the distribution of work, and technical personnel must maintain subordination between employees.
  • There may be a tendency to delay decisions of difficult problems for the future in order to demonstrate to the management the success achieved in the early stages of development.

The scope of the incremental model

The project manager can be sure of the expediency of applying the model if for this there are following reasons:

  • If most requirements can be formulated in advance, but their appearance is expected after a certain period of time;
  • If the market window is too “narrow” and there is a need to quickly put on the market a product with functional basic properties;
  • For projects that require a long development time period, typically one year;
  • With a uniform distribution of properties of varying degrees of importance;
  • When considering the risk, financing, project implementation schedule, program size, complexity, or the need for implementation in the early phases, it turns out that the best option is to apply the principle of phase-by-phase development;
  • When developing programs related to low or medium risk;
  • When the project is implemented using a new technology, which allows the user to adapt to the system by performing smaller incremental steps, without a sharp transition to the application of the main new product;
  • When single-pass development of the system is associated with a high degree of risk;
  • When the results are obtained at regular intervals.