Software Evolution through Iterative Prototyping