Definition
Software prototyping is an endeavour that aims to develop working system, containing, prioritized, minimal and informal requirement feature subset (that overlap with future system) that demonstrates the business viability, taking into account, different stakeholder’s interests and business needs in a time bound fashion, which is also the elementary extension/representation of the final system.
Note: That said, let me clarify to the readers that prototyping is also applied in developing GUI (presentation), We are not going to deal with UI mock ups in this blog post.
Flowchart for prototype building
Relevance to Agile
Agile naturally fits into the world of prototyping and the statement holds true vice versa. Each sprint delivers a fully functional product. Eventually each sprint delivery which strictly follows the above definition, takes one step closer to the end product. Iterative refinement and addition of features is similar to building prototype in each sprint. Except that, prototype is one time affair and agile is an affair with each sprint. A close examination of the above definition will connect these two worlds seamlessly.
Is agile sprint prioritized feature subset of the final product?
Is agile sprint time bound?
Does agile take into account the stake holder’s interest and feedback in each sprint?
Is each sprint delivery refined and passed on to next sprint in cycles?
Is there a working system at the end of sprint?
Is there a scope for transparency, simplicity and adaptability in agile?
Sum of thoughts
In spite of having various software development methods, I believe agile is apt for building prototypes not just because of the similarity in definition but also within the practical boundaries. Building prototypes are driven by chaotic forces more than a well-planned set of necessity. Agile meets this plane of chaos and hence both are made for each other.

