Visualization method and system for dynamically displaying...

Data processing: software development – installation – and managem – Software program development tool – Translation of code

Reexamination Certificate

Rate now

  [ 0.00 ] – not rated yet Voters 0   Comments 0

Details

C717S152000, C717S152000

Reexamination Certificate

active

06226787

ABSTRACT:

TECHNICAL FIELD
The invention relates generally to methods and systems for identifying operations of a computer program and more particularly to providing detailed visualization of the run-time behavior of a computer program.
BACKGROUND ART
As the complexity of computer programs continues to increase, the benefits of software development tools are amplified. The interactions among operations within a computer program are not apparent to a developer during execution of the program. Typically, when a program stops crashing during testing, it is assumed that the program will run as expected. However, the level of confidence is typically not high, since a program cannot be tested in all possible environments in which the program may be run. For example, conflicts may occur as a result of the loading of two unrelated programs onto a computer system.
One available software development tool is referred to as a compiler. A compiler is a program that converts another program written in a high-level language into machine code or assembly language. A compiler is described in U.S. Pat. No. 5,428,793 to Odnert et al., which is assigned to the assignee of the present invention. The compiler of Odnert et al. is designed to produce a separate summary file for each source code file that is introduced to the compiler. A program analyzer then builds a single program call graph from all of the summary files. The graph consists of a set of nodes, each representing a procedure. The nodes are interconnected by directional edges that represent calls from one procedure to another procedure. The program analyzer also identifies “webs,” which link classes of definitions and uses of a variable. Thus, a web is a collection of program call graph nodes. An optimizer may then be used to increase the efficiency of the program.
Another development tool is an interpreter. The interpreter is similar to the compiler, but includes an execution step. First, the source code of a computer program of interest is converted into machine code or assembly language. A parser then forms a hierarchy that reflects the program's logic. A type checker may be used to identify programming errors. Finally, the program is executed. For example, the interpreter may identify commands to form a sequence of binary machine instructions that a computer system executes until the program is completed.
Yet another available tool is a debugger. The debugger may be used to monitor software as it is executed. Debuggers typically allow a degree of post-mortem visualization of the state of a malfunctioning program at a breakpoint. Thus, there is a limited portrayal of program execution.
A traditional method used by programmers to reduce the complexity of program design is to “encapsulate” segments of source code in blocks having one point of entry and one or more points of exit. Each block may be considered to be a black box that needs to be considered only if there is a malfunction. The black boxes then become building blocks for complex programs. Programmers may work in teams to manage the complexity of administering growing programs. That is, a complex program may be divided into functional parts in order to minimize the interdependencies among functions and to assign each function to a different individual or group of individuals. This solution is simple and elegant, but in practice it is not always viable. Moreover, minimizing interdependencies among different parts of programs may reduce complexity, but often at a sacrifice of performance. That is, there is typically a tradeoff between complexity and performance.
Program visualization may also be used to manage complexity. As previously noted with respect to the Odnert et al. patent, a software program may be viewed as a graph of interconnected nodes, typically having a hierarchical structure. Each block of code may be identified as one of the nodes of the graph. Consequently, the nodes represent methods, data accesses, and other events. Software is dynamic in nature. During run-time, a “thread” of execution traverses the graph. Each node is a potential fork for the execution thread. The description of the graph of a program is a static expression of the paths that threads take. However, the control of a path of a thread usually depends upon external events, such as data dependencies. As a result, such a graph may include a complex of thread paths, if the graphed program is sophisticated.
What is needed is a method and system for increasing the level of visualization of the internal structure of a program. What is further needed is such a method and system which provide run-time displays of operations of a computer program or programs of interest.
SUMMARY OF THE INVENTION
A method and system for visualizing the structure and operations of a computer program include generating a representation of the program as a visual display of nodes and include manipulating the visual display in real time when the program is executed. In the preferred embodiment, the representation is a graph and the nodes are associated with executable events, such as those of a block of source code. The nodes include methods that are executable during a run-time of the computer program. As the program is run, the visual display of the graph is manipulated to indicate the accessed blocks at run time. In the preferred embodiment, threads of execution are indicated by forming traces that link nodes which are representative of the sequentially occurring events.
In a compiler mode, the system and method parse instructions written in computer language, check for syntactic and semantic errors, and build an internal representation of the program. Also in this compiler mode, the system and method either augment the source code with stubs that enable communication with a run-time visualizer or generate a second version of the source code that is suitable for reading by an engine that provides static visualization.
In a run-time mode, the system and method display the state of the execution of the program by indicating active threads and active nodes of the graph. In the embodiment in which the compiler mode includes forming stubs to augment the source code, the stubs uniquely identify the state of the program. For example, each executable event within the program may be uniquely associated with a stub that forms a message to the run-time visualizer, so that a line in a program may simultaneously trigger an operation by a central processing unit (CPU) and trigger transmission of a message to the run-time visualizer. As the messages are received, the visualizer updates the display of active execution threads and active nodes.
The updates of the execution threads visually display each subsequent event that logically follows a preceding event in the execution of the computer program. As previously noted, this may be achieved by forming a trace from a first node that is associated with the preceding event to a second node associated with the subsequent event. The traces are visually displayed on a computer monitor or the equivalent until the execution thread is no longer active. However, the system and method preferably enable a user to select between (a) limiting display of execution threads to active threads and (b) maintaining displays of execution threads following completions of executions of logical sequences represented by the threads. Also in the preferred embodiment, the system and method enable a tracking mode that includes recording each event that is executed within a specified time period. This recording capability supports playback, rewind and fast forward direct access to any recorded event. In the most preferred embodiment, the event recorder shows a textual representation of the events, as well as a two-dimensional graph which is identical to the graph used in the original run-time execution.
The system and method preferably include other features that facilitate perception of the interdependencies of the computer program by establishing an interactive relationship between the system and the computer program.

LandOfFree

Say what you really think

Search LandOfFree.com for the USA inventors and patents. Rate them and share your experience with other people.

Rating

Visualization method and system for dynamically displaying... does not yet have a rating. At this time, there are no reviews or comments for this patent.

If you have personal experience with Visualization method and system for dynamically displaying..., we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and Visualization method and system for dynamically displaying... will most certainly appreciate the feedback.

Rate now

     

Profile ID: LFUS-PAI-O-2457505

  Search
All data on this website is collected from public sources. Our data reflects the most accurate information available at the time of publication.