Software prototyping

It is an activity that can occur in software development and is comparable to prototyping as known from other fields, such as mechanical engineering or manufacturing.

Prototyping has several benefits: the software designer and implementer can get valuable feedback from the users early in the project.

It also allows the software engineer some insight into the accuracy of initial project estimates and whether the deadlines and milestones proposed can be successfully met.

[2] Prototyping can also be used by end users to describe and prove requirements that have not been considered, and that can be a key factor in the commercial relationship between developers and their clients.

The practice of prototyping is one of the points Frederick P. Brooks makes in his 1975 book The Mythical Man-Month and his 10-year anniversary article "No Silver Bullet".

An early example of large-scale software prototyping was the implementation of NYU's Ada/ED translator for the Ada programming language.

[4] It was implemented in SETL with the intent of producing an executable semantic model for the Ada language, emphasizing clarity of design and user interface over speed and efficiency.

Throwaway or rapid prototyping refers to the creation of a model that will eventually be discarded rather than becoming part of the final delivered software.

Making changes early in the development lifecycle is extremely cost effective since there is nothing at that point to redo.

This technique allows the development team to add features, or make changes that couldn't be conceived during the requirements and design phase.

Because changes cost exponentially more to implement as they are detected later in development, the early determination of what the user really wants can result in faster and less expensive software.

Since users know the problem domain better than anyone on the development team does, increased interaction can result in a final product that has greater tangible and intangible quality.

Insufficient analysis: The focus on a limited prototype can distract developers from properly analyzing the complete project.

This can lead to overlooking better solutions, preparation of incomplete specifications or the conversion of limited prototypes into poorly engineered final projects that are hard to maintain.

For example, user representatives attending Enterprise software (e.g. PeopleSoft) events may have seen demonstrations of "transaction auditing" (where changes are logged and displayed in a difference grid view) without being told that this feature demands additional coding and often requires more hardware to handle extra database accesses.

Users can become stuck in debates over details of the prototype, holding up the development team and delaying the final product.

Sometimes, the coding needed to perform the system functions may be too intensive and the potential gains that prototyping could provide are too small.

"One of the most productive uses of rapid prototyping to date has been as a tool for iterative user requirements engineering and human–computer interface design.

"[7] Dynamic Systems Development Method (DSDM)[14] is a framework for delivering business solutions that relies heavily upon prototyping as a core technique, and is itself ISO 9001 approved.

"[8] Davis' belief is that to try to "retrofit quality onto a rapid prototype" is not the correct method when trying to combine the two approaches.

The basis of Systemscraft, not unlike evolutionary prototyping, is to create a working system from the initial requirements and build upon it in a series of revisions.

Frequent releases (e.g., betas) are made available for use to provide insight into how the system could better support user and customer needs.

The system is organized to allow for evolving a set of capabilities that includes considerations for performance, capacities, and functionality.

The ERD process is structured to use demonstrated functionality rather than paper products as a way for stakeholders to communicate their needs and expectations.

These frameworks typically consist of a set of controls, interactions, and design guidelines that enable developers to quickly prototype web applications.

This makes them ideal for prototyping applications, since this approach can quickly deliver programs with the desired behaviour, with a minimal amount of manual coding.

As a solution specification technique, Application Simulation falls between low-risk, but limited, text or drawing-based mock-ups (or wireframes) sometimes called paper-based prototyping, and time-consuming, high-risk code-based prototypes, allowing software professionals to validate requirements and design choices early on, before development begins.

"The Requirements Engineering Environment (REE), under development at Rome Laboratory since 1985, provides an integrated toolset for rapidly representing, building, and executing models of critical aspects of complex systems.

[20] Prototyping software systems with hard real-time requirements is challenging because timing constraints introduce implementation and hardware dependencies.

It also provides default assumptions that enable execution of incomplete prototype descriptions, integrates prototype construction with a software reuse repository for rapidly realizing efficient implementations, and provides support for rapid evolution of requirements and designs.