Incremental development in software engineering is a process methodology that emphasizes the virtue of taking small steps toward the goal. In contrast to the waterfall model of software development, in which a working system becomes available only in the later phases of the project, incremental development begins with a small, working system that is improved and expanded step by step.
At each increment, the key phases of the software development life cycle (SDLC), including functional specification, design, implementation, and testing, are reiterated. This approach can cope with the inevitable changes that result from a client inability to express system specifications fully at the inception of the project, the shifting fortunes of the various system stakeholders, new business developments that require new or modified features, and technological constraints that emerge only as the system is developed. See iterative development, software development life cycle (SDLC), software engineering, waterfall model.