Prototypes

Several software development processes involve frequent deliverables to clients
Prototypes achieve numerous goals:

  • Get feedback from the propoosed system
  • Solicit feedback from potential users
  • Determine whether the presented problem has a feasible solution
  • Assist in exploring options for optimizing quality requirements

Design

  • Some design decisions are best answered through the use of prototyping
  • An executable model is built to answer specific questions about the system
  • Some prototypes are designed to be discarded
  • Rapid prototyping, however, refines the prototype until it becomes the final system

Implementation

  • Prototypes can ensure client involvement in the implementationn of a final product
  • Prototypes allow you to feedback from future users
  • Prototypes can identify further requirements
  • Prototypes allow non-functional aspects to be tested such as performance and UX

Slicing

Horizontal Slicing

  • Modules are improved to gradually build up a project from the core components
  • More effort is spent on perfecting each individual component
  • May be necessary for key central service components
  • BUT this can lead to over-engineering and delays feedback, so it may produce undeliverable code

Vertical Slicing

  • Finishes a whole path from input to output quickly so a version of the program can be delivered
    • Though it may contain many stubs and unfinished components
  • Allows the client to be involved very early during implementation
  • It is at the heart of eXtreme Programming (XP) as it allows frequent, incrementally functional builds and releases

Traditional Development

  • Focuses on horizontal slicing
  • Functionality can only be analysed near the end of the project
  • Integration can take longer and there may be unforseen conseqences
  • However, it is very well defined, and it is straightforward to determine high level tasks

Agile Development

  • Focuses on vertical slicing
  • The client is involved
  • Integration issues are identified earlier in the process
  • Not all projects can be vertically sliced