
|
Visualization and dependency analysis of source code
|
Source Code Analysis
|
|
Imagix 4D helps software developers comprehend complex or legacy C, C++ and Java software. By using Imagix 4D to reverse engineer and analyze your source code, you're able to speed your development, enhancement, reuse, and testing. Eliminate bugs due to faulty understanding. Get new hires on board faster. Spend time engineering, not reading through code.
A comprehensive source code analysis tool, Imagix 4D enables you to rapidly check or systematically study your software on any level -- from its high level architecture to the details of its build, class and function dependencies. You can visually explore a wide range of aspects about your software - control structures, data usage, and inheritance. All based on Imagix 4D's precise static analysis of your source code.
You're able to find and focus on the relevant portions of your software through Imagix 4D's querying capabilities. Automated analysis, database lookups, and graphical querying all sift through the mountains of data inherent in your source code so you examine the structural and dependency info you're interested in. Quickly and reliably.
| |
Watch Demo >>
|
- Data Precision
- Drill Down
- Abstraction
- Data Flow Analysis
- Complementary Views
- Automated Analysis
| |
|
Underneath Imagix 4D's powerful software visualization and analysis functionality is a precise, comprehensive database, generated through a full semantic analysis of your source code.
This precision is achieved in part through the use of compiler configuration files. These enable Imagix 4D's source analyzer to parse your code the same way your specific compiler does, supporting the same language extensions and keywords, and using the same system header files.
|
| |
Full language support includes:
- Conditional compilation directives
- Class templates and namespaces
- Function pointers
- Macro substitutions
Configuration files support:
- Microsoft Visual Studio
- GNU gcc compiler varients
- Other native compilers
- Embedded cross-compilers
- Multitasking systems
|
|
| |
|
Imagix 4D provides an extensive range of graphical view types. 15 standard view types cover aspects of your software ranging from class inheritance to file dependencies to variable usage. And you can easily supplement these with view types of your own.
You can begin your source code analysis with simple high level views and then show more and more detail with a few clicks. Drilling down through increasingly granular views provides more detailed understanding of specific portions of the software.
|
| |
High level displays include:
- UML Class Diagrams
- Class inheritance and use views
- Namespace and Classes view
- File Include Hierarchy view
- Inter-task variable flow report
Low level displays include:
- Control Flow Graph showing call sequence and conditionality
- Flow Chart showing intra-function program logic
- Variable sets and reads views
|
|
| |
|
A corollary of drill down, abstraction is used to represent information at a less granular level than it actually occurs in the software. For example, function calls can be summarized at the class level, so that ClassA::FunctionA calling ClassB::FunctionB can be represented as ClassA calling ClassB.
These abstractions can be viewed at the file, class and user-defined group levels, leading to faster, more complete high level understanding of your software's inherent architecture. These abstractions also serve as starting points for drilling down for more detail.
|
| |
Abstraction mechanisms include:
- User defined abstraction levels through Grouping
Automated file, class and group abstractions:
- Function calls
- Variable sets and reads
- Datatype usage
Standard high level views:
- File Calls view
- Class Calls view
- Class HasType view
|
|
| |
|
Complementing Imagix 4D's extensive set of displays for control flow analysis, the Calculation Trees present information about the assignments leading to the current value of a variable. You're able to examine all of the initializations, sets and reads, of any variable, that contribute to a specific variable's value.
Automatically generated from Imagix 4D's comprehensive database by the data flow engine, the calculation trees track assignment dependencies across function boundaries and through parameter passing.
|
| |
Calculation Tree displays:
- Assignment Flow graphically displaying hierarchy of all assignments
- Assignment List listing all assignments, including full line of source
- Variable Dependencies graphically showing hierarchy of variables and parameters involved
- Variable Table organizing individual assignments by assigned variable
|
|
| |
|
Distributing information between different view types, and enabling multiple view types to be displayed side by side, leverages intuitive individual displays. For example, one graph might show a set of files and the abstracted function calls between them. Next to that, for more detail, might be a UML File Diagram showing all the interdependencies between the individual members of two specific files.
The information and navigation available in the Graph windows, Flow Charts and Calculation Trees is further supplemented by an extensive and integrated set of complementary displays.
|
| |
Addition displays include:
- Project summary
- File, class, function and variable level metrics tools
- File, namespace and class indices
- Symbol index
- Graph window symbol list
- Symbol usage table
- Database symbol searching
- Project-wide grep string searching
- Tightly integrated file editors
|
|
| |
|
What makes Imagix 4D's software visualization especially powerful is the ability to focus the displays on the information of interest. With database lookups, graphical querying and drill down capabilities, you're able to identify and explore the relevant portions of your source code.
And with the Analyze feature, you're able to direct Imagix 4D to do much of the analysis for you. You can quickly examine important interfaces and automatically track down critical dependencies.
|
| |
Automated analyses include:
- Paths between two functions
- Paths for function setting or reading variable
- Common descendants or ancestors of two functions
- Functions similar to function
- File or class function interfaces
- File or class variable interfaces
- Internal calling hierarchy of file or class
- Include paths between two files
|
|
|