Apparatus, method, and program for assisting in the generation of software source code
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- JITERA INC
- Filing Date
- 2022-07-14
- Publication Date
- 2026-07-16
AI Technical Summary
The cost of software development can be reduced by automating at least a part of the programming process, particularly when outsourcing is involved, to enhance efficiency and reduce labor costs.
A method and apparatus that assist in generating software source code by receiving table and API definitions from a terminal, using pre-created templates to automate the programming process, including user authentication and authorization conditions, and providing visualization of workload reduction.
Enables efficient generation of software source code by automating programming tasks, reducing development time and costs, and providing transparent communication of cost savings through workload visualization.
Smart Images

Figure 0007891381000001 
Figure 0007891381000002 
Figure 0007891381000003
Abstract
Description
Technical Field
[0001] The present invention relates to an apparatus, a method, and a program therefor for assisting in the generation of software source code.
Background Art
[0002] Software development is divided into processes such as requirement definition, design, programming, and testing. While it is of course possible for a business company that uses the developed software to have software engineers in-house, it is also not uncommon for all or part of the development process to be outsourced to an external development company. For example, there is an example where the company undertakes requirement definition and design as upstream processes by itself and outsources programming and testing as downstream processes to an external company.
[0003] When programming is outsourced, it may be further subcontracted depending on the scale of the project, the operating status of the subcontractor, etc. In addition, it may be outsourced to an overseas company that can be commissioned at a relatively low labor cost, which is called offshore development.
Summary of the Invention
Problems to be Solved by the Invention
[0004] In any case, external outsourcing of programming is widely adopted when the cost incurred with external outsourcing is lower than the cost of allocating the resources of software development that the company has. However, if there is a method that can further reduce the cost of software development, it is more desirable.
[0005] The present invention has been made in view of such points, and its problem is an apparatus, a method, and a program therefor for assisting in the generation of software source code, and is to automate at least a part of the programming process of the source code.
Means for Solving the Problems
[0006] To solve these problems, a first aspect of the present invention is a method for supporting the generation of source code for software, comprising the steps of: a device receiving table definitions and API definitions for a plurality of tables from a terminal, wherein the table definitions include a user table relating to basic information of the software user; the device receiving a request for source code generation from the terminal; and the device, in response to receiving the request, obtaining one or more pre-created source code templates and generating source code according to the table definitions and API definitions using the one or more templates. Includes.
[0007] Furthermore, a second aspect of the present invention is the method of the first aspect, wherein the table definition includes a specification to perform user authentication for users identified by user identifiers contained in each record of the user table.
[0008] Furthermore, a third aspect of the present invention is the method of the first aspect, wherein the table definition includes specifying a column used for user authentication from among a plurality of columns having the user table.
[0009] Furthermore, a fourth aspect of the present invention is the method of the third aspect, wherein the value of the specified column is a telephone number.
[0010] Furthermore, a fifth aspect of the present invention is a method according to any of the second to fourth aspects, wherein the one or more templates include a first template for user authentication.
[0011] Furthermore, a sixth aspect of the present invention is the method of the first aspect, wherein the API definition includes specifying the creation of one or more APIs for each table to perform at least some of the following: displaying, generating, updating, and deleting records.
[0012] Furthermore, a seventh aspect of the present invention is the method of the sixth aspect, wherein the API definition includes a specification that, for any API, successful user authentication is a condition for authorization to execute.
[0013] Furthermore, an eighth aspect of the present invention is the method of the sixth aspect, wherein the API definition includes, as an authorization condition for executing an API to perform operations on records in tables other than the user table among the plurality of tables, the specification that user authentication of the user executing the API has been successful.
[0014] Furthermore, a ninth aspect of the present invention is the method of the eighth aspect, wherein the API definition further includes, as an authorization condition, a specification that limits the records on which the API is executed to records related to the user executing the API.
[0015] Furthermore, a tenth aspect of the present invention is a method according to any seventh to ninth aspect, wherein the one or more templates include a second template for authorization.
[0016] Furthermore, an eleventh aspect of the present invention is the method of the first aspect, wherein the second portion of the table definition received by the device is generated by the device in accordance with the first portion of the table definition received from the terminal and transmitted to the terminal.
[0017] Furthermore, a twelfth aspect of the present invention is a method of the eleventh aspect, wherein the first part includes a specification that enables payment of usage fees for the software, and the second part includes a definition of a plurality of columns having a payment table relating to the payment of usage fees, and a definition of a relationship between the user table and the payment table.
[0018] Furthermore, a thirteenth aspect of the present invention is the method of the eleventh aspect, wherein the first part includes defining relationships between the user table and other tables other than the user table, and the second part includes defining columns in the other tables that are associated with the user table.
[0019] Furthermore, a fourteenth aspect of the present invention is a method according to the first aspect, further comprising the step of the apparatus transmitting to the terminal an amount or rate of reduction in workload corresponding to a programming process automated by using the one or more templates, or an amount or rate of reduction in costs corresponding to the amount of reduction.
[0020] Furthermore, a fifteenth aspect of the present invention is the method of the fourteenth aspect, wherein the amount of work is time or a value obtained by multiplying time by a coefficient.
[0021] Furthermore, a sixteenth aspect of the present invention is the method of the fourteenth aspect, wherein the reduction amount or reduction rate is calculated for each type of programming process.
[0022] Furthermore, a 17th aspect of the present invention is the method of the 14th aspect, wherein the source code includes a plurality of code parts, the plurality of code parts including API code in accordance with the API definition and user interface code including code for calling at least a portion of the API code in response to input to the user interface of the software, and the reduction amount or reduction rate is calculated for each of the plurality of parts.
[0023] Furthermore, an eighteenth aspect of the present invention is the method of the first aspect, wherein the apparatus is a server on the Internet.
[0024] Moreover, a 19th aspect of the present invention is a program for causing an apparatus to execute a method for assisting in the generation of software source code, the method comprising: the apparatus receiving, from a terminal, table definitions and API definitions for a plurality of tables, the table definitions including a user table regarding basic information of a user of the software; the apparatus receiving, from the terminal, a request for source code generation; and the apparatus, in response to receiving the request, acquiring one or more templates of pre-created source code and generating source code according to the table definitions and the API definitions using the one or more templates.
[0025] Moreover, a 20th aspect of the present invention is an apparatus for assisting in the generation of software source code, which receives table definitions and API definitions for a plurality of tables from a terminal, receives a request for source code generation from the terminal, acquires one or more templates of pre-created source code in response to receiving the request, and generates source code according to the table definitions and the API definitions using the one or more templates.
Advantages of the Invention
[0026] According to one aspect of the present invention, it is possible to assist in the generation of software source code by receiving table definitions and API definitions for a plurality of tables, acquiring one or more pre-created templates, and generating source code according to the table definitions and the API definitions using the one or more templates.
Brief Description of the Drawings
[0027] [Figure 1] It is a diagram showing an apparatus for assisting in the generation of software source code according to a first embodiment of the present invention. [Figure 2] It is a diagram showing an example of database design according to a first embodiment of the present invention. [Figure 3]This figure shows a method for supporting the generation of source code for software according to a first embodiment of the present invention. [Figure 4A] This figure shows a part of the table definition input screen according to the first embodiment of the present invention. [Figure 4B] This figure shows a part of the table definition input screen according to the first embodiment of the present invention. [Figure 5] This figure shows an example of a relation definition input area for a like table according to the first embodiment of the present invention. [Figure 6] This figure shows a part of the API definition input screen according to the first embodiment of the present invention. [Figure 7] This figure shows the source code generation process according to the first embodiment of the present invention. [Figure 8] This figure shows an example of a reduction amount display screen according to a second embodiment of the present invention. [Modes for carrying out the invention]
[0028] Embodiments of the present invention will be described in detail below.
[0029] (First embodiment) Figure 1 shows an apparatus according to a first embodiment of the present invention. The apparatus 100 communicates with a corporate terminal 110 used by a company that is a user of the services provided by the apparatus 100 via an IP network such as the Internet, receives input related to database design, and generates source code for software based on said input. While the apparatus 100 is mainly considered to be a server on the Internet, it is also conceivable that it be a server on an internal company network and accessed from terminals on that internal company network.
[0030] The device 100 comprises a communication unit 101 such as a communication interface, a processing unit 102 such as a processor or CPU, and a storage unit 103 including a storage device or storage medium such as memory or a hard disk, and can be configured by executing a program for each process. The device 100 may include one or more devices, computers or servers. The program may also include one or more programs and can be recorded on a computer-readable storage medium to become a non-transient program product. The program can be stored in the storage unit 103 or in a storage device 104 accessible via an IP network from the device 100, and executed by the processing unit 102. Data described below as being stored in the storage unit 103 may also be stored in the storage device 104, and vice versa.
[0031] Figure 2 shows an example of a database design. This specification describes how to automatically generate at least a portion of the source code using the database design for the matching service shown in Figure 2 as an example. However, the present invention is applicable to various database designs other than relational databases as shown in Figure 2, such as hierarchical databases and network databases.
[0032] The database design shown in Figure 2 includes at least some of the tables necessary for a matching service to find people with similar preferences, and each table is associated with at least one other table. In this specification, the term "table" refers to a data unit contained within a database, having one or more columns and one or more records, and associated with at least one other data unit.
[0033] Specifically, Figure 2 includes a user table "Users" containing basic information about each user of the matching service, a likes table "Likes" showing which other users each user likes and which other users like them, a match table "Matches" showing pairs of users whose preferences match, and a message table "Messages" showing messages between pairs of users whose preferences match.
[0034] Furthermore, Figure 2 includes a payment table "Payments" containing each user's payment history, and may also include a subscription table "Subscriptions" containing each user's subscription status and a plan table "Plans" containing each plan, if necessary.
[0035] Figure 3 shows a method for supporting the generation of source code for software according to a first embodiment of the present invention. First, the device 100 transmits table definition input screen display information to the enterprise terminal 110 (S301). A table definition input screen based on the table definition input screen display information is displayed on the display screen of the enterprise terminal 110, and input is performed by the user using the enterprise terminal 110.
[0036] Input by the user can be done by sending the table definition input screen display information as, for example, an HTML file and displaying it on the corporate terminal 110 via a web browser, or by running an application installed on the corporate terminal 110 (hereinafter also referred to as "app") and performing the input from the input screen displayed within that application. The "table definition input screen" can be in various formats such as a web page, modal window, or popup window when displayed on a web browser, or as a screen within an app when displayed on an app. In any case, any screen that includes an area with input fields for entering table definitions is considered a table definition input screen.
[0037] Figure 4A shows a part of the table definition input screen according to the first embodiment of the present invention. The table definition input screen 400 has a table add button 401, and a table can be added by clicking or tapping this button. For each table, the table definition input screen 400 has a table name input area 410, a relationship definition input area 420, and a column definition input area 430, and may also have an additional function specification area 440.
[0038] Figure 4A shows an example of inputting data for the user table "Users," which contains basic information about users of a matching service. However, relationships between the displayed table and other tables can be specified in the relationship definition input area 420, not just for the user table "Users." For example, one could add a like table "Likes" and specify a relationship between the like table "Likes" and the user table "Users."
[0039] Figure 4B shows a portion of the table definition input screen according to the first embodiment of the present invention. This is the state after scrolling down the table definition input screen 400 shown in Figure 4A to display the column definition area 430. The column definition input area 430 has a column addition button 431, and a table can be added by clicking or tapping this button. An inputter using the corporate terminal 110 can define the necessary columns for each table according to the database design shown in Figure 2.
[0040] Returning to Figure 4A, in this example, if user authentication is specified in the additional function specification area 440 for users identified by the user identifier contained in each record of the user table "Users", then during source code generation, as described later, source code for user authentication will be generated using a template for user authentication. When user authentication is performed, the column definition of the user table "Users" may include a specification of which column will be used for user authentication from among multiple columns. In Figure 4B, the type of the column that will hold the telephone number as its value is "auth_key", which represents the authentication key. Each column includes a name and a type, and may further include at least one of options and a default value. The case where payment is permitted will be explained later.
[0041] In this example, the table definition input screen 400 for the user table "Users" includes an additional function specification area 440, but it may also be included in the table definition input screen 400 for other tables. For example, if the software is for a hospital and is used by both physician users and patient users and requires user authentication, then, for example, a doctor table "Doctors" containing basic information about each physician and a patient table "Patients" containing basic information about each patient would be added, and user authentication would be specified for each of these tables. In this specification, the term "user" is used, but it is not limited to natural persons; it also includes legal entities, for example, user companies.
[0042] Table definitions entered by users using the corporate terminal 110 are transmitted to the device 100 periodically or intermittently (S302). The device 100 then stores the received table definitions in the storage unit 103, and if the table definition (corresponding to the "first part") contains predetermined content, it generates new table definition input screen display information including a modified table definition (corresponding to the "second part") that has been modified according to the predetermined content (S303), and transmits it to the corporate terminal 110 (S304).
[0043] As an example, as shown in Figure 5, the enterprise terminal 110 can specify a first relationship and a second relationship between the Likes table "Likes" and the Users table "Users". In response to such relationship definitions being entered, the device 100 can add definitions for the first and second columns associated with the Users table "Users" by the first and second relationships to the Likes table "Likes" in the table definition.
[0044] The relation definition input area 420 shown in Figures 4A and 5 has relation types: "has many," "has one," "belongs to," and "has many through." In the database according to this embodiment, when an ID that identifies each record in one table is stored as a column in the other table, the former is sometimes called the parent and the latter the child. The relation "has many" means that a relationship can be established between a record in the parent table and multiple records in the other table, and the relation "has one" means that a relationship can be established between a record in the parent table and a single record in the other table. The relation "belongs to" means that a relationship can be established between a record in the child table and one or more records in the other table. In Figure 5, a first relation is specified in which an ID that identifies each record in the user table "Users" is stored as "liking_user_id" for one record in the like table "Likes," and a second relation is specified in which the same ID is stored as "liked_user_id." The relation "has many through" means that a record in the first table can be associated with multiple records in the third table, via the second table, which is a child of the first table and a parent of the third table.
[0045] As another example, in response to a specification that enables payment of usage fees for the user table "Users", device 100 can add definitions for multiple columns of the payment table "Payments" relating to the payment history of usage fees to the table definition. Furthermore, in response to a specification that enables payment of usage fees, device 100 can add the relationship "has many" with the payment table "Payments" to the relationship definition of the user table "Users", and add the relationship "belongs to" with the user table "Users" to the relationship definition of the payment table "Payments".
[0046] In this way, in the device 100, necessary definitions are automatically added as appropriate according to the table definition entered by the user, and the user makes any other individually required inputs (S305). After this process, data related to the table definition corresponding to the database design is stored in the storage unit 103.
[0047] Next, the device 100 transmits API definition input screen display information to the enterprise terminal 110 for defining one or more APIs for performing record operations for each table (S306). The API definition input screen based on the API definition input screen display information is displayed on the display screen of the enterprise terminal 110, and input is performed by the user using the enterprise terminal 110. The same method as for the table definition input screen display information can be used to implement the API definition input screen display information.
[0048] Figure 6 shows a part of the API definition input screen according to the first embodiment of the present invention. On the API definition input screen 600, it is possible to specify the creation of one or more APIs for performing record operations for at least some of the tables included in the table definition. In Figure 6, for the Likes table "Likes", it is possible to turn on the creation of one or more APIs for performing at least some of the following operations: list display, detail display, create, update, and delete. A first API definition input area 611 to a fifth API definition input area 615 are provided corresponding to each operation.
[0049] The third API definition input area 613 for record generation has a first input field 613-1, which specifies the creation of an API, turned ON. Furthermore, a second input field 613-2, which specifies that successful user authentication is a condition for authorization of the execution of the API, and a third input field 613-3, which specifies authorization that limits the records to which the API can be executed to records related to the user executing the API, are also turned ON. In addition, the column "liked_user_id" of the Likes table "Likes" is specified in the fourth input field 613-4, which specifies the parameters to be entered when calling the API. Here, the table name and column name may be selectable from a pull-down menu.
[0050] Taking a matching service as an example, if the input field corresponding to the second input field 613-2 is turned ON in the first API definition input area 611 related to list display, then in software operating using the generated source code, only users who have successfully authenticated themselves through sign-in, etc., will be able to view a list of other users using the matching service. Also, if the input field corresponding to the third input field 613-3 is turned ON in the fourth API definition input area 614 related to updates, then in software operating using the generated source code, the user who has successfully authenticated themselves through sign-in, etc., will be able to update records representing actions such as expressions of preference.
[0051] API definitions entered by users using the corporate terminal 110 are transmitted to the device 100 periodically or intermittently (S307). After inputting the table definition and API definition, the device 100 receives a request for source code generation from the corporate terminal 110 (S308), retrieves one or more pre-created source code templates stored in the storage unit 103, and generates source code according to the table definition and API definition using the one or more templates (S309). The generated source code is automatically transmitted from the device 100 to the corporate terminal 110, or transmitted upon request from the corporate terminal 110 as needed (S310).
[0052] Source code generation details Figure 7 shows the source code generation flow according to the first embodiment of the present invention. First, the device 100 obtains a table definition (S701). If the table definition includes a specification for user authentication (S702), the device 100 obtains a first template for user authentication from one or more pre-created source code templates and generates code for user authentication (S703).
[0053] After generating the code for user authentication, or if the table definition does not include a specification for performing user authentication, the device 100 obtains the API definition (S704). If the API definition includes a specification that successful user authentication is a condition for authorization to execute any API (S705), the device 100 generates additional code for that authorization (S706).
[0054] After generating additional code, or if the API definition does not include a specification for authorization, the device 100 obtains a second template for such authorization from one or more templates of pre-created source code and generates code for each API (S707). Although it is described that the acquisition of the API definition is performed after determining whether or not user authentication is specified in the table definition, the API definition may be acquired first.
[0055] In this way, by having the user specify user authentication and authorization using said user authentication through selection by clicking or tapping checkboxes, it becomes possible to easily generate source code with the appropriate permission settings for each API.
[0056] The additional code for authorization differs depending on whether the second input field 613-2 is set to ON or whether the third input field 613-3 is set to ON.
[0057] If the second input field 613-2 is ON, the device 100 will use the following code included in the second template: <%- if @table_definition.apis.auth_actions.present? -%> before_action :authenticate_identical!, only: %w[<%= @table_definition.apis.auth_actions.join(' ') %>] <%- end -%> This generates source code that conforms to the following API definition. before_action :authenticate_identical!, only: %w[index create] If "Auth" is ON in the first API definition input area 611 and the third API definition input area 613 for the Likes table "Likes", it is determined whether user authentication has been successful before executing the list display operation associated with the first API definition input area 611 and the generation operation associated with the third API definition input area 613. Here, the operation displayed as "list" in Figure 6 is called "index" in the source code.
[0058] If the third input field 613-3 is ON, the device 100 will use the following code included in the second template: <%- if @table_definition.apis.index_api.present? -%> def index <%- if @table_definition.apis.index_api.use_authed_record -%> @<%= @table_definition.name %> = @current_user.<%= @table_definition.name %> <%- else -%> @<%= @table_definition.name %> = <%= @table_definition.klass %> <%- end -%> render json: { <%= @table_definition.name %>: serialize(@<%= @table_definition.name %>), success: true } end <%- end -%> This generates source code that conforms to the following API definition. def index @likes = @current_user.likes render json: { likes: serialize(@likes), success: true } end The "@current_user" parameter indicates that the API's execution is limited to records related to the user executing the API.
[0059] (Second embodiment) In a second embodiment of the present invention, the automation of at least a portion of the programming process according to the first embodiment is visualized. Specifically, the device 100 transmits to the enterprise terminal 110 the amount or percentage of workload reduction corresponding to the automated programming process using one or more pre-created templates. Here, "workload" can be time or a value obtained by multiplying time by a coefficient, and the amount or percentage of reduced costs corresponding to the reduced workload may be additionally or alternatively displayed. Furthermore, since the productivity of software engineers varies greatly, it is preferable to determine this value for each software engineer.
[0060] Figure 8 shows an example of a reduction amount display screen according to a second embodiment of the present invention. The reduction amount display screen 800 displays the amount of development time reduced for each type of automated programming process, and further displays the total reduction amount as an automation score 801. The reduction amount 802 for tables represents the reduction in workload due to the automation of inputting table definitions. Inputting table definitions could also be considered part of the design process, but here it is described as part of the programming process. The reduction amount 803 for APIs represents the reduction in workload due to the automation of coding using one or more pre-created templates. The reduction amount 804 for modules represents the reduction in workload when, in addition to table definitions and API definitions, the user is asked to input the modules they wish to use, and source code is generated using source code templates stored in the storage unit 103 in association with the specified modules. Examples of functions realized by modules include email address login and payment.
[0061] The reduction amount 805 related to the frontend represents the reduction in workload when, in addition to table definitions and API definitions, users input software user interface (UI) definitions, and source code is generated according to those UI definitions. For example, when device 100 performs a predetermined process in response to input made to the UI, the API code corresponding to that input can be called. The code for calling such API codes in response to UI input may be included in the calculation and display of the reduction amount 805 related to the frontend. The frontend includes the UI used by the software user and the UI used by the software administrator.
[0062] In this way, by visualizing the extent to which the programming process has been automated for each of the multiple code sections included in the generated source code, it becomes possible to objectively communicate to users of the services provided by device 100 how it contributes to reducing software development costs. In addition, by visualizing how much the input process for table definitions has been automated, it also becomes possible to communicate how it contributes to reducing software development costs.
[0063] Furthermore, in the embodiments described above, unless the word "only" is used, such as "based only on XX," "according only to XX," or "in the case of XX only," it is assumed in this specification that additional information may also be considered. Also, as an example, the statement "if a, then b" does not necessarily mean "always b in the case of a" or "b immediately after a," unless explicitly stated otherwise. In addition, the statement "each a constituting A" does not necessarily mean that A is composed of multiple components, but includes the possibility that the component is singular.
[0064] Furthermore, for the sake of clarity, even if there are aspects of operation in some method, program, terminal, device, server, or system (hereinafter referred to as "method, etc.") that differ from the operation described herein, each aspect of the present invention is intended to cover the same operation as any of the operations described herein, and the existence of operation different from the operation described herein does not mean that such method, etc. is outside the scope of each aspect of the present invention.
[0065] Furthermore, the "start" and "end" shown in Figure 7 are merely examples, and do not necessarily mean that the method according to this embodiment will always start at S701 or always end at S707.
[0066] Furthermore, the load may be distributed by having at least a portion of the processing after the device 100 receives a source code generation request handled by a server other than the server that handles the processing up to the reception of the table definition and API definition. [Explanation of Symbols]
[0067] 100 devices 101 Communications Department 102 Processing Unit 103 Storage section 104 Storage device 400 Table Definition Input Screen 401 Add Table Button 410 Table name input area 420 Relation Definition Input Area 430 Column definition input area 431 Add Column Button 440 Additional function specification area 600 API Definition Input Screen 611 First API definition input area 612 Second API definition input area 613 Third API definition input area 613-1 First input field 613-2 Second input field 613-3 Third input field 613-4 Fourth input field 613-5 Fifth input field 614 Fourth API definition input area 615 Fifth API definition input area 800 Reduced Man-Hour Display Screen 801 Automated Score Reduction amount for table 802 Reductions related to 803 API Reductions related to 804 modules 805 Front-end reduction
Claims
1. A method for assisting in the generation of software source code, The server receives table definitions for multiple tables from the terminal. The server receives a request for source code generation from the terminal after receiving the table definition, The server, upon receiving the request, obtains pre-created source code and generates source code according to the table definition. Includes.
2. The method according to claim 1, The aforementioned table definition includes identifying the column to be used for user authentication from among the multiple columns in the user table relating to the basic information of the software user.
3. The method according to claim 1, The second portion of the table definition received by the server is generated by the server in accordance with the first portion of the table definition received from the terminal and transmitted to the terminal.
4. The method according to claim 3, The first part includes a designation that enables payment of the usage fee for the software, The second part includes definitions of multiple columns in the payment table relating to the payment of the usage fees, and definitions of relationships between the user table relating to the basic information of the software users and the payment table.
5. The method according to claim 3, The first part includes defining relationships between the user table and other tables other than the user table that have basic information about the users of the software, The second part includes definitions of columns in the other tables that are associated with the user table.
6. A program for causing a server to execute a method for assisting in the generation of software source code, wherein the method is The server receives table definitions for multiple tables from the terminal. The server receives a request for source code generation from the terminal after receiving the table definition, The server, upon receiving the request, obtains pre-created source code and generates source code according to the table definition. Includes.
7. A server for assisting in the generation of software source code, The terminal receives table definitions for multiple tables, and then subsequently receives a request for source code generation. Upon receiving the aforementioned request, the system is configured to retrieve pre-created source code and generate source code according to the table definition.
8. A system for assisting in the generation of source code for software, The server according to claim 7, The terminal that can communicate with the server and It is equipped with.