0

could someone explain to me the iterative development methodology and the benefits/limitations for using it in developing a web application?

Also, I've been researching it but I am confused, is it part of Agile or not? Some sources say that it is and some don't?

Thanks all.

alice
  • 3
  • 1
  • 5
  • This isn't really a programming question. Look up the agile manifesto and start with that. "Iterative" is not the only part of agile, so being iterative is not necessarily equivalent to being agile. – Fenton Mar 19 '15 at 20:28

2 Answers2

0

Iterative is opposed to waterfall development. As you know, you should go through a couple of different phases for delivering a software product.

  • Requirements Engineering/Elicitation
  • Analysis & Design
  • Implementation
  • Testing & Verification
  • Deployment & Maintenance

At the end of each phase, you will have some Artifacts or deliverable results. In waterfall strategies, once you finish a phase, everything is done, and you will not come back to that phase again.

In iterative approaches, you will go through these phases repeatedly. In each cycle you repeat all of or part of these phases and at the end of each cycle you will deliver a working product.

Iterative approaches let you to develop your software incrementally and you will be able to establish and then further extend your product step by step. You may deliver just a skeleton of your web application at the end of first cycles and thenafter in each cycle, you will revisit your requirements, design, implementation, and your testing plans. You will find bugs and fix them. At the same time, you will receive feedback from your end-customers and change your product accordingly.

Agile methodologies like scrum, are mainly about how to eliminate unnecessary extensive processes like heavy documentation, formal meetings, etc. So, you can focus on your product and code instead and iterate through your cycles much faster. Agile neither enforce waterfall nor iterative approaches, but the fact is that waterfall is now outdated and it is not going be used any more in industry.

moorara
  • 3,897
  • 10
  • 47
  • 60
  • Hey thanks, you know at the end of each phase. Do you necessarily need a user to test the deliverable? Or could it be the developer. – alice Mar 19 '15 at 23:19
  • Testing is a whole different story and it should be done in different levels (Analysis, Design, Implementation, ...) by different stackholders (developers, testers, users, ...) – moorara Mar 20 '15 at 14:37
0

Iterative development has been around quite a while. It certainly predates agile, though you could argue it is ancestor of the agile development approach.

There are some non-agile development approaches that include iterations, such as RUP, so it is not exclusively an agile practice.

There are also a lot of ways to use the iterative approach. You could, for example, do up-front gathering of requirements and design and then use iteration during the development phase only.

Agile frameworks like XP and Scrum take iterations a bit further and look to have a 'releasable' product at the end of each iteration.

Benefits of the agile iterative approach:

  • The product is releasable at an earlier stage in development
  • Progress is often easier to measure (released code is a great measure of progress)
  • The iterative approach allows teams to more easily respond to change

Limitations of the agile iterative approach:

  • It can be a challenge to fit things like UAT and regulatory compliance in to iterations
  • There can be an overhead associated with frequent releases and frequent re-planning

You could think of having a releasable product at the end of each iteration as a pure form of iterative development. Not every team uses this approach. For example, some may leave the user testing until after several iterations. The downside with this is that you are never really sure the work is 'done', because potentially user feedback could change things.

Barnaby Golden
  • 4,176
  • 1
  • 23
  • 28