Back to EveryPatent.com
United States Patent |
5,297,248
|
Clark
|
March 22, 1994
|
Multi-color animation of computer program execution
Abstract
A method for displaying statements of a computer program during an
animation of the program's execution, the display using multiple colors to
identify statements based on their respective frequency of execution, is
disclosed. As a program statement becomes the current executed statement
during the animation, the statement's frequency of execution is calculated
as the number of times the statement has been executed so far during the
animation, divided by the total number of statement executions throughout
the animation. A display color is assigned based on whether the
statement's execution frequency has reached one of two or more thresholds.
The multi-hued display of program statements based on thresholds of
execution frequency assists the programmer in understanding the operation
of the program.
Inventors:
|
Clark; Andrew L. (San Jose, CA)
|
Assignee:
|
International Business Machines Corporation (Armonk, NY)
|
Appl. No.:
|
957747 |
Filed:
|
October 7, 1992 |
Current U.S. Class: |
345/440 |
Intern'l Class: |
G06F 015/62 |
Field of Search: |
371/19
395/155,159-161,600,700
364/DIG. 1
|
References Cited
U.S. Patent Documents
4080650 | Mar., 1978 | Beckett | 364/200.
|
4730315 | Mar., 1988 | Saito et al. | 371/19.
|
4736321 | Apr., 1988 | Brown et al. | 364/300.
|
4821220 | Apr., 1989 | Duisberg | 364/578.
|
4872167 | Oct., 1989 | Maezawa et al. | 371/19.
|
4885717 | Dec., 1989 | Beck et al. | 364/900.
|
5146594 | Sep., 1992 | Iitsuka | 364/DIG.
|
Other References
Websters New Work Dictionary-p. 94, 1986.
"IBM Process Automation for CASE" brochure, 1987.
|
Primary Examiner: Harkcom; Gary V.
Assistant Examiner: Jankus; Almis
Attorney, Agent or Firm: Garnett; Pryor A., Knight; G. Marlin
Parent Case Text
This application is a continuation of application Ser. No. 07/546,056 filed
Jun. 28, 1990 now abandoned.
Claims
I claim:
1. An improved method for displaying on a computer display the execution
sequence of a computer program as recorded in a set of trace statements,
the improvement comprising the steps of:
(a) determining a total statement execution count (total count) using the
set of trace statements; and
(b) sequentially processing the set of trace statements in a forward
direction determining a current statement and for each current statement
performing the steps of:
(i) incrementing a count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the current statement on the
display in a selected color based on the execution frequency by
determining a first and second threshold frequency, the second threshold
frequency being greater than the first threshold frequency, selecting a
first color if the execution frequency is less than the first threshold
frequency, selecting a second color if the execution frequency is greater
than or equal to the first threshold frequency and less than the second
threshold frequency, and selecting a third color if the execution
frequency is greater than or equal to the second threshold frequency.
2. The method of claim 1, wherein the data representative of the current
statement is in source code format.
3. The method of claim 1 further comprising the steps of:
sequentially processing the set of trace statements in a backward time
direction determining a current statement and for each current statement
performing the steps of:
(i) decrementing the count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the current statement on the
display in a selected color based on the execution frequency.
4. In a computerized data processing system, having means for recording a
set of trace statements, the improvement comprising:
(a) means for determining a total statement execution count (total count)
using the set of trace statements; and
(b) means for sequentially processing the set of trace statements in a
forward direction determining a current statement and performing for each
current statement the steps of:
(i) incrementing a count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the current statement on the
display in a selected color based on the execution frequency;
(c) means for determining a first and second threshold frequency, the
second threshold frequency being greater than the first threshold
frequency;
(d) means for selecting a first color if the execution frequency is less
than the first threshold frequency;
(e) means for selecting a second color if the execution frequency is
greater than or equal to the first threshold and less than the second
threshold frequency; and
(f) means for selecting a third color if the execution frequency is greater
than or equal to the second threshold frequency.
5. The improvement of claim 4, wherein the data representative of the
current statement is in source code format.
6. The improvement of claim 4 further comprising:
means for sequentially processing the set of trace statements in a backward
time direction determining a current statement and for each current
statement performing the steps of:
(i) decrementing the count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the current statement on the
display in a selected color based on the execution frequency.
7. A method for displaying on a computer display the execution sequence in
both a forward and backward time direction of a computer program as
recorded in a set of trace statements, the method comprising the steps of:
(a) determining a total statement execution count (total count) using the
set of trace statements; and
(b) sequentially processing the set of trace statements in a forward
direction determining a current statement and for each current statement
performing the steps of:
(i) incrementing a count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the source code for the current
statement on the display in a selected color based on the execution
frequency by determining a first and second threshold frequency, the
second threshold frequency being greater than the first threshold
frequency, selecting a first color if the execution frequency is less than
the first threshold frequency, selecting a second color if the execution
frequency is greater than or equal to the first threshold frequency and
less than the second threshold frequency, and selecting a third color if
the execution frequency is greater than or equal to the second threshold
frequency; and
(c) sequentially processing the set of trace statements in a backward time
direction determining a current statement and for each current statement
performing the steps of:
(i) decrementing the count variable associated with the current statement;
(ii) calculating an execution frequency by dividing the associated count
variable by the total count; and
(iii) displaying data representative of the source code for the current
statement on the display in a selected color based on the execution
frequency by determining a first and second threshold frequency, the
second threshold frequency being greater than the first threshold
frequency, selecting a first color if the execution frequency is less than
the first threshold frequency, selecting a second color if the execution
frequency is greater than or equal to the first threshold frequency and
less than the second threshold frequency, and selecting a third color if
the execution frequency is greater than or equal to the second threshold
frequency.
Description
BACKGROUND OF THE INVENTION
1. Technical Field
This invention relates to computer programming, and more particularly to
displaying an animation of a computer program's execution.
2. Description of the Prior Art
A major challenge facing software testers is that of understanding the
effect that test data has on a subject program. Techniques such as program
animation bridge the gulf between the abstractness of test data and the
idiomatic logic of an application under test, greatly enhancing the
programmer's understanding of his or her program's operation. The
programmer can then use this understanding to change the program's design
to improve its performance.
Animation graphically displays the effect of executing one or more test
cases for a computer program. The prior art in program animation may be
categorized into two general areas: interpretive animation including
SMALLTALK, ACTOR, etc., and executive animation such as in IBM's INSPECT
FOR PL/I AND C/370 and PLITEST products which animate in "real time."
An interpretive animator uses an execution trace of a previously execution
of the program as the source of its information about the program's
execution. Interpretive animators are in control at all times, making
possible such functions as reverse execution and path tracing. Duisberg,
U.S. Pat. No. 4,821,220, entitled "System for Animating Program Operation
and Displaying Time-based Relationships," discloses an interpretive-type
animator for software objects. Duisberg's system uses time-based triggers
to control a replay of an execution. In operation, the system records the
original execution, saving time stamps at critical moments during the
execution. Later, during replay, these time stamps are used to regulate
and characterize the original program execution.
The program debuggers PLITEST, COBTEST and INSPECT of the International
Business Machines Corporation (IBM), all are examples of executive
animators. These products operate in real-time, and use color to highlight
only the current focus of execution (i.e., the current executed statement
or module) as displayed on a user's screen.
Algorithm animation is a distant cousin of interpretive and executive
animation. Algorithm animators provide a scripted animation depicting a
variety of classical programming data structures. These structures are
animated so as to show traversal and data manipulation. Brown et al., U.S.
Pat. No. 4,736,321, entitled "Communication Method Between an Interactive
Language Processor Workspace and External Processes" is an example of an
algorithm animator. Brown et al. disclose the invocation of an external
process without having to suspend a currently executing process, passing
arguments to an external process and receiving results therefrom in a
currently executing APL workspace.
Saito et al., U.S. Pat. No. 4,730,315, entitled "Diagrammatic Method of
Testing Program," discloses a method for correlating FORTRAN source code
and a directed acyclic graph ("digraph") thereof in a step, edit, and
retry interactive debug facility. Synchronism is preserved between the
source code and the digraph by use of FORTRAN reserved words as pointers.
Beckett, U.S. Pat. No. 4,080,650, entitled "Facilitating Return From an
On-line Debugging Program to a Target Program Breakpoint," discloses an
interactive debug utility in which control is selectively passed from
within one process to an external process and returned via breakpoints.
There is a need for animating the execution of a computer program in a
manner which visually illustrates how the parts of a program respond to
various test cases by identifying parts which reach certain user-selected
thresholds during their execution.
SUMMARY OF THE INVENTION
This invention comprises an improved method for animating the execution of
a computer program. The basic method displays a visual representation of
parts of the program, and animates that representation of the program
parts in response to execution of the program. The improvement of this
invention detects when thresholds of selected event occurrences are
reached for the program parts, and displays the "threshold-reaching" parts
in color. In particular, the improvement detects when occurrences of a
selected event for a given part of the program reach a first threshold,
and colors the displayed representation of that part with a first color.
Later, when a higher second threshold for that part is reached that too is
detected and the displayed representation of the part is colored a second
threshold color. The second threshold color is preferably of different hue
than the first color.
The invention also includes an improved program animation system having a
display device, display and animation means, coloring means, occurrence
detection means, and threshold coloring means. The display and animation
means produce an animated display of a representation of the program's
parts, and the coloring means allows that displayed representation to be
colored. The detection means counts event occurrences for the program
parts. Each of the two coloring means detects when a first threshold is
reached for a part of the program, and colors the displayed representation
of that part in a respective color. The threshold colors are preferably of
different hues.
The invention also includes an article of manufacture including a recording
medium and means recorded on that medium. A displaying means displays a
colored representation of the program parts, and that representation is
animated by animation means. Detection means detects occurrences of events
for the program parts, and first and second coloring means cooperate with
the displaying means to color the displayed representations of the program
parts with colors as respective occurrence thresholds are reached. The
threshold colors are preferably of different hues.
Colored animation of the frequency of execution of the tested program's
parts or "objects" vividly illustrates the program's operation, providing
a "moving picture" of the program as it is executed. The addition of
threshold coloring graphically illustrates the "hot spots" of a program.
Other features and advantages of this invention will become apparent from
the following detailed description of the presently preferred embodiment
of the invention, taken in conjunction with the accompanying drawings.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a computerized data processing system for
coloring an animation of a computer program execution based on statement
execution frequencies according to this invention.
FIG. 2 is a flowchart of a method for coloring an animation of a computer
program execution based on statement execution frequencies according to
the preferred embodiment of this invention.
FIGS. 3A and 3B are pseudocode implementations of the method of FIG. 2.
FIG. 4 shows an example of an execution trace of a COBOL program.
FIG. 5 shows an example of screen for selecting the threshold frequencies
and threshold colors. The hatching of this figure represents color.
FIG. 6 shows an example of a colored representation of a program source
code display with the current executed statement highlighted and with
other statements colored with threshold colors. The hatching of this
figure represents color.
DESCRIPTION OF THE PREFERRED EMBODIMENT
OVERVIEW
This invention provides a colored animation of the execution of a computer
program (the "tested program") which is being tested. In this context
animation is the process of recreating the execution of a computer program
for purposes of understanding and testing its operation. Colored animation
of the frequency of execution of the tested program's parts or "objects"
vividly illustrates how the program responds to various test cases, and
thereby helps the program developer to refine the program's design.
The method of this invention provides multi-color animation of a program's
statements, displaying the statements in colors according to certain
thresholds of execution frequency, such as the number of times each
statement has been executed relative to the total number of statement
executions during the test case. As the program is animated, when a given
threshold is reach for a particular statement, the color in which the
statement is displayed changes to visually indicate that a threshold was
reached. The colors incorporate various hues to immediately graphically
identify multiple thresholds. The thresholds are user-selectable and
continuously variable during the animation.
Technical Background
The method uses an execution trace 10 of the tested program produced during
execution. The execution trace includes a breakdown of the number of times
each statement of the tested program was executed. The execution trace is
created by breakpoints inserted into the tested program during its
compilation. The breakpoints cause certain state information to be
recorded when the tested program is later executed. Creation of execution
traces is well known in the art, and will not be discussed further except
as necessary to the understanding of the invention.
Animation Module
The animation is performed by an animation module 12 of conventional
design. The animation module reads through the execution trace,
determining the next statement to be executed based on the execution
trace. This animation module is of the interpretive type discussed above,
since is relies on the execution trace 10. The choice of animation module
is a matter of design choice, there being several suitable animation
techniques known in the art. Accordingly, the animation module 12 is not
discussed further. The animated display is produced on a color video
display device 14 such as a CRT by means of a conventional display driver
16.
Threshold Calculation and Coloring
The threshold module 18 handles the calculation and coloring of program
statements selected by the animation module from the execution trays.
After the animation module determines the next executed statement,
threshold module calculates the execution frequency for that statement.
The execution frequency for any statement is equal to the number of times
that statement has been executed so far during the execution trace,
divided by the total number of statement executions throughout the entire
execution trace. Thus as the animation proceeds through the trace, the
execution frequencies for the program statements increase as the
statements are executed. In the beginning, while all statements have low
execution frequencies, they are displayed in a default color, with only
the current executed statement being displayed in a different color.
When a particular statement in the program reaches the first threshold
frequency selected by the user, the threshold module 18 displays that
statement in the threshold color assigned to the first threshold, rather
than in the default color for the current executed statement. Having
reached the first threshold, the statement remains in the first threshold
color even after execution passes to the next statement. Thus, as
animation proceeds through the execution trace, statements reaching
frequency thresholds assume those thresholds, respective colors thereby
visually indicating those statements which are executed most frequently.
When the animation of the execution trace is complete, the colors of the
statements displayed on the CRT 14 immediately identify in distinctive
hues those statements which were executed most.
This method is shown in the flow chart of FIG. 2 and the pseudocode of
FIGS. 3A and 3B. Referring first to the flow chart of FIG. 2, after the
frequency thresholds and threshold colors are selected 201, the animation
loops through each of the executed statements. As each executed statement
becomes the "current statement" its number of executions is incremented by
one and its execution frequency is recalculated 202. If its execution
frequency is lower than the first threshold 203, the current statement is
colored with the normal color for the current executed statement 204,
rather than one of the threshold colors. However, if the first threshold
is reached, then the current statement's execution frequency is tested
against the second threshold frequency 205. If the first threshold has
been reached 203 but the second threshold has not 205, then the statement
is colored with the first threshold color 206. Similarly, the current
statement is colored with the second and third threshold colors 208, 210.
If the fourth threshold has been reached, then the statement is
immediately colored with the fourth threshold color 211. After the
statement has been colored on the display, the method loops to take up the
next statement in the animation.
Referring now to the pseudocode of FIG. 3A, when the execution trace is
first opened 301, a total number of statement executions in the trace is
stored 302. The fourth frequency thresholds and their respective threshold
colors are obtained from the user 303 and 306, together with the default
colors for the current executed statement 307 and for all other statements
308. An infinite do-loop 311-330 takes up each executed statement in turn
from the execution trace 312. A table of the number of times each
statement has been executed so far during the trace is updated for the
current statement 313, and the current statement's execution frequency is
calculated 314. Referring now to FIG. 3B, current statement's execution
frequency is then compared in turn with each of the frequency thresholds
315-322. As discussed above for the flow chart of FIG. 2, the current
statement is colored with the threshold color of the highest threshold
exceeded by that statement or with the default colored one for the current
executed statement if no threshold has been reached. The current executed
statement is then displayed using the color assigned at lines 315-324, and
the next statement in the trace is taken up 330.
Advantages over the Prior Art
The advantages of the method of the preferred embodiment of this invention
are apparent. By providing a multi-hued display of the execution frequency
of program statements, this invention allows the programmer to immediately
grasp the total gestalt of the program's execution.
Complementary and Alternative Embodiments
A first complementary embodiment of this invention comprises a data
processing system including a general purpose digital computer programmed
to execute the method of the invention, and a display device such as a
CRT. Such a computer is a well known article of commerce, such as the PS/2
personal computer of IBM, and is not described further.
A second complementary embodiment comprises an article of manufacture for
distributing a computer program for performing the method of this
invention. Such an article comprises a recording medium upon which are
recorded the computer instructions for performing the steps of the method
of the invention. The medium is preferably a magnetic tape such as the
31/2 inch (approx. 81/2 cm) removable magnetic diskette used in a PS/2
personal computer. The instructions are recorded on the medium by
conventional bulk-recording techniques and devices which are well known in
the art, and which are not described further.
It will be appreciated that, although specific embodiments of the invention
have been described herein for purposes of illustration, various
modifications may be made without departing from the spirit and scope of
the invention. In particular, the threshold-based coloring may be
performed on a graphical representation of the program rather than on the
source code. Also, beyond threshold coloring of statement executions,
other events such as input/output (I/O) requests, exceptions conditions
and errors may be monitored and displayed using threshold colors. Further,
beyond frequencies of occurrences, other measures of events such as
absolute numbers (e.g., >0 error conditions, >100 I/O requests per second)
may be monitored and displayed using threshold colors. The animation of
the execution trace may be done in both forward and reverse directions. In
the reverse direction the numbers of occurrences would be decremented,
rather than incremented as for the forward direction. Furthermore, the use
of threshold coloring is equally applicable to executive and algorithmic
animation as to the interpretive animation discussed above.
Accordingly, the scope of protection of this invention is limited only by
the following claims and their equivalents.
Top