I work as an Air Force defense contractor. I was assigned to the task of porting an OpenGL 3D application from VAX DecWindows to Linux X Windows. The government maintainer would add code as needed, but never delete anything. There was no SCM for version history. Using the various features of Understand, I was able to create a functioning prototype in 3 months and eliminated 90% of useless and unneeded code.
I was so impressed with Understand’s capabilities that I bought a single developer license for personal use on my home projects. If I’m willing to spend my own money for a software tool, you know I like it.
I have been a long time user (since 2001) of the Understand tools, starting with Understand for Ada and Understand for C++. I use the Understand package as an IDE for the Ada. It helps eliminate syntactical errors and many other problems before submitting the code to the actual compiler on another computer.
On an average week, I use the Understand tool about 30-35 hours per week.
We have used Understand for many years in important defense projects. We use it for the exact reason it was created, to “understand” the source code.
SciTools is hands-down the most responsive tool supplier that I’ve ever work with. They are open to improvement suggestions, and work hard to remove “friction” from Understand’s user experience. I very much appreciate SciTools model of regular, frequent (several times a month) incremental releases – I have had cases where a bug fix or new feature suggestion has been published in less than a week. Some other IDEs may surpass Understand in one feature area or another. But overall, as a professional software engineer, Understand is my first tool of choice.
The feature of language-aware parsing of my code to build a database of “entities” (variables, functions, files, etc.) is light-years ahead many other IDEs (which are limited to a mere textual search). The entity database is then used very effectively to present entity context, function calling trees, type of reference (read vs write, call vs called), relationships and dependencies between files, etc. This information is presented several different ways, including as textual trees and as graphic diagrams. This greatly enhances code navigation and browsing. Understand has many other features, such as search-and-replace, bookmarks, annotations, dashboards, differencing, syntax coloring, calling trees, file dependency diagrams, architectural structuring, and more. As a professional software engineer, Understand is my first tool of choice.
Understand gives me full overview of our code base and helps me analyze code when I do re-factoring and new implementation. It also helps me looking for bugs in code and show relationships between classes and method calls and how the code is tied together. I also use it as a learning tool when we get code from our partners to learn how their code are designed and structured. I have used Understand since 2000 and I can’t live without it.
As a climate scientist I work with many different atmospheric weather and climate models. Each model has hundreds of thousand to million+ lines of code written by many different contributors. There is no way to personally understand everything that happens within the model, so when developing new model components or debugging problems I frequently have to traverse through many levels of subroutines and search through many different variables. Scitool’s Understand makes this quick and efficient. I have been using Understand for about seven years and it has saved me weeks of time and assisted in fixing some very tricky issues in the models. It has more than paid back its cost in labor saved.
A large part of my career has been spent debugging and maintaining other people’s code and that means I spend a lot of time figuring out what a program actually did and how that was different from what it was supposed to do. These are two similar but conflicting ideas to hold in mind at the same time. Understand for C/C++ deals with that cognitive dissonance by helping me envision a program’s flow and structure and to figure out the changes necessary to fix the errors. It’s a very cool tool!
If it supports the language I am working in, Understand is the first thing I look at code with, and I continue to do so throughout the project. I have an IDE in one monitor and Understand in the other. It helps a programmer make sense of the code and understand its structure very quickly! Along the way you can easily make documentation of what you are seeing. I think it cuts development time in half. Add to that the ability to analyze code, which can help to find bugs as well, and the automated inspection with custom rules and the query language. It is an immense amount of power placed in the hands of a engineer. Its helping to advance the art of software engineering.
SciTools has the best tool and even better support – at some points in the past, I have been closer to them than to my colleagues in the office. And when they give 24 hour turn around to solve something causing pain in code analysis, it’s just magical.
Understand is one of the most well put together software development packages I’ve ever used. When trying to learn about a complex project, Understand will be where I turn first.
When I stumbled across an issue, your support team responded rapidly, with a fix out in days. I licensed Understand even before my trial was up, I was that impressed.
I work on a fair amount of older code, both open-source and proprietary. I have found Understand to be an indispensable tool for learning new (to me) code. What I find most useful are the graphs that help me understand the relationships between different components/objects of a given set of source files.
I would not be able to learn code as quickly as I can without the assistance of UNDERSTAND!
I have been using Understand for well over 15 years. Every place I have worked if they didn’t have Understand I introduced them to it, and if they did have Understand I said great – and generally found those people to really know what they were doing. It’s a great product, with great support, and one of my “must have” tools especially as a consultant coming into new and varied customer code bases.
I’ve found Understand to be invaluable in my work, not just for understanding code I have inherited, but for understanding the entire language! I was asked to update C++ code and only having experience in C, with limited exposure to C++, this was a difficult task. Fortunately, Understand provided the ability to browse class definitions, methods, and all sorts of other information that helped me not only get that particular task completed, but also quickly gain an understanding of a new programming language! That helped me be successful at my current job and also enabled me to obtain a much better position at a different company – something I would not have been able to do without the help from Understand for C++. Understand for C++ has made a difference, not just in my daily work, but in my career overall!
Understand is an invaluable tool we use during patent litigation when analyzing source code in support of determining whether systems do or do not fall within the scope of asserted patent claims.
When we started a major embedded C/C++ porting effort 10 years ago, we started using Understand so we could get a grasp of the whole source, and do refactoring. We have a very large source base and Understand lets us find things very quickly.
It’s a great product.
The SciTools support team has always been incredibly responsive to email requests; they’ve even followed up months after the fact to inform me that a feature I asked about had been released. The right-click context menus in Understand are so feature-rich that even a user completely unfamiliar with the program can quickly begin to analyze code very productively. Just the code navigation features of Understand alone are more than enough to justify its frequent use in our analysis; we haven’t even scratched the surface of its API.
Understand – A force for good in the never-ending fight against criminally written code.
(And Understand helps keep one’s own code on the straight and narrow!)
Not having to grep for information about a variable or function saves me a lot of time.
I really appreciate the product. It’s been a major help getting me familiar with new code, as well as trudging through the Android source code set. Makes Eclipse feel like vi when it comes to understanding code flow.
I’ve been using Understand for C/C++ for over 5 years, mostly for embedded C. I hesitate to use any other editor. Understand helps me be more productive because it makes it faster for me to get my head around what the code is doing. I also admire and appreciate the quick and friendly responsiveness any time I’ve needed to contact SciTools for any reason.
Understand, a simple tool that has become part of my daily routine. Its easy to use way of analyzing the code with the diagrams and navigational features for definition and declaration scores high on my list of tools for any code analysis. There have been instances where I have suggested other top modeling tool vendors in the market to incorporate the features of Understand as the Reverse engineering features.
In short, Great tool with Great Simplicity!!
The only thing that I can say is that I love your tool and fast support on any questions. You are AWESOME!
I use Understand on a regular basis as I’m involved in a very large, complex software project. Understand accelerates my understanding of large source code repositories that enables me to get work done in timely fashion. Wading through thousands of lines of code is a difficult and arduous task that was much more difficult before finding Understand. After using the product for a few months, I highly recommend it for anyone who needs to get an understanding of any software project, regardless of the size.
SciTools has increased my productivity and confidence to master the flow of various open source code in a short given timeline. I accelerates my analysis by identifying flaws and malicious code in the application with this companion. The great new feature, “Refactoring” which has much easier to have massive changed of the code. In addition, it helps us to roll out best practices quickly and efficiently to our development teams. It is the most user friendly and best static code analyzer that I have ever used. Thanksgiving for your hard works and ideas.
I just thought I’d let you know that Understand has been extremely valuable to me in my current project. Not only have I had to reverse-engineer a significant amount of code, I have had to convert a good portion of it from C to C++… and I’ve never programmed in C++ before! Being able to generate and review class diagrams, trace through call trees, and especially being able to simply right-click on an object and trace back through the definitions has been very useful. I think I would have been lost without this tool. It would have no doubt taken at least 2-3 times as much time to get through the code I have.
As a licensee, I often use Understand to perform a quick assessments of code snippets and Open software that’s being considered for use. As a consultant, I often use Understand to analyze the client’s legacy software or software project code-as is condition. This effort consumes minutes to hours where it might have required days or weeks without this valuable tool. And it provides useful relational and quantitative info that can be used to assess and plan efforts to develop better software.
Just installed the tool last night and ran it against legacy C code for a MicroChip PIC 18. Wow! Functionality in the code that I have trying to understand for 3 weeks is beautifully exposed in the control flow diagrams.