I never got the hang of UML: overly complicated, hard to understand, too close to code. Hence, I was skeptical about C4 diagrams when I… Read More »Visualising the Architecture of Qt Embedded Systems: Context and Container Diagrams
CMake uses Graphviz to generate dependency graphs between the targets of a CMake project like libraries and executables. The graphs help us get an idea of the software architecture and identify the dependency hot spots.Read More »Visualising Module Dependencies with CMake and Graphviz
Creating an architecture means answering many questions about the ecosystem, in which the Qt embedded system operates. While the questions are very similar for all Qt embedded systems, the answers and their priorities differ. So, you should be able to transfer the questions and answers from my running example, a harvester terminal, to your system.Read More »My Talk “A Successful Architecture for Qt Embedded Systems” at Qt Day Italy 2021
Our quest for a successful architecture of a harvester terminal continues. In this episode, we discuss when a system with a single application is good enough and when a system with multiple applications and a window manager is the better choice. Sometimes, a single-application system with a window manager is just the right choice.Read More »Architecture of Qt Embedded Systems: Single vs. Multiple GUI Applications
Which system-on-chip is best suited for your Qt embedded system? Should you build a custom Linux system with Yocto, use a container OS or a desktop Linux? Should you use Qt Commercial or Qt LGPLv3? How will the system be updated? What are the operating conditions of the system? How does the system communicate with sensors, ECUs and the cloud?
This is only a small selection of the 50+ questions in this post. You best tackle these questions early in the project. Fixing wrong decisions becomes exponentially harder with the duration of the project. Your decisions can make or break a project.Read More »Architecture of Qt Embedded Systems: Getting Started
“Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system.” John Ousterhout, The Philosophy… Read More »Book Review: “A Philosophy of Software Design” by John Ousterhout
A fairly common anti-pattern found in Qt applications is to derive a class MyApplication from QApplication and to have it hand out pointers to a… Read More »Breaking Dependency Cycles in Qt Applications