Prototyping

The term prototyping refers to the development of a sample or prototype in the field of software engineering. Prototyping can be seen as a step-by-step approach to the finished product: In the course of a project, a prototype becomes a finished product - for example a website, an app or a more complex software application. Protoyping is an approach that allows very early feedback from the developers involved and, above all, from the end users by placing a strong emphasis on communication during the development process.

General information[edit]

Traditional approaches in software development have some disadvantages.

  • Changes can be costly. Changes that have to be made at lower levels of the system affect the entire system and therefore the budget.
  • Costs and resources required can often only be estimated inaccurately.
  • The visual appearance and interaction patterns associated with it cannot be tried and tested.
  • The user is only partially and insufficiently involved in the development process.

In the 1980s, studies identified a lack of communication between clients, developers and users as a major disadvantage. Traditional software projects did not fail because of inadequate SDKs (Software Development Kit) or developer tools, but because of missing or unclear agreements. In the waterfall model - a development paradigm common at the time - for example, any errors in a requirements analysis were systematically continued during development.[2] In addition to agile software development or user-centered design, prototyping is a paradigm that attempts to avoid such difficulties and errors.

Types of Prototyping[edit]

In general, prototyping methods can be distinguished according to whether they are vertical or horizontal.

  • Horizontal prototyping focuses on a specific area of application software - for example, the user interface. There is no reference to the technical functionalities of the overall system and their implementation. The aim is to bring the user or client into contact with the GUI and to receive initial feedback.
  • Vertical prototyping takes up a special area of software and shows the interactions with other components of the system. A user interface would already be mapped here together with the data management and other parts of the system. The aim is to explain complex functionalities and to have the software checked in parts by the user.

In addition, prototyping approaches can be separated by application purposes.

  • Explorative Protoyping: The requirement profile of a software is clarified step by step by creating prototypes iteratively and quickly in a test environment. The functionalities are then refined to assess whether the software solves the assumed problem and covers a user need. In this context, demonstrators, rapid and paper prototyping are also mentioned. Demonstrators are used in the acquisition and early phases of a project to clarify and communicate abstract requirements and problems during development.
  • Experimental Protoyping: A design is created with the basic functions and checked with regard to its feasibility. The findings of this experiment or test are incorporated into the actual product. Laboratory samples, throw-away prototypes are often referred to here. These patterns should help to answer technical questions and to be able to check the feasibility of the project as such.
  • Evolutionary Protoyping The software is created successively. At every stage of development, feedback loops with users, developers and clients ensure that the end product meets the requirements profile. As a rule, a version of the software is always kept executable. This is also referred to as pilot systems. They already contain a large number of the intended functions and can be carefully checked by users.

The choice of a suitable model (vertical, horizontal) and an application purpose depends on many different factors in individual cases. The budget, the objective of the project and the actors involved (e.g. external agencies) form the framework for the orientation of prototyping. In practice, model and application purpose can be chosen in such a way that hybrid forms of the distinctions made above are created and individual aspects such as user feedback are particularly emphasized.

Significance for Usability[edit]

Prototyping is characterized above all by the fact that feedback loops are generated. Increasing attention is paid to communication, so that a transfer of information between developers, users and clients is made possible. If communication is focused on developers and users, it can also be assumed that the requirements profile best corresponds to what real users expect from software - an important prerequisite for the success of software.

While wireframes or website mockups focus on visual elements, prototyping focuses on interaction and usability testing. The software should be tested for usability. This works best when users are involved in the development process. In this way, errors are detected early and possible changes can be integrated without additional effort. Furthermore, such changes in software hide cost factors whose effects can be reduced with prototyping.

If users are involved, this means that developers also receive reliable data about the product and market potential. For example, to find out whether there is a need for the product at all. Especially with start-ups and still young business models, prototypes can facilitate decision making: Only if there is (or can be created) a need, it makes sense to think about a market launch.