There are several types of prototypes that can be used in systems analysis and design including patched-up prototypes, nonoperational prototypes, first-of-a-series prototypes, and selected features prototypes. Prototypes allow users to interact with and provide feedback on early versions of a system to help identify requirements, innovations, and needed revisions before significant resources are spent on development. Prototyping is best for systems that are uncertain or unstable, while established systems with certain requirements are less suitable for prototyping.