Gathering your project’s requirements by using a Prototype can be effective in many situations because it is very attractive to users. Requirements prototyping consists of planning and then developing a sample deliverable for the users to “play with,” review and modify. Prototyping takes some pressure off the users. They need not specify all of the requirements without any tangible evidence that they work. But if the prototype is “free” to the user, a cost explosion is inevitable. Protoypes are like eating candy, one piece is never enough. The user may soon want a new prototype after every change and that’s a disaster for the schedule and budget. On the other hand, if you are billing your hours to a client, additional prototypes increase your revenue and usually the client’s satisfaction. So prototypes shouldn’t be mentioned in a fixed cost project nor should a hard completion date.
This process is different from iterative development in the sense that all we want are the requirements, not a final deliverable. We start by talking to the user and making a plan. Then we produce it. Ideally, the user would review the prototype, make changes and then we would produce the final deliverable. In the real world we’d wind up making another prototype for the user to review and modify. Producing one prototype after another allows us to iteratively, prototype by prototype, developed the deliverable. Depending on the deliverable, prototyping can be very expensive and time consuming. But if a user or client wants to pay for this approach, a good project manager can accomodate them.
Using prototypes is very different from the classic waterfall approach where we finalize the whole plan in a lengthy planning effort, and then produce the deliverable, is cheaper. It does however require the client or user to commit to exactly what they want during the planning process. It also limits the changes the client can make once we begin to execute. The prototyping approach allows for changes during exams iterations, if the client will bear the cost.