Prototyping is a common practice in many fields, including design, manufacture and software development. A prototype is essentially a very early sample, or model, of a final product which is built in order to test concepts or as a learning experience. By building a prototype, an idea can be tested as a realised, functional system rather than simply on its theoretical merits. This is often the step between formalising and evaluating an idea (Soares and Rebelo 2012).
In software development specifically, prototyping generally takes the form of developing incomplete versions of a software program. Prototypes developed will typically contain a few aspects of the final product being worked towards, but will rarely comprise the complete desired functionality. The final software may also end up completely different from some prototypes.
The benefits of prototyping are several. The process gives an early opportunity for user feedback to be gathered, as key functionality can be tested with users before the rest of an application needs to be developed. A prototype can also be shown to potential clients to make sure the work is proceeding according to specifications. A third benefit is the use of prototyping to allow the developer of the software application to determine whether previously set project goals and timelines are accurate and can be reasonably met.
Nielsen (1994) talks about varying dimensions of prototypes. Essentially software prototypes can be categorised into two distinct categories with different intents. One method, known as a ‘horizontal prototype’ is to showcase a broad section of a whole system. Horizontal prototypes then focus on exploring user interaction with the system rather than deep or detailed functionality. This can be useful in gaining an overview of the interface of a system, and can be shown as a demonstration of the overall scope and aims of a software project. It also allows for estimates into how much work needs to be done to produce the final product, and how long this is likely to take.
The second category of prototype is the ‘vertical’ prototype. This encompasses a different approach from the horizontal prototype, focusing more on a single sub-element or piece of functionality desired for the application. This allows for more specific information to be gleaned, such as network performance, necessary database solutions, and data storage sizes. It also allows one process to be tested thoroughly and worked on to make sure that it, as a standalone piece of functionality, works as intended before it is integrated with the larger software product as a whole and adapted to that.
Their is also a distinction made between throwaway, or rapid, and evolutionary prototyping of software projects. Throwaway prototyping is a process in which quick prototypes are continually developed for various parts of a system which are eventually thrown away and are not integrated into the final software. This allows for these models to be developed quickly, shortly after the initial requirements are given, so that working examples can be worked with from an early stage. This method is in contrast to evolutionary prototyping. The aim here is to build a prototype which is refined and built on over time. This may then form the basis of the finished system once it has been improved and completed.
In this project, I think it will be important to develop a variety of prototyping strategies. Taking from all of these methodologies will hopefully greatly aid in the development of the application. To this end, it will be useful for us to develop a working prototype early on, which can be used in an evolutionary manner. Then, additional features and new implementations can be rapidly prototyped until they are functional before including them in the main evolutionary system. This can then continue to be added to, while being refined and polished in order to ultimately arrive at a complete, final software solution.
Nielsen, J., 1994. Usability Engineering. Elsevier.
Soares, M. and Rebelo, F., 2012. Advances in Usability Evaluation. CRC Press.