As you start working on more complex projects, it's a good idea to have a high-level understanding of what we are trying to achieve with what we are making and, subsequently, break it down into sizable modules that you can work on.
This would start with the Problem Statement or Problem Definition that outlines the problem that we are going to solve.
This would be followed with the Solution, which gives a brief outline of the functionality required to solve the problem.
Let's have a look at these concepts with respect to our project.
Problem statement: Unauthorized people are messing with your things.
Solution: Build a safe, which can be opened with a key. In case the safe is opened without a key, an alarm goes off, which will alert you of the intruder!
Simple enough, isn't it?
Let's break this solution of ours into blocks so that we can visualize this project more clearly:
In the preceding diagram, you can see all the different parts of the project that work together to solve...