What is Scitools Understand?

Introduction to this blog and to Scitools Understand software tool.

I have been a software developer for 20+ years. I have touched upon just about everything.  From ASIC design to web development, I have run the gamut of technology: firmware, device drivers, PCB design, web backends, web front ends.  But my core competency remains software development.  Having started several companies where the product was the software (licensing business), the software had to be well written, easy to debug and maintain, and of course functional.  With that type of business, you learn how to build good development processes, and quality assurance practices.

I have used a number of software development tools: Visual Studio, Visual Code, Slickedit, Eclipse, Source Insight, Code::Blocks, Code Sonar, Klokwork. But in terms of code browsing, code visualization, code metrics, and custom scripting capabilities, there is only one tool that beats them all: SciTools Understand.

I have been using Understand for about 11 years. At that time I had just joined a new company and was brought in to develop some MP3 player software. The source code was over 400,000 lines of code, and well, I felt a bit overwhelmed to say the least. So I went about looking for a source code visualization tool so I could see the relationship between files, classes, etc. In my search, I came across Scitools Understand.

The tool has a lot of features, from code visualization graphs like this callby graphic. In this example, I selected a function in the code, right clicked and generated this callby graph to see what functions call the function of interest.

I can just as easily generate a view of all the functions nvme_process_completion calls

This is just the tip of the iceberg. There are so many useful features in this tool, its impossible to list them all hear. So the goal of this blog is to simply show some of the cool features of the tool to help others get the most out of the software.

In particular, there is a scripting feature that enables you to write scripts which access the code database and extract information. I’ve built a number of custom scripts which did everything from find portions of code which utilized open source functions to find all functions which utilized non portable code (like built in assembly, or platform specific APIs).

Although Scitools documents the scripting API really well, for someone new to the tool, it can be a bit daunting at first. So I plan to provide some examples with detailed explanations so that others can benefit.