Finally, decisions! The real development!
Last time I published the Intro of the architecture. The main points from there were that we will be using making decisions:
- Emphasis on architecture
Let’s unfold it to the architecture constrains
- Should follow the Clean Architecture principles
- Should be modular and reusable
- Hardware details should go to the thin last layer
- Most of the development should be done platform-independent.
Talking about reusability, I want to use the movement system in my other projects, so let’s add also this:
- Movement logic should be easily detachable of the application logic - to be able to use it in other projects
And let’s not forget, it is for the cat, so let’s add also this constrains for the hardware:
- Motors must be quite
Now let’s decide on the scope
System Scope and Context
According to the arc42 system requires having two types of context to be defined in order to define the system scope:
- Business context. Describes interaction with the environment.
- Technical context. Describes technical interfaces
The business context is represented by a diagram with all counterparts interacting with the system. It is quite simple as the system is simple.
For the technical context, let’s divide the system in two main domains:
- Physical Transportation System
- Main Controller
These domains will all the software in two parts. Also, let’s outline the main components of each domain. To illustrate the context, let’s use a UML deployment diagram:
I used very general words to keep details to the end. But here I already made several detailed decisions.
- The Main Controller and the Transportation System are in communication through CAN. I will decide in the hi-level protocol later, but my other robot already uses CAN, so it follows my reusability strategy
- I specified all the most obvious components. I’ve separated Application logic of Driver Logics already, so it will be much simpler to prepare the next steps. Maybe too early, but we will see…
Next time we will prepare a Building Block view, designing the full system decomposition.