Iterative and incremental development is a combination of both iterative design method and incremental build model for software development. The term began in software development, with a long-standing combination of the two terms iterative and incremental having been widely suggested for large development efforts. For example, the 1985 DOD-STD-2167 mentions (in section 4.1.2): “During software development, more than one iteration of the software development cycle may be in progress at the same time.” and “This process may be described as an ‘evolutionary acquisition’ or ‘incremental build’ approach.” In software, the relationship between iterations and increments is determined by the overall software development process. (wikipedia)
The idea of this methodology is to perform the development through repeated cycles—iterations—and in smaller portions at a time—increments. It allows software developers to take advantage of what was learned during development of earlier parts or versions of the system. The learning process comes from both the development and use of the system, where possible key steps in the process start with a simple implementation of a subset of the software requirements and iteratively enhance the evolving versions until the full system is implemented. At each iteration, design modifications are made and new functional capabilities are added.
With this methodology the system functionality is sliced into increments (portions). In each increment, a slice of functionality is delivered through cross-discipline work, from the requirements to the deployment. The Unified Process groups increments/iterations into phases: inception, elaboration, construction, and transition.
- Inception identifies project scope, requirements (functional and non-functional) and risks at a high level but in enough detail that work can be estimated.
- Elaboration delivers a working architecture that mitigates the top risks and fulfills the non-functional requirements.
- Construction incrementally fills-in the architecture with production-ready code produced from analysis, design, implementation, and testing of the functional requirements.
- Transition delivers the system into the production operating environment.
Our consultants adapt to the existing methodology at your business. Accuratica has been working with the Iterative and Incremental methodology and its variants for many years, so we can effectively deliver the expected outcomes.