Imagix 4D User Guide

Delta Analysis

While developing software, your focus is usually on the current, latest version or branch of your code. Much of Imagix 4D's functionality supports precisely this - understanding, analyzing, checking and documenting that single latest variant.

But software doesn't instantly appear, and software development is a process. Versions evolve from predecessors. Branches expand the software to address new environments and different applications. Customizations lead to an excess of software snapshots. There are times when analyzing the differences between these versions of the code becomes important. The resulting knowledge can be essential to insure that latest changes conform with design intentions, to confirm functionality, to identify missing updates, to support code reviews, and to focus test activities.

Delta Analysis identifies differences between versions of your software at a structural level, not as mere file diffs. Identifying symbols unique to one version or the other, it also detects any changes in the dependencies and usage of symbols that are common to both.

Whether you're looking at different source code versions managed by a source control system, seperate sets of source files kept in parallel directory structures, or the same exact code compiled with different compile options, Imagix 4D's Delta Analysis functionality enables you to understand the impact of the source code differences at the level they are meaningful - in the control flow and overall architecture of your software.

Data Model

The structural analysis performed by Delta Analysis applies that portion of Imagix 4D's overall data model most focused on control flow hierarchy and architecture. The analysis indicates changes in the existence of functions and variables, as well as differences in the calls, overrides, reads and sets relationships between them. Consistent with the rest of Imagix 4D, the symbols are tracked within their container hierarchy of classes, namespaces, packages, files and ultimately directories.

Revision Management

Delta Analysis involves structurally comparing your current project with some alternate. If you actively manage the use of Delta Analysis, you can store project revisions at any point, and use them later as the alternate. A second approach, which is always available, is to use the current version of another project as the alternate.

The first approach would make it easy to track the evolution of the source code, and the later approach might be used to reflect loading code from substitute directories or using different preprocessor settings. But there is no limitation on which approach you use or what a particular revision represents.

Analyzing Structural Differences

The tools for studying changes in the control flow hierarchy of your software extend parts of the visualization and analysis functionality already existing in Imagix 4D. These range from comparisons of high level architectures, to more detailed reports and graphical analysis of changes in control flow, and finally to inspection of the underlying source code differences themselves.

Delta Graphs leverage Imagix 4D's graphical analysis capabilities to compare the current and revision projects. Delta Analysis equivalents of function and variable related graph views focus on the structural changes. These views range from the highest level Subsystem Architecture Diagrams down to the low level Function Calls with Variables view.

Delta Reports are available for systematically reviewing version changes. Like the Delta Graphs, they span levels of detail. The project-wide Delta Analysis Summary identifies, on a file-by-file basis, functions and variables whose existence, use or dependencies changed between the revision and the current project. A more detailed Delta Analysis report is available at the file or class level. Available through the context sensitive menu, the report indicates the specific changes in usage and dependencies. The reports are a particularly useful input for activities that require structured, methodical approaches, such as source code reviews or test case development and refinement.

Diff Tools provide the ability to compare the current source code with that of the revision. While most of Delta Analysis focuses on structure level diffs, there are times when it's useful to examine the differences in the source code itself.

These Delta Analysis displays are operated just like the rest of Imagix 4D's tools, with which they are fully integrated. For example, when a revision for a project is loaded, the right mouse button context sensitive menu includes the ability to focus Delta Graphs, Reports and Diff Tools just like the normal Imagix 4D tools. And functionality like the Analyzer is extended to include analysis queries specific for Delta Analysis.