The IBM Certification Exam (ICE) for the 486 exam has the following question: An iterative development process: a) represents a structured methodology, which includes functional decomposition. b) is a technique for managing complexity and plans for change during software development. c) is a top-down approach without the dataflow diagrams. d) is equivalent to an incremental development process. Apparently b) is the correct answer. I have no problem with that. However, what makes d) wrong? Is not iterative development, by its very nature, incremental? Can someone define incremental vs. iterative? Fowler and Larson both have little to say about incremental development and, consequently, do little to contrast it to iterative development.
I understand the distinction you are attempting to make. However, that isn't quite enough for me. As you proceed through an iteration, aren't you incrementally adding to your code base by incorporating new use cases or use case scenarios to your code? And if you are, my basic question remains: What's the difference between iterative and incremental development?
Development can be both iterative and incremental at the same time. Purely iterative development does not add any new functionality (or new use cases) - that is, the development work is geared mostly towards improving the existing application. Each iteration is supposed to provide a better approximation to the desired system than the previous iteration. Incremental development means going thru the whole application by increments (several use cases at one time instead of all use cases at once). I think Kulak's book on Use Cases explains the difference between the two terms quite well. Unfortunately, I only read it at the bookstore:-)
[This message has been edited by Salvador Villavieja (edited August 10, 2001).]
Jay, If you read the Larman's book on this topic, you would realize iterative development is about enhancing the same use case over a span of iterations.You are still addressing the same business functionality which is described by the original use case.You are only providing yourself an opportunity to adjust to the changing requirements of the client's business needs for the same functionality by using iterative cycle of development. In the case of incremental development, you are adding a new functionality to the already completed cycle of development.This typically means you have finished developing the functionality you had identified during the first phase of requirement analysis(or have released the first version which addresses the functionality) and are now proceeding to the second phase of development wherein you are enhancing the functionality of the developed first version of the product.You are doing this using the incremental cycle of development. The new use cases identified in this new cycle addresses additional functionality which are completely different from those addressed while developing the first version of your system.You will carry out this incremental development in the same iterative way as you did during the the first version - this time though with another set of use cases. This means incremental development is be done in an iterative manner, and hence they are not same! Hope this helps, Sandeep SCJP2,OCSD(Oracle JDeveloper),OCED(Oracle Internet Platform) [This message has been edited by Desai Sandeep (edited August 10, 2001).]
ice is for people that are not already cool. Chill with this tiny ad: