Software Prototyping

Prototyping (or materialization) is a useful tool in developing new software applications. It helps identify and manage costs, key features and usage very early in the development life-cycle. Prototypes can be done in mock applications (not fully functional but contains some interactions) using various tools or even in traditional paper-and-pen. Perhaps not literally paper-and-pen but many document types can be used for prototyping – UML being an extremely popular approach. UML documents such as Interaction Diagrams, Sequence Diagrams, Use Case Diagrams, etc can help identify requirements and usage early in the development process.

Some of the concerns or challenges with prototyping are misdirection or misunderstanding of the final application. As prototypes can contain some functions and have all necessary user interaction points, users sometimes get confused it is only a prototype and that the final product could differ. Not only that but sometimes there can be confusion on the developers side and an excessive amount of time spent on the prototype – forgetting that there needs to be time for the real product development afterwards.

The ultimate goal of prototyping is to engage users early and identifying their requirements. Prototypes should be rapidly created an iterated on so keep the users constantly engaged during the overall development process.

 

The process of prototyping:

  1. Requirements definition
  2. Prototype implementation
  3. Review
  4. Revise or Restart

 

Software Prototyping Approaches

  • Horizontal
    • Focus on user interaction
    • Prototype implementations are UI heavy
  • Vertical
    • Focus on single subsystem or feature
    • Prototype implementation is full stack – database up through UI for that single feature

 

Software Prototyping Types

  • Throwaway Prototyping (close-ended implementations)
    • Implementations are not expected to last
    • Very fast implementations
    • Simplicity
  • Evolutionary Prototyping
    • Implementations expected to last – sets foundation for eventual solution
    • Capable of adding features to existing implementations
    • Implementations are functional
  • Extreme Prototyping (UI First Development)
    • Implementations vary between stages – starts with basic layout and eventually adds functions
    • Implementations are staged and takes incremental steps
    • Focuses heavily on the user interactions

 

Software Prototyping Tools

  • Basalmiq
  • Proto.io
  • InVision
  • UXPin
  • Omnigraffle