Want to keep learning?

This content is taken from the Raspberry Pi Foundation & National Centre for Computing Education's online course, Teaching Physical Computing with Raspberry Pi and Python. Join the course to learn more.
Illustration of the analyse, design, build and test cycle. With images to represent each of the stages around the circle

The design process

In this step I will show you the design life cycle, as well as suggesting some questions you can use to follow the process. If you apply these questions to any computing project you are working on, they will help you navigate the creation process and create something you are proud of.

An iterative approach

Iterating is a key concept in a lot of areas of computing; in project-based learning it is especially important. The best projects are made through slow repetition, and getting it wrong is part of the process.

When you have decided on your project idea, the first thing to do is decompose it. This means breaking the project idea down into smaller problems that you can work on individually. Once you have finished one, you can move on to the next. Decomposing your project like this allows you to focus on smaller tasks without worrying about the larger complexities of the project as a whole. Trying to connect and code all your components at once can get overly complicated; taking them one by one makes it much simpler.

  • Take your project idea and break it down into small problems
  • Try to write everything down; leave no part of the process out
  • Make sure each problem is something you can create and test without relying on solving any other problems

Another cycle: analyse, design, build, and test

Once you have your list of problems, you need a way to tackle them. This is where another useful cycle comes in: analyse, design, build, and test.

  • Understand (analyse) the problem
  • Design a solution
  • Build the solution
  • Test it
  • Repeat

From now on, I will refer to this as the design life cycle. I will introduce you to the stages here, and go into more detail on each of them in the upcoming steps.

Illustration of the analyse, design, build and test cycle, with images to represent each of the stages around the circle

Understand the problem

The first step to solving anything is to try to understand the problem. If you have some background knowledge of the problem area, see if what you already know applies to the current problem. If the problem is a new one to you, the best place to start is by observing: watch the system you want to emulate, or look at how other devices or solutions approach the problem.

Design a solution

Once you feel you have a grasp of the problem, review the computing cycle and consider which components you need. It is easy to get overwhelmed by choices, so start with what you know, and do some research (for example, check the GPIO Zero documentation) for the parts where that won’t work. You have to accept that your designs might not be right the first time round, and this is a part of the process. It is better to start and have to rethink, than to get lost in overthinking your design and not start at all.

Image of a group designing a project, using post-it notes on a wall.

You can use these three tools to achieve almost anything in computing:

  • Storage
  • Comparisons
  • Logic

You can store things in variables, compare values, and use logic to react to the results those comparisons produce. If you apply these to the programs you write for your project, you can achieve almost any piece of functionality.

Build the solution

Next, you have to build your design. Taking your design from paper into reality will reveal holes in your thinking and your plans. If these are not critical failures that stop your device from functioning, leave them and make a note for the next iteration. Try to build your solution fully, if you can, before going back to the drawing board and addressing the issues.

Test the solution

The final stage of each cycle is to test your solution.

Image of a user watching a physical computing project - performing tests to ensure it works

You want to see if your plans solved the problem, and to note any issues that come up. This is the time to address things that came up during the build phase and adjust your plans accordingly. If possible, get someone else to have a look as well; some separation from the design process can allow them to be more objective about your solution.

Repeat

Now you start over again. Take the issues you found in your build and testing, break them into subproblems, and apply the life cycle to them as well. Good solutions are made piece by piece, and rarely in one stroke of genius.

Ready to go?

Before moving on to the next stage, you need to decompose your project into a list of requirements that your project has to achieve. This is the start of the analyse stage.

  • Post your project idea, along with your list of problems, in the comments section below.
  • Have a look at other learners’ lists; have they missed anything out? Is there anything in their design you hadn’t thought of?

Make sure to ask for help if you need it.

Share this article:

This article is from the free online course:

Teaching Physical Computing with Raspberry Pi and Python

Raspberry Pi Foundation