Incremental process model

from Wikipedia, the free encyclopedia
An iterative development model

The incremental process model describes a process model for software development for continuous improvement, which is often done in small or even the smallest steps. The agile software development is based on an incremental approach, Wikis also operate on this principle.

particularities

In the case of incremental improvement, the final state is usually not fixed. The project is growing organically.

Incremental process model in software development

Iterative and incremental development is a cyclical software development process that is now also being used successfully in other project areas. The term "iterative development" is mostly used with reference to the combined approach.

Definition of incremental and iterative

Incremental development is a strategy for scheduling and scheduling in which the different parts of the system are developed at different times and at different speeds and immediately integrated into the overall system. The opposite is a simultaneous integration of all subsystems at the end of the project (big bang integration) .

Iterative development is a revision planning strategy that allows time for ongoing revision and improvement of parts of the system. It does not require incremental development, but it suits it very well. One difference is that the result of an incremental work step is not necessarily the subject of further revision, nor do results from tests and user reactions serve as a specification for subsequent work steps. The result of an iteration, on the other hand, is examined for necessary changes, especially with regard to an adaptation of the goals of later iterations.

The basic idea behind iterative revision is to develop a software system step by step in such a way that the project team is able to directly use experiences from previous development steps. Experience is gained specifically both during the development and from the use of the already completed part of the system.

The main steps in the process are

  • to start with a simple and expandable implementation of a defined subset of the system requirements known at the time.
  • to gradually expand the developing versions with increasing knowledge of the sensible system requirements until the system is fully implemented
  • to adapt the design at each iteration - a distinction must be made here between iterations to implement new functions and iterations to improve the system architecture (refactoring)

The procedure itself consists of an initialization step, an iteration step, and the project control list.

  • The initialization step creates a basic version of the system with the aim of creating a product that the user can respond to. It should cover a sample of key aspects of the problem and provide a solution that is easy to understand and implement.
  • A project control list is kept to control the iteration process, in which all known outstanding tasks are recorded. It includes items such as B. the implementation of new features and the redesign of existing system parts. The checklist is continuously revised based on the results of the analysis phases.
  • Each iteration includes the implementation of an item or a defined group of items from the project control list and the analysis of the current version of the system. When implementing each iteration step, the goal is simplicity, clarity and modularity, whether immediately or as an item on the checklist. Analysis of an iteration is based on user feedback and program analysis techniques. It examines the structure, modularity, usability, reliability, effectiveness and target achievement. The project checklist is adjusted based on the results.

Phases - guidelines for timing

Iterative development

To understand the diagram, it is very important to keep in mind that the phase division must be viewed informally. Parts of the system are immediately integrated into the overall system (a deployment takes place in each iteration). The transition phase finally transfers the system to productive use. The angled arrow shows the sequential processing of the steps and shows that architects and analysts always work one step ahead of the developers.

Iterative development divides the business value, i.e. the system functionality, into iterations. With each iteration, a section of the system functionality is completed through interdisciplinary work - starting with the design / requirements through to testing and commissioning. The unified process groups the iterations into phases: initiation, elaboration, construction and transition. These phases are to be viewed informally.

  • The introductory phase determines the project framework, risk factors and (functional and non-functional) requirements in a small but sufficient depth to allow a rough estimate of the workload.
  • The elaboration phase provides a functional architecture that defuses the highest risk factors and meets the non-functional requirements.
  • The construction phase fills the architecture step-by-step with production-ready code that is created through analysis, design, implementation and testing of the functional requirements.
  • The transition phase finally transfers the system to productive use.

Each of these phases can be divided into one or more iterations, which are mostly limited in time and not by the implementation of functional features. Architects and analysts always work one step ahead of the developers.

An iterative procedure model for incremental improvement is described by the procedure for the spiral model .

See also