This document compares and contrasts three common software development models: the waterfall model, iterative enhancement model, and prototyping model. It discusses the key stages and processes in each model, including requirements analysis, design, implementation, testing, and maintenance. The waterfall model is described as the classic sequential model, while the iterative and prototyping models allow for more flexibility and user feedback. The document analyzes the advantages and disadvantages of each approach and concludes each model tries to improve on the limitations of previous ones. The iterative model is seen as overcoming issues of the waterfall by allowing feedback, while the prototyping model is useful for complex or unestablished requirements.