Prototyping involves rapidly developing an initial version of a system to validate requirements and gain user feedback. There are two main approaches - evolutionary prototyping iteratively develops prototypes into the final system, while throw-away prototyping discards the prototype after validating requirements. Rapid prototyping techniques include using high-level languages, database programming, and component reuse to quickly develop prototypes for review before final development. User interface prototyping is especially important as interfaces cannot be fully specified upfront.