in reply to Does Anyone Use Rapid Prototyping?

I've done projects with and without prototyping (I'll avoid the term Rapid Prototyping because it's associated with GUI builders, VB, and the like, which I've not bothered with).

One problem is that prototype means different things to different people. I've seen the term applied to:

To me, one of the problems with the "build one to throw away" model is that it assumes that one of the following is true: This doesn't have to be the case. If you look at the practice of Extreme Programming, the emphasis is on gradually iterating a system design through constant refactoring and testing. So you don't have one to throw away, you just evolve the system until it meets all of its responsibilities.

I think there's a tendency in many organizations to view massive restructuring of code as something that is just not done, rather than as a part of normal development. That's sad, and may have something to do with deficient tools (it's much easier to refactor in Perl or Smalltalk than in C++, and the Refactoring Browser makes it simple and foolproof in Smalltalk).

By minimizing the work done (i.e. not writing anything until it's actually needed), and by testing constantly as new capabilities are added, you always have a working version that will do something. So your system is always its own prototype. This seems more efficient than throwing one away.