Iterative and incremental development is any combination of both
iterative design
Iterative design is a design methodology based on a cyclic process of prototyping, testing, analyzing, and refining a product or process. Based on the results of testing the most recent iteration of a design, changes and refinements are made. T ...
(or iterative method) and
incremental build model for
development
Development or developing may refer to:
Arts
*Development (music), the process by which thematic material is reshaped
* Photographic development
*Filmmaking, development phase, including finance and budgeting
* Development hell, when a proje ...
.
Usage of the term began in
software development
Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
, 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
In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
.
Overview

The basic idea behind this method is to develop a system through repeated cycles (iterative) and in smaller portions at a time (incremental), allowing
software developer
Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
s to take advantage of what was learned during development of earlier parts or versions of the system. Learning 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
Iteration is the repetition of a process in order to generate a (possibly unbounded) sequence of outcomes. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration.
...
, design modifications are made and new functional capabilities are added.
The procedure itself consists of the initialization step, the iteration step, and the Project Control List. The initialization step creates a base version of the system. The goal for this initial implementation is to create a product to which the user can react. It should offer a sampling of the key aspects of the problem and provide a solution that is simple enough to understand and implement easily. To guide the iteration process, a project control list is created that contains a record of all tasks that need to be performed. It includes items such as new features to be implemented and areas of redesign of the existing solution. The control list is constantly being revised as a result of the analysis phase.
An iteration involves redesign and implementation, which is meant to be simple, straightforward, and modular, supporting redesign at that stage or as a future task added to the project control list. The level of design detail is not dictated by the iterative approach. In a light-weight iterative project the code may represent the major source of
documentation
Documentation is any communicable material that is used to describe, explain or instruct regarding some attributes of an object, system or procedure, such as its parts, assembly, installation, maintenance, and use. As a form of knowledge managem ...
of the system; however, in a critical iterative project a formal
Software Design Document may be used. The analysis of an iteration is based upon user feedback and the program analysis facilities available. It involves analysis of the structure, modularity,
usability
Usability can be described as the capacity of a system to provide a condition for its users to perform the tasks safely, effectively, and efficiently while enjoying the experience. In software engineering, usability is the degree to which a softw ...
, reliability, efficiency, and achievement of goals. The project control list is modified in light of the analysis results.
Phases
Incremental development slices the system functionality into increments (portions). In each increment, a slice of functionality is delivered through
cross-discipline work, from the
requirements
In engineering, a requirement is a condition that must be satisfied for the output of a work effort to be acceptable. It is an explicit, objective, clear and often quantitative description of a condition to be satisfied by a material, design, pro ...
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.
Each of the phases may be divided into 1 or more iterations, which are usually time-boxed rather than feature-boxed. Architects and analysts work one iteration ahead of developers and testers to keep their work-product backlog full.
Usage and history
Many examples of early usage are provided in
Craig Larman and
Victor Basili's article "Iterative and Incremental Development: A Brief History",
[Iterative and Incremental Development: A Brief History](_blank)
Craig Larman and Victor Basili, IEEE Computer, June 2003 with one of the earliest being NASA's 1960s
Project Mercury
Project Mercury was the first human spaceflight program of the United States, running from 1958 through 1963. An early highlight of the Space Race, its goal was to put a man into Earth orbit and return him safely, ideally before the Soviet Un ...
.
Some of those Mercury engineers later formed a
new division within IBM, where "another early and striking example of a major IID success
asthe very heart of NASA’s space shuttle software—the primary avionics software system, which
heybuilt from 1977 to 1980. The team applied IID in a series of 17 iterations over 31 months, averaging around eight weeks per iteration. Their motivation for avoiding the waterfall life cycle was that the shuttle program’s requirements changed during the software development process."
Some organizations, such as the US Department of Defense, have a preference for iterative methodologies, starting with
MIL-STD-498 "clearly encouraging evolutionary acquisition and IID".
The DoD Instruction 5000.2 released in 2000 stated a clear preference for IID:
There are two approaches, evolutionary and single step aterfall to full capability. An evolutionary approach is preferred. … n thisapproach, the ultimate capability delivered to the user is divided into two or more blocks, with increasing increments of capability...software development shall follow an iterative spiral development process in which continually expanding software versions are based on learning from earlier development. It can also be done in phases.
Recent revisions to DoDI 5000.02 no longer refer to "spiral development," but do advocate the general approach as a baseline for software-intensive development/procurement programs.
In addition, the
United States Agency for International Development
The United States Agency for International Development (USAID) is an agency of the United States government that has been responsible for administering civilian foreign aid and development assistance.
Established in 1961 and reorganized in 1998 ...
(USAID) also employs an iterative and incremental developmental approach to its programming cycle to design, monitor, evaluate, learn and adapt international development projects with a project management approach that focuses on incorporating collaboration, learning, and adaptation strategies to iterate and adapt programming.
[USAID]
"ADS Chapter 201 Program Cycle Operational Policy"
. Retrieved April 19, 2017
Use in hardware and embedded systems
While the term ''iterative and incremental'' development got started in the software industry, many
hardware and
embedded software
Embedded software is computer software, written to control machines or devices that are not typically thought of as computers, commonly known as embedded systems. It is typically specialized for the particular hardware that it runs on and has tim ...
development
Development or developing may refer to:
Arts
*Development (music), the process by which thematic material is reshaped
* Photographic development
*Filmmaking, development phase, including finance and budgeting
* Development hell, when a proje ...
efforts are using iterative and incremental techniques.
Examples of this may be seen in a number of industries. One sector that has recently been substantially affected by this shift of thinking has been the
space launch
Space launch is the earliest part of a flight that reaches space. Space launch involves liftoff, when a rocket or other space launch vehicle leaves the ground, floating ship or midair aircraft at the start of a flight. Liftoff is of two main ...
industry, with
substantial new competitive forces at work brought about by faster and more extensive technology innovation brought to bear by the formation of
private companies pursuing space launch. These companies, such as
SpaceX
Space Exploration Technologies Corp., commonly referred to as SpaceX, is an America, American space technology company headquartered at the SpaceX Starbase, Starbase development site in Starbase, Texas. Since its founding in 2002, the compa ...
and
Rocket Lab
Rocket Lab Corporation is a Public company, publicly traded aerospace manufacturer and List of launch service providers, launch service provider. Its Rocket Lab Electron, Electron orbital rocket launches Small satellite, small satellites, and ha ...
,
are now both providing commercial orbital launch services in the past decade, something that only six nations had done prior to a decade
[
] ago. New innovation in technology development approaches, pricing, and service offerings—including the ability that has existed only since 2016 to fly to space on a
previously flown (reusable) booster stage—further decreasing the price of obtaining access to space.
[
][
SpaceX has been explicit about its effort to bring iterative design practices into the space industry, and uses the technique on spacecraft, launch vehicles, electronics and avionics, and operational flight hardware operations.][
]
As the industry has begun to change, other launch competitors are beginning to change their long-term development practices with government agencies as well. For example, the large US launch service provider United Launch Alliance (ULA) began in 2015 a decade-long project to restructure its launch business—reducing two lau nch vehicles to one
1 (one, unit, unity) is a number, numeral, and glyph. It is the first and smallest positive integer of the infinite sequence of natural numbers. This fundamental property has led to its unique uses in other fields, ranging from science to sp ...
—using an iterative and incremental approach to get to a partially-reusable and much lower-cost launch system over the next decade.[
]
See also
* Adaptive management
Adaptive management, also known as adaptive resource management or adaptive environmental assessment and management, is a structured, iterative process of robust decision making in the face of uncertainty, with an aim to reducing uncertainty ove ...
* Agile software development
Agile software development is an umbrella term for approaches to software development, developing software that reflect the values and principles agreed upon by ''The Agile Alliance'', a group of 17 software practitioners, in 2001. As documented ...
* Continuous integration
Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state.
Typically, developers Merge (version control), merge changes to an Branching (revisio ...
*
* Dynamic systems development method
Dynamic systems development method (DSDM) is an Agile management, agile project delivery framework, initially used as a software development methodology, software development method. First released in 1994, DSDM originally sought to provide some ...
* Goal-Driven Software Development Process
* Interaction design
Interaction design, often abbreviated as IxD, is "the practice of designing interactive digital products, environments, systems, and services." While interaction design has an interest in form (similar to other design fields), its main area of foc ...
* Kaizen
is a Japanese concept in business studies which asserts that significant positive results may be achieved due the cumulative effect of many, often small (and even trivial), improvements to all aspects of a company's operations. Kaizen is put ...
* Microsoft Solutions Framework
Microsoft Solutions Framework (MSF) is a set of principles, models, disciplines, concepts, and guidelines for delivering information technology services from Microsoft. MSF is not limited to developing applications only; it is also applicable to ...
* Object-oriented analysis and design
Object-oriented analysis and design (OOAD) is a technical approach for analyzing and designing an application, system, or business by applying object-oriented programming, as well as using visual modeling throughout the software development pro ...
* PDCA
PDCA or plan–do–check–act (sometimes called plan–do–check–adjust) is an iterative design and management method used in business for the control and continual improvement of processes and products. It is also known as the Shewhart cy ...
* Rapid application development
Rapid application development (RAD), also called rapid application building (RAB), is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development. In general, RAD approaches to ...
* Release early, release often
Release early, release often (also known as ship early, ship often, or time-based releases, and sometimes abbreviated RERO) is a software development philosophy that emphasizes the importance of early and frequent releases in creating a tight feed ...
References
Additional reading
*
*
{{Software engineering
Software development philosophies
Software project management