The term Iterative and Incremental Development (IID) describes a class of methodologies for software development where the system grows incrementally through a series of complete development cycles. Agile software development methods are a group of specific iterative methodologies that combine relatively short iterations with evolutionary refinement of the requirements, plans and targets across each subsequent iteration.
In our experience, agile and iterative methodologies are more reliable and lower risk than using more traditional ‘waterfall’ style methods for software development. We have also found that various Agile software methods such as eXtreme Programming (XP), Scrum, Unified Process (UP) and Evo supply important and useful paradigms for reliable delivery of software development projects.
Editors Note: Agreed, but sometimes extremely difficult to change the waterfall mindset
We believe that one potential weakness of these methods is the reliance on regular ongoing testing between iterations to ensure software quality, without providing specific processes or tools to define or facilitate this testing. We have successfully utilized the Six Sigma problem solving methodology DMAIC (Define, Measure, Analyze, Improve and Control) within each iteration to improve the reliability of the software development process. The key to the success of this methodology is its focus on using data-driven tools to identify what is to be changed and then to monitor the actual impact of changes in a feedback loop.
Most software project failures are the result of business needs not being correctly understood or by overly optimistic software development estimates. These errors lead to long delays and large cost overruns. The traditional mechanism for ensuring that requirements are understood and that estimates are accurate is to engage in lengthy up-front analysis, design and planning. Unfortunately this approach is inflexible and is inappropriate for the majority of real-world projects. Agile methods use an iterative approach to ensure that flexibility is an inherent component of the project however this can lead to a lack of clarity as to whether the deliverable is tracking to goal. By applying Six Sigma concepts of defining, quantifying and measuring key delivery factors we can monitor overall delivery and quality of the resulting software without resorting to “analysis paralysis” in the early stages.
The specific parameters to be measured and analyzed will be project dependent and should relate directly to the ultimate end-user functionality of the software being developed. In addition, we have found that some useful key indicators for software quality include measurements of numbers of defects found in a test cycle, the percentage of rework per iteration (the number of requirements which need to be re-implemented during one cycle) and the number of new features which are logged after one cycle.
We believe that Six Sigma provides a framework and effective tools that support reliable Agile software development project delivery. Based on our experience, we strongly recommend combining Six Sigma with Agile and Iterative software development methodologies.
Article Source: http://EzineArticles.com/?expert=Chris_Young
Related posts:
- What Six Sigma Black Belts Must Know
- What is Agile Software Development?
- How to Implement Agile Offshore Development
- Using an Agile Software Process with Offshore Development
- What Every Manager Ought To Know About Agile Development
There are no comments yet