Abstract:
Disclosed is an apparatus and method to build programs from activity function units (AFUs) within a graphical environment. Each AFU is made from graphical representations of functional units (FUs). The resulting AFUs can be locked so that users cannot view proprietary and trade secret information as to how they accomplish their tasks. AFUs can be combined with other FUs and previously-created code represented in FU form to build large complex programs which are modified and added to by the user by means of manipulation of graphical elements on the computer screen without disclosing underlying coding.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
     This application relates to U.S. patent application Ser. No. 09/455,708, entitled “Graphical Programming Environment for Deterministic Finite State Automata,” filed contemporaneously herewith. 
     This application also relates to U.S. patent application Ser. No. 09/455,707, entitled “Finite State Automaton for Emulation of Activity-Sequenced Engine,” filed contemporaneously herewith. 
    
    
     TECHNICAL FIELD 
     The present invention relates in general to programmed data processing systems, and in particular to programmable deterministic finite state automata machines and graphical user interface (GUI) systems. 
     BACKGROUND INFORMATION 
     A finite state automaton, also called a “finite state machine” or “transducer,” consists of a set of states, a set of input events, a set of output events, and a state transition function. The set of states includes an internal state. Some states may be designed as “terminal states.” The state transition function takes the current state in an input event and returns the new set of output events and the next state. The finite state machine can also be viewed as a function which maps an ordered sequence of input events onto a corresponding sequence of output events. 
     A deterministic finite state automaton is one where each next state is uniquely determined by a single input event. A deterministic finite state automaton is contrasted with a backtracking automaton, where at each state there may be several possible actions and the only way to choose between them is to try each one and backtrack if that transition fails. 
     A deterministic finite state automaton can be depicted in a variety of manners well-recognized within the mathematical art. One way in which a deterministic finite state automaton might be depicted is in a table format. For example: 
     
       
         
               
               
               
               
             
           
               
                   
                   
               
               
                   
                 Current State 
                 Exit Condition 
                 Next State 
               
               
                   
                   
               
             
             
               
                   
                 Begin 
                 Start 
                 A 
               
               
                   
                 A 
                 2 
                 B 
               
               
                   
                 A 
                 3 
                 Exit 
               
               
                   
                 B 
                 5 
                 C 
               
               
                   
                 B 
                 6 
                 Exit 
               
               
                   
                 C 
                 4 
                 Exit 
               
               
                   
                   
               
             
          
         
       
     
     For greater clarity, a deterministic finite state automaton may be depicted graphically as in FIG. 1, which illustrates the automaton of the table. The first row of the table format is depicted by a Begin state  101 . The next state listed on the table is A  103 . Movement is made from the Begin state  101  to the A state  103  upon a starting condition  111 . Likewise, the diagram illustrates that states B  105  each has exit conditions for  5   119 , and  6   121 , and state  107  has an exit condition  4   117 . 
     Finite state automata have been reduced to programming code, as demonstrated by FIG.  2 . While FIG. 2 demonstrates iterative meta-code to implement the finite state automaton shown in the table above and FIG. 1, those skilled in the art will appreciate that deterministic finite state automata may be implemented in a variety of programming languages to achieve results similar to the results obtained from the pseudo-code in FIG.  2 . Deterministic finite state automaton are well-suited to being programmed in object-oriented languages. In fact, object-oriented languages have heretofore been considered ideal for computer implementation of the deterministic finite state automata model. 
     Those skilled in the art will appreciate, however, that, regardless of the language used, computer security relating to a coded implementation of such deterministic finite state automata is often lacking. The code which creates the model may be decompiled or directly accessed by a programmer of competent skill, revealing the underlying code. The underlying code may contain trade secrets, security implementations, or other confidential information which are not desired to be public information. The instant invention addresses the security implications inherent in this system of deterministic finite state automata implementation and renders a secure system in which finite state automata may be implemented and modified without revelation of underlying code. 
     SUMMARY OF THE INVENTION 
     The invention is a graphical-oriented editor that greatly improves the security implications involved in the creation, testing, and subsequent revision of deterministic finite state automata. The editor is based upon the concept of functional units (FUs). Each FU represents a state in a deterministic finite state automaton. Each FU is an object that facilitates the meaningful connection to other FUs to construct a larger logical entity which is an activity functional unit (AFU). An AFU may be treated as a FU and nested. Notably, each FU may be locked so that its underlying defining elements may not be viewed by an unauthorized user. 
     By manipulating the FUs and defining relationships between them graphically on the screen, the instant invention allows a user to build a complete program from FUs without the necessity of their viewing the underlying code. The resulting program is an AFU and can be locked and later combined with other AFUs and previously created AFUs to build large, complex programs. 
     Three control structures are necessary to implement to any program: sequence, branching, and iteration. Therefore, the instant invention provides for each of these features in order to permit construction of the most powerful and fully functional programs. 
     A database structure is also disclosed for facilitation of the display of the FU in the graphical environment and the tracking of the security features of the instant invention. 
     The development cycle for products built from FUs through the instant graphical editor is considerably shorter than the development cycle for products constructed in a more traditional coding manner. Consequently, the cost of development is decreased. Short development cycles also enable development groups to more quickly respond to product management and marketing requirements. 
     The use of FUs and the graphic editor also considerably reduces the complexity of modifications to existing programs. Consequently, the cost of upkeep and maintenance of programs is decreased. Development groups are also able to then respond quickly to modification requirements. 
     The foregoing outlines broadly the features and technical advantages of the present invention in order that the detailed description of the invention that follows may be better understood. Additional features and advantages of the invention will be described hereinafter, which form the subject of the claims of the invention. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which: 
     FIG. 1 is a system block diagram representation of a deterministic finite state automaton; 
     FIG. 2 is an example of the finite state automaton depicted in FIG. 1 as implemented in C-type meta-code; 
     FIG. 3 is a system block diagram of a data processing system hardware and firmware which may be used to implement the invention. 
     FIG. 4 is a block process diagram to read the contents of a data file; 
     FIG. 5 is a diagram depicting the graphic editor of the instant invention and its ability to define the sequencing and branching of several FUs; 
     FIG. 6 is a diagram depicting the graphic editor&#39;s ability to define data passing between several FUs; 
     FIG. 7A is a diagram depicting a screen print of the graphic editor and demonstrating its ability to arrange FUs within the graphical environment; 
     FIG. 7B is a screen print of the graphical editor depicting the result of manipulation of the location of the FUs on the screen; and 
     FIG. 8 is a screen print of a functional unit resource mapping dialog box from the graphic editor of the instant invention demonstrating the ability to manually specify parameter passing between FUs. 
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
     In the following description, numerous specific details are set forth such as computer programming languages, computer operating systems, graphic display systems, input/output systems, etc., to provide a thorough understanding of the invention. However, it will be obvious to those skilled in the art that the present invention may be practiced without such specific details. In other instances, well-known circuits, computer equipment, or graphic display systems have been shown in block diagram form in order to not obscure the present invention in unnecessary detail. For the most part, details concerning timing considerations, specific equipment used, specific programming languages used, and the like have been omitted inasmuch as these details are not necessary to obtain a complete understanding of the present invention and are within the skills of persons of ordinary skill in the art. 
     A representative hardware environment for practicing the present invention is depicted in FIG. 3, which illustrates the typical hardware configuration of a data processing system  313  in accordance with the subject invention. The data processing system  313  includes a central processing unit (CPU)  310 , such as a conventional microprocessor, and a number of other units interconnected via a system bus  312 . The data processing system  313  includes a random access memory (RAM)  314 , a read only memory (ROM)  316 , and an input/output (I/O) adapter  318  for connecting peripheral devices such as disk units  320  and tape drives  340  to the bus  312 , a user interface adapter  322  for connecting a keyboard  324 , a mouse  326 , and/or other user interface devices such as a touch screen device (not shown) to the bus  312 , a communication adaptor  334  for connecting the data processing system  313  to a data processing network  342 , and a display adaptor  336  for connecting the bus  312  to a display device  338 . The CPU  310  may include other circuitry not shown herein, which will include circuitry found within a microprocessor, e.g., execution unit, bus interface unit, arithmetic logic unit, etc. The CPU  310  may also reside on a single integrated circuit. 
     The instant invention is a graphically-oriented editor that greatly enhances the security of confidential information during the creation, testing, and subsequent revision of activity functional units (AFUs). An AFU is an object that facilitates the meaningful connection of FUs to construct a larger logical entity. Each FU is representative of a finite state automaton or a state nested within a finite state automaton. Each FU may be locked so that its underlying code or AFUs may not be viewed, while at the same time preserving its functionality. 
     By way of example, an AFU that facilitates reading the contents of a data file would be a useful edition to a programming toolkit. The act of reading a file requires the performance of several smaller steps that are executed deterministically in a logical manner. Therefore, it can be represented by a deterministic finite state automaton, and subsequently an AFU. The following three steps represent a functional decomposition of such an AFU: 
     Open the file. 
     Read from the data file. 
     Close the file. 
     While at first glance, the reading of data from the file appears to be a simple, straightforward, and easily implemented activity. Those skilled in the art will note that sequential performance of the steps as outlined does not guarantee successful completion of the desired activity. 
     However, the sequence of these steps may be depicted graphically on a computer screen by the instant invention, as demonstrated with reference to FIG.  4 . FIG. 4 depicts a graphical screen  410 , which is comprised of the background  418 , and several FUs  412 ,  414 ,  416 . Each FU  412 ,  414 ,  416  is depicted on the graphical screen by a geometric shape. While FIG. 4 illustrates these FUs  412 ,  414 ,  416  depicted as rectangular boxes, it will be appreciated by those skilled in the art that the FUs could also be depicted by a variety of other geometrical shapes. As FIG. 4 indicates, for the file reading example, an open file FU  412 , a read data element FU  414 , and a close file FU  416  may be used. 
     The instant invention provides facility for graphical representation of an iteration or sequence among the FUs  412 ,  414 ,  416 . Most commonly, such progression from one FU to the next will be depicted by an arrow  420 . However, those skilled in the art will appreciate that any geometrical element which indicates a direction of flow from one FU to the next may be used as an alternate embodiment of the invention. 
     By providing a graphical interface through which to manipulate the FUs, a user may alter the sequence of execution of the program by rearranging the elements on the screen. On FIG. 4, the open file FU  412  executes first, followed by the read data element FU  414 , followed by the close file FU  416 . By graphically rearranging these FUs on the graphical display  410 , users may change the order of execution to perform the read data element FU  414  first, followed by the close file FU  416 , followed by the open file FU  412 . The user moves the open file FU  412  graphically below the close file FU  416 , deletes the arrow  420  between the open file FU  412  and the read data element FU  414 , and creates a new arrow from the close file FU  416  to the open file FU  412 . Notably, such a change does not require the user to view the contents of any FU  412 ,  414 ,  416 . 
     Those skilled in the art will appreciate that, while it would be senseless to make such a modification to the AFU as described (as one must open a file before one can read from the file), this disclosure is directed to the ability to modify the AFU within the graphical environment without the necessity of viewing the programming of the FUs. Thus, although it may be a programming choice not to make the exact change disclosed herein, the instant invention would allow a user to make such a change or a similar change within the graphical environment with out the necessity of viewing FUs. 
     The present invention permits any FU  412 ,  414 ,  416  to be “locked” so that the manner in which it performs its functions cannot be viewed by the user. Such a locking function does not interfere with the manner in which the iterative order of the FUs can be modified. In an alternate embodiment, the FUs  412 ,  414 ,  416  may also be encrypted to provide a higher level of security. 
     Those skilled in the art will appreciate that the attempt to open a file may fail. Media may have been removed, a file might have been deleted, or any other of a number of problems might occur. In such a case, sequential execution would force the undesired execution of the next step (reading a data element). Therefore, the instant invention provides for a decision making and branching construct in the graphical interface that allows the programs created to evaluate and conditionally execute subsequent actions. Again, this decision-making and branching construct does not require a user to view the contents of the FUs involved. Accordingly, trade secrets and confidential information within the AFU are preserved. 
     FIG. 5 demonstrates the concepts of multiple exit conditions, branching, and conditional execution within the instant invention. FIG. 5 depicts a graphical screen  510  having a background  512  on which are situated several geometric shapes. A begin point  514  and an end point  524  are represented graphically. Multiple FUs  516 ,  518 ,  520 ,  522  are also be represented graphically. It should be noted that while the begin point  514  and the end point  524  may be represented by the same geometric shape as the FUs  516 ,  518 ,  520 ,  522 , it is preferred for clarity that the begin point  514  and the end point  524  be represented on the background  512  of the display screen  510  by a geometric shape different than the geometric shape representing the FUs  516 ,  518 ,  520 ,  522 . Such a graphical representation highlights the distinction between the begin point  514 , the end point  524  and the other graphical representations upon the screen. 
     As in FIG. 4, the various FUs  516 ,  518 ,  520 ,  522  in FIG. 5 may be connected by one or more arrows  538  which signify a progression of execution between the FUs  516 ,  518 ,  520 ,  522 . Such connections do not require viewing the contents of the FUs  516 ,  518 ,  520 ,  522 . However, as is depicted with reference to the open file FU  516 , a FU may have more than one arrow  538  coming from it. The instant invention provides for the specifications of conditions  528 ,  530  in order to determine along which arrow  538  execution should progress. As the example of FIG. 5 illustrates, the open file FU  516  may result in a pass condition  528  or a fail condition  530 , which specifications may be provided to the user, as they are not confidential. In the event that the pass condition  528  exists, execution progresses to the read data element FU  518 . However, should the fail condition  530  exist, execution progresses to a handle open file failure FU  522 . In either event, the methodology used by the open file FU  516 , which might include the specification of a password to access the file or other proprietary information, is hidden from the user&#39;s view. 
     Those skilled in the art will appreciate that although exit conditions are specified for each arrow  538 , those exit conditions need not be displayed at all times within the instant invention. The user may, at his option, choose to display or hide the exit conditions. When the exit conditions are hidden, they do not appear on the screen  510 , but are tracked by the invention, nonetheless. 
     The begin point  514  presents a special case where the condition is an entry condition  526 . Such entry condition  526  may be depicted on the display screen  510  within the arrow  538  originating at the begin point  514 . In this way, execution from the begin point  514  to the end point  524  is made clear within the graphical environment. 
     Those skilled in the art will appreciate that in order to provide full functionality, the instant invention must provide for reiteration within the AFU. For example, in practice, data files typically contain more than one data element. It would be necessary to read the data file element-by-element in a reiterative process. Yet again, the presence of the reiteration function does not impede the ability of the instant invention to keep confidential the underlying implementations of the FUs. The implementation of this reiteration function within the instant invention is described with reference to FIG.  6 . 
     FIG. 6 depicts a graphical screen  610  having a background  612  upon which are situated graphical representations of a begin point  614  and an end point  616 . As previously described, the background  612  also positioned on it several graphical representations of FUs  618 . Likewise, each FU  618 , begin point  614 , and end point  616  graphical representation has associated with it one or more arrows  630  beginning at the FU or point and indicating the next FU or point of execution. Each arrow  630  also has associated with it an exit condition  632  which specifies the condition on which execution will pass to the next FU or point. 
     Reiteration is demonstrated by the arrow  630  between the evaluate end of file condition FU  618  and the read data element FU  618 . By referencing a FU earlier in the execution path, the FU provides for an algorithm that reiterates until such time as the end of the file is reached. Such referencing does not require a user to view the underlying FU functionality, so that proprietary information in any of the affected FUs is preserved. 
     The instant invention also provides for the graphical representation of input parameters  634  and output parameters  636 . The graphical input parameter representation  634  may be denoted on the screen by any one of a number of geometrical shapes. The geometrical shape for the input parameter  634  is positioned on the screen  610  attached to or on top of the FU  618  with which it is associated. Likewise, the output parameter is represented on the screen by a geometrical shape  636  which is also positioned next to or on top of the FU  618 . Though the input and output parameters are visible by name and type to the user, the user may be prohibited from viewing the manner in which these parameters are used within the FU by the locking mechanism previously described. 
     Those skilled in the art will appreciate that the input parameter graphic  634  and the output parameter graphic  636  could be placed within or near the FU  618  in a variety of manners, including but not limited to the input parameter  634  being positioned at the top of the FU  618  and the output parameter  636  being positioned at the bottom of the FU  618 , as demonstrated in FIG. 6, the input parameter  634  positioned to the left of the output parameter  636 , either at the top or the bottom of the FU graphic  618 , or any other combination which would suggest to the user the relationship between the input parameter  634 , the FU  618 , and the output parameter  636 . The input and output parameters may be hidden from view and removed from the display screen  610  at the user&#39;s option. In an alternative embodiment, the input and output parameters may be permanently hidden from view. However, in either instance the invention continues to track the parameter relationships and those relationships can be viewed manually without disclosing the underlying confidential information which may be inherent in their underlying use. 
     The instant invention also provides for manual entry or viewing of these relationships into a table, as later described. The user may toggle between views at the user&#39;s discretion. Note that though information about the variable is displayed, potentially confidential information regarding the underlying FU structure is not revealed. 
     By using the described graphical interface, the user may specify the data that would be passed from one FU to subsequent FUs based upon the exit conditions and conditional executions as appear within the graphical interface without the necessity of viewing specific implementations of FU subroutines. 
     An implementation of the instant invention may also include a palette  714  as depicted on FIG.  7 B. The palette  714  contains a listing of AFUs and FUs  736  which may be dragged from the palette  714  into the activity composition area  712  to add that particular AFU or Fu to the AFU being composed on the activity composition area  712  as a FU. While on the palette  714 , the AFU&#39;s and FUs are listed by a designation and their contents and specific implementation are not visible. The palette  714  may provide for categorization of the AFUs and FUs, as depicted. Categories  738  may be created on the palette  714  so that, upon clicking on any category, the AFUs and FUs within that category appear. In this way, users may organize procedures by name which contain proprietary information without needing to be privy to that proprietary information. For example, FIG. 7B illustrates the “SoftwareDistribution” category opened with its AFUs  736  displayed. 
     In an implementation of the instant invention, a user may view parameter passing details of each of the arrows  726  displayed within the activity composition area  712  to allow for interconnection between FUs without revelation of the underlying functionality of the FUs. For example, details of the parameters relating to the arrow  726  leading to the ConfirmedDistribution_ 3  FU  734  is shown in FIG.  8 . FIG. 8 demonstrates functional unit resource mapping dialog box  810 , which is a window from a graphical user interface operating system. The resource mapping dialog box  810  may contain several sections: a required inputs section  812 , a previous output section  814 , and a parameter transition mapping table  816 . The required input box  812  lists information about the input parameters which are required by the destination FU, in this case ConfirmedDistribution_ 3 . The previous outputs box  814  lists the parameters that have been output from previous FUs in the execution iteration depicted in the activity composition area  712  (FIG.  7 B). The transition mapping box  816  provides the user with details of the parameter names as those parameters are passed from the names that are used in previous FUs, listed in the previous output box  814 , to the target FU parameters as listed in the input parameter box  812 . Such details permit the user to manually enter information and debug the parameter passing without resort to the underlying functions. 
     Traditional computer code may also be represented by an FU. Accordingly, using the graphical editor, any FU may be linked to an object or interpreted code. While any manner of object or interpreted code can be used, the preferred implementation uses Java code to implement these base-level activities. Those skilled in the art will appreciate that such source code is often highly confidential and proprietary, making it ideally represented by a FU. The programming features of an FU, such as input and output conditions and parameter passing, coincide precisely with the generally accepted principles of subroutine authoring within traditional programming environments. Accordingly, no translation or transition is required in order to represent a code subroutine as an FU. The programmer may then lock the FU and encrypt it to prevent users from accessing the confidential coding. 
     This capability to represent code as a FU adds an additional feature to the instant invention: existing subroutines may be represented as FUs within the instant invention in order to transform those existing code segments into the graphical format, which is more easily modified and supplemented by the user. 
     As to the manner of operation and use of the present invention, the same is made apparent from the foregoing discussion. With respect to the above description, it is to be realized that although embodiments of specific material, representations and language are disclosed, those enabling embodiments are illustrative and the optimum relationships for the parts of the invention are to include variations in composition, form, function, and manner of operation, which are deemed readily apparent to one skilled in the art in view of this disclosure. All relevant relationships to those illustrated in the drawings in this specification are intended to be encompassed by the present invention. 
     Therefore, the foregoing is considered as illustrative of the principles of the invention and since numerous modifications will readily occur to those skilled in the art, it is not desired to limit the invention to the exact construction and operation shown or described, and all suitable modifications and equivalents may be resorted to, falling within the scope of the invention.