Patent Publication Number: US-2022214958-A1

Title: Programming assist system and programming assist method

Description:
TECHNICAL FIELD 
     The present disclosure relates to a programming support system and a programming support method. 
     BACKGROUND ART 
     The development of information and communication technology (ICT) has been remarkable in recent years, and devices connected to a network, such as the Internet, are not limited to information processing devices, such as conventional personal computers or smartphones, and are spreading to various things. Such a technology trend is called “IoT (Internet of Things)”, and various technologies and services have been proposed and put into practical use. In the future, a world is envisioned in which billions of people on Earth and tens of billions or trillions of devices are connected at the same time. In order to realize such a networked world, it is necessary to provide a solution that is simpler, safer, and more freely connected. 
     With the intelligentization of such devices, it is necessary to create various kinds of programs. On the other hand, when creating a program, it is necessary to correct (so-called debug) various errors included in the program. As a technique for correcting errors included in such a program, for example, JP 2001-243089 A (Patent Document 1) discloses an inspection device that facilitates the search for the cause of an abnormality in the software under test. 
     CITATION LIST 
     Patent Document 
     Patent Document  1 : JP 2001-243089 A 
     SUMMARY OF THE INVENTION 
     Problem to be Solved by the Invention 
     Patent Document 1 merely discloses a method for analyzing the cause of failure by acquiring the internal state of the test program after the test program is stopped, but there is no instruction on how to analyze the cause of failure using the acquired internal state. 
     The present disclosure provides a solution that supports the programming of a wide variety of users. 
     Means for Solving Problem 
     A programming support system according to an aspect of the present disclosure includes one or more terminal devices and a storage means accessible from the one or more terminal devices. Each of the terminal devices includes: a providing means for providing a development environment for a program; an acquisition means for acquiring information indicating a content of a failure event that has occurred in the program; and a determination means for determining an address from the information indicating the content of the failure event according to predetermined rules. The storage means holds information for each failure event in association with an address determined from the information indicating the content of each failure event. 
     The determination means may input the information indicating the content of the failure event to a hash function to determine an address having a predetermined length. 
     The information for each failure event held by the storage means may be updated by a plurality of users. 
     The acquisition means may acquire the information indicating the content of the failure event by using a function of backtrace or stack trace. 
     The failure event that has occurred in the program may include at least one of a program run-time error and a program compile error. 
     A programming support method according to another aspect of the present disclosure includes: a step of acquiring information indicating a content of a failure event that has occurred in any program in a program development environment; a step of determining an address from the information indicating the content of the failure event according to predetermined rules; and a step of accessing information of a corresponding failure event held in association with the address based on the determined address. 
     Effect of the Invention 
     According to the present disclosure, it is possible to support the programming of a wide variety of users. 
    
    
     
       BRIEF DESCRIPTION OF DRAWINGS 
         FIG. 1  is a schematic diagram showing an example of the overall configuration of a programming support system according to the present embodiment; 
         FIG. 2  is a schematic diagram showing a hardware configuration example of a terminal device included in the programming support system according to the present embodiment; 
         FIG. 3  is a diagram for describing programming and backtrace in the programming support system according to the present embodiment; 
         FIG. 4  is a schematic diagram for describing the outline of processing executed in the programming support system according to the present embodiment; 
         FIG. 5  is a diagram showing an example of a user interface screen of an integrated development environment provided in the programming support system according to the present embodiment; 
         FIG. 6  is a diagram showing an example of a user interface screen showing an example of information provided by a server in the programming support system according to the present embodiment; and 
         FIG. 7  is a diagram showing an example of an address format used in the programming support system according to the present embodiment. 
     
    
    
     MODE(S) FOR CARRYING OUT THE INVENTION 
     An embodiment according to the present disclosure will be described in detail with reference to the diagrams. In addition, the same or corresponding portions in the diagrams are denoted by the same reference numerals, and the description thereof will not be repeated. 
     &lt;A. Overall Configuration of Programming Support System  1 &gt; 
     First, the overall configuration of a programming support system  1  according to the present embodiment will be described. The programming support system  1  provides information for supporting programming to one or more users (programmers). 
       FIG. 1  is a schematic diagram showing an example of the overall configuration of the programming support system  1  according to the present embodiment. Referring to  FIG. 1 , the programming support system  1  includes a server  200 , which is configured to include one or more computers, and one or more terminal devices  100  that can access the server  200  through a network  2 . 
     An integrated development environment (IDE) is provided for each of the terminal devices  100 , so that the user can create an arbitrary program in the integrated development environment. 
     The server  200  corresponds to a storage unit that holds, manages, and provides information relevant to program creation in the integrated development environment of the terminal device  100 . That is, the server  200  has a storage unit that can be accessed from one or more terminal devices  100 . More specifically, the server  200  holds a knowledge base  250  for each failure event relevant to program creation, and provides requested information and updates information in response to access from any of the terminal devices  100 . Access to the knowledge base  250  is realized by a unique address associated with each event. 
     For example, a case where an error occurs when compiling a certain program (source code) created in the integrated development environment of the terminal device  100  or a case where an error occurs when executing a compiled program (object format) is assumed. In such a case, information indicating the content of the failure event that has occurred (for example, an error context obtained by backtrace or the like) is acquired, and based on the acquired information, an address for referring to the knowledge base  250  regarding the failure event that has occurred is determined. 
     On the other hand, the server  200  holds information (knowledge base  250 ) for each failure event in association with an address determined from information indicating the content of each failure event. Therefore, based on the determined address, the user can easily access the corresponding knowledge base  250  for information for resolving the failure event that has occurred. 
     The information indicating the content of the failure event that has occurred (for example, a message obtained by backtrace) is information unique to the failure event. By using such unique information, it is possible to uniquely identify what kind of information is required. For example, when a plurality of users encounter the same failure event, substantially the same information is output. Therefore, by using the output error context or the like as a key, an address for accessing the necessary information can be determined. 
     As shown in  FIG. 1 , in the programming support system  1 , a process of acquiring information indicating the content of a failure event that has occurred in any program in the program development environment, a process of determining the address from the information indicating the content of the failure event according to predetermined rules, and a process of accessing the information of the corresponding failure event held in association with the address based on the determined address are executed. 
     &lt;B. Hardware Configuration Example&gt; 
     Next, a hardware configuration example of a device included in the programming support system  1  according to the present embodiment will be described. 
     (b 1 : Terminal Device  100 ) 
     The terminal device  100  is typically realized by a general-purpose computer. 
       FIG. 2  is a schematic diagram showing a hardware configuration example of the terminal device  100  included in the programming support system  1  according to the present embodiment. Referring to  FIG. 2 , the terminal device  100  includes a processor  102 , a main memory  104 , an input unit  106 , a display  108 , a hard disk  110 , and a network interface  118  as main components. These components are connected to each other through an internal bus  120 . 
     The processor  102  may be, for example, a CPU (Central Processing Unit) or a GPU (Graphics Processing Unit). A plurality of processors  102  may be disposed, or the processor  102  having a plurality of cores may be adopted. 
     The main memory  104  is a volatile storage device, such as a DRAM (Dynamic Random Access Memory) or a SRAM (Static Random Access Memory). The hard disk  110  holds various programs executed by the processor  102  or various kinds of data. In addition, instead of the hard disk  110 , a non-volatile storage device such as an SSD (Solid State Drive) or a flash memory may be adopted. Among the programs stored in the hard disk  110 , a designated program is loaded to the main memory  104 , and the processor  102  sequentially executes computer-readable instructions included in the program loaded to the main memory  104  to realize various functions described later. 
     Typically, the hard disk  110  stores a source program  112  arbitrarily created by the user, a development program  114  for realizing the integrated development environment, and an access program  116  for realizing access to the server  200  described later. The development program  114  includes a module that provides a program development environment, and the access program  116  includes a module that determines an address from information indicating the content of a failure event according to predetermined rules. 
     The input unit  106  receives an input operation of a user who operates the terminal device  100 . The input unit  106  may be, for example, a keyboard, a mouse, a touch panel disposed on a display device, or an operation button disposed on the housing of the terminal device  100 . 
     The display  108  displays the processing result of the processor  102  and the like. The display  108  may be, for example, an LCD (Liquid Crystal Display) or an organic EL (Electro-Luminescence) display. 
     The network interface  118  is in charge of communicating with the server  200  through the network  2 . 
     Examples of the network interface  118  include wired connection terminals, such as serial ports including an Ethernet (registered trademark) port, a USB (Universal Serial Bus) port, and an IEEE1394 and a legacy parallel port. Alternatively, the network interface  118  may include processing circuits and antennas for wireless communication with devices, routers, mobile base stations, and the like. The wireless communication supported by the network interface  118  may be any of Wi-Fi (registered trademark), Bluetooth (registered trademark), ZigBee (registered trademark), LPWA (Low Power Wide Area), GSM (registered trademark), W-CDMA, CDMA200, LTE (Long Term Evolution), and  5 th generation mobile communication system (5G), for example. 
     In addition, the entirety or part of the terminal device  100  may be realized by using a hard-wired circuit such as an ASIC (Application Specific Integrated Circuit) in which a circuit corresponding to computer-readable instructions is provided. In addition, the entirety or part of the terminal device  100  may be realized by using a circuit corresponding to computer-readable instructions on an FPGA (field-programmable gate array). In addition, the entirety or part of the terminal device  100  may be realized by appropriately combining the processor  102 , a main memory, an ASIC, an FPGA, and the like. 
     The terminal device  100  may further include a component for reading the stored program or the like from the non-transitory media that stores the development program  114  and the access program  116  (computer-readable instructions). The media may be, for example, an optical medium, such as a DVD (Digital Versatile Disc), or a semiconductor medium, such as a USB memory. 
     In addition, the development program  114  and the access program  116  may not only be installed on the terminal device  100  through the media, but also be provided from a distribution server on the network. 
     (b 2 : Server  200 ) 
     The server  200  is also typically realized by a general-purpose computer. Since the basic hardware configuration of the server  200  is the same as that in  FIG. 2 , the detailed description thereof will not be repeated. However, the server  200  is often configured by a plurality of computers. In such a configuration, a mechanism is adopted so that data can be shared between the computers. In addition, the number of computers configuring the server  200  may be increased or decreased according to the load. In addition, a plurality of computers disposed at a plurality of geographically separated positions may virtually operate as a single server  200 . 
     &lt;C. Programming and Backtrace&gt; 
       FIG. 3  is a diagram for describing programming and backtrace in the programming support system  1  according to the present embodiment. Referring to  FIG. 3(A) , when the user creates the source program  112  and executes an object-form at program generated by compiling the created source program  112 , it is assumed that a failure event (typically, a run-time error) occurs in the code of a specific part (hereinafter, such a code is also referred to as “failure code  150 ”). 
     When such a run-time error occurs, the error context  162  shown in  FIG. 3(B)  can be acquired by executing a backtrace function  160 . The backtrace function  160  is a function for acquiring information indicating the content of a failure event that has occurred. The backtrace function  160  may be provided as a part of the debug function included in the integrated development environment. In addition, instead of the name “backtrace”, this may be called by the name of stack trace. In addition, functions such as memory dump and core dump may be used. 
     As described above, the terminal device  100  has a function of backtrace or stack trace as a function of acquiring information indicating the content of a failure event that has occurred in the program. That is, the terminal device  100  acquires information indicating the content of a failure event by using the function of backtrace or stack trace. 
     In addition, also in a case where a failure event (typically, a compile error) occurs when compiling the source program  112 , information (error context  162 ) indicating the content of the failure event that has occurred can be acquired in the same manner. In this case, the function of outputting the information indicating the content of the failure event that has occurred may be included in the compiler, linker, or the like included in the integrated development environment. 
     In the programming support system  1  according to the present embodiment, the failure event that occurs in the program may include at least one of a program run-time error and a program compile error. 
     &lt;D. Outline of Processing&gt; 
     Next, the outline of the processing executed in the programming support system  1  will be described.  FIG. 4  is a schematic diagram for describing the outline of the processing executed in the programming support system  1  according to the present embodiment. Referring to  FIG. 4 , it is assumed that a failure event (run-time error or compile error) occurs in the source program  112  created by the user and the error context  162  is generated. 
     The error context  162  is input to a hash function  170  as an example of the address determination means, and a hash value  172  having a predetermined number of characters is output. Then, an address  174  corresponding to the failure event that has occurred is determined from the hash value  172 . As the hash function  170 , a known algorithm (for example, SHA512, SHA384, and WHIRLPOOL) can be used. 
     In this manner, information indicating the content of the failure event can be input to the hash function  170  to determine an address having a predetermined length. In addition, as the address determination means, any conversion formula or mapper may be used as long as any character string can be mapped to a predetermined number of character strings. 
       FIG. 5  is a diagram showing an example of a user interface screen  180  of the integrated development environment provided in the programming support system  1  according to the present embodiment. Referring to  FIG. 5 , the user interface screen  180  includes an editor area  182  for creating and editing the source program  112 , a backtrace button  184  for executing the backtrace function  160  when a failure event occurs, an error context display area  186  for displaying the error context obtained by the backtrace function  160 , and an access button  188  for executing access to the server  200 . 
     The user can create or edit any source program in the editor area  182 . When any failure event occurs while executing or compiling the created source program, the error context  162  for the failure event that has occurred is acquired by pressing the backtrace button  184 , and the error context display area  186  is displayed. The user can also debug the source program  112  while checking the content displayed in the error context display area  186 . 
     In addition, by pressing the access button  188 , the user can access the information (knowledge base  250 ) for supporting the debugging of the failure event that has occurred (see  FIG. 6  described below). 
       FIG. 6  is a diagram showing an example of a user interface screen  190  showing an example of information provided by the server  200  in the programming support system  1  according to the present embodiment. By pressing the access button  188  in  FIG. 5 , the terminal device  100  can access the specific address of the server  200 . The knowledge base  250  corresponding to the failure event that has occurred is associated with the access destination, and the content of the knowledge base  250  of the access destination is displayed on the user interface screen  190  of the terminal device  100 . 
     Referring to  FIG. 6 , the address  174  for referring to the target knowledge base  250  and failure information  192  included in the knowledge base  250  are displayed on the user interface screen  190 . 
     The failure information  192  shown in  FIG. 6  may have a format in which one or more users can arbitrarily post a message. That is, information for each failure event held by the server  200  can be updated by a plurality of users. For example, an operation mode is considered in which a support user  194  posts a message about a specific failure event and then a general user  196  posts an additional message based on his or her own experience. 
     As described above, in addition to the support entity that develops or maintains the integrated development environment, by allowing a plurality of users including general users who use the integrated development environment to post the obtained knowledge, it is possible to collect the knowledge about the common failure event. Therefore, a solution to the failure event can be easily found. 
     &lt;E. Address Format&gt; 
     Next, the format of the address for accessing the knowledge base  250  will be described. Basically, any address format may be adopted as long as it is possible to access the knowledge base  250  prepared for each failure event. 
       FIG. 7  is a diagram showing an example of an address format used in the programming support system  1  according to the present embodiment. As shown in  FIG. 7(A) , as an address format, the hash value  172  calculated from the error context  162  may be used as it is as a part of the address. 
     Alternatively, as shown in  FIG. 7(B) , identification information using the hash value  172  calculated from the error context  162  may be passed to the server  200  by using the GET type command of the HTTP protocol. 
     Without being limited to the address format shown in  FIG. 7 , any format that allows access to the specific knowledge base  250  corresponding to the failure event that has occurred may be used. 
     &lt;H. Other Forms&gt; 
     In the above description, as a typical example, a processing example in which the entire generated error context  162  is input to the hash function  170  is shown. However, without being limited to such a processing example, the information included in the error context  162  may be input to the hash function  170  after excluding information determined as an instance. Alternatively, a part of the information determined as an instance may be input to the hash function  170  after being padded with a predetermined number or character. By applying such preprocessing, it is possible to determine the same address for substantially the same failure event, so that the sharing of information can become easy. 
     In addition, in the above description, a so-called server client model configured to include one or more terminal devices  100  and the server  200  is illustrated, but a so-called serverless configuration in which information is shared between the terminal devices  100  may be adopted. Even in this case, the address determined by using the information indicating the content of the failure event that has occurred can be used as a key (identification information) for information sharing. In the serverless configuration, a storage unit that holds, manages, and provides information relevant to program creation in the integrated development environment of the terminal device  100  is substantially provided in one terminal device  100  or a plurality of terminal devices  100 . 
     &lt;G. Advantages&gt; 
     According to the programming support system  1  according to the present embodiment, a plurality of users can easily access solutions to failure events that may occur when creating various programs. In addition, for substantially the same failure event, not only the information on the support side but also the information on the user side can be collected. Therefore, the knowledge base can be enhanced. 
     It should be considered that the embodiment disclosed is an example in all points and not restrictive. The scope of the present invention is defined by the claims rather than the above description, and is intended to include all modifications within the scope and meaning equivalent to the claims. 
     EXPLANATIONS OF LETTERS OR NUMERALS 
       1  PROGRAMMING SUPPORT SYSTEM 
       2  NETWORK 
       100  TERMINAL DEVICE 
       102  PROCESSOR 
       104  MAIN MEMORY 
       106  INPUT UNIT 
       108  DISPLAY 
       110  HARD DISK 
       112  SOURCE PROGRAM 
       114  DEVELOPMENT PROGRAM 
       116  ACCESS PROGRAM 
       118  NETWORK INTERFACE 
       120  INTERNAL BUS 
       150  FAILURE CODE 
       160  BACKTRACE FUNCTION 
       162  ERROR CONTEXT 
       170  HASH FUNCTION 
       172  HASH VALUE 
       174  ADDRESS 
       180 ,  190  USER INTERFACE SCREEN 
       182  EDITOR AREA 
       184  BACKTRACE BUTTON 
       186  ERROR CONTEXT DISPLAY AREA 
       188  ACCESS BUTTON 
       192  FAILURE INFORMATION 
       194 ,  196  USER 
       200  SERVER 
       250  KNOWLEDGE BASE