In general, prototyping is understood as an approximation of a product/service. Prototyping is a method for testing the desired results/goals by means of low-cost, low-expenditure test versions. The prototype is the result of the prototyping process.
The prototyping method is used to visualize ideas, to test possible solutions for a problem, or a preliminary result. The method can be seen as a cycle, which first develops prototypes with rough accuracy, which become increasingly finer and more adapted to the specific context.
There are different types of prototyping:
- Explorative prototyping: Ideas/solutions or specifications are evaluated to obtain a meaningful requirements specification for a product/system. The user is presented with an executable version of parts of the system. 
- Evolutive prototyping: The prototype is gradually expanded. The aim is to analyse the acceptance of the users regarding the current prototype and further functions by means of tests. User feedback is used to extend the prototype to product maturity. 
- Experimental prototyping: The goal is to investigate different implementation possibilities and to gain experience with the prototype. 
- Rapid Control Prototyping: Development of closed-loop and open-loop controls using graphical tools. 
- Vertical Prototyping: A functional part of the system is developed. These parts can then already be implemented. This approach is particularly suitable if implementation and functionality issues have not yet been fully clarified. 
- Horizontal prototyping: A special level of the overall system is almost completely realized. This requires a strong separation of the components. 
 Kiebach, A., Lichter, H., Schneider-Hufschmidt, M., & Züllighoven, H. (1992). Prototyping in industriellen Software-Projekten: Erfahrungen und Analysen. Informatik Spektrum, 15(2), 65-77.
 (2006) Rapid Control Prototyping. In: Rapid Control Prototyping. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-29525-9_7
 Kappel, G., & Nierstrasz, O. (1989). Prototyping in einer objektorientierten Entwicklungsumgebung. Handbuch der Modernen Datenverarbeitung, 145, 116-125.