This document presents an overview of software prototyping models. It defines a software prototype as a working model with limited functionality that enables understanding customer requirements early and getting feedback. There are different approaches to prototyping including rapid throwaway, evolutionary, incremental, and extreme prototyping. The prototyping process involves building prototypes, getting customer feedback, refining the prototypes, and repeating until an acceptable final prototype is achieved to form the basis for the final product. The document discusses the pros and cons of the software prototyping model.