( transcript for https://www.imagix.com/apps/Source_Code_Visualization.mp4 ) Source Code Understanding through Visualization - Reverse Engineering C, C++ and Java [0:00] As a software engineer, you often find yourself working with software that you're not fully familiar with. Maybe you're new to the project. Maybe the code was someone else's. Maybe you're working with code that you yourself wrote, but that was a while ago. So how do you get the understanding you need to efficiently and accurately make enhancements and correct problems? Even though file editors have been enhanced with syntax coloring and search, simply reading code remains a very inefficent way to process all the information the code represents. Some editors have expanded on this by adding rudimentary graphical displays of calls trees and even class inheritance. But to really reap the benefits of a database of your reverse engineered code, instructive, comprehensive code visualization is necessary. Imagix 4D offers this through an extensive set of graphical displays that support examination and understanding of your code from the minutest detail up to the overall architecture. A high-level architectural view of your software is provided through Subsystem Architecture Diagrams. They reveal the layering of subsystems in your code as well as the dependencies between subsystems. And by displaying software metrics within the context of the subsystems, you're able to get a quick sense of which portions of your code are large, or complex, or unstable, or difficult to maintain. Imagix 4D's call trees provide quick insight into the calling hierarchy between functions in your code. While that's increasingly common, even among advanced file editors, what makes Imagix 4D's graphs so unique is the ability to track calls through function pointers. To include variable usage. While expanding and trimming the call trees to trace the specific parts of the control flow that you're interested in. For more detail, you can switch from the simpler call trees to more comprehensive sequence diagrams. Here, you're able to see the order that calls are made and variables are accessed. And expanding beyond traditional sequence diagrams, in Imagix 4D you can see the conditionality involved, the specific decisions that control whether function calls and variables accesses are reached. Data Flow diagrams present information about the statements relating 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 given variable's value at a specific line. Or follow the downstream impacts of that value. Generated by Imagix 4D's dataflow analysis engine, the Data Flows track variable dependencies across function boundaries and through parameter passing and return statements. Imagix 4D's class diagrams follow the full standard UML notation for displaying generalizations, aggregations and associations. But what makes them extremely useful for understanding the class design of real-world code is that you're able to control which classes and which class members to display, drilling in for more detail in areas that you're especially interested in. At the most granular level of detail, Imagix 4D's flow charts display the program logic for individual functions. As the complexity of the functions in your code increases, you can reach a point where understanding even individual functions benefits from visualization. Tightly linked to Imagix 4D's file editors, the flow charts display a function's internal control logic in layouts providing insight into both the function's logic and structure. Understanding your code is not easy. It takes thought, time and effort. But through advanced visualization, this all can become more efficient and more accurate. Download a copy of Imagix 4D and see what it reveals about your code.