Rapid Application Prototyping

SoftwareIn the previous article we discussed the iterative design model, which leads very nicely onto the topic of rapid application prototyping.

Rapid application prototyping is the main model used for iterative design.  It is also the model that is most suited to iterative design.  Rapid application prototyping is a dynamic method of software development, contrasting to the more linear waterfall model, which we have also discussed previously.

Rapid application prototyping will involve several iterations of the software development process, as with other iterative models.  The production of prototypes is not intended to be fully representative of the final system.  In fact the final system may be very different from the prototypes.  The focus isn’t so much on the prototype itself, but what we learn from the prototypes.

A prototype is a representation of an idea or a system (or part thereof).  It may be a full mock up of the system.  Equally it may just focus on one or two features of the system.

Prototypes are a very useful tool, especially when working for a customer or company which doesn’t have a lot of technical expertise and experience.  Non-technical customers find it hard to understand complex design documents, technical specifications and modelling diagrams.  However, they find it much easier to see and interact with something – such as a prototype.

There are two types of prototype – throw away and evolutionary.  Throw away prototypes are, as the name suggests, “thrown away” after they have been developed, tested by users and then evaluated.  The next prototype is then created based on the results obtained from the evaluation.  With an evolutionary prototype the same steps are followed, but the prototype isn’t thrown away.  The results and knowledge gained from the evaluation are reincorporated into an updated design which is then used to update and improve the prototype.

The ultimate aim of rapid application prototyping is to create the best system possible, over as many iterations as it is possible to fit within the defined project time.

The benefits of prototyping can be very large – it might make it obvious that the final system would not function correctly or not be fit for purpose.  It may indicate that certain planned functionality isn’t possible on the target operating system or company network environment.   It’s better to find out these things sooner rather than later!