Prototyping
Prototyping is the key node of iterative development. The prototypes differ according to their level of realism. An horizontal prototype only present the visible part of the software: the windows or the home page for a web site. It allows to conduct a perception test. Then, the main functionalities of the application are developed in a vertical prototype allowing to run user tests.
Iterative development
In the field of development, 'the hell is paved with good intentions' (direct translation of the French maxim 'L'enfer est pavé de bonnes intentions' hoping that's sound equally in English ! ;). Despite the great care we put in the first version, it will never be satisfying. For this reason, the development has to follow an iterative process where each prototype is evaluated by the users and improved according to the problems raised during the test. In this way, the whole system is gradually defined by successive iterations.
The objective of the prototyping phase is to evaluate usability of the whole system which is there in its first version. It allows to identify the problems, to analyse their reasons and to implement solutions in the next prototype.
Two levels of prototyping
J. Nielsen distinguishes two levels of prototyping according to the level of interaction provided by the prototype [Nielsen 93]:
- The horizontal prototype is actually only the man-machine interface (MMI). It could even be a sketch on paper.
- The vertical prototype implements some of the functionalities of the application allowing to more interaction.

Horizontal prototype
The horizontal prototype is the 'surface interface'. Software functionalities are not working, but it allows to achieve a perception test.
The perception test consists in evaluating the ease of understanding of the interface. The windows are shown to the user. Without letting him using the mouse, the observer is asking the user to explain how he understands the information displayed and which sort of behaviour is expected.
>> More: The perception test is described in French: Test de perception
This first stage allows to check the local behaviour of the interface and to identify the critical points where usability problems are likely to appear.
Vertical prototype
A vertical prototype is then developed. It implements a consistent set of functionalities in order to allow the user to achieve a typical scenario of use. Some of this functionalities could be simulated.
This second stage of the prototyping phase consists in a series of user tests during which the critical points raised previously are evaluated.
User testing allows to identify usability problems and to analyze their cause with the users. Solutions are elaborated and implemented in the following version of the prototype which will be the subject of a new series of tests and so on.
Since the number of usability problems is decreasing at each round, as a general rule, three iterations are sufficient to solve most of the problems.
Recommendations
During the prototyping phase, some precautions are to be taken to prevent that the prototyping phase does not leave to drift.
The objective of prototyping is not to show the user how to program! The interruptions due to these modifications are likely to make the user lose the main objectives of the prototyping phase.
Generally, it is preferable to leave the problem until the end of the tests in order to make sure that it is a real problem, rather than correct it to quickly.
The prototype has to be improved only between each phase as a result of an analysis of the issues with the users.
For tracability matters, the improvements requested by the users have to be consigned, together with the issues raised during the tests and the solutions founded to solve them.
It is not only a way to avoid coming back on an already dealt issue, but it is also a manner to highlight some critical points in term of usability in order to keep a close eye on them during the following of the development.