A 20-Year Partnership with Understand: Transforming Code into Clarity
Johannes Lang, an Embedded Software Engineer at R-Stahl Germany, reflects on his two-decade journey with Understand, illustrating how the tool revolutionized his team’s approach to software development.
My journey into the world of code began many years ago. After two years developing embedded hardware, I transitioned to software. Once I had gained some experience, I was tasked with creating our coding guidelines – a seemingly trivial task the other, more “seasoned” developers were too busy to handle.
Unlike my colleagues, who firmly believed that only code they wrote themselves could be good, correct, and safe, I held a different view. I was convinced that the challenges of writing stable, error-free code were universal. I turned to the internet for guidance.
It didn’t take long to find a wealth of coding guidelines online. To my surprise, every idea I had independently conceived was already documented, along with many others I’d never considered. This was my first encounter with coding standards like MISRA and Hersteller Initiative Software (HIS).
The best part? I could now tell my colleagues that we were using industry-accepted rules, not my own inventions. While this made my job slightly easier, it was far from over. Introducing coding guidelines often feels like trying to “limit” the creativity of one’s colleagues.
But even perfect guidelines are useless if nobody enforces them. So, my internet search continued, this time for tools to aid in that task.
Somehow, I stumbled upon the website of a small company called SciTools and their product “Understand” The site featured a photo of just three people: Ken, Kevin, and Heidi. Compared to other software vendors, they seemed quite small.
Intrigued by the offer of a free demo, I requested one. That was the start of my journey, over twenty years ago.
The demo wasn’t just full-featured; it offered capabilities I had never dared to imagine.
The initial setup was surprisingly intuitive and hassle-free. Adding project files, include directories, and macros was simple. Analysis was fast, and I could immediately dive into the various graphs.
The features were straightforward to use, but the results were remarkable.
Want a control flow diagram of your favorite function? A right-click and a selection is all it takes. Too big? Show source code for decisions only, or remove it entirely with a parameter tweak.
Need to understand function relationships? The “Call Graphs” diagram reveals the actual sequence of function calls, not your imagined or outdated version. Parameters allow for customization.
Graphs are interactive; double-clicking any entity jumps to the corresponding source code line in the editor for easy modifications.
Why manually draw flowcharts or dependency charts when the code itself can generate them, always up-to-date? This saved countless discussions about balancing documentation updates with new feature development.
Need to find all references to an object or variable? The “Information Browser” reveals them all, even across hundreds of lines of code.
Want a quick overview of a function? The “Information Browser” shows all its dependencies. Use it on a variable, and you’ll see all its references.
Faced with a massive codebase? Use metrics like the Metrics Treemap to quickly identify complex functions and files.
We not only analyzed our projects with Understand but also used it as our primary editor, sometimes just for compiling or debugging.
While there were occasional hiccups, SciTools’ support was outstanding. A quick email to their American support team, even from the company president, Ken Nelson, often led to a same-day response and a prompt solution.
Convincing colleagues to try the tool was easy, and we eventually purchased licenses.
Understand offered comprehensive checks for various coding standards, including MISRA-C. While other code checkers existed, each with its strengths and weaknesses, Understand’s additional features made it a valuable all-in-one tool.
In essence, Understand was the perfect Swiss Army knife, helping us navigate the complex world of code for the past two decades.
Having wonderful people like Johannes share how Understand has improved their lives is one of the best parts of working at SciTools. How has Understand helped you in your coding journey? We’d love to hear about it!