Definition

Email this page to a friend   

Email to a friend

Prototype

(Alias: mock-up, model)

The management question, therefore, is not whether to build a pilot system and throw it away. You will do that. [...] Hence plan to throw one away; you will, anyhow.
             - Fred Brooks, The Mythical Man-Month: Essays on Software Engineering

A prototype is a working model of a system developed to demonstrate and validate a customer's expectations of major functions and user interfaces.

The Role of the Prototype in Software Development

The prototype is used to:

  • Determine the feasibility of user requirements and design approaches
  • Determine the necessity of a function
  • Uncover missing requirements
  • Determine the viability of a user interface
  • Engage the end user in system design
  • Test the viability of new technology.

Prototypes are used where the requirements of a system are not well understood or a new design approach is being trialed. Experience has shown that working models can improve communication with the user or, in the case of design, help solidify a practical design approach.

Prototypes are developed with small teams using high productivity tools that are typically not those of the target production environment.

The Benefits of Using a Prototype

Projects that adopt a prototyping approach experience the following benefits:

  • Discovers missing requirements. End users operating a working system (as opposed to reading a document) are much more likely to identify missing functions and data
  • Increases active user participation. End users take a more active role in determining system functionality. Prototypes generate more interest and therefore more active, creative involvement. The risk of user rejection of the production system is significantly reduced
  • Validates requirements early. The customer is able to verify that the system will work in the business environment early in the development life cycle
  • Migrates iteration earlier in the life cycle (where it's much cheaper). In environments where requirements are not well understood some iteration is always necessary. If a user must wait until a production system is delivered to identify problems, the corrective action can be extremely expensive. If the iteration is done in the requirements phase using a prototype, significant cost savings can be made as prototypes can be changed at low cost and the turnaround time between iterations can be one to three days
  • Clarifies system scope for estimation. A prototype provides a more accurate model of the end system (when compared to a document) allowing developers to get more precise function point counts, the end result being a more accurate cost estimate to complete.

Attributes of a Good Prototype

  • It works. It can be operated by user without a developer behind the curtain
  • It is ergonomically sound. It can be operated by a user with minimal training
  • It has a user guide. It has basic user documentation
  • It looks like the end product. It approximates the look and feel of the proposed system: same user interface, same inter screen flow
  • It provides all primary functionality
  • It traps errors. It provides error detection and correction.

Prototypes Are Not Production Systems

Most prototypes are not suitable for deployment as production systems as they DO NOT have:

  • Robustness. They are typically unstable
  • Performance. They will be slow and unstable when scaled to production use (example: multiple concurrent users, high transaction rates)
  • Concurrency control. They are designed for single user environments. For example, data may be corrupted if two users attempt to update the same information concurrently
  • Security. They do not provide user access control or audit trails of user activity
  • Completeness. They only demonstrate part of the system's functionality
  • Recovery/restart. They do not address recovery from system failure modes
  • Operational documentation. They are not formally specified
  • Quality control. They are not thoroughly tested.
Collaboration

- Rate this definition.
- Did it help?
- Suggest improvements.
- Request more information.
- Exchange ideas with our member community.

Email to a friend