Iterative Project Methodology

Iterative methods describes the construction of subsets of functionality of a software project broken down into sub projects to help all those involved to uncover important issues early before problems or faulty assumptions can lead to disaster.

From a high level Iterative projects require more time to manage as the timeline and resources may be in flux from week to week and therefore require updating on a frequent basis. BUT because you have flexibility, not being locked into a Waterfall methodology, you have the ability to react very effectively to internal and external influences, allowing you to still deliver a solution that meets the businesses needs.

Iterative processes are preferred by developers because it allows a potential of reaching the goals of customers who do not completely know what they want, or more importantly what they NEED. Some of the key advantages of the Iterative Methodology are:

  • Prioritization exercises can identify urgently needed functionality for early iterations
  • Developers focus on learning from technical issues and improvements from previous iterations
  • Users look at functionality and can work to add to or improve usability in future iterations
  • Functionality can be rolled out in more managable stages, allowing for more streamlined training
In more conventional methodologies such as Waterfall Project Methodology, a project is built in phases: such as Analysis, Design, Build, QA, and Launch. In the Iterative Methodology, a team is built from each of the appropriate SME specialties (system analyst, business driver, developer, designers, QA manager...) and the team developed multiple iterations of the product for testing. These prototypes are evaluated, modified, and re-tested until they meet the business objectives. The ability to evaluate smaller components at an earlier time is what makes iterative development such as big gain over waterfall, where an issue or missing requirement can be hidden until the QA phase.

SMEs become integral throughout the entire project in Iterative projects, as opposed to Waterfall where they are utilized only in their specific phase but become a critical component in the evaluation recently launched iterations. This drives future iteration functionality.

One important consideration to be mindful of is whether each iteration needs to be deployed to the public users of the product. Iterations can be build, tested, and evaluated and retained in a testing environment while the following iteration is developed. Another process invloves deploying each iteration for public use, when priority functionality is required by end users.

One form of software development documentation that many project managers and developers are familiar with is the Change Order. A change order is a form of iterative development as a client may request a specific set of changes or upgrades in a change order and each set of processes must be followed on the change order iteration.

HELPFUL LINKS
Wikipedia
ACM