Iterative Development | divide and conquer
Iterative development

Iterative development organises a software project into smaller, more manageable pieces of software that are developed in iterations. A full specification of requirements is not required to start development. Instead, each iteration focuses only on those requirements assigned to that iteration. An iteration has well-defined start and end points, and incorporates the activities of requirements analysis, software modeling and design, implementation, and testing, to deliver an executable version of software. With each successive iteration, an executable version of software is delivered that improves on the last one.

Producing tangible and visible results in short intervals of time, iterative development recognises that software evolves, and accommodates inherent changes in requirements and in implementation strategy. Risks are confronted and mitigated as early as possible, allowing the development team to learn and improve. The project's stakeholders are engaged throughout the project lifecycle, effectively steering the project by supplying continuous feedback and input to the process based on their exposure to the emerging software system. Following each iteration, the business goals and objectives are reviewed and the requirements and priorities for further iterations are reviewed and defined in detail.

Iteration adds agility to the software development process and allows management to control the schedule, cost, and feature set of the project. They can stop new development at almost any time and still have a product that works. The customer can enjoy the benefits of the project from an early stage, and the final product will have a better quality because earlier iterations continue to be regression tested as newer iterations are developed.

Model a little, code a little, test a little

The development schedule should be divided into iterations of 1 to 3 weeks in length. Each iteration should be initiated with a planning meeting. The customer selects the requirements to be developed in that iteration based on business value, therefore ensuring that the features of highest value are received first. This 'just-in-time' planning is an effective way to stay in touch with changing requirements. Typically, an iteration should implement a use case, or part of a use case. The software delivered should be executable so that it can be demonstrated to the customer, and it should be accompanied by acceptance criteria so that completeness can be assessed.

Iterations should be tracked by recording key metrics. These empirical measurements provide direct feedback that can be used to assess progress and control the project by adjusting the development parameters to correct any deviation from the plan. They should also feed into the estimation process to improve the accuracy of future estimates.

Analysis and modeling is performed intrinsically, as working code is developed. Continuous integration combines these working code elements progressively, to construct a fully operational software system. A robust architecture evolves over several iterations and refactoring helps refine the design and improve the code. Upon completion, the iteration is demonstrated to the customer and is accepted based on pre-defined criteria.

Back to top ^^

This page is valid XHTML 1.0 This page uses valid CSS

Iterative Development | Developer Testing | Continuous Integration | Refactoring

Methodologies | Project Management | Analysis & modeling | Development | Testing | Quality Assurance

Home | Services | Contact Us