ABSTRACT

Executive summary: The word “iterative” means doing one thing after another in sequence. In the term “iterative software development,” it means building software incrementally in a sequence of separate usable features rather than as an entire package. This is an old concept, which was used on the NASA Mercury project in the 1960s. The essential idea of iterative development was adopted by Agile, extreme programming (XP), feature-based development, specifications by example, and many other more recent methodologies. Although the concept has many proofs of success, it cannot always be applied. For example, you cannot build embedded medical device software such as a cochlear implant in pieces: the device won’t work at all and cannot be implanted in a patient unless every feature is working. Of course, small segments can be developed individually, but they have no intrinsic user value. Only the full package allows patients to hear with a cochlear implant.