Cloudogu Logo

Hello, we are Cloudogu!

Experts in Software Lifecycle Management and process auto­mation, supporter of open source soft­ware and developer of the Cloudogu EcoSystem.

featured image Software Prototyping

03/04/2021 by Daniel Huchthausen in Methods

Software Prototyping

Prototyping is a great way to get an impression of how a product could look like. For sophisticated prototypes you can use e.g. 3D printers in manufacturing or write code in software development. For less sophisticated prototypes there are also simpler and faster approaches. We want to give a short introduction into software prototyping, because it can help you to develop better software, faster (but of course only if done right).

Pros and Cons of Prototyping

When you ask people about software prototypes you either get answers like “Oh that’s a waste of time and money!” or “Yes, prototypes, they saved us a lot of trouble.” As always, prototypes aren’t a cure for all problems and come with pros and cons.

Pros Cons
Early customer/user involvement Risk of spending too much effort in prototypes
Better understanding of the system by the user before the development starts Risk of insufficient requirement analysis
Reduced time and cost because extensive defects can be detected earlier Risk of confusion between prototypes and the actual system by customers/users
Confusing or difficult functions can be identified easily and therefore addressed early Risk that prototypes will be used for the actual system, even if not technically feasible

The purpose of prototypes is the evaluation of certain aspects of a software product, e.g. UI design, architecture or functionality. For that, an incomplete version of the software program can be created to verify a concept or idea. A prototype omits all aspects of the software that aren’t required. This reduces complexity and effort. Prototypes help you to …

  • answer questions: There are always a lot of questions about a product. The more important the questions are, the earlier they should be answered, because the answer might influence following decisions.
  • validate assumptions: You always have to make assumptions. If they have a big impact on the risk of a project, a prototype might be a good way to reduce risks by validating your assumptions.
  • compare alternatives: Create different prototypes to compare ideas about the realization.
  • fail early and cheaply: A prototype allows you to determine the feasibility of an idea in an early stage and therefore with low costs.
  • visualize ideas: Creating a visual prototype allows you to talk about something concrete instead of discussing ideas theoretically. That makes it easier and improves the quality of feedback.

Types of Prototypes

Prototypes can be used as a proof of concept or to gather feedback about the product. Proof of concept prototypes are often focused on the backend of an application, e.g. you want to find a way to handle large amounts of data at a reasonable speed. Feedback prototypes often focus on the UI of the application.

Especially for feedback prototypes it makes a huge difference how close to the real product a prototype is supposed to be. The simplest kind of prototypes, pen and paper can be done within a few minutes. These prototypes visualize ideas and create a common baseline so that the idea can be discussed. The next step are wireframe prototypes, which are a simplified version of an UI. They can be created with pen and paper or with special software tools. The advantage of these prototypes is, that they can visualize more complex ideas and whole processes. The highest level of prototypes are coded applications that omit non-essential aspects of the application. These prototypes are already very close to the final product and can therefore provide very concrete feedback. Their downside is, that their development can take quite long and that people might mistake the prototype for the real product.

Pitfalls for Prototypes

If the prototype looks very much like the actual product, users should be informed that they are dealing with a prototype and that some features might not be working. If they are not informed, there is a huge risk of confusion and disappointment, which could ultimately lead to a rejection of the idea. Also, it is important to inform stakeholders about the specific weaknesses of the prototype (security, architecture, functionality, …), because they should be aware that the prototype is not made for usage in production. If those weaknesses are not addressed, there is a risk that it will be demanded to take the prototype to production.

Once a prototype has served its purpose, you should throw it away and start to develop the “real” product or to develop another prototype. Generally, a prototype should not be evolved into the final product, because during the development of the prototype fundamentals of writing high quality applications are neglected, because the aim is to get a quick result you don’t spend much time on “irrelevant” topics like security, scalability, code quality or architecture. The real product on the other hand should be well designed.

Development of a Prototype

Before the develop a prototype starts, its ideal extend should always be evaluated. A prototype should always be as small as possible and just big enough to evaluate the idea. These questions help to decide how much functionality and detail the prototype needs to cover:

  • What is the prototype going to be used for?
  • How complex is the process?
  • How complex is the user interface?
  • How will the product owner best understand the concept?

Once the answers to the questions are clear, the development of prototypes can be started. Normally it is divided into four steps:

  1. Identification of basic product requirements.
  2. Development of the initial prototype covering the requirements.
  3. Gathering feedback about the prototype.
  4. Revising and enhancing the prototype based on the feedback

The last two steps can be repeated until the customers’ expectations are met or until other constrains like time, budget or technical feasibility urge the stop of the development.

Tools for Prototyping

For UI-prototypes it is the goal to get an idea of what the UI should look like without the need to develop a fully functional UI right away. Helpful tools are:

  • Wireframing tools: Wireframing application like Pencil or Balsamiq allow you to build an interactive dummy of a website or application. These dummies don't need any coding and they are usually obviously a prototype, which preempts the problem of people not knowing that they are interacting with a prototype.
  • Text generators: Text generators like the Lorem Ipsum generator allow you to quickly create content. The Lorem Ipsum generator allows you to generate just the amount of text that you need.
  • Pen and Paper: When it comes to visualizing UI and design ideas in a very early phase it can be helpful to use pen and paper, because no software application is as fast and simple as a pen and paper prototype. This might not seem very sophisticated these days but it is still a very efficient method.
  • Data generator: When developing a sophisticated prototype that shows data in the UI, it can be very helpful to develop a data generator that fills the database of the prototype. The development might take some time, but in the long run it usually pays off, because the data generator can be reused. If available a dump of data from production could also be used.
  • UI frameworks: Modern frameworks like Material-UI or Foundation allow you to quickly develop a UI.

Conclusion

Prototypes are a great way to gather valuable feedback about a product idea early on and thus to increase the chance of success for the product. To successfully use prototypes, it is important to know exactly what they are supposed to prove and to be aware that there are different kinds of prototypes with different strengths and weaknesses.


Daniel Huchthausen
Daniel Huchthausen

- Consultant -

When he is not exploring the wilderness, Daniel keeps himself busy with topics such as quality assurance, testing and PM methods.