A prototype is an early version of a product, model, or release built to test a concept or process. It is used in a variety of contexts, including semantics, design, electronics, software programming, and product development. Prototyping serves to provide specifications for a real, working system rather than a theoretical one. In some design workflow models, creating a prototype is the step between the formalization and the evaluation of an idea.
Prototypes can be anything from paper drawings to fully functioning sites. They can be low-fidelity or high-fidelity, depending on the level of detail and user interaction required. Low-fidelity prototypes are often paper-based and do not allow user interactions, while high-fidelity prototypes are computer-based and usually allow realistic user interactions.
The benefits of prototyping include exploring ideas, showing the intention behind a feature or overall design concept to users, and gathering feedback from users while still planning and designing a product. Prototyping allows for early visualization of alternative design solutions, which can provoke innovation and improvement. It is much cheaper to change a product early in the development process than to make changes after the product has been developed.