CA2427700A1 - Visual interface for object-oriented programming - Google Patents

Visual interface for object-oriented programming Download PDF

Info

Publication number
CA2427700A1
CA2427700A1 CA002427700A CA2427700A CA2427700A1 CA 2427700 A1 CA2427700 A1 CA 2427700A1 CA 002427700 A CA002427700 A CA 002427700A CA 2427700 A CA2427700 A CA 2427700A CA 2427700 A1 CA2427700 A1 CA 2427700A1
Authority
CA
Canada
Prior art keywords
node
computer readable
program code
code means
readable program
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
CA002427700A
Other languages
French (fr)
Inventor
Bruno Braen
Sylvio Drouin
Hans-Frederick Brown
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MAZ LABORATORY
Original Assignee
MAZ LABORATORY
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MAZ LABORATORY filed Critical MAZ LABORATORY
Priority to CA002427700A priority Critical patent/CA2427700A1/en
Priority to PCT/CA2004/000615 priority patent/WO2004097627A2/en
Priority to US10/836,617 priority patent/US20040268219A1/en
Publication of CA2427700A1 publication Critical patent/CA2427700A1/en
Abandoned legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present invention relates to a method of generating a graphical representation of a program, on a display device comprising detecting hierarchical rankings of programming objects; displaying nodes representing the programming objects according to a hierarchical structure and the hierarchical rankings on the display device; detecting at least one transmission of data between a first and a second of the programming objects; and displaying on the display device a link associated to nodes representing the first and the second programming object, wherein the link represents the at least one transmission of data on the display device.

Description

A METHOD OF REPRESENTING DATA FLOW BETWEEN
PROGRAMMING OBJECTS IN A HIERARCHICAL DISPLAY
BACKGROUND OF THE INVENTION
(a) Field of the Invention [0001] The present invention relates to a graphical user interface for object-oriented programming and, more particularly, to a method of managing data flow between programming objects in a hierarchical display useful for generating, understanding, and editing data flow in object-oriented programs.
(b) Description of Prior Art [0002] In the field of object-oriented visual programming, two different approaches have traditionally been taken. The first approach is inspired from computer file displays such as the one described in tJ.S. Pat. No.
5,Ofi5,347 to Pajak et al., and consists in representing programming objects as nodes of a hierarchical tree, wherein links express containment relationships. Several visual programming interfaces, such as Microsoft Visual C++, have adopted this approach due to its intuitiveness, a quality that stems from the extensive use of trees as a means of representing common data structures known to programming experts and illiterates alike, such as tables of contents. Although hierarchical trees are mostly known for their intuitiveness, they present a number of non-negligible weaknesses, one of which relates to the lack of navigational flexibility provided to users. Navigation within such trees is based on containment relationships, and a search for an element of interest is laborious when its hierarchical position is unknown. Furthermore, such sty°uctures do not represent data flows between elements, as links are limited to the expression of containment relationships. Consequently, none of data flow relationship detection, generation, and modification are supported.
[0003 The second approach is complementary to the first inasmuch as programming objects are organized on the basis of data flow relationships rather than hierarchy. It consists in representing programming objects as nodes of a graph, wherein links are dedicated to the expression of data m flow relationships, thereby providing for the detection, generation and modification of such relationships. Furthermore, it provides more navigational flexibility than the former approach as nodes are allowed to have a plurality of relationships and can be accessed through any one of nodes with which they are related. In the prior art, one attempt to provide an accurate, yet flexible interface based on the very same approach is worth noting. In 17.S. Pat. No. 6,051,fl29 to Peterson et al., a simulation model is generated by instantiating objects of interest selected from a predefined list, and instantiating links selected from a pre-defined list to represent desired relationships between the instantiated objects. As a result, users are provided with means to not only estabPish, but also determine the type of data flow relationships between objects. The second approach provides a remedy to several weaknesses of the first, but lacks its intuitiveness. Nodes are positioned randomly as no meaning is attributed to relative positioning. Furthermore, no information is provided with respect to hierarchical structures. Finally, navigation within such graphs is based on data flow relationships, and a search for an element of interest is laborious when its data flow relationships are unknown.
SUMMARY OF THE iIhIVEtdTIOPI
[0004] It would be highly desirable to be provided with a method of generating a representation of data flow between programming objects in a hierarchical display.
[0005] It would also be desirable to be provided with a method of editing data flow between programming objects in a hierarchical display.
[0006] It would also be desirable to be provided with a method of accessing a programming object of interest through a combination of data flow and containment relationships in a hierarchical display.
[0007] In accordance with the present invention, there is provided a method of generating a graphical representation of a program on a display device comprising: providing a hierarchical ranking of programming objects; displaying nodes representing the programming objects according to a hierarchical structure and the hierarchical ranking on the display device; specifying at least one transmission of data between a first and a second of the programming objects; identifying parameters of the _g_ transmission according to the at least one of the first and the second programming objects; and displaying on the display device a link relating nodes representing the first and the second according to the parameters, wherein the link represents the at least one transmission of data.
[0008] In accordance with one embodiment of the present invention, the detecting at least one transmission comprises identifying one of the first and the second as a source of the transmission, and the other, as a destination of the transmission, wherein the link is displayed according to the source and the destination.
[0009] In accordance with one embadiment of the present invention, the specifying at least one transmission comprises selecting cme of a plurality of parameters of the source as an output parameter, and the identifying parameters of the transmission comprises identifying a type of the output parameter.
[0010] In accordance with one embodiment of the present invention, the specifying at least one transmission comprises selecting one of a plurality of parameters of the destination as an input parameter, wherein the data is to be stored as an input parameter as a result of the transmission, the identifying parameters of the transmission comprises identifying a type of the input parameter.
[0011] In accordance with one embodiment of the present invention, the link is displayed as a red arrow, whereby the red indicates an incoherence between the type of the input parameter and the type of the output parameter.
[0012] In accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the source, removing the link, displaying a sub-node of a node representing the source, and displaying a new link relating the sub-node and a node representing the destination in response to the requesting, wherein the sub-node represents the output parameter.
[0013] In accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the destination, removing the link, displaying a sub-node of a node representing the destination, and displaying a new link relating the sub-node and a node representing the source in response to the requesting, wherein the sub-node represents the input parameter.
[0014] In accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the program, displaying a first sub-node of a node representing the source and a second sub-node of a node representing the destination, removing the link, and displaying a new link relating the first sub-node and the second sub-node in response to the requesting, wherein the first sub-node represents the autput parameter, the second sub-node represents the input parameter.
[0015] In accordance with one embodiment of the present invention, the method further comprises requesting a non-detailed vievu of the source, removing the link relating the sub-node, hiding the sub-node, and displaying a new Link relating the node representing the source and the node representing the destination in response to the requesting.
[0016] In accordance with one embodiment of the present invention, the method further comprises requesting a non-detailed view of the destination, removing the link relating the sub-node, hiding the sub-node, and displaying a new link relating the node representing the source and the node representing the destination in response to the requesting.
[0017] in accordance with one embodiment of the present invention, the method further comprises requesting a non-detailed view, removing the link relating the first sub-node and the second sub-node, hiding the first sub-node and the second sub-node, and displaying a link associated to the node representing the source and the node representing tile destination in response to the requesting.
[0018] In accordance with one embodiment of the present invention, the method further comprises displaying a label describing the transmission.
[0019] In accordance with one embodiment of the present invention, the method further comprises requesting a display of the label, wherein the label is displayed in response to the requesting.
[0020] in accordance with one embodiment of the present invention, the label indicates the input parameter and the output parameter.

[0021] in accordance with one embodiment of the present invention, according to the hierarchical structure, a first node is displayed under, related through a hierarchical link tog and indented relatively to, a second node if a programming object represented by the first node is contained in a programming object represented by the second node.
[0022] in accordance with one embodiment of the present invention, the identifying comprises searching through the hierarchical ranking for the source and the destination, and determining whether the source is a child of the destination, and the displaying on the display device a link comprises displaying an arrow between the nodes representing the first and the second programming objects in the case where the source is not a child of the destination according to the determining, and displaying a sub-node on a hierarchical link relating the nodes representing the first and the second programming objects in the case where the source is a child of the destination according to the determining, whereby a number of displayed arrows is maintained.
[0023] In accordance with one embodiment of the present invention, the method further comprises requesting a different hierarchical structure, and modifying the graphical representation of a program according to the different hierarchical structure in response to the requesting.
[0024] in accordance with one embodiment of the present invention, the method further comprises selecting a node representing an undesirable programming objects, and deleting the node representing the undesirable programming object.
[0025] In accordance with one embodiment of the present invention, the method further comprises deleting a link relating the node representing the undesirable programming object in response to the deleting the node.
[0026] In accordance with one embodiment of the present invention, the method further comprises deleting a node representing a programming object contained in the undesirable programming object in response to the deleting the node representing the programming object.
[0027] In accordance With one embodiment of the present invention, the method further comprises deleting a link relating the node representing a programming object contained in the undesirable programming object in response to the deleting a node representing a programming object contained in the undesirable programming object.
[0028] In accordance with one embodiment of thre present invention, the method further comprises requesting for a node representing a programming object contained in another to be hidden, and hiding the node representing a programming object contained in another in response to the requesting.
[0029] In accordance with one embodiment of the present invention, the method further comprises requesting for each node representing a programming object contained in a selected parent programming object to be hidden, removing the link, hiding a node representing the source, and displaying a link relating a node representing the destination and a node representing the parent, wherein the source is contained in the parent, and the link displayed indicates that a programming object contained in the parent is involved in a transmission of data.
[0030] In accordance with one embodiment of the present invention, the method further comprises requesting for each node representing a programming object contained in a parent programming object to be hidden, removing the link, hiding the node representing the destination, and displaying a link associated to a node representing the source and a node representing the parent, wherein the destination is contained in the parent, and the link displayed indicates that a programming object contained in the parent is involved in a transmission of data.
[003'1] In accordance with one embodiment of the present invention, the method further comprises requesting each node representing programming objects contained in a first parent programming object or a second parent programming object to be hidden, removing tile link, hiding nodes representing the source and the destination, and displaying a link associated to a node representing the first parent and a node representing the second parent, wherein the destination is contained in the first parent and the source is contained in the second parent, and the link displayed indicates that a programming object comprised in the f rst parent and a _7_ programming object comprised in the second parent are involved in a same transmission of data.
[0032] In accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the parent, revealing nodes representing programming objects contained in the parent, removing the link associated with the node representing the source and the node representing the parent, and displaying a Link associated to the node representing the destination and the node representing the source.
[0033] fn accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the parent, revealing nodes representing programming objects contained in the parent, removing the link associated with the node representing the source and the node representing the parent, and displaying a link associated to the node representing the destination and the nude representing the source.
[0034] In accordance with one embodiment of the present invention, the method further comprises requesting a detailed view of the first parent and the second parent, revealing nodes representing programming objects contained in the first parent and the second parent, removing the link associated with the node representing the first parent and the node representing the second parent, and displaying a link associated to the node representing the source and the node representing the destination.
[0035] In accordance with one embodiment of the present invention, the method further comprises requesting for a node of interest representing a programming object of interest to be displayed, searching through said hierarchical ranking for the programming object of interest, determining a rank of the programming object of interest, and displaying the node of interest according to the hierarchical rank of the programming object of interest on the display device in response to the requesting.
[0036] In accordance with one embodiment of the present invention, the method further comprises revealing at least one node representing a programming object contained in another, wherein the node of interest is one of the at least one node.

[0037] In accordance with one embodiment of the present invention, the requesting comprises selecting a link through which the node of interest is related.
[0038] In accordance with the present invention, there is provided a computer program product for generating a graphical representation of a program on a display device comprising a computer usable storage medium having computer readable program code means embodied in the medium, the computer readable program code means comprising:
computer readable program code means for providing a hierarchical ranking of programming objects; computer readable program code means for displaying nodes representing the programming objects according to a hierarchical structure and the hierarchlcaD ranking on the display device;
computer readable program code means for specifying at least one transmission of data befiiveen a first and a second of the programming objects; computer readable program code means for identifying parameters of the transmission according to the at least one of the first and the second programming objects; and computer readable program code means for displaying on the display device a link relating nodes representing the frst and the second according to the parameters, wherein the link represents the at least one transmission of rata.
[0039] In accordance with one embodiment of the present invention, the computer readable program code means for detecting at least one transmission comprises computer readable program code means for identifying one of the first and the secand as a source of the transmission, and the other, as a destination of the transmissian, wherein the link is displayed according to the source and the destination.
[0040] In accordance with one embodiment of the present invention, the computer readable program code means for specifying at least one transmission comprises selecting one of a plurality of parameters of the source as an output parameter, the computer readable program code means for identifying parameters of the transmission comprises computer readable program code means for identifying a type of the output parameter.
[0041] In accordance with one embodiment of the present invention, the computer readable program code means for specifying at least one _g_ transmission comprises computer readable program code means for selecting one of a plurality of parameters of the destination as an input parameter, wherein the data is to be stored as an input parameter as a result of the transmission, the computer readable program code means for identifying parameters of the transmission comprises computer readable program code means for identifying a type of the input parameter.
[0042] In accordance with one embodiment of the present invention, the link is displayed as a red arrow, whereby the red indicates an incoherence between the type of the input parameter and the type of the output pa rameter.
[0043] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the source, computer readable program code means for removing the link, computer readable program code means for displaying a sub-node of a nade representing the source, and computer readable program code means for displaying a new link relating the sub-node and a node representing the destination in response to the requesting, wherein the sub-node represents the output parameter.
[0044] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the destination, computer readable program code means for removing the link, computer readable program code means for displaying a sub-node of a node representing the destination, and computer readable program code means for displaying a new link relating the sub-node and a node representing the source in response to the requesting, wherein the sub-node represents the input parameter.
[0045] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the program, computer readable program code means for displaying a first sub-node of a node representing the source and a second sub-node of a node representing the destination, computer readable program code means for removing the link, ..' and computer readable program code means for displaying a new Dink relating the first sub-node and the second sub-nude in response to the requesting, wherein the first sub-node represents the output parameter, the second sub-node represents the input parameter.
[0046) In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a non-detailed view of the source, computer readable program code means for removing the link relating the sub-node, computer readable program code means for hiding the sub-node, and computer readable program code means for displaying a new link relating the node representing the source and the node representing the destination in response to the requesting.
[0047] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a non-detailed view of the destination, removing the link relating the sub-node, hiding the sub-node, and displaying a new link relating the node representing the source and the node representing the destination in response to the requesting.
[Q048J In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a non-detailed view, computer readable program code means for removing the link relating the first sub-node and the second sub-node, computer readable program code means for hiding the first sub-node and the second sub-node, and computer readable program code means for displaying a link relating the node representing the source and the node representing the destination in response to the requesting.
(U049] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for displaying a label describing the transmission.
[0050] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a display of the label, wherein the label is displayed in response to the requesting.
,.~ .. m _.~... . .. - _ f . ., . ,: . .,__ .. .,_ _ .. _.

-11_ [0051] In accordance with one embodiment of the present invention, the label indicates the input parameter and the output parameter.
[0052] In accordance with one embodiment of the present invention, according to the hierarchical structure, a frst nc>de is Misplayed under, related through a hierarchical sink to, and indented relatively to, a second node if a programming object represented by the first node is contained in a programming object represented by the second node.
[0053] !n accordance with one embodiment of the present invention, the computer readable program code means for identi~lying comprises computer readable program code means for searching through the hierarchical ranking for the source and the destination, and computer readable program code means for determining vrrhether the source is a child of the destination, and the computer readable program code means for displaying on the display device a link comprises computer readable program code means for displaying an arrow between the nodes representing the first and the second programming objects in the case where the source is not a child of the destination according to the computer readable program code means for determining, and computer readable program code means for displaying a sub-node on a hierarchical link relating the nodes representing the first and the second programming objects in the case where the source is a child of the destination according to the computer readable program code means for determining, whereby a number of displayed arrows is maintained.
[0054) In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a different hierarchical structure, and computer readable program code means for modifying the graphical representation of a program according to the different hierarchical structure in response to the requesting.
[0055] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for selecting a node representing an undesirabBe programming objects, and computer' readable program code means for deleting the node representing the undesirable programming object.

_1 [0056] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for deleting a link relating the node representing the undesirable programming object in response to the deleting the node.
[0057] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for deleting a node representing a programming object contained in the undesirable programming object in response to the deleting the node representing the programming object.
[0058] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for further comprising deleting a link relating the node representing a programming object contained in the undesirable programming object in response to the deleting a node representing a programming object contained in the undesirable programs~ning object.
[0059] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting for a node representing a programming object contained in another to be hidden, and computer readable program code means for hiding the node representing a programming object contained in another in response to the requesting.
[0060] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting for each node representing a programming object contained in a selected parent programming object to be hidden, computer readable program code means for removing the link, computer readable program code means for hiding a node representing the source, and computer readable program code means for displaying a link relating a node representing the destination and a node representing the parent, wherein the source is contained in the parent, and thoe fink displayed indicates that a programming object cantained in the parent is involved in a transmission of data.
[0061] In accordance with one embodiment of the present invention, the computer program product further comprises corrtputer readable program code means for requesting for each node representing a programming object contained in a parent programming object to be hidden, comprising computer readable program code means for removing the link, comprising computer readable pragram code means for hiding the node representing the destination, comprising computer readable program code means for and displaying a link associated to a node representing the source and a node representing the parent, wherein the destination is contained in the parent, and the link displayed indicates that a programming object contained in the parent is involved in a transmission of data.
[0062] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting each node representing programming objects contained in a first parent programming object or a second parent programming object to be hidden, computer readable program code means for removing the link, computer readable program code means for hiding nodes representing the source and the destination, and computer readable program code means for displaying a link associated to a node representing the frst parent and a node representing the second parent, wherein the destination is contained in the first parent and the source is contained in the second parent, and the link displayed indicates that a programming object comprised in the first parent and a programming object comprised in the second parent are involved in a same transmission of data.
[0063, In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the parent, computer readable program code means for revealing nodes representing programming objects contained in the parent, computer readable program code means for removing the link associated with the node representing the source and the node representing the parent, and computer readable program code means for displaying a link associated to the node representing the destination and the node representing the source.
(0064] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program _1 code means for requesting a detailed view of the parent, computer readable program code means for revealing nodes representing programming objects contained in the parent, computer readable program code means for removing the link associated with the node representing the source and the node representing the parent, and computer readable program code means for displaying a link associated to the node representing the destination and the node representing the source.
[0065) In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the first parent and the second parent, computer readable program code means for revealing nodes representing programming objects contained in the first parent and the second parent, computer readable program code means for removing the link associated with the node representing the first parent and the node representing the second parent, and computer readable program code means for displaying a link associated to the node representing the source and the node representing the destination.
(0066] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting for a node of interest representing a programming object of interest to be displayed, computer readable program code means for searching through the hierarchical ranking for the programming object of interest, computer readable program code means for determining a hierarchical rank of the programming object of interest, and computer readable program code means for displaying the node of interest according to the hierarchical rank of the programming object of interest on the display device in response to the requesting.
[0067] In accordance with one embodiment of the present invention, the computer program product further comprises computer readable program code means for requesting a detailed view of the source, computer readable program code means for removing the link, computer readable program code means for displaying a sub-node of a node representing the source, and computer readable program code means for displaying a new link relating the sub~node and a node representing the destinatian in response to the requesting, wherein the sub-node represents the output parameter.
[0068] in accordance with one embodiment of the present invention, the computer program product further cornprises computer readable program code means for revealing at least one node representing a programming object contained in another, wherein the node of interest is one of the at least one node.
[0069] In accordance with one embodiment of tfie present invention, the computer readable program code means for requesting comprises computer readable program code means for selecting a link through which the node of interest is related.
BRIEF DESCRIPTI~Jf~l t1F THE L11RA1NINGS
[0070] FIG. 1 illustrates a block diagram of a computer system within which software for performing the methods of the present invention, may reside and be executed;
[007'#] FIG. 2 illustrates exemplary representations of programming elements;
[0072] FIG. 3 illustrates an exemplary node-link structure of a program created according to the methods of the present invention;
[0073] FIG. 4 illustrates an application window comprising a pane presenting the view of the structure;
[0074] FIG. 5 illustrates an application window comprising a pane presenting the view of the structure as it is being created, wherein a node is being added to the structure according to the methods of the present invention;
[o07s] FIG. 6 illustrates the application window comprising the pane presenting the view of the structure as it is being created, wherein the added node is assigned a name;
[0076] FIG. 7 illustrates the application window comprising the pane presenting the view of the structure as it is being created, wherein a source of a link to be added is specified;

_18_ (0077] FIG. 8 illustrates the application window comprising the pane presenting the view of the structure as it is being created, wherein the destination of the link is specified;
[0078] FIG. 9 illustrates the application window comprising the pane presenting the view of the structure, wherein a source of a second link to be added is specified;
[0079] FIG. 10 illustrates the application window comprising the pane presenting the view of the structure, wherein a destination of the second Ilnk is specified, and the destination is a parent of the source;
[0080] FIG. 11 illustrates the application window comprising the pane presenting the view of the structure, wherein a node is beireg deleted;
[0081] FIG. 12 illustrates the application window comprising the pane presenting the view of the structure, wherein the node is deleted;
[0082] FlG. 13 illustrates the application window comprising the pane presenting the view of the structure, wherein a link to be removed is specified;
[0083] FIG. 14 illustrates the application window comprising the pane presenting the view of the structure, wherein the specified link is removed;
[0084] FIG. 15 illustrates the application window comprising the pane presenting the view of the structure, wherein a parent node to be collapsed is specified;
[0085] FIG. 16 illustrates the application window comprising the pane presenting the view of the structure, wherein the parent node is collapsed;
and [0086] FIG. 17 illustrates the application window comprising the pane presenting the view of the structure, wherein a tooN tip presenting information relating to a data flow represented by a specified link.
DETAILED DESCRIPTIOPI OF THE INVENTION
[0087] In accordance with the present invention, there is provided a method of managing data flow between programming objects in a hierarchical display, for generating, understanding, and editing data flow in object-oriented programs. Those skilled in the art will readily appreciate _17_ that systems and methods according to the present invention can be applied to any type of display system having a programming interface.
j0088] FIG. 1 illustrates a block diagram of a computer system 101 within which software for performing methodologies discussed below, and for generating a graphical user interface (GUI) according to teachings of the present invention, may operate. The computer system 101 includes a processor 103, a main memory 105 and a static memory 107, which communicate via a bcs 109. This system 101 is further shown to include a video display unit 111, such as a liquid crystal display (LCD) or a cathode ray tube (CfdT), on which a GUI, according to the present invention, may be displayed. The computer system 101 also includes an alphanumeric input device 17 3, such as a keyboard, a cursor control device 115, such as a mouse, a disk drive unit 117, a signal generation device 119, such as a speaker, and a network interface device 121.
j0089] In the preferred embodiment, the static memory 107 comprises classes of objects, which may be coded using an object-oriented language such as C++ or Java. As is well known within the art, each object may comprise a collection of parameters, also commonly referred to as instances, variables or fields, and a collection of methods, which utilize the parameters of the relevant object. Furthermore, objects vary in terms of their complexity: the most primitive ones may implement simple concepts such as integer values, arithmetic operations, or flags, while others may be dedicated to the intricacies of a dynamic character in the context of a computer game. It is important to note that considerable levels of complexity and abstractness may be attained by combining complementary objects and defining their relationships. The functioning and purposes of each of the various classes of objects will become apparent from the description that follows. The memory 107 also comprises a library of icons, wherein each icon is associated with an object or a type of relationship thereof, and may be displayed within a diagram trvindow presented by a Graphical User Interface {GU!). In the following description, the term "node" shall be interpreted as an icon associated with an object, the term sub-node, as an icon associated with a parameter of an object, and the term "link", as an icon associated with a type of relationship.

[0090) In the preferred embodiment, the main memory 105 comprises a software application 125 for executing instructions received from a user through the alphanumeric input device 113 and the cursor control device 115. It also comprises the user's current workspace, which represents a combination of instantiated objects and relationships, as well as the coordinates of corresponding nodes and links displayed on the GUI.
[0091, In another embodiment, the content of the memory 105 and 107 may very well reside in a computer-readable medium 123 accessible via the disk drive unit 117, or the network interface device 121. The term '°computer-readable medium°' shall be taken to include any medium which is capable of storing or encoding a sequence of instructions for performing the methodologies of the present invention, and shall be taken to include, but not be limited to, optical and magnetic disks, and carrier wave signals.
[0092] The present invention allows a person with any level of programming knowledge to easily create a representation of a program by instantiating objects extracted from a library, and defining their relationships. However, prior to unskilled user interaction with the GUI, objects must be implemented and stored, according to the preferred embodiment, in the static memory 107. As mentioned above, objects may be implemented using any object-oriented programming language such as G++ or Java. Furthermore, the graphical representation of objects and relationships must be designed and stored in the memory 107.
[0093] FIG. 2 provides examples of graphical elements, which according to one exemplary embodiment of the invention, are provided by a GUI, and may be utilized to create a visual representation of a program such as that shown in FIG. 3. It will be appreciated that the graphical elements discussed below are exemplary and any distinctive graphical elements may be substituted for the graphical elements discussed below without departing from the spirit of the invention.
[0094] Referring now to FIG. 2, there are illustrated three types cf nodes available to the user, each of which is associated with a specific type of object. Node 201 represents universal objects. The latter are the highest ranked objects in a hierarchicaB structure. In other words, they are the only objects that are not contained within others. They comprise a list of pointers referring to all nodes situated in an immediate lower level. In the preferred embodiment, each prograrra comprises at least one universal node. Furthermore, a universal object bears the name of, and is used as a reference point to, a program modeled by its offspring nodes. In the example iAustrated in FIG. 3, node 301 called °'Calcudator'°
corresponds to a universal object.
[0095] Node 203 represents gate objects. The latter are of two types, namely input and output gate objects. The former comprises a method which, when executed, is capable of retrieving data from a specific input device such as the alphanumeric input device 113, and the cursor control device 115, and provide it to another node. The output gate objects on the other hand, comprise a method which, when executed, retrieves data from another node, and provides it to a specific output device, such as the display unit 111 or the signal generation device 119. As such, gate objects provide means for a user-generated program to access the external resources of the system 101. In the example illustrated in FIG. 3, nodes 303, 305, and 307, called "Input A", "Input I3", and "Input C" are input gate objects, and are used to retrieve alphanumeric data from the input device 113. On the other hand, a node 309, called "Show", represents an output gate object, and is used to display data provided by other objects on the display unit 111.
[0096] Node 205 represents functional objects. The latter comprise at least one input and at least one output parameter, as well as one method describing a function that takes in the at least one input parameter, and outputs the at least one output parameter. In the example illustrated in FIG.
3, node 315, called "Multiplication", represents a functional object which comprises two input parameters, 317 and 319, called °'F=irst factor", and "Second factor", an output parameter called "Product", and a method, which, when executed, multiplies the values of input parameters "First factor" and "Second factor", and assigns the product to the parameter called "Product". Another example is a node 321, called "Division", representing a functional object which comprises two input parameters, 323 and 325, called "Divided" and "Divider", an output parameter called "Quotient", and a method, which, when executed, divides the value of the input parameter 323 by that of the input parameter 325, and assigns the quotient to the parameter called °'Quotient".
[0097] Sub-node 207 represents parameters of objects, having a name, a value, and a type. It may represent input parameters, output parameters, or both. The term "type" shall be taken to include, but not be restricted to, integer, float, double, character, and string. In the example illustrated in FIG. 3, sub-nodes 317 and 319, called "First factor" and "Second factor", are input parameters of type integer, and pertain to an object represented by the node 315 called "Multiplication". Another example is a sub-node 313, which represents both an input and an output parameter called "Res 1" of type integer, and pertaining to an object represented by the node 309 called "Shaw".
(0098] Data flow reference points 277, 279, 281, and 283 represent visual indicators through which users may create data flows involving an object represented by a corresponding node. Reference point 277 indicates that an object represented by a corresponding node may only receive data, and as such, may only be considered as a data flow destination. Reference point 279 represents indicates that an object represented by a corresponding node may only send data, and as such, may only be considered as data flow source. As for reference point 281, it indicates that an object represented by a corresponding node may send andlor receive data, and as such, may be considered as a source andJor destination of a data flow. Finally, reference point 283 indicates that an object represented by a corresponding node may neither rend nor receive data, and as such, may neither be a source nor a destination of a data flow.
(0099 Still referring to FIG. 2, there are illustrated three types of links, each of which is associated with a specific type of relationship between objects. A link 209 represents containment relationships, wherein a node 211, called G1 is contained in a node 213, called tJ1. Similarly, link 215 represents a containment relationship wherein a node 217, called F1 is contained in the node 213. An object contained in another is deemed dependent upon the latter, and therefore, in the preferred embodiment, one of a set of actions comprising at least the deletion of a node applied to a container is also applied to objects contained therein. In the example illustrated in FIG. 3, node 303, 305, 307 and 309 are connected to node 301 through links expressing containment relationships, wherein node 303, 305, 307, and 309 are contained in node 301. Therefore, if node 301 were to be deleted, nodes 303, 305, 307 and 309 would be deleted as well.
j00100] A link 221 represents a data flow relationship between a node 223, called G2 and a node 227, called G3. In the preferred embodiment, objects are implemented according to a "pull mechanisrn", and an object underlying the node 227 comprises a method, which, when executed, pulls data stored as an output parameter 229, called "OUTG2" in an abject underlying the node 223, and stores it as its input parameter 231, called "ING3". In another embodiment, objects are implemented according to a "push mechanism", and the node 223 pushes data stored as its parameter 229 to the node 227, in order to have it stored as the parameter 231. In one embodiment, the parameters 231 and 229 are of the same type.
However, in the preferred embodiment, they may be of a different type, in which case, the node 227 comprises yet another method, which, when executed, converts data received from the nade 223 according to a type of the parameter 231. In the embodiment wherein objects are coded according to a "push mechanism", the node 223 comprises another method which, when executed, converts the data stored in its parameter 229 according to the type of parameter 231 such that the data pushed to the node 227 corresponds to the type of its parameter 221. In the example illustrated in FIG. 3, according to the preferred embodiment, the object underlying the node 315, when executed, pulls a value stored as a parameter called "A" from the object underlying the node 303, called "Input A", and stores it as the parameter 317 called "First factor". Since the parameters called "A" and "First factor" are both integers, no type conversion is required.
[00101] A link 241 represents a combination of a data filow and a containment relationship between objects underlying nodes 243 and 245. It graphically distinguishes itself from the link 209 by an icon 207 it bears on its vertical section, and a triangle 237 connecting its vertical section to a square 239. According to the preferred embodiment, objects are implemented according to a "pull mechanism", and an object underlying the node 243 comprises a method, which, when executed, pulls data stored as an output parameter 247, labeled "OG4", in the object underlying the node 245, and stores it as its input parameter 249, labeled 'fi1U31". In another embodiment, objects are implemented according to a "push mechanism", and the object underlying the node 245 pushes data stored as its parameter 247 to the node 243, in order to have it stored as the parameter 249. In one embodiment, the parameters 239 and 241 are of the same type. However, in the preferred embodiment, they may be of a different type, in which case, the node 243 comprises yet another method, which, when executed, converts data received from the node 245 according to a type of the parameter 249. in the embodiment wherein objects are coded according to a "push mechanism", the node 245 comprises another method which, when executed, converts the data stored in its parameter 247 according to the type of parameter 249 such that the data pushed to the node 243 corresponds to the type of its parameter 239. Similarly, a link 261 represents a combination of a data flaw relationship between objects underlying nodes 243 and 263, called "U3" and "F4", wherein an object underlying the node 263 is contained in another, underlying the node 263, and parameters 267 and 271, called "IU32" and "IU33" of the object underling the node 243 are respectively assigned values stored in the object underlying the node 263, as parameters 265 and 269, called "OF41"
and "OF42". In the example illustrated in FIG. 3, according to the preferred embodiment, the object underlying the node 309, when executed, pulls a value stored as the parameter called "Product", of type integer from the object underlying the node 315, converts it to a string, and stores it as the parameter 313 called "Res 1 ", of type string.
[00102] The following description refers to a method of generating the representation illustrated in FIG. 3 using the nodes and links described herein above and provided by a GUI illustrated in FIG. 4. The program consists of a calculator capable of multiplying and dividing two numbers given by a user through the input device 113, and providing a result to the display unit 111. In the following description, a labeled nade shall be taken to designate an underlying abject, and link, an underlying data flow.
[00103] FIG. 4 illustrates an application window 401 comprising a pane 403 presenting the view of the node-link structure representing the program. The user may create the entire structure within the pane 403, without requiring fior other panes to be displayed. However, since hierarchical node-link structures expand along a vertical axis and require a negligible amount of horizontal space, other panes may be displayed within the window 401, in combination with the pane 403, in order to provide complementary information.
j00104] According to the present invention, the node-link structure is saved in memory, wherein each node comprises a name, a type, a status regarding whether it is revealed or hidden, a list of children as well as a list of nodes with which it entertains data flow relationships. The saved structure is updated at the occurrence of every relevant event in order for the interface to be practical. The term "relevant event" shall be taken to include, but not be limited to, a creation of a node, a creation of a fink, a deletion of node, a deletion of a link, a collapse of a node, an expansion of a node, as well as a modification of a label.
[00105] (n order to achieve such a display, the user must previously request for a view of a blank structure to be presented within the pane 403.
A blank view is comprised of a universal, unlabelled, node. In the preferred embodiment, the user assigns to the universal node a name that clearly identifies the program to be created. In the case of FIG. 4, the universal node is labelled "Calculator", as the program will be designed to receive two numbers, calculate their product as well as their quotient, and display either one of the fatter according to the user's request.
[00106] Once the universal node is labelled, the user adds nodes to the blank structure in order to establish a hierarchical structure of the program.
Prior to adding a node, the user is required to identify its hierarchical ranking therein. More specifically, he is required to identif~~ its parent. If the parent has not yet been added to the structure, the user is required to do so in order to set up the addition of its child. However, if the parent has already been created, the user may proceed with the addition of the child by selecting the parent through a mouse pointer, and pressing on the right button of the mouse in order for a corresponding menu to be displayed.
Subsequently, the user selects a °Create Child" entry from the menu in order for a second menu, comprising a library of objects, to be displayed ~~4_ adjacent to the first. The user may browse through the second menu to specify the object to be added.
[00107] FIG. 5 illustrates the window 401, comprising a pane 403 presenting the view of the structure as it is being created, wherein a node 409 is being added to the structure according to the methods of the present invention.
[00108] In order to add a node to the structure, the user verifies whether its parent, the Calculator, has already been created. Since a node 407 representing the Calculator is comprised within the view of the structure presented by the pane 403, the user may create a child thereof.
Consequently, he selects the Calculator through the mouse pointer and clicks on the right-button in order to display a first menu 409. He then selects the "Create Child" entry from the menu 409, and a second menu 411 is displayed as adjacent to the first one 409. From the second menu, the user selects an "Input" entry from the menu, since he would like to add a node responsible for receiving an operand.
[00109) Once the user specifies the type of the object to be added, a corresponding node is retrieved from the memory 105, and displayed within the pane 403, as indented relatively to a position of its parent. To clearly indicate the hierarchical relation between the parent and his child, a hierarchical link is displayed between the finro corresponding nodes. In the preferred embodiment, a label box comprising a blinking cursor is displayed as associated to the newly added child, in order for the user to enter its name. However, in other embodiments, the label box is displayed in response to a request issued by the user follawing the addition of the node to the structure.
[00110] FIG. 6 illustrates the application window 401 comprising the pane 403 presenting the view of the structure as it is being created, wherein the added node 409 is assigned a name.
[00111 ) As previously mentioned, the user identified the type of the new abject as being "Input". Since an object of the latter type corresponds to a gate, the icon 203 is retrieved fram the memory 105, and displayed within the pane 403 as a node 409. 'The latter is indented relatively to the node 407, its parent. To clearly indicate their hierarchical relationship, a link is displayed between the nodes 407 and 409. Furthermore, a tool tip 405 displayed at the bottom of the pane 403, instructs the user to assign a name to the node 409 in a label box 411 associated thereto.
[00112] In the preferred embodiment, the user iterates through the process described herein above until all nodes of the program have been defined. At that point, the hierarchical structure of the program is established. According to the present invention, the data flow of the program may be incorporated within its hierarchical structure. In order to do so, the user is required to specify a source, and a destination of each data flow to be added, as well as variables involved therein.
[00113] In order to add a data flow, the user must first identify its source.
In the preferred embodiment, this is done by selecting, through the mouse pointer, a data flow icon displayed within the pane 403 as associated to a node representing the source.
[00114] FIG. 7 illustrates the application window 401 comprising the pane 403 presenting the view of the structure as it is being created, wherein a source 415 of a link to be added is specified.
[00115] The user wants to add a link to the structure of the program, wherein a source of the data flow is a node 415. ~; onsequently, he moves the mouse pointer to a data flow reference point 413 displayed as associated to the node 415, and clicks on the left button of the mouse.
Subsequently, the tool tip 405 displays a message confirming that the node 49 5 has been identified as the source of a link to be added, and prompting the user to identify the destination of the latter.
[00116] In the preferred embodiment, the process of identifying a destination of a data flow is identical to that of identifyirug its source, but occurs after the latter. More specifically, the user is required to select, through the mouse pointer, a data flow icon displayed within the pane 403 as associated to a node representing the destination. Subsequently, a sub-node icon 207 is retrieved from the memory 105, and displayed within the pane 403 as associated to the identified destination.
[001'7] Once the sub-node is displayed, it is determined whether the destination is the parent of the source by searching through its list of -2~_ children. In the case where the destination is not the parent of the source, an arrow originating from the data flow icon associated to the source, and destined for that associated to the destination is displayed.
[00118] Finally, the tool tip 405 displays a message confirming the identified destination, and prompting the user to specify the variables involved in the data flow in a label box displayed within the pane 403 as associated to the added sub-node.
[00119] FIG. 8 illustrates the application window 401 comprising the pane 403 presenting the view of the structure as it is being created, wherein the destination of the data flow is specified.
[00120] The user wants to identify a node 419 as the destination of the data flow to be added. Consequently, he moves the mouse pointer to a reference point 41? displayed as associated to the node 419, and presses on the left button of the mouse. Subsequently, a sub-node icon 207 is retrieved from the memory 105, and displayed within the pane 403 as a sub-node 421 associated to the node 419.
[00121] Once the sub-node is displayed, it is determined whether the node 419 is the parent of the node 415 by searching through its list of children. Since the node 419 is not the parent of the node 415, a link 425 originating from the data flow icon 415, and destined for the data flow icon 423 is displayed.
[00122] Furthermore, the tool tip 405 displays a message confirming that the node 419 has been identified as the destination of the data flow to be added, and prompting the user to specify the variables involved in the data flow in a label box 423 displayed within the pane 403 as associated to the sub-node 421.
[001231 In the preferred embodiment, in response to the message displayed in the tool tip 405, the user enters in the label box 423 an output parameter comprised in the node 415, namely "Select", and an input parameter comprised in the node 419, namely "Op", wherein the value assigned to Op is assigned to Select as a result of the corresponding data flow.

[00124] According a preferred embodiment of the present invention, in the ease where the source is the child of the destination, the corresponding hierarchical link is exploited to simultaneously express the corresponding data flow, thereby avoiding the cumbersome display of are additional arrow.
As a result, an amount of horizontal space occupied by the pane 403 within the window 401 is maintained, thereby avoiding its expansion at the expense of other panes displayed therein. Furthermore, a number of arrows displayed within the pane 403 is maintained, which prevents an increase in structural complexity that would otherwise occur.
[00125] In another embodiment, all data flows are expressed through arrows, regardless of whether corresponding sources are children of corresponding destinations.
[00126] FIG. 9 illustrates the application window 401 comprising the pane 403 presenting the view of the structure, wherein a source 433 of a second link to be added is specified.
[00127] The user wants to add a link to the structure of the program, wherein a source of the data flow is a node 429. Consequently, he moves the mouse pointer to a reference point 427 displayed as associated to the node 429, and presses on the left button of the mouse. Subsequently, the tool tip 405 displays a message confirming that the node 429 has been identified as the source of a data flow to be added, and prompting the user to identify the destination of the latter-[00128] FIG. 10 illustrates the application window 401 comprising the pane 403 presenting the view of the structure, wherein a destination 419 of the second data flow is specified, and the destination 419 is a parent of the source 429.
[00129] The user wants to identify a node 419 as the destination of the data flow to be added. Consequently, he moves the mouse pointer to a the reference point 417 displayed as associated to the node 419, and presses on the left button of the mouse. Subsequently, a sub-node icon 207 is retrieved from the memory 105, and displayed within the pane 403 as a sub-node 433 associated to the node 419.

_28_ [00130] Once the sub-node 433 is displayed, it is deterrnined whether the node 419 is a parent of the node 429 by searching through its list of children. Since the node 419 is a parent of the node 429, their hierarchical link is exploited to represent their data flow relationship.
[00131] As in the case where the source is not a child of the destination, the tool tip 405 displays a message confirming that the node 419 has been identified as the destination of the data flow to be added, and prompting the user to specify the variables involved in the data flow in a label box 433 displayed within the pane 403 as associated to the sub-node 431.
[00132] in the preferred embodiment, in response to the message displayed in the too! tip 405, the user enters in the label box 433 an output parameter comprised in the nude 429, namely "Product", and an input parameter comprised in the node 419, namely "R.es 1", wherein the value assigned to Product is assigned to Res 1 as a result of performing the corresponding data flow.
[00133] During the process of creating a structure of a program, users often require that a created node be deleted. According to the present invention, in order to delete a node from the structure of the program a user moves the mouse pointer to its location within the pane 403, clicks on the right button of the mouse in order to display the menu 409, and selects a "Delete" entry ftom the menu 409, in response to which, the node, its reference point, as wail as an eventual expansion indicator and hierarchical link through which it is related to its parent are removed from the view presented by the pane 403.
[00134] According to a preferred embodiment of the invention, if the deleted node has children, the latter are automatically removed from the view presented by the pane 403. Furthermore, if it is involved in a data flow, all corresponding sub-nodes and links are removed as well.
[00135] FIC. 11 illustrates the application window 40'1 comprising the pane 403 presenting the view of the structure, wherein a node 435 is being deleted.
[00136] T'he user wants to delete a node 435 from the structure of the program. Consequently, he moves the mouse pointer to a location of the -'~9_ node 435, and presses on the right button of the mouse in order to display the menu 409. He then selects the "Delete" entry from the menu 409, in response to which, the node 435 and a hierarchical link through which it is related to the node 419 are deleted.
[00137] The node 435 does not have any children, but is involved in several data flows. Consequently, all icons describing its data flows are removed as well, namely sub-nodes 437, 439, and 441, its expansion indicator 455, and segments of links 443 and 445. The resulting node-link structure of the program is illustrated in FIG. 12, within the. pane 403.
[001383 Users may also require that a created data flow link be deleted.
According to a preferred embodiment of the present invention, in order to delete such a link from the structure of the program, a user moves the mouse pointer to its location within the pane 403, presses on the left button of the mouse in order to select it, and presses on a control button responsible for deleting selected elements, in response to which, the link and sub-nodes to which its is associated are removed from the structure.
[00139] In another embodiment, a user deletes a link by moving the mouse pointer to its location within the pane 403, pressing on the right button of the mouse in order to display a menu, and selecting a "Delete"
entry from the displayed menu, in response to which the link and associated sub-nodes are removed from the structure.
[00140] FIG. 13 illustrates the application window 401 comprising the pane 403 presenting the view of the structure, wherein a link 443 to be removed is specified.
[00141] The user wants to delete a data flow link 443 associated to sub-nodes 439 and 447 from the structure of the program. Consequently, he moves the mouse pointer to a location of the link 443 within the pane 403, and presses on the left button of the mouse in order to select the link 443, in response to which, the tool tip 405 displays a message confirming the selection. Thereafter, the user presses on a control button responsible for deleting selected elements, and consequently, the link 443 is removed along with the sub-nodes 439 and 447. The resulting node-fink structure is illustrated in FIG. 14, within the pane 403.

-3~-[00142] As mentioned previously, hierarchical structures expand mainly slang a vertical axis, and when a program reaches a substantial length, displaying each created node may be cumbersome, especially when a user is navigating through the structure. As a result" users often require for nodes of lesser interest to be removed fram the view presented by the pane 403, without being deleted. According to the present invention, a user may hide children of a specified node, wherein hidden nodes are removed from a view presented by the pane 403, but may be conveniently recovered according to the needs of he user.
[00143) In order to hide children of a node, the user moves the mouse pointer to a specified location of an expansion indicator associated to the node, and presses on the left button of the mouse. Subsequently, all children of the node are removed from the view presented by the pane 403, along with the hierarchical links through which they are related to the node.
[00144) In the preferred embodiment, if the nade comprises sub-nodes, the latter are removed from a view preseni:ed by the pane 403.
Furthermore, ends of links associated to the sub-nodes became associated to a reference point of the node.
[00145] Still in the preferred embodiment, if the node comprises children involved in data flows, ends of corresponding links associated to the children become associated to the reference point of the node.
[00146] Links associated to a reference point inform the user that hidden sub-nodes and/or children of a correspanding node are iinvolved in a data flow. However, in cases where both ends of those links .are not displayed within the pane 403, it may be difficult for the user to assess their number.
According to the present invention, their number is displayed within the pane 403 as associated to the corresponding indicator.
[00147] The user may recover hidden children, sub-nodes, and links associated to the latter by moving the mouse pointer to a location of an expansion indicator displayed within the pane 403 as associated to a corresponding node, and pressing on the left button of the mouse.

[00148] FIG. 15 illustrates the application window 401 comprising the pane 403 presenting the view of the structure, wherein a parent node 419 to be collapsed is specified.
[00149) The user wishes to collapse the node 433, as a display of its internal structure within the pane 403 is deemed cumbersome. According to the view presented by the pane 403, three sub-nodes 421, 431, and 441 are associated to the node 419. Two of those sub-nodes, namely 431 and 441, describe a data flow between the node 431 and one of its two children, namely the nodes 429 and 435. ~n the other hand, the sub-node 421 describes a data flow between the nodes 419 and 417, and is therefore associated to a data flow link. As for the children of the node 419, each one of them is associated to two sub-nodes, each of which describes a data flow with a node that is not a child of the node 419. fVlore specifically, the sub-nodes 439 and 447 are associated to the link 443, and describe data flows originating from the node 409 and destined for the nodes 435 and 429 respectively. As for sub-nodes 437 and 449, they are associated to the link 445, and describe data flows originating from a node 457 and destined for the nodes 435 and 429 respectively.
[001501 Consequently, the user moves the mouse pointer to a location of an expansion indicator 451, and presses on the left buttorr of the mouse, in response to which the sub-nodes 421, 431, and 441 are removed from the view presented by the pane 403, as they are associated to the node 419.
The nodes 429 and 435 are removed as well, since they are children of the node 419. The sub-nodes 437, 439, 447, and 449 are also removed, as they are associated to the children of the node 419. As for the links 425, 443, and 445, ends associated with sub-nodes 437, 439, 447, 449, and 421 become associated with reference paint 417. Furthermore, a link counter 459 is displayed, specifying that the Deference point 423 is associated with 3 links.
[00151] The resulting node-link structure is presented within the view presented by the pane 403, as illustrated in FIG. 11~. In order to recover the structure illustrated in FIG. 15, the user would move the mouse pointer to the location of the expansion indicator 451, and press on the left button of the mouse.

[00152] As mentioned previously, ends of data flow links may be relocated as a result of collapsing a structure of a node. such links provide an indication as to a location of their hidden source or destination, but not their identity. According to the present invention, a user may move a mouse pointer to a location of a data flow link, and wait for an amount of time indicating his interest in viewing a description of the data flow, in response to which, a tool tip is displayed specifying involved variables.
[00153] Alternatively, the user may move the mouse pointer to a location of the data flow link and press twice on the mouse button, in which case the view presented within the pane 403 is modified in order to display one of a corresponding destination and source that is farthest from its center. if the corresponding node is not hidden, the view is simply shifted. If however, the node is hidden, its ancestors are exploded until it is revealed, and a corresponding shift of the view is performed.
[00154] FIG. 77 illustrates the application window comprising the pane presenting the view of the structure, wherein a tool tip presenting information relating to a data flaw represented by a specified link is displayed.
[00155] The user wishes to view variables involved in a data flow represented by the link 443. He therefore moves the mouse pointer to a location of the link 443, and waits for an amount of time indicating his interest in viewing a description of the corresponding data flow, in response to which a tool tip 453 is displayed, specifying the source and two destinations of the link 443, as well as the corresponding variables.
[00156] While the invention has been described in connection with specific embodiments thereof, it will be understood that it is capable of further modifications and this application is intended to cover any varia-tions, uses, or adaptations of the invention following, in general, the principles of the invention and including such departures from the present disclosure as come within known or customary practice within the art to which the invention pertains and as may be applied to the essential features hereinbefore set forth, and as follows in the scope of the appended claims.
,:~~ , ... mA..~ .. ., . ,~ " ,. s.. . ~ ..

Claims (62)

1. A method of generating a graphical representation of a program on a display device comprising:
- providing a hierarchical ranking of programming objects;
- displaying nodes representing said programming objects according to a hierarchical structure and said hierarchical ranking on said display device;
- specifying at least one transmission of data between a first and a second of said programming objects;
- identifying parameters of said transmission according to said at least one of said first and said second programming objects; and - displaying on said display device a link relating nodes representing said first and said second according to said parameters, wherein said link represents said at least one transmission of data.
2. The method of claim 1, wherein said specifying at least one transmission comprises identifying one of said first and said second as a source of said transmission, and the other, as a destination of said transmission, wherein said link is displayed according to said source and said destination.
3. The method of claim 2, wherein said specifying at least one transmission comprises selecting one of a plurality of parameters of said source as an output parameter, and said identifying parameters of said transmission comprises identifying a type of said output parameter.
4. The method of claims 2 or 3, wherein said specifying at least one transmission comprises selecting one of a plurality of parameters of said destination as an input parameter, wherein said data is to be stored as an input parameter as a result of said transmission, said identifying parameters of said transmission comprises identifying a type of said input parameter.
5. The method of claim 4, wherein said link is displayed as a red arrow, whereby said red indicates an incoherence between said type of said input parameter and said type of said output parameter.
6. The method of claim 4, further comprising requesting a detailed view of said source, removing said link, displaying a sub-node of a node representing said source, and displaying a new link relating said sub-node and a node representing said destination in response to said requesting, wherein said sub-node represents said output parameter.
7. The method of claim 4, further comprising requesting a detailed view of said destination, removing said link, displaying a sub-node of a node representing said destination, and displaying a new link relating said sub-node and a node representing said source in response to said requesting, wherein said sub-node represents said input parameter.
8. The method of claim 4, further comprising requesting a detailed view of said program, displaying a first sub-node of a node representing said source and a second sub-node of a node representing said destination, removing said link, and displaying a new link relating said first sub-node and said second sub-node in response to said requesting, wherein said first sub-node represents said output parameter, said second sub-node represents said input parameter.
9. The method of claim 6, further comprising requesting a non-detailed view of said source, removing said link relating said sub-node, hiding said sub-node, and displaying a new link relating said node representing said source and said node representing said destination in response to said requesting.
10. The method of claim 7, further comprising requesting a non-detailed view of said destination, removing said link relating said sub-node, hiding said sub-node, and displaying a new link relating said node representing said source and said node representing said destination in response to said requesting.
11. The method of claim 8, further comprising requesting a non-detailed view, removing said link relating said first sub-node and said second sub-node, hiding said first sub-node and said second sub-node, and displaying a link associated to said node representing said source and said node representing said destination in response to said requesting.
12. The method of claims 1 or 2, further comprising displaying a label describing said transmission.
13. The method of claim 12, further comprising requesting a display of said label, wherein said label is displayed in response to said requesting.
14. The method of claim 12, wherein said label indicates said input parameter and said output parameter.
15. The method of claims 1 or 2, wherein according to said hierarchical structure, a first node is displayed under, related through a hierarchical link to, and indented relatively to, a second node if a programming object represented by said first node is a child of a programming object represented by said second node.
16. The method of claim 15, wherein said identifying comprises searching through said hierarchical ranking for said source and said destination, and determining whether said source is a child of said destination, and said displaying on said display device a link comprises displaying an arrow between said nodes representing said first and said second programming objects in the case where said source is not a child of said destination according to said determining, and displaying a sub-node on a hierarchical link relating said nodes representing said first and said second programming objects in the case where said source is a child of said destination according to said determining, whereby a number of displayed arrows is maintained.
17. The method of claim 1, further comprising requesting a different hierarchical structure, and modifying said graphical representation of a program according to said different hierarchical structure in response to said requesting.
18. The method of claim 1, further comprising selecting a node representing an undesirable programming objects, and deleting said node representing said undesirable programming object.
19. The method of claim 18, further comprising deleting a link relating said node representing said undesirable programming object in response to said deleting said node.
20. The method of claim 18, further comprising deleting a node representing a programming object contained in said undesirable programming object in response to said deleting said node representing said programming object.
21. The method of claim 20, further comprising deleting a link relating said node representing a programming object contained in said undesirable programming object in response to said deleting a node representing a programming object contained in said undesirable programming object.
22. The method of claim 1, further comprising requesting for a node representing a programming object contained in another to be hidden, and hiding said node representing a programming object contained in another in response to said requesting.
23. The method of claim 1, further comprising requesting for each node representing a programming object contained in a selected parent programming object to be hidden, removing said link, hiding a node representing said source, and displaying a link relating a node representing said destination and a node representing said parent, wherein said source is contained in said parent, and said link displayed indicates that a programming object contained in said parent is involved in a transmission of data.
24. The method of claim 1, further comprising requesting for each node representing a programming object contained in a parent programming object to be hidden, removing said link, hiding said node representing said destination, and displaying a link associated to a node representing said source and a node representing said parent, wherein said destination is contained in said parent, and said link displayed indicates that a programming object contained in said parent is involved in a transmission of data.
25. The method of claim 1, further comprising requesting each node representing programming objects contained in a first parent programming object or a second parent programming object to be hidden, removing said link, hiding nodes representing said source and said destination, and displaying a link associated to a node representing said first parent and a node representing said second parent, wherein said destination is contained in said first parent and said source is contained in said second parent, and said link displayed indicates that a programming object comprised in said first parent and a programming object comprised in said second parent are involved in a same transmission of data.
26. The method of claim 23, further comprising requesting a detailed view of said parent, revealing nodes representing programming objects contained in said parent, removing said link associated with said node representing said source and said node representing said parent, and displaying a link associated to said node representing said destination and said node representing said source.
27. The method of claim 24, further comprising requesting a detailed view of said parent, revealing nodes representing programming objects contained in said parent, removing said link associated with said node representing said source and said node representing said parent, and displaying a link associated to said node representing said destination and said node representing said source.
28. The method of claim 25, further comprising requesting a detailed view of said first parent and said second parent, revealing nodes representing programming objects contained in said first parent and said second parent, removing said link associated with said node representing said first parent and said node representing said second parent, and displaying a link associated to said node representing said source and said node representing said destination.
29. The method of claim 1, further comprising requesting for a node of interest representing a programming object of interest to be displayed, searching through said hierarchical ranking for said programming object of interest, determining a hierarchical rank of said programming object of interest, and displaying said node of interest according to said hierarchical rank of said programming object of interest on said display device in response to said requesting.
30. The method of claim 29, further comprising revealing at least one node representing a programming object contained in another, wherein said node of interest is one of said at least one node.
31. The method of claim 29, wherein said requesting comprises selecting a link through which said node of interest is related.
32. A computer program product for generating a graphical representation of a program on a display device comprising a computer usable storage medium having computer readable program code means embodied in the medium, the computer readable program code means comprising:
- computer readable program code means for providing a hierarchical ranking of programming objects;
- computer readable program code means for displaying nodes representing said programming objects according to a hierarchical structure and said hierarchical ranking on said display device;
- computer readable program code means for specifying at least one transmission of data between a first and a second of said programming objects;
- computer readable program code means for identifying parameters of said transmission according to said at least one of said first and said second programming objects; and - computer readable program code means for displaying on said display device a link relating nodes representing said first and said second according to said parameters, wherein said link represents said at least one transmission of data.
33. The computer program product of claim 32, wherein said computer readable program code means for detecting at least one transmission comprises computer readable program code means for identifying one of said first and said second as a source of said transmission, and the other, as a destination of said transmission, wherein said link is displayed according to said source and said destination.
34. The computer program product of claim 33, wherein said computer readable program code means for specifying at least one transmission comprises selecting one of a plurality of parameters of said source as an output parameter, and said computer readable program code means for identifying parameters of said transmission comprise s computer readable program code means for identifying a type of said output parameter.
35. The computer program product of claims 33 or 34, wherein said computer readable program code means for specifying at least one transmission comprises computer readable program code means for selecting one of a plurality of parameters of said destination as an input parameter, wherein said data is to be stored as an input parameter as a result of said transmission, said computer readable program code means for identifying parameters of said transmission comprises computer readable program code means for identifying a type of said input parameter.
36. The computer program product of claim 35, wherein said link is displayed as a red arrow, whereby said red indicates an incoherence between said type of said input parameter and said type of said output parameter.
37. The computer program product of claim 35, further comprising computer readable program code means for requesting a detailed view of said source, computer readable program code means for removing said link, computer readable program code means for displaying a sub-node of a node representing said source, and computer readable program code means for displaying a new link relating said sub-node and a node representing said destination in response to said requesting, wherein said sub-node represents said output parameter.
38. The computer program product of claim 35, further comprising computer readable program code means for requesting a detailed view of said destination, computer readable program code means for removing said link, computer readable program code means for displaying a sub-node of a node representing said destination, and computer readable program code means for displaying a new link relating said sub-node and a node representing said source in response to said requesting, wherein said sub-node represents said input parameter.
39. The computer program product of claim 35, further comprising computer readable program code means for requesting a detailed view of said program, computer readable program code means for displaying a first sub-node of a node representing said source and a second sub-node of a node representing said destination, computer readable program code means for removing said link, and computer readable program code means for displaying a new link relating said first sub-node and said second sub-node in response to said requesting, wherein said first sub-node represents said output parameter, said second sub-node represents said input parameter.
40. The computer program product of claim 37, further comprising computer readable program code means for requesting a non-detailed view of said source, computer readable program code means for removing said link relating said sub-node, computer readable program code means for hiding said sub-node, and computer readable program code means for displaying a new link relating said node representing said source and said node representing said destination in response to said requesting.
41. The computer program product of claim 38, further comprising computer readable program code means for requesting a non-detailed view of said destination, removing said link relating said sub-node, hiding said sub-node, and displaying a new link relating said node representing said source and said node representing said destination in response to said requesting.
42. The computer program product of claim 39, further comprising computer readable program code means for requesting a non-detailed view, computer readable program code means for removing said link relating said first sub-node and said second sub-node, computer readable program code means for hiding said first sub-nods and said second sub-node, and computer readable program code means for displaying a link relating said node representing said source and said node representing said destination in response to said requesting.
43. The computer program product of claims 32 or 33 further comprising computer readable program code means for displaying a label describing said transmission.
44. The computer program product of claim 43, further comprising computer readable program code means for requesting a display of said label, wherein said label is displayed in response to said requesting.
45. The computer program product of claim 43, wherein said label indicates said input parameter and said output parameter.
46. The computer program product of claims 32 or 33, wherein according to said hierarchical structure, a first node is displayed under, related through a hierarchical link to, and indented relatively to, a second node if a programming object represented by said first node is contained in a programming object represented by said second node.
47. The computer program product of claim 46, wherein said computer readable program code means for identifying comprises computer readable program code means for searching through said hierarchical ranking for said source and said destination, and computer readable program code means for determining whether said source is a child of said destination, and said computer readable program code means for displaying on said display device a link comprises computer readable program code means for displaying an arrow between said nodes representing said first and said second programming objects in the case where said source is not a child of said destination according to said computer readable program code means for determining, and computer readable program code means for displaying a sub-node on a hierarchical link relating said nodes representing said first and said second programming objects in the case where said source is a child of said destination according to said computer readable program code means for determining, whereby a number of displayed arrows is maintained.
48. The computer program product of claim 32, further comprising computer readable program code means for requesting a different hierarchical structure, and computer readable program code means for modifying said graphical representation of a program according to said different hierarchical structure in response to said requesting.
49. The computer program product of claim 32, further comprising computer readable program code means for selecting a node representing an undesirable programming objects, and computer readable program code means for deleting said node representing said undesirable programming object.
50. The computer program product of claim 49, further comprising computer readable program code means for deleting a link relating said node representing said undesirable programming object in response to said deleting said node.
51. The computer program product of claim 49, further comprising computer readable program code means for deleting a node representing a programming object contained in said undesirable programming object in response to said deleting said node representing said programming object.
52. The computer program product of claim 51, further comprising computer readable program code means for further comprising deleting a link relating said node representing a programming object contained in said undesirable programming object in response to said deleting a node representing a programming object contained in said undesirable programming object.
53. The computer program product of claim 32, further comprising computer readable program code means for requesting for a node representing a programming object contained in another to be hidden, and computer readable program code means for hiding said node representing a programming object contained in another in response to said requesting.
54. The computer program product of claim 32, further comprising computer readable program code means for requesting for each node representing a programming object contained in a selected parent programming object to be hidden, computer readable program code means for removing said link, computer readable program code means for hiding a node representing said source, and computer readable program code means for displaying a link relating a node representing said destination and a node representing said parent, wherein said source is contained in said parent, and said link displayed indicates that a programming object contained in said parent is involved in a transmission of data.
55. The computer program product of claim 32, further comprising computer readable program code means for requesting for each node representing a programming object contained in a parent programming object to be hidden, comprising computer readable program code means for removing said link, comprising computer readable program code means for hiding said node representing said destination, comprising computer readable program code means for and displaying a link associated to a node representing said source and a node representing said parent, wherein said destination is contained in said parent, and said link displayed indicates that a programming object contained in said parent is involved in a transmission of data.
56. The computer program product of claim 32, further comprising computer readable program code means for requesting each node representing programming objects contained in a first parent programming object or a second parent programming object to be hidden, computer readable program code means for removing said link, computer readable program code means for hiding nodes representing said source and said destination, and computer readable program code means for displaying a link associated to a node representing said first parent and a node representing said second parent, wherein said destination is contained in said first parent and said source is contained in said second parent, and said link displayed indicates that a programming object comprised in said first parent and a programming object comprised in said second parent are involved in a same transmission of data.
57. The computer program product of claim 54, further comprising computer readable program code means for requesting a detailed view of said parent, computer readable program code means for revealing nodes representing programming objects contained in said parent, computer readable program code means for removing said link associated with said node representing said source and said node representing said parent, and computer readable program code means for displaying a link associated to said node representing said destination and said node representing said source.
58. The computer program product of claim 55, further comprising computer readable program node means for requesting a detailed view of said parent, computer readable program code means for revealing nodes representing programming objects contained in said parent, computer readable program code means for removing said link associated with said node representing said source and said node representing said parent, and computer readable program code means for displaying a link associated to said node representing said destination and said node representing said source.
59. The computer program product of claim 56, further comprising computer readable program code means for requesting a detailed view of said first parent and said second parent, computer readable program code means for revealing nodes representing programming objects contained in said first parent and said second parent, computer readable program code means for removing said link associated with said node representing said first parent and said node representing said second parent, and computer readable program code means for displaying a link associated to said node representing said source and said node representing said destination.
60. The computer program product of claim 32, further comprising computer readable program code means for requesting for a node of interest representing a programming object of interest to be displayed, computer readable program code means for searching through said hierarchical ranking for said programming object of interest, computer readable program code means for determining a hierarchical rank of said programming object of interest, and computer readable program code means for displaying said node of interest according to said hierarchical rank of said programming object of interest on said display device in response to said requesting.
61. The computer program product of claim 60, further comprising computer readable program code means for revealing at least one node representing a programming object contained in another, wherein said node of interest is one of said at least one node.
62. The computer program product of claim 60, wherein said computer readable program code means for requesting comprises computer readable program code means for selecting a link through which said node of interest is related.
CA002427700A 2003-05-01 2003-05-01 Visual interface for object-oriented programming Abandoned CA2427700A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CA002427700A CA2427700A1 (en) 2003-05-01 2003-05-01 Visual interface for object-oriented programming
PCT/CA2004/000615 WO2004097627A2 (en) 2003-05-01 2004-04-30 A method of representing data flow between programming objects in a hierarchical display
US10/836,617 US20040268219A1 (en) 2003-05-01 2004-05-03 Method of representing data flow between programming objects in a hierarchical display

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CA002427700A CA2427700A1 (en) 2003-05-01 2003-05-01 Visual interface for object-oriented programming

Publications (1)

Publication Number Publication Date
CA2427700A1 true CA2427700A1 (en) 2004-11-01

Family

ID=33315239

Family Applications (1)

Application Number Title Priority Date Filing Date
CA002427700A Abandoned CA2427700A1 (en) 2003-05-01 2003-05-01 Visual interface for object-oriented programming

Country Status (1)

Country Link
CA (1) CA2427700A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177120A (en) * 2019-12-24 2020-05-19 北京亚信数据有限公司 Data management method and device
CN114996346A (en) * 2022-06-10 2022-09-02 艾嘉智能科技(天津)有限公司 Visual data stream processing method and device, electronic equipment and storage medium

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111177120A (en) * 2019-12-24 2020-05-19 北京亚信数据有限公司 Data management method and device
CN114996346A (en) * 2022-06-10 2022-09-02 艾嘉智能科技(天津)有限公司 Visual data stream processing method and device, electronic equipment and storage medium

Similar Documents

Publication Publication Date Title
AU768387B2 (en) Dynamic object visualization and code generation
AU768367B2 (en) Property based context portals
US6915301B2 (en) Dynamic object properties
US5553226A (en) System for displaying concept networks
US8060832B2 (en) Managing information display
US8677279B2 (en) Visual hierarchy explorer
KR100763323B1 (en) A method and system for extending the file system api
JP3309066B2 (en) Computer system, method and program for constructing statement
US7334196B2 (en) User interface display navigation and item selection system
US7360175B2 (en) Hierarchical, multilevel, expand and collapse navigation aid for hierarchical structures
JP3400193B2 (en) Method and apparatus for displaying tree structure list with window-related identification icon
US20140310320A1 (en) Creating mapping rules from meta data for data transformation utilizing visual editing
US20050193268A1 (en) Method and system for making resources available
US9760603B2 (en) Method and system to provide composite view of data from disparate data sources
US20040268219A1 (en) Method of representing data flow between programming objects in a hierarchical display
JP2007265031A (en) Dictionary content processor, content display system and content display method
US20020122077A1 (en) Multiphase, task-oriented progress indicator incorporating graphical icons
US8171428B2 (en) System and method for implementing data navigation interface
JPH10240592A (en) Device and method for showing dependency relation of file
JP2839555B2 (en) Information search method
KR101989634B1 (en) Creating logic using pre-built controls
CA2427700A1 (en) Visual interface for object-oriented programming
JPH01156843A (en) Operating device for hierarchy file
CN115509665A (en) Method, device, medium and equipment for recording control in window
JPH01237755A (en) Picture display method for hierarchy type document

Legal Events

Date Code Title Description
FZDE Discontinued