WO2022264316A1 - 情報処理プログラム、情報処理方法および情報処理装置 - Google Patents

情報処理プログラム、情報処理方法および情報処理装置 Download PDF

Info

Publication number
WO2022264316A1
WO2022264316A1 PCT/JP2021/022881 JP2021022881W WO2022264316A1 WO 2022264316 A1 WO2022264316 A1 WO 2022264316A1 JP 2021022881 W JP2021022881 W JP 2021022881W WO 2022264316 A1 WO2022264316 A1 WO 2022264316A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
incompatibility
incompatible
usage
registrant
Prior art date
Application number
PCT/JP2021/022881
Other languages
English (en)
French (fr)
Inventor
雅樹 西垣
Original Assignee
富士通株式会社
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 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2023528843A priority Critical patent/JPWO2022264316A1/ja
Priority to EP21945993.0A priority patent/EP4357911A1/en
Priority to PCT/JP2021/022881 priority patent/WO2022264316A1/ja
Publication of WO2022264316A1 publication Critical patent/WO2022264316A1/ja
Priority to US18/515,778 priority patent/US20240086189A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Definitions

  • the present invention relates to an information processing program, an information processing method, and an information processing apparatus.
  • Information processing systems may use software provided by software vendors.
  • software include middleware such as DBMS (Database Management System).
  • the source code of the program executed by the information processing system may be created depending on the specifications of the provided software.
  • a program may send a request to provided software to invoke a software function, such as sending a SQL statement to a DBMS to invoke a database manipulation function.
  • changing software may cause problems in existing programs due to incompatibility between software. For example, an error may occur in sending a request from an existing program to new software due to differences in language specifications for describing requests, such as language specifications for supported SQL statements. Also, for example, the current software and the new software may differ in function or performance for the same request. Therefore, software changes may involve modifying the source code.
  • An importance evaluation system has been proposed that evaluates the importance of reusing software components based on the actual usage of the software components. Further, an information processing apparatus has been proposed that accepts solutions to problems from a plurality of users and gives points to the users as rewards for the solutions. Also, a content sharing system has been proposed that accepts content such as images or videos from users, associates advertisements with the posted content, and rewards users according to the number of times the content has been viewed.
  • a computer stores incompatibility information that defines a source code rewriting method when changing software, and presents or executes the rewriting method indicated by the stored incompatibility information. We can think of a way to do this.
  • the present invention aims to promote the use of incompatible information databases.
  • an information processing program causes a computer to execute the following processes.
  • Usage information for a database containing incompatibility information indicating a rewriting method for adapting source code dependent on first software to second software and registrant information indicating a registrant of the incompatibility information, the incompatibility information Obtain usage information indicating the user of the incompatible information and the usage result of the incompatible information. Identify the type of usage result indicated by the usage information. At least one of the user indicated by the usage information and the registrant indicated by the registrant information according to the specified type, based on the evaluation criteria information indicating the correspondence between the plurality of usage result types and the plurality of evaluation values Calculate the evaluation value to be given to.
  • a computer-executed information processing method is provided.
  • an information processing apparatus having a storage unit and a processing unit is provided.
  • FIG. 1 is a diagram for explaining an information processing device according to a first embodiment; FIG. It is a figure which shows the example of the information processing system of 2nd Embodiment.
  • 2 is a block diagram showing an example of hardware of an information processing device;
  • FIG. FIG. 10 illustrates an example flow of non-compatible absorption of database products;
  • 2 is a block diagram showing an example of functions of an information processing device;
  • FIG. FIG. 10 illustrates an example of an edge table and a syntactically incompatible master table;
  • FIG. 3 is a diagram showing an example of source code and syntax tree before conversion; It is a figure which shows the example of attribute information.
  • FIG. 10 is a diagram showing an example of a syntax table;
  • FIG. 10 is a diagram showing an example of an instruction table;
  • FIG. 10 is a diagram showing an example of syntax incompatibility information
  • FIG. 4 is a diagram showing an example of source code and syntax tree after conversion
  • FIG. 10 is a diagram showing another example of the source code and syntax tree before conversion
  • FIG. 10 is a diagram showing another example of syntax incompatibility information
  • FIG. 10 is a diagram (continued) showing another example of syntax incompatibility information
  • FIG. 10 is a diagram showing an example of performance incompatibility information
  • It is a figure which shows the example of SQL syntax information.
  • It is a figure which shows the example of a value master table.
  • FIG. 10 is a diagram showing an example of a table used for incompatibility information management; It is a figure which shows the example of a point total table.
  • 10 is a flow chart showing an example of a procedure for managing incompatibility information
  • FIG. 11 is a flowchart (continued) showing an example of a procedure for managing incompatibility information
  • FIG. 1 is a diagram for explaining an information processing apparatus according to the first embodiment.
  • the information processing apparatus 10 of the first embodiment supports non-compatibility absorption by rewriting source code dependent on certain software so as to be compatible with other software.
  • the information processing apparatus 10 manages incompatibility information indicating a method of absorbing incompatibility.
  • the information processing device 10 may be a client device or a server device.
  • the information processing device 10 may be called a computer, an incompatible information management device, or a software development support device.
  • the information processing device 10 has a storage unit 11 and a processing unit 12 .
  • the storage unit 11 may be a volatile semiconductor memory such as a RAM (Random Access Memory), or may be a non-volatile storage such as a HDD (Hard Disk Drive) or flash memory.
  • the processing unit 12 is, for example, a processor such as a CPU (Central Processing Unit), a GPU (Graphics Processing Unit), or a DSP (Digital Signal Processor). However, the processing unit 12 may include a specific application electronic circuit such as an ASIC (Application Specific Integrated Circuit) or an FPGA (Field Programmable Gate Array).
  • the processor executes programs stored in a memory such as a RAM (which may be the storage unit 11), for example.
  • a collection of processors may be called a multiprocessor or simply a "processor.”
  • Storage unit 11 stores a database containing incompatibility information 13 and registrant information 14 .
  • the storage unit 11 also stores a value master table 15 .
  • the incompatibility information 13 indicates a rewriting method for rewriting the source code of the program dependent on the first software so as to be compatible with the second software.
  • the incompatible information 13 is knowledge information that expresses the knowledge of incompatible absorption in a fixed format.
  • the first software corresponds to software before change
  • the second software corresponds to software after change.
  • the software before and after the change may be a software product provided by a software vendor, or middleware such as a DBMS or a web server. Also, the software before and after the change may be the same type of software provided by different software vendors, or different versions of software provided by the same software vendor.
  • the source code may define request messages that indicate requests to the software.
  • the request message may be a SQL statement, and the source code may be written in SQL or the SQL procedural language.
  • Languages for describing requirements to software before and after the change may be similar but not identical.
  • both pre- and post-modification software may support a general-purpose query language such as SQL while extending the query language independently.
  • the incompatibility information 13 may indicate the syntactic features that cause the problem and the rewritten syntax.
  • the incompatibility information 13 may include a specific instruction indicating a procedure for detecting an incompatible portion in the source code and a rewrite instruction indicating a procedure for rewriting the incompatible portion.
  • the incompatibility information 13 resolves syntax incompatibilities, functional incompatibilities or performance incompatibilities, for example.
  • Syntax incompatibility is the incompatibility that the syntax that was allowed in the software before the change is not allowed in the software after the change.
  • a program with syntax incompatibility sends a request message to the modified software, a transmission error may occur and the modified software fails to execute.
  • Functional incompatibility is incompatibility in which the execution result of software after change does not match the execution result of software before change. If a program with functional incompatibilities sends a request message to the modified software, the expected execution results may not be obtained.
  • Performance incompatibility is incompatibility in which the execution performance of software after change is lower than that of software before change. When a program with performance incompatibilities sends a request message to modified software, latency can be significantly increased.
  • the registrant information 14 indicates the registrant who registered the incompatibility information 13 in the database.
  • the registrant is usually the creator who created the incompatible information 13 .
  • the registrant information 14 is, for example, a registrant's name or a user ID that identifies the registrant.
  • the registrant information 14 may further indicate an approver who verified the validity of the incompatible information 13 when the incompatible information 13 was registered.
  • the value master table 15 indicates the correspondence relationship between the type of usage result of the incompatibility information 13 and the evaluation value.
  • the value master table 15 may be called evaluation criteria information.
  • An evaluation value is a point given to a person concerned who played a role in increasing the value of the incompatible information 13 .
  • the role to which the evaluation value is assigned may differ according to the type of usage result, and the assigned evaluation value may differ according to the type of usage result.
  • evaluation values may be assigned to multiple roles based on one usage result, and the evaluation values may be different among these multiple roles.
  • the type of usage result may include successful absorption of incompatibility from the originally assumed first software to the second software. An evaluation value may be given to the current user and the registrant of the incompatibility information 13 from this usage result. Further, the type of usage result may include applying the incompatibility information 13 to absorption of incompatibility between software different from absorption of incompatibility from the first software to the second software originally assumed. Based on this usage result, an evaluation value may be given to a user who has discovered an application to other software.
  • the type of usage result may include partial usage of some information in the incompatible information 13.
  • the incompatibility information 13 may include a plurality of incompatibility sub-information indicating rewriting methods for rewriting discontinuous character strings in the source code. In that case, the user may be able to reuse some of the pieces of incompatible sub-information. An evaluation value may be given to the current user and the registrant of the incompatibility information 13 from this usage result.
  • the type of usage result may include detection of conflict between the incompatible information 13 and other incompatible information.
  • other incompatibility information registered in the database may define syntactic features that cause the second software to fail.
  • Other incompatibility information may be performance incompatibility information.
  • the source code rewritten according to the rewriting method indicated by the incompatibility information 13 may correspond to the syntactic features indicated by other incompatibility information.
  • an evaluation value may be given to the registrant of the incompatible information 13 and to the registrant of the other incompatible information.
  • the type of usage result may include a proposal for correction of the incompatibility information 13 . Based on this usage result, an evaluation value may be given to the user who proposed the correction of the incompatible information 13 .
  • the processing unit 12 acquires usage information for the database containing the incompatibility information 13.
  • the usage information indicates the user of the incompatible information 13 and the usage result of the incompatible information 13 .
  • the usage information may include the user's name or a user ID that identifies the user.
  • the processing unit 12 may receive usage information from another information processing device operated by the user.
  • the processing unit 12 determines the type of usage result indicated by the acquired usage information. Then, based on the value master table 15, the processing unit 12 calculates an evaluation value to be given to one or both of the user indicated by the acquired usage information and the registrant indicated by the registrant information 14 according to the identified type. do.
  • the processing unit 12 may store the calculated evaluation value in the storage unit 11 or another storage device. In addition, the processing unit 12 may display the calculated evaluation value on the display device. Also, the processing unit 12 may transmit the calculated evaluation value to another information processing device.
  • the processing unit 12 acquires usage information 16 and 17.
  • Usage information 16 indicates that user B used incompatibility information 13 to absorb incompatibility from the first software to the second software.
  • Usage information 17 indicates that user C discovered that incompatibility information 13 can be applied to incompatibility absorption from the third software to the fourth software.
  • the processing unit 12 calculates an evaluation value 18a to be given to the user B, and calculates an evaluation value 18b to be given to the registrant user A.
  • the processing unit 12 also calculates an evaluation value 19 to be given to the user C, who is a user, from the usage information 17 .
  • the information processing apparatus 10 acquires usage information indicating the user and the usage result of the incompatibility information 13, and based on the value master table 15, Accordingly, an evaluation value to be given to at least one of the user and the registrant is calculated. As a result, the value of registering the incompatible information 13 in the shared database and the value of using the incompatible information 13 are evaluated, and incentives are given to registrants and users. This promotes the use of shared databases containing incompatible information. As a result, knowledge for incompatibility absorption is shared among a plurality of users, and work for incompatibility absorption is made efficient.
  • the information processing system of the second embodiment analyzes the source code of a program that uses a database product, and supports correction work when changing the database product that is used.
  • Changes in database products include changes between database products provided by different software vendors and changes between different versions provided by the same software vendor. Incompatibilities may exist between database products. Modifying source code to eliminate defects caused by incompatibility is sometimes called incompatibility absorption.
  • FIG. 2 is a diagram illustrating an example of an information processing system according to the second embodiment.
  • the information processing system of the second embodiment includes a plurality of terminal devices such as terminal devices 31 , 32 and 33 connected to a network 30 and an information processing device 100 .
  • the network 30 may include a LAN (Local Area Network) and may include the Internet.
  • Terminal devices 31, 32, and 33 are client computers operated by users.
  • the information processing device 100 is a server computer accessed from the terminal devices 31 , 32 and 33 .
  • the information processing device 100 corresponds to the information processing device 10 of the first embodiment.
  • a plurality of terminal devices including terminal devices 31, 32, and 33 are each used by a user who plays a role in incompatible absorption.
  • a user may be called an engineer. However, the user may be an organization including multiple engineers.
  • the information processing apparatus 100 manages a database that stores incompatibility information and monitors the usage status of the database. In order to promote the use of the database, the information processing apparatus 100 gives points as an incentive to related users according to the usage status. A point may be called an evaluation value. The points given to the user may be used for personnel evaluation of the user.
  • Incompatible information is knowledge information shared by multiple users.
  • the incompatible information database is a shared database shared by multiple users.
  • the incompatibility information is associated with a set of pre-change database product and post-change database product.
  • the incompatibility information indicates an identification method for identifying an incompatible portion in the source code and a rewriting method for rewriting the identified incompatible portion so as to eliminate the incompatibility.
  • Users include users who register new incompatible information in the database. This user is sometimes called a registrant.
  • the terminal device 31 is used, for example, by a registrant.
  • the terminal device of the registrant specifies the identifiers of the database products before and after the change, and transmits the incompatibility information to the information processing device 100 .
  • users include users who approve new incompatible information. This user is sometimes called the approver.
  • Terminal device 32 is used, for example, by an approver. Approver confirms that incompatible information works correctly before it is formally registered in the database. Candidates for the approver may be determined in advance, such as the registrant's boss or an experienced engineer.
  • the approver's terminal device transmits an approval message to the information processing apparatus 100 .
  • the information processing apparatus 100 waits for an approval message from the approver and officially registers the new incompatibility information in the database.
  • users include users who have confirmed that existing incompatible information is applicable to other database products.
  • the application to other database products is sometimes called inheritance, and this user is sometimes called the successor applicant.
  • Inheritance means that at least one of the database product before change and the database product after change is different.
  • the terminal device of the inheritance applicant specifies the identifier of the incompatibility information and the identifier of the database product before and after the change, and transmits an inheritance application message to the information processing device 100 .
  • approval by the approver is performed in the same way as in the case of new registration.
  • the information processing apparatus 100 waits for an approval message from the approver and associates the requested database product with the incompatibility information.
  • the terminal device 33 is used, for example, by the applicant.
  • the terminal device of the usage applicant designates the identifier of the incompatibility information and transmits a usage record message to the information processing device 100 .
  • users include users who modify existing incompatible information. This user is sometimes called a modifier.
  • This user is sometimes called a modifier.
  • Bugs in incompatible information also include source code that has been converted according to incompatible information not running correctly in the modified database product. In that case, the user may correct the incompatible information.
  • the corrector's terminal device specifies the identifier of the incompatible information and transmits the corrected incompatible information to the information processing device 100 .
  • approval by the approver is performed in the same manner as in the case of new registration.
  • the information processing apparatus 100 waits for an approval message from the approver and formally registers the corrected incompatibility information in the database.
  • users include users who have used part of the information included in existing incompatible information for purposes other than the use of the entire incompatible information.
  • part of the incompatible information may be called incompatible sub-information.
  • Incompatible sub-information may be embedded within other incompatible information.
  • This form of utilization is sometimes called component utilization, and this user is sometimes called a component utilization applicant.
  • the terminal device of the component usage applicant designates the identifier of the incompatible sub-information and transmits a usage record message to the information processing device 100 .
  • the information processing apparatus 100 may provide the user with a user interface that supports the use of incompatible information, such as searching for available incompatible information.
  • the terminal device of the user specifies the identifier of the database product before and after the change, and transmits the pre-conversion source code to the information processing device 100 .
  • the information processing device 100 analyzes the source code and checks it against the incompatibility information associated with the specified database product.
  • the information processing device 100 notifies the terminal device of the user of the incompatible part in the source code, the matching incompatible information, and the rewriting method for resolving the incompatibility.
  • the information processing apparatus 100 may provisionally execute the method of rewriting incompatibility information on the source code and transmit an image of the source code after conversion to the terminal device of the user.
  • the work before formally transforming the source code is sometimes called an assessment.
  • the information processing apparatus 100 may determine whether the converted source code includes another incompatible part. Other incompatibility information is used for this determination. If the source code after conversion contains another incompatible part, one incompatible information may cause another incompatibility, and two pieces of incompatible information may conflict. In this case, the information processing apparatus 100 also presents the conflicting incompatible information to the user. Presenting other related incompatible information may be referred to as recommending incompatible information, and using two related incompatible information may be referred to as combining incompatible information.
  • a user who is presented with conflicting incompatible information may give up on using the original incompatible information, or may use two methods of rewriting incompatible information together.
  • the original incompatible information is syntax incompatible information
  • the conflicting incompatible information is performance incompatible information.
  • Syntax incompatibility information indicates a rewriting method for rewriting syntax that is not supported by the database product after change.
  • the performance incompatibility information may indicate a syntax that significantly degrades the execution performance of the database product after the change, and may indicate a rewrite method for resolving the performance degradation.
  • the syntactic incompatibility information solves the problem that the source code does not work with the modified database, it may cause another problem that the execution performance is significantly degraded.
  • FIG. 3 is a block diagram illustrating an example of hardware of an information processing apparatus.
  • the information processing apparatus 100 has a CPU 101, a RAM 102, an HDD 103, a GPU 104, an input interface 105, a medium reader 106 and a communication interface 107 connected to a bus.
  • a CPU 101 corresponds to the processing unit 12 of the first embodiment.
  • a RAM 102 or HDD 103 corresponds to the storage unit 11 of the first embodiment.
  • the terminal devices 31 , 32 and 33 may have hardware similar to that of the information processing device 100 .
  • the CPU 101 is a processor that executes program instructions. CPU 101 loads at least part of the programs and data stored in HDD 103 into RAM 102 and executes the programs.
  • the information processing device 100 may have multiple processors. A collection of processors may be called a multiprocessor or simply a "processor.”
  • the RAM 102 is a volatile semiconductor memory that temporarily stores programs executed by the CPU 101 and data used for calculations by the CPU 101 .
  • the information processing device 100 may have a type of volatile memory other than RAM.
  • the HDD 103 is a nonvolatile storage that stores software programs such as an OS (Operating System), middleware, application software, and data.
  • the information processing device 100 may have other types of non-volatile storage such as flash memory and SSD (Solid State Drive).
  • the GPU 104 generates images in cooperation with the CPU 101 and outputs the images to the display device 111 connected to the information processing device 100 .
  • the display device 111 is, for example, a CRT (Cathode Ray Tube) display, a liquid crystal display, an organic EL (Electro Luminescence) display, or a projector.
  • the information processing apparatus 100 may be connected to another type of output device such as a printer.
  • the input interface 105 receives input signals from the input device 112 connected to the information processing apparatus 100 .
  • the input device 112 is, for example, a mouse, touch panel, or keyboard.
  • a plurality of input devices may be connected to the information processing apparatus 100 .
  • the medium reader 106 is a reading device that reads programs and data recorded on the recording medium 113 .
  • the recording medium 113 is, for example, a magnetic disk, an optical disk, or a semiconductor memory. Magnetic disks include flexible disks (FDs) and HDDs. Optical discs include CDs (Compact Discs) and DVDs (Digital Versatile Discs).
  • a medium reader 106 copies the program and data read from the recording medium 113 to another recording medium such as the RAM 102 or HDD 103 .
  • the read program may be executed by CPU 101 .
  • the recording medium 113 may be a portable recording medium. Recording medium 113 may be used to distribute programs and data. Recording medium 113 and HDD 103 may also be referred to as computer-readable recording media.
  • the communication interface 107 is connected to the network 30 and communicates with the terminal devices 31 , 32 and 33 via the network 30 .
  • the communication interface 107 may be a wired communication interface connected to a wired communication device such as a switch or router, or a wireless communication interface connected to a wireless communication device such as a base station or access point.
  • FIG. 4 is a diagram showing an example flow of non-compatible absorption of database products.
  • the information processing system acquires the source code 131 that depends on the database product before change.
  • Source code 131 includes SQL statements or SQL procedure code.
  • a SQL statement is a database query written using SQL.
  • SQL procedural code is a program in a procedural language defined to be consistent with SQL and operates as a stored procedure.
  • the information processing system parses the source code 131 and generates a syntax tree 132 .
  • the syntax tree 132 is tree-type data that indicates the structure of language elements such as sentences, clauses, phrases, and words.
  • the syntax tree 132 generated through syntactic analysis can express the context in which each word appears in the source code 131, unlike the case where only lexical analysis is performed. For example, in SQL sentences and SQL procedure code, even for the same variable, the effective range of the variable may differ depending on the position where the variable is written. Therefore, the syntax tree 132 is useful for incompatible absorption.
  • the information processing system need not perform semantic analysis of the source code 131, and the syntax tree 132 need not include semantic information indicating the logical meaning of language elements.
  • the information processing system holds, as knowledge information, incompatibility information 133 associated with a set of the pre-change database product and the post-change database product.
  • a database product may be identified by a product name and version number pair.
  • the incompatibility information 133 includes a sequence of specific instructions and a sequence of rewrite instructions.
  • the identification instruction is an instruction for identifying an incompatible portion from the syntax tree 132 that may operate normally in the database product before the change but may cause a problem in the database product after the change.
  • the rewrite instruction is an instruction for rewriting the syntax tree 132 so that the incompatible portion specified by the specific instruction does not cause any problem in the database product after the change.
  • the information processing system executes the specific instruction included in the incompatibility information 133 for the syntax tree 132 .
  • the information processing system executes the rewrite instruction included in the incompatibility information 133 for the syntax tree 132 to absorb the incompatibility. This rewrites the syntax tree 132 so as to eliminate the incompatibility.
  • the information handling system generates source code 134 from the rewritten syntax tree 132 .
  • the source code 134 is the result of the incompatibility absorption of the source code 131, and is the source code for the database product after modification.
  • FIG. 5 is a block diagram showing an example of functions of the information processing apparatus.
  • the information processing apparatus 100 has an incompatibility information storage unit 121 and an evaluation information storage unit 122 . These storage units are implemented using the RAM 102 or the HDD 103, for example.
  • the information processing apparatus 100 also has an incompatibility information registration unit 123 , an incompatibility detection unit 124 , a usage application reception unit 125 and a point management unit 126 . These processing units are implemented using, for example, the CPU 101 and programs.
  • the incompatibility information storage unit 121 stores incompatibility information.
  • the incompatibility information storage unit 121 also stores management information for retrieving available incompatibility information from a set of the database product before change and the database product after change.
  • the incompatibility information includes syntax incompatibility information and performance incompatibility information.
  • a syntax incompatibility is a syntax error in which SQL or SQL procedural language syntax that was allowed in the database product prior to the change is not allowed in the database product after the change.
  • the syntax incompatibility information includes a specific instruction indicating a procedure for identifying an incompatible portion from the syntax tree and a rewrite instruction indicating a procedure for rewriting the identified incompatible portion.
  • Performance incompatibility means that the performance of the database product after modification is significantly lower than that of the database product before modification for the same function.
  • the evaluation information storage unit 122 stores evaluation information for calculating the points of users involved in incompatible information.
  • the evaluation information includes master information indicating how points are calculated.
  • the point calculation method is determined in advance by the administrator of the information processing system.
  • the incompatibility information registration unit 123 receives the identifier of the database product before and after the change and the new incompatibility information from the registrant's terminal device. Then, the incompatibility information registration unit 123 selects an approver candidate, transmits an approval request message, and receives an approval message from the approver's terminal device. The incompatibility information registration unit 123 stores the new incompatibility information in the incompatibility information storage unit 121 in association with the designated database product before and after the change. At this time, the incompatibility information registration unit 123 reports the new registration to the point management unit 126 .
  • the incompatibility information registration unit 123 receives the identifier of the incompatibility information and the identifier of the database product before and after the change from the terminal device of the inheritance applicant. Then, the incompatibility information registration unit 123 selects an approver candidate, transmits an approval request message, and receives an approval message from the approver's terminal device. The incompatibility information registration unit 123 updates the management information in the incompatibility information storage unit 121, and associates the specified incompatibility information with the specified database product before and after the change. At this time, the incompatibility information registration unit 123 reports the inheritance to the point management unit 126 .
  • the inheritance of existing incompatible information may be made more efficient by having the registrant of the incompatible information do it.
  • the inheritance of existing incompatible information is less burdensome than the creation of new incompatible information, giving priority to the registrant of the incompatible information will improve the fairness of evaluation among users. be done. Therefore, the incompatibility information registration unit 123 sets a certain period after the appearance of the new database product as a priority period during which the original registrant can preferentially become a successor applicant for the new database product. If the original registrant does not apply for succession even after the priority period has passed, other users can become succession applicants. Also, within the priority period, the approver at the time of new registration can preferentially become the successor approver.
  • the incompatibility information registration unit 123 receives the identifier of the incompatibility information and the corrected incompatibility information from the corrector's terminal device. Then, the incompatibility information registration unit 123 selects an approver candidate, transmits an approval request message, and receives an approval message from the approver's terminal device. The incompatibility information registration unit 123 updates the incompatibility information stored in the incompatibility information storage unit 121 . At this time, the incompatibility information registration unit 123 reports the correction to the point management unit 126 .
  • the incompatibility detection unit 124 receives the identifier and source code of the database product before and after the change from the terminal device. Then, the incompatibility detection unit 124 searches the incompatibility information storage unit 121 for incompatibility information corresponding to the specified database product before and after the change. The incompatibility detector 124 also parses the syntax of the source code to generate a syntax tree. The incompatibility detection unit 124 detects an incompatibility by executing a specific instruction included in the syntax incompatibility information on the syntax tree. The incompatibility detection unit 124 returns assessment information including the detected incompatible part and the rewriting method indicated by the syntactic incompatibility information to the terminal device.
  • the incompatibility detection unit 124 provisionally executes the rewrite instruction included in the syntax incompatibility information on the syntax tree, and searches for performance incompatibility information that matches the syntax tree after conversion. If matching performance incompatibility information exists, the incompatibility detection unit 124 further includes the performance incompatibility information in the assessment information and recommends the use of the performance incompatibility information. In that case, the incompatibility detection unit 124 reports a combination recommendation to the point management unit 126 .
  • the usage application reception unit 125 receives the identifier of the incompatibility information from the terminal device of the usage applicant. Then, the usage application reception unit 125 reports the usage application to the point management unit 126 . The usage application receiving unit 125 also receives the identifier of the incompatible sub-information from the terminal device of the usage applicant. Then, the usage application reception unit 125 reports the usage of the parts to the point management unit 126 .
  • the point management unit 126 receives reports from the incompatibility information registration unit 123, the incompatibility detection unit 124, and the usage application reception unit 125.
  • the point management unit 126 calculates points given to one or more users for each report according to the master information stored in the evaluation information storage unit 122, and records the calculated points in the evaluation information storage unit 122. .
  • the point management unit 126 gives points to the registrant and approver.
  • the point management unit 126 gives points to the succession applicant and the current approver.
  • the point management unit 126 gives points to the usage applicant and the registrant and approver of the used incompatible information.
  • the point management unit 126 gives points to the corrector and the current approver.
  • the point management unit 126 gives points to the applicant for use, and to the registrant and approver of the incompatible information including the used incompatible sub-information.
  • the point management unit 126 gives points to the registrant and approver of syntax incompatible information and to the registrant and approver of performance incompatible information.
  • FIG. 6 is a diagram showing an example of an edge table and a syntactically incompatible master table.
  • the incompatibility information storage unit 121 stores an edge table 141 .
  • the edge table 141 manages edges representing pairs of database products before change and database products after change.
  • the database product before change is sometimes called an incompatible absorber, and the database product after change is sometimes called an incompatible absorber.
  • Database products are identified by a product name and version number.
  • One record in the edge table 141 corresponds to one edge. Each record contains an edge key, source product and target product.
  • An edge key is a bit string that identifies an edge. Different edges are assigned different edge keys. Among the plurality of bits included in the edge key, any one bit has a value of 1 and the other bits have a value of 0. Thus, the edge is identified by the position of the bit whose value is 1.
  • An edge key may be called a bitmap.
  • the absorption source product is the database product before change
  • the absorption destination product is the database product after change.
  • an edge key represents an incompatible absorption from version 1 of product 1 to version 2 of product 1.
  • An edge key also represents an incompatible absorption from version 1 of product 1 to version 1 of product 2 .
  • An edge key also represents an incompatible absorption from version 2 of product 1 to version 2 of product 2 .
  • An edge key also represents an incompatible absorption from version 2 of product 1 to version 1 of product 2 .
  • the incompatibility information storage unit 121 stores a syntax incompatibility master table 142 .
  • the syntax incompatibility master table 142 manages syntax incompatibility information.
  • One record of the syntax incompatibility master table 142 corresponds to one syntax incompatibility information.
  • Each record contains an incompatible number, a syntactically incompatible name and a reference edge key.
  • the incompatible number is an identification number that identifies syntactically incompatible information.
  • the syntactic incompatibility name is a character string that simply expresses the characteristics of the incompatible location that is to be detected and rewritten by the syntactic incompatibility information.
  • a syntactically incompatible name may be determined by the registrant of the syntactically incompatible information.
  • a reference edge key is a bit string that indicates an edge for which syntactic incompatibility information is valid.
  • a reference edge key is a disjunction of edge keys assigned to one or more edges for which syntactic incompatibility information is valid.
  • edges and syntactically incompatible information are associated in a many-to-many manner via reference edge keys.
  • One edge key contains only one bit with a value of 1, and the position of the bit with a value of 1 differs between different edge keys.
  • the reference edge key contains n bits with a value of 1.
  • FIG. 7 is a diagram showing an example of the source code and syntax tree before conversion.
  • a sentence contains a terminal symbol at the end.
  • a sentence may contain clauses before terminal symbols.
  • a clause contains an imperative word at the beginning and a phrase, expression or word between the imperative word and the terminal symbol.
  • Phrases begin with an object-type, preposition, adverb, or parenthesis.
  • a phrase may be followed by a phrase, expression or word, and a phrase, expression or word may occur more than once. Phrases may be followed by clauses.
  • An expression contains a function name or word followed by an operator.
  • a terminal symbol indicates the end of a sentence.
  • a terminal symbol may be a semicolon (“;”).
  • a word is the smallest linguistic unit that has meaning in a sentence. Words include identifiers, reserved words, function names and operators. Reserved words include command words, object types and other reserved words. An instruction word indicates an instruction such as CREATE or UPDATE. The object type indicates the type of object such as TABLE. Other reserved words are reserved words other than command words and object types, such as BEGIN. Expressions include pairs of words and words joined by operators, and pairs of words and expressions joined by operators. Expressions also include pairs of function names and arguments. Arguments are enclosed in open brackets (“(”) and close brackets (“)”).
  • phrases include general phrases, predicate phrases, suffix phrases, definition phrases and unclassified phrases.
  • a general phrase is a modifier-object pair. The pair of object type and identifier is a general clause, for example TABLE T1.
  • a predicate phrase contains a preposition-object pair, such as FROM T1 and AS T2.
  • Predicate phrases also contain pairs of adverbs and objects, such as WHERE C1. Suffixes are enclosed between open and close parentheses and can be used to specify data types and key columns.
  • a definition phrase is a language element that specifies the type of a variable, and includes words other than reserved words and reserved words that indicate data types.
  • An unclassified phrase is a phrase that does not correspond to any of general phrases, predicate phrases, suffix phrases, and definition phrases.
  • the syntax tree 152 shows the syntax of the source code 151.
  • Syntax tree 152 is an undirected graph of tree structure.
  • Syntax tree 152 includes a plurality of nodes, each representing a language element, and a plurality of edges connecting the nodes into the tree structure. An edge between an upper node and a lower node indicates that the linguistic element corresponding to the lower node is included in the linguistic element corresponding to the upper node. Within the same level, the appearance order of multiple language elements is preserved. The language element corresponding to the left node appears earlier than the language element corresponding to the right node.
  • Syntax tree 152 also includes one sentence node, one clause node, two predicate phrase nodes, one expression node and one terminal symbol node.
  • Each node has attributes such as language element types and values. In the example syntax tree shown, only some attributes are shown.
  • the terminal symbol may be described as ⁇ end'', the general phrase as ⁇ phrase'', the predicate phrase as ⁇ predicate'', the suffix as ⁇ tan'', the definition phrase as ⁇ fixed'', and the unclassified phrase as ⁇ not yet''. be.
  • FIG. 8 is a diagram showing an example of attribute information.
  • Attribute information 153 is associated with one node of the syntax tree. Attribute information 153 includes location information, classification, classification attribute, type, value, value attribute and line number. However, some item values may not be defined depending on the node type.
  • Position information indicates the position of the node in the syntax tree. As will be described later, the position of a node is represented by two-dimensional coordinates including vertical and horizontal positions.
  • Classification indicates the highest level classification of sentences, clauses, phrases, expressions, words, and the like.
  • the classification attribute indicates the distinction between general nodes and complementary nodes.
  • a general node indicates a language element extracted directly from the source code description. Completion nodes indicate language elements that are not explicitly stated in the source code but have been interpretively completed.
  • the classification is a group that further subdivides the classification, such as general phrases and imperative words.
  • the value is a string of words.
  • the value attribute is the type of value. Value attributes include general strings and complement strings.
  • the line number is the number of the line where the language element corresponding to the node appears in the source code.
  • a syntax tree can be expressed as a two-dimensional tabular syntax table. This makes it easier to specify the position of the node, and to facilitate the description of the identification of the node and the procedure for searching for the node.
  • the nodes contained in the syntax tree are arranged in the syntax table according to the following rules.
  • FIG. 9 is a diagram showing an example of a syntax table.
  • Syntax table 154 is a syntax table equivalent to syntax tree 152 of FIG.
  • the position coordinates of the upper left cell of the syntax table 154 are (1, 1).
  • the row number indicating the vertical position increases as it moves downward, and the column number indicating the horizontal position increases as it moves to the right.
  • the position of each cell is designated by two-dimensional coordinates (row number, column number).
  • a node indicating a sentence is placed in the upper left cell of the syntax table 154 .
  • the leftmost child node among child nodes directly under a certain node is placed in a cell immediately below the cell corresponding to the node.
  • the cell immediately below is a cell with a row number that is one higher and a column number that is the same. Any other node that has the same parent node as a node and is to the right of that node is placed in the cell to the right of the cell corresponding to that node.
  • the cell on the right is the cell with the same row number and larger column number.
  • the cell in which each node is placed is determined in depth-first order.
  • One word node included in the syntax tree is arranged in one column. Therefore, two nodes having a parent-child relationship may have consecutive row numbers, while two nodes having the same parent node may have non-consecutive column numbers. As a result, the word nodes corresponding to the nine words included in the source code 151 are arranged in the first to ninth columns of the syntax table 154 while maintaining the order.
  • syntax table 154 and syntax tree 152 are interchangeable.
  • the syntax incompatibility information includes one or more specific instructions for searching for nodes satisfying conditions on the syntax tree and one or more rewriting instructions for rewriting some nodes included in the syntax tree.
  • FIG. 10 is a diagram showing an example of an instruction table.
  • Instruction table 155 provides definitions of instructions that may be used in syntactic incompatibility information.
  • One record in the instruction table 155 indicates one instruction.
  • One record of the command table 155 includes command, vertical position, horizontal position, search attribute and keyword.
  • the vertical position is a condition for the vertical positional relationship between the current node of interest and the target node. + indicates upward direction, - indicates downward direction, n indicates distance from the current node, and * indicates no distance limit.
  • the horizontal position may be specified in the format [instruction number]. This indicates that the horizontal position of the node selected by the command with that command number is the starting point of the search. Also, the horizontal position may be specified in a format of [instruction number 1:instruction number 2]. This indicates searching between the horizontal position of the node selected by the instruction with instruction number 1 and the horizontal position of the node selected by the instruction with instruction number 2.
  • a search attribute is a condition for a classification, classification attribute, type and value attribute of a target node.
  • a keyword is information other than search attributes for identifying a node.
  • a keyword may be an identifier as a word value.
  • an instruction number of an executed instruction may be specified. This indicates to reselect the node identified by the instruction.
  • No action means to proceed to the next command.
  • RET indicates to execute the next instruction and return to the instruction if the result of the next instruction is false. If no node satisfying the condition is found in the next instruction, the result of the next instruction is determined to be false.
  • another instruction itself using the attribute information of the current node of interest may be specified as an action.
  • the commands include FETCH, SEARCH, POP, GET PRM, SET PRM, ! , DELETE, CREATE, and MODIFY.
  • FETCH, SEARCH, POP, GET PRM, SET PRM, ! can be used as a specific instruction.
  • DELETE, CREATE, MODIFY can be used as rewrite commands.
  • FETCH is an instruction to search for a node that satisfies a condition and change the current node of interest (current node) to the detected node.
  • SEARCH is a command that searches for a node that satisfies a condition, but does not change the current node.
  • POP is an instruction that returns the current node to the node selected by the executed FETCH.
  • GET PRM is an instruction to store the attribute information of nodes that satisfy the conditions in the stack.
  • SET PRM is an instruction to output attribute information saved in the stack. SET PRM may be used within the FETCH or SEARCH keywords. ! is a negation instruction that inverts true/false. Before SEARCH! is added, the result of the instruction is determined to be true when no node that satisfies the condition is detected.
  • DELETE is an instruction to delete a specified range of nodes from the syntax tree based on the current node.
  • CREATE is an instruction to insert a subtree before or after the current node. The subtree to be inserted is saved as CREATE information separately from the instruction string.
  • CREATE has as an argument a CREATE information number that identifies CREATE information.
  • MODIFY is an instruction to rewrite the attribute information of the current node.
  • a regular expression program can be specified in the action.
  • syntactic incompatibility information is first searched for the most characteristic keyword related to the incompatible part.
  • the first keyword is sometimes called the anchor, and searching for the anchor from the syntax tree is sometimes called the anchor search.
  • Syntactic incompatibility information searches around the anchor in the syntax tree for surrounding nodes with attributes that satisfy the condition. As a result, a node set that forms an incompatible portion is identified.
  • the feature of the incompatible part is sometimes called a unique condition.
  • the syntactically incompatible information searches for a node to be rewritten using any of the detected nodes as a base point.
  • a base point may be an anchor.
  • FIG. 11 is a diagram showing an example of syntax incompatibility information.
  • the syntax incompatibility information 156 is stored in the incompatibility information storage unit 121 .
  • Syntax incompatibility information 156 is an example of syntax incompatibility information applied to syntax tree 152 shown in FIG.
  • One record of the syntax incompatibility information 156 corresponds to one specific instruction or one rewrite instruction.
  • Each record of syntactic incompatibility information 156 includes instruction number, instruction attribute, instruction, vertical position, horizontal position, search attribute, keyword and action.
  • the instruction number is an ascending natural number that indicates the execution order of the instruction.
  • the command attribute indicates a distinction between a specific command and a rewrite command.
  • Vertical position, horizontal position, search attributes and keywords are the arguments of the command.
  • An action indicates what to do if the result of an instruction is true.
  • Syntax incompatibility information 156 includes eight instructions from the first instruction to the eighth instruction.
  • the first to seventh instructions are specific instructions, and the eighth instruction is a rewrite instruction.
  • the first command searches for a node whose type is command word and whose value is SELECT, and selects it as the current node.
  • the second command retrieves a node whose vertical position is one level above the current node and whose classification is clause, and selects it as the current node.
  • the third command retrieves a node whose vertical position is one level below the current node and whose type is predicate phrase, and selects it as the current node. If there are multiple nodes corresponding to the third instruction, one node is selected and the following fourth instruction is executed. If the result of the fourth instruction is false, then we go back to the third instruction and select another node.
  • the fourth command retrieves a node whose vertical position is one level below the current node, whose classification is word and whose value is WHERE.
  • the fifth command searches for a node whose vertical position is one level below the current node and whose type is an expression, and selects it as the current node.
  • the sixth instruction retrieves a node whose vertical position is one level below the current node, whose classification is word and whose value is equal sign.
  • the seventh command searches for a node whose vertical position is one level below the current node, whose horizontal position is to the right of the node detected by the sixth command, and whose type is the quoted identifier, and selects it as the current node.
  • the eighth instruction adds ::NUMERIC specified by the CREATE information number in the action column to the right of the current node.
  • syntactically incompatible information may contain two or more pieces of incompatible sub-information. Therefore, an incompatible sub-number identifying the incompatible sub-information is assigned to a range of instructions belonging to the same incompatible sub-information. If the syntactically incompatible information is not divided into two or more incompatible sub-information, the entire syntactically incompatible information is interpreted as one incompatible sub-information. For example, the first to eighth instructions included in the syntactically incompatible information 156 belong to the same incompatible sub-information, and one incompatible sub-number is assigned to the range of the first to eighth instructions. be.
  • FIG. 12 is a diagram showing an example of source code and syntax tree after conversion.
  • Incompatibility detector 124 generates syntax tree 158 by executing syntax incompatibility information 156 on syntax tree 152 .
  • Syntax tree 158 also includes one sentence node, one clause node, two predicate phrase nodes, two expression nodes and one terminal symbol node.
  • Syntax tree 158 corresponds to source code 157 .
  • FIG. 13 is a diagram showing another example of the source code and syntax tree before conversion.
  • Syntax tree 162 shows the syntax of source code 161 .
  • This SQL statement contains a subquery below WHERE EXISTS and has a complicated syntax.
  • Syntax tree 162 also includes 1 sentence node, 2 clause nodes, 6 predicate phrase nodes, 1 postfix phrase node, 1 unclassified phrase node, 4 expression nodes and 1 Contains terminal symbol nodes.
  • FIG. 14 is a diagram showing another example of syntax incompatibility information.
  • the syntax incompatibility information 163 is stored in the incompatibility information storage unit 121 .
  • Syntax incompatibility information 163 is an example of syntax incompatibility information applied to the syntax tree 162 of FIG. Assume that the data type NUMBER is not supported by the modified database product, and that the syntax incompatibility is resolved by converting the data type from NUMBER to NUMERIC.
  • the syntax incompatibility information 163 includes 19 instructions from the 1st instruction to the 19th instruction.
  • the first to fourth instructions are specific instructions for searching for the first data type, and the fifth to sixth instructions are rewrite instructions for rewriting the first data type.
  • the 7th to 17th instructions are specific instructions for searching for the second data type, and the 18th to 19th instructions are rewrite instructions for rewriting the second data type.
  • the 1st to 6th instructions belong to the first incompatible sub-information
  • the 7th to 19th instructions belong to the second incompatible sub-information.
  • the first command searches the syntax tree 162 for a node whose type is command word and whose value is SELECT, and selects it as the current node.
  • the second command retrieves a node whose vertical position is above the current node and whose classification is clause, and selects it as the current node.
  • the third command retrieves a node whose vertical position is one node below the current node, whose horizontal position is to the right of SELECT of the first command, and whose classification is an expression, and selects it as the current node.
  • the fourth command searches for a node whose vertical position is one level below the current node, whose horizontal position is to the right of the current node, whose type is data type and whose value is NUMBER, and selects it as the current node. If the result of the fourth instruction is false, return to the third instruction.
  • the fifth instruction deletes the current node.
  • the sixth instruction creates a new node whose type is data type and whose value is NUMERIC and inserts it at the position of the deleted node.
  • FIG. 15 is a diagram (continued) showing another example of syntax incompatibility information.
  • the seventh command returns the current node to the SELECT node selected by the first command.
  • the eighth instruction retrieves a node whose vertical position is one level below the current node and whose type is predicate phrase, and selects it as the current node.
  • the ninth command retrieves a node whose vertical position is one level below the current node, whose horizontal position is to the right of the current node, and whose classification is formula, and selects it as the current node. If the result of the ninth instruction is false, return to the eighth instruction.
  • the tenth command retrieves a node whose vertical position is one node below the current node, whose horizontal position is to the right of the current node, and whose type is a conjunction, and selects it as the current node. If the result of the tenth instruction is false, return to the ninth instruction.
  • the eleventh command searches for a node whose vertical position is one level below the current node, whose horizontal position is to the right of the current node, and whose classification is clause, and selects it as the current node. If the result of the 11th instruction is false, return to the 10th instruction.
  • the twelfth command retrieves a node whose vertical position is one level below the current node, whose type is command word, and whose value is SELECT. If the result of the 12th instruction is false, return to the 11th instruction.
  • the thirteenth instruction is above the SELECT of the twelfth instruction, retrieves a node whose classification is clause, and selects it as the current node. If the result of the 13th instruction is false, return to the 12th instruction.
  • the 14th instruction searches for a node whose vertical position is one level below the current node, whose horizontal position is to the right of the clause of the 11th instruction, and whose type is predicate phrase, and selects it as the current node.
  • the fifteenth command retrieves a node whose vertical position is one node below the current node, whose horizontal position is to the right of SELECT of the twelfth command, and whose classification is an expression, and selects it as the current node. If the result of the fifteenth instruction is false, return to the fourteenth instruction.
  • the 16th instruction retrieves a node whose vertical position is one level below the current node, whose horizontal position is to the right of the clause of the 13th instruction, and whose classification is formula, and selects it as the current node. If the result of the 16th instruction is false, return to the 15th instruction.
  • the 17th instruction searches for a node whose vertical position is one level below the current node, whose horizontal position is to the right of the predicate of the 14th instruction, whose type is data type and whose value is NUMBER. select. If the result of the 17th instruction is false, return to the 16th instruction.
  • the eighteenth instruction deletes the current node.
  • the nineteenth instruction creates a new node whose type is data type and whose value is NUMERIC and inserts it at the position of the deleted node.
  • complex syntactically incompatible information may be divided into two or more incompatible sub-information.
  • Incompatible sub-information with high reusability may be diverted for purposes different from the original syntactically incompatible information, and may also be diverted to other syntactically incompatible information.
  • FIG. 16 is a diagram showing an example of performance incompatibility information.
  • the performance incompatibility information 164 is stored in the incompatibility information storage unit 121 .
  • Performance incompatibility information 164 includes performance incompatibility name, performance incompatibility number, edge key, SQL syntax, total number of records, number of processed records, phenomenon index, pre-change response, post-change response, pre-change throughput, and post-change throughput. .
  • the performance incompatibility information 164 includes the pre-change CPU usage rate, post-change CPU usage rate, pre-change CPU waiting ratio, post-change CPU waiting ratio, pre-change I/O amount, post-change I/O amount, hardware and Including resolution method.
  • a performance incompatibility name is a name that simply expresses the cause of the performance incompatibility.
  • the performance incompatibility number is an identification number that identifies the performance incompatibility information 164 .
  • the edge key identifies the set of source and destination products to which the performance incompatibility information 164 applies.
  • SQL syntax is the syntax of SQL statements where performance incompatibilities occur.
  • the total number of records is the number of records stored in the database product when the performance incompatibility was discovered.
  • the number of records processed is the number of records processed by the SQL statement when the performance incompatibility was found.
  • a symptom index is a set of flags that indicate the type of performance degradation that occurred in a database product. For example, the least significant bit represents an increase in CPU utilization, the second-to-bottom bit represents an increase in CPU latency, and the third-to-bottom bit represents an increase in I/O volume.
  • One performance incompatibility may cause two or more types of performance degradation phenomena.
  • the pre-change response is the response time to the SQL statement measured with the database product before the change.
  • the post-change response is the response time to the SQL statement measured by the database product after change.
  • the throughput before change is the number of records processed per unit time measured by the database product before change.
  • the post-change throughput is the number of records processed per unit time measured by the post-change database product.
  • the pre-change CPU usage rate is the CPU usage rate measured by the database product before change.
  • the post-change CPU usage rate is the CPU usage rate measured by the database product after the change.
  • the pre-change CPU waiting ratio is the ratio of the CPU waiting time measured in the database product before the change.
  • the ratio of CPU waiting time is the ratio of waiting time during which the CPU waits for a response from the storage device to the time required for processing the SQL statement.
  • the CPU waiting ratio after change is the ratio of CPU waiting time measured in the database product after change.
  • the pre-change I/O volume is the amount of data transmitted to and from the storage device measured by the database product before change.
  • the post-change I/O volume is the amount of data sent to and from the storage device measured by the database product after the change.
  • Hardware is the specification of the hardware used when the performance incompatibility was discovered. Hardware specifications include, for example, the number of CPU cores, the clock frequency, the type of storage device that stores records, and the like.
  • the resolution method is a description of a countermeasure to resolve the performance incompatibility. The resolution method may be a method of rewriting the SQL sentence.
  • FIG. 17 is a diagram showing an example of SQL syntax information.
  • the SQL syntax information 165 is stored in the incompatibility information storage unit 121 .
  • the SQL syntax information 165 represents the features of SQL statements that cause performance incompatibilities.
  • SQL syntax information 165 is associated with performance incompatibility information 164 .
  • SQL syntax information 165 includes SQL syntax number, performance incompatibility number, BOW (Bag of Words) vector and keyword list.
  • the SQL syntax number is an identification number that identifies the SQL syntax information 165.
  • the performance incompatibility number is an identification number of performance incompatibility information indicating performance incompatibility caused by the SQL syntax indicated by the SQL syntax information 165 .
  • the BOW vector is a vector listing the keywords and the number of occurrences of the keywords included in the SQL statements that cause performance incompatibility.
  • the keyword list is a list in which the keywords included in the SQL statements that cause performance incompatibilities are arranged in the order in which they appear in the SQL statements. Note that keywords that do not affect the occurrence of performance incompatibilities are excluded from the BOW vector and keyword list.
  • a BOW vector is generated that indicates one WHERE, one quoted identifier, one ::, and one NUMERIC.
  • a keyword list showing the order of appearance of WHERE, quoted identifier, ::, and NUMERIC is generated.
  • the incompatibility detection unit 124 parses the source code 151 and generates a syntax tree 152 when the source code 151 is subject to incompatibility absorption.
  • the incompatibility detector 124 tentatively executes the specific instruction and the rewrite instruction of the syntax incompatibility information 156 on the syntax tree 152 to convert the syntax tree 152 into a syntax tree 158 .
  • the incompatibility detection unit 124 collates the syntax tree 158 with the keyword list of the SQL syntax information 165 to determine whether the syntax tree 158 includes the SQL syntax of the SQL syntax information 165 .
  • the incompatibility detection unit 124 scans word nodes, which are leaf nodes of the syntax tree 158, from left to right. Incompatibility detector 124, while traversing the term nodes of syntax tree 158, determines whether the keywords contained in the keyword list appeared in that order. If all the keywords included in the keyword list appear in that order, the incompatibility detector 124 determines that the syntax tree 158 contains the SQL syntax of the SQL syntax information 165 . In this case, the incompatibility detector 124 determines that there is a risk of performance incompatibility indicated by the performance incompatibility information 164 when the source code 151 is rewritten according to the syntax incompatibility information 156 .
  • the incompatibility detection unit 124 determines that the syntax tree 158 does not include the SQL syntax of the SQL syntax information 165. In this case, the incompatibility detector 124 determines that the performance incompatibility indicated by the performance incompatibility information 164 will not occur even if the source code 151 is rewritten according to the syntax incompatibility information 156 .
  • word nodes with keywords WHERE, '1', ::, NUMERIC included in the syntax tree 158 correspond to the keyword list of the SQL syntax information 165 . Therefore, the incompatibility detection unit 124 determines that there is a risk of performance incompatibility.
  • the incompatibility detection unit 124 presents the performance incompatibility information 164 to the user together with the incompatibility part included in the source code 151 and the method of rewriting the syntax incompatibility information 156 .
  • FIG. 18 is a diagram showing an example of the value master table.
  • the evaluation information storage unit 122 stores a value master table 143.
  • FIG. The value master table 143 corresponds to the value master table 15 of the first embodiment.
  • the value master table 143 defines a calculation method for points given to users.
  • Value master table 143 contains reference points. For example, the reference point is 100 points.
  • the value master table 143 includes new registration points and new approval points. New approval points are given to registrants when newly registering incompatible information. New approval points are given to approvers of registered incompatible information. New enrollment points and new approval points are defined as a percentage of the baseline points. For example, the newly registered points are 100% of the reference points, and the new approval points are 90% of the reference points.
  • the value master table 143 includes inheritance application points and inheritance approval points.
  • Inheritance application points are given to the succession applicant when inheriting existing incompatible information.
  • Inheritance approval points are awarded to approvers of inheritance of incompatible information.
  • Inheritance application points and inheritance approval points are defined as percentages of reference points. For example, inheritance application points are 2% of the reference points, and inheritance approval points are 1% of the reference points.
  • the value master table 143 includes usage application points, usage registrant points, and usage approver points.
  • Use application points are given to the use applicant when the incompatible information is simply used or when parts are used.
  • the registrant point at the time of use is given to the registrant of the used incompatible information.
  • Approver points at the time of use are given to the approver of the used incompatible information.
  • Use application points, use-time registrant points, and use-time approver points are defined as percentages of reference points. For example, the usage application points are 10% of the reference points, and the usage registrant points and usage approver points are 1% of the reference points.
  • the usage application points are multiplied by the user side coefficient described later.
  • the registrant points at the time of use and the approver points at the time of use are multiplied by a creator coefficient, which will be described later.
  • the user-side coefficient and the creator-side coefficient change depending on the cumulative number of uses of the incompatible information.
  • the user-side coefficient becomes smaller as the cumulative number of times of use increases. Therefore, incompatible information with less track record of use has a larger use application point.
  • the greater the cumulative number of uses the larger the creator-side coefficient. Therefore, incompatible information with a large number of usage records will have greater points for registrants when used and points for approvers when used. In this way, the point at the time of using incompatible information is asymmetric between the user side and the creator side.
  • the value master table 143 includes correction points and correction approval points. Correction points are given to the corrector when correcting incompatible information. Correction approval points are awarded to approvers of corrected incompatible information. Correction points and correction approval points are defined as a percentage of the reference points. For example, the correction points are 100% of the reference points, and the correction approval points are 90% of the reference points.
  • the value master table 143 includes registrant points at the time of combination and approver points at the time of combination.
  • registrant points are given to each registrant of incompatible information when a recommendation is made to combine the two pieces of incompatible information.
  • Merging approver points are awarded to the approver of each incompatible information.
  • Points are awarded for combining recommendations without waiting for applications for incompatible information to detect potential incompatibilities at an early stage, prevent problems, and reduce incompatibilities. This is because the favorable effect of suppressing is exhibited.
  • Combined registrant points and combined approval points are defined as percentages of reference points. For example, combined registrant points and combined approval points are 1% of the base points.
  • the registrant points at the time of merging and the approver points at the time of merging are multiplied by the creator's coefficient, which will be described later.
  • the coefficient on the creation side increases as the number of recommendations increases. Therefore, incompatible information with a large number of records of merging results in larger registrant points and approver points at merging.
  • the value master table 143 includes basic coefficients, user-side adjustment coefficients, and creator-side adjustment coefficients.
  • the basic coefficient is the initial value of the user-side coefficient and the creator-side coefficient.
  • the user-side adjustment coefficient is the amount of decrease in the user-side coefficient per use.
  • the creation-side adjustment coefficient is the amount of increase in the creation-side coefficient per use. For example, the basic coefficient is 1, the user side adjustment coefficient is 0.001/time, and the creation side adjustment coefficient is 0.001/time.
  • the user side coefficient is calculated as basic coefficient - (cumulative number of times of use - 1) x user side adjustment coefficient. Therefore, the user-side coefficient at the time of first use matches the basic coefficient, and the user-side coefficient decreases as the cumulative number of times of use increases. However, the lower limit of the user-side coefficient is zero.
  • the production side adjustment coefficient is calculated as follows: basic coefficient + (cumulative number of times of use - 1) x production side adjustment coefficient. Therefore, the creation-side coefficient at the time of first use matches the basic coefficient, and the creation-side coefficient increases as the cumulative number of times of use increases. However, the upper limit of the creation side coefficient may be set.
  • FIG. 19 is a diagram showing an example of a table used for incompatibility information management.
  • the evaluation information storage unit 122 stores a registered usage status table 144 .
  • One record of the registration usage status table 144 corresponds to one piece of incompatible sub-information or one piece of performance incompatibility information.
  • Each record of the registration usage status table 144 includes a number, number of times of use, initial registrant, initial approver, maintenance right holder, and maintenance approval right holder.
  • the number is an incompatible sub-number identifying incompatible sub-information or a performance incompatible number identifying performance incompatible information.
  • the number of times of use is the accumulated number of times of use of the information.
  • Simple usage of syntactically incompatible information means usage of all incompatible sub-information contained in the syntactically incompatible information.
  • the initial registrant is the user name of the registrant who registered the information in the incompatibility information storage unit 121 .
  • the initial approver is the user name of the approver who approved the information at the time of registration.
  • the maintenance right holder is the user name of the user who inherited the status of the registrant. If the initial registrant leaves the non-compatible absorption business, the initial registrant and the maintenance right holder do not match. In that case, the maintenance right holder has the right to be the successor applicant on behalf of the initial registrant.
  • the maintenance approval right holder is the user name of the user who has inherited the status of the approver. If the initial approver leaves the non-compatible absorption business, the initial approver does not match the maintenance approver. In that case, the maintenance approver has the right to be the successor approver in place of the initial approver.
  • the evaluation information storage unit 122 stores a connection status table 145 .
  • One record of the join status table 145 corresponds to a set of syntax incompatibility information and performance incompatibility information.
  • Each record of the connection status table 145 includes a syntax incompatibility number, a performance incompatibility number, and the number of recommendations.
  • the syntactic incompatibility number identifies the combined syntactic incompatibility information.
  • the performance incompatibility number identifies the combined performance incompatibility information.
  • the number of recommendations is the cumulative number of connections.
  • the evaluation information storage unit 122 also stores a usage application table 146.
  • One record of the usage application table 146 corresponds to the usage of one incompatible sub-information or performance incompatible information in one incompatible absorption project.
  • Each record of the usage application table 146 includes a user name, application ID, number and number.
  • the user name is the name of the applicant for simple usage or the name of the applicant for component usage.
  • the application ID is an identifier that identifies an incompatible absorption project in which simple use or component use has been made.
  • the number is an incompatible sub-number identifying used incompatible sub-information or a performance incompatible number identifying used performance incompatible information.
  • the simple use of syntactically incompatible information means the use of all incompatible sub-information included in the syntactically incompatible information.
  • the number is the number of incompatible points detected in the incompatible absorption project.
  • FIG. 20 is a diagram showing an example of a point tally table.
  • the evaluation information storage unit 122 stores a point tally table 147.
  • FIG. The point management unit 126 may display the point tally table 147 on the display device 111 or transmit it to another information processing device.
  • One record in the point total table 147 corresponds to one user.
  • Each record in the point tally table 147 includes a user name and points.
  • Username is the name of the user. However, a user ID other than the user's name may be used. Points are the total points given to the user.
  • FIG. 21 is a flowchart illustrating an example of a procedure for managing incompatibility information. (S10) The information processing device 100 receives a message from the terminal device.
  • the information processing apparatus 100 determines whether the received message is of the first type, that is, whether it is a new registration of incompatible information. If the incompatibility information is newly registered, the process proceeds to step S12. Otherwise, the process proceeds to step S15.
  • the incompatibility information registration unit 123 selects an approver candidate and transmits an approval request message.
  • the incompatibility information registration unit 123 receives an approval message from the approver.
  • the incompatibility information registration unit 123 stores the new incompatibility information in the incompatibility information storage unit 121 . If the incompatible information is syntax incompatible information, the incompatible information registration unit 123 adds a record to the syntax incompatible master table 142 . Also, the incompatibility information registration unit 123 records the registrant and approver in the registered use status table 144 .
  • the point management unit 126 refers to the value master table 143, calculates the points to be given to the registrant and the points to be given to the approver, and records them in the point total table 147. For example, the point management unit 126 gives 100 points to the registrant and 90 points to the approver. Then, incompatibility information management ends.
  • the information processing apparatus 100 determines whether the received message is of the second type, that is, whether it is a request to inherit existing incompatible information. If it is an inheritance application, the process proceeds to step S16. Otherwise, the process proceeds to step S19.
  • the incompatibility information registration unit 123 selects an approver candidate and sends an approval request message. As approver candidates, priority is given to the initial approver or maintenance approver in the registered use status table 144 . The incompatibility information registration unit 123 receives an approval message from the approver.
  • the incompatibility information registration unit 123 updates the reference edge key included in the syntax incompatibility master table 142, and associates the syntax incompatibility information with the new edge.
  • the point management unit 126 refers to the value master table 143 to calculate the points to be given to the inheritance applicant and the points to be given to the current approver, and record them in the point total table 147 . For example, the point management unit 126 gives 2 points to the successor applicant and 1 point to the approver. Then, incompatibility information management ends.
  • the information processing apparatus 100 determines whether the received message is of the third type, that is, whether it is an application for use of incompatible information. If it is a usage application, the process proceeds to step S20. Otherwise, the process proceeds to step S23.
  • the point management unit 126 records the usage application in the usage application table 146, and increases the cumulative number of uses of the used incompatible information by the number included in the usage application.
  • the point management unit 126 refers to the value master table 143 and calculates a user-side coefficient and a creation-side coefficient that depend on the cumulative number of times of use. As the cumulative number of times of use increases, the usage side coefficient is calculated to be smaller, and the creation side coefficient is calculated to be larger.
  • the point management unit 126 calculates points to be given to the user based on the value master table 143 and the user-side coefficient of step S21, and records them in the point total table 147. For example, the point management unit 126 gives the use applicant variable points of 0 points or more and 10 points or less. Further, the point management unit 126 calculates the points to be given to the registrant of the used incompatible information and the points to be given to the approver based on the value master table 143 and the creation side coefficient of step S21, and 147 records. For example, the point management unit 126 gives one or more variable points to each of the registrant and the approver. Then, incompatibility information management ends.
  • FIG. 22 is a flowchart (continued) showing an example of a procedure for managing incompatibility information.
  • the information processing apparatus 100 determines whether the received message is of the fourth type, that is, whether it is correction of existing incompatible information. In the case of correction, the process proceeds to step S24. Otherwise, the process proceeds to step S27.
  • the incompatibility information registration unit 123 selects an approver candidate and transmits an approval request message.
  • the incompatibility information registration unit 123 receives an approval message from the approver.
  • the incompatibility information registration unit 123 updates the existing incompatibility information stored in the incompatibility information storage unit 121.
  • the point management unit 126 refers to the value master table 143, calculates the points to be given to the corrector and the points to be given to the current approver, and records them in the point total table 147. For example, the point management unit 126 gives 100 points to the corrector and 90 points to the approver. Then, incompatibility information management ends.
  • the information processing apparatus 100 determines whether the received message is of the fifth type, that is, whether it is a component usage of incompatible sub-information. If the part is to be used, the process proceeds to step S28. Otherwise, the process proceeds to step S31.
  • the point management unit 126 records the use of the component in the use application table 146, and increases the cumulative number of uses of the used incompatible sub-information by the number included in the use application.
  • the point management unit 126 refers to the value master table 143 and calculates a user-side coefficient and a creation-side coefficient that depend on the cumulative number of times of use. As the cumulative number of times of use increases, the usage side coefficient is calculated to be smaller, and the creation side coefficient is calculated to be larger.
  • the point management unit 126 calculates points to be given to the part use applicant based on the value master table 143 and the user-side coefficient of step S29, and records them in the point total table 147. For example, the point management unit 126 gives 0 points or more and 10 points or less variable points to the parts use applicant. Further, the point management unit 126 calculates the points to be given to the registrant of the used incompatible sub-information and the points to be given to the approver based on the value master table 143 and the coefficient on the creation side of step S29, and totals the points. Record in table 147 . For example, the point management unit 126 gives one or more variable points to the registrant and approver. Then, incompatibility information management ends.
  • the information processing apparatus 100 determines that the received message is of the sixth type, ie, an assessment of incompatible absorption.
  • the incompatibility detection unit 124 performs an assessment on the source code received from the terminal device and transmits the assessment result to the terminal device.
  • the information processing apparatus 100 determines whether a recommendation for combining different pieces of incompatible information has been made in the assessment. If a combination is recommended, the process proceeds to step S32. Otherwise, incompatible information management ends.
  • the point management unit 126 increments by one the number of recommendations corresponding to the combined set of incompatible information in the combined status table 145 .
  • the point management unit 126 refers to the value master table 143 and calculates a creator-side coefficient that depends on the number of recommendations in step S32. The greater the number of recommendations, the greater the coefficient calculated on the creation side.
  • the point management unit 126 calculates the points to be given to the registrant of each piece of combined incompatible information and the points to be given to the approver based on the value master table 143 and the coefficients on the creation side of step S33, It is recorded in the point tally table 147 .
  • the point management unit 126 gives one or more variable points to the registrant and approver.
  • the information processing system of the second embodiment accumulates incompatibility information indicating the know-how of incompatibility absorption of database products in the shared database.
  • the information processing system uses the accumulated incompatibility information to automatically detect the incompatibility part from the source code, and presents the user with a method of resolving the incompatibility. Also, the information processing system rewrites the source code so as to eliminate the incompatibility. Thus, non-compatible absorption is made efficient.
  • the information processing system monitors the registration and use of incompatible information, and gives points as an incentive to users who contribute to increasing the value of the shared database. This encourages the registration and use of incompatible information, promoting active use of the shared database. As a result, knowledge of incompatible absorption is shared among users, and incompatible absorption is made efficient.
  • the information processing system gives points to registrants and approvers when newly registering incompatible information. This increases the amount of incompatible information stored in the shared database, and improves the quality of the registered incompatible information.
  • the information processing system gives points to the inheritance applicant and approver when inheriting the existing incompatible information. This increases the number of database products to which the same incompatible information can be applied. At this time, the registrant and approver of the incompatible information can preferentially become the successor applicant and approver of the incompatible information. Therefore, confirmation of inheritance is made efficient, and fairness among users is improved.
  • the information processing system gives points to the applicant, registrant, and approver when using incompatible information.
  • This increases the use of the incompatible information stored in the shared database and also provides incentives for registration and approval of the incompatible information.
  • the use applicant acquires a larger point when using incompatible information with less use record. This increases the availability of a wide range of incompatible information.
  • the registrant and the approver obtain more points as their use record of the registered incompatible information increases. This enhances the incentives for registering and acknowledging incompatible information and improves the quality of incompatible information.
  • the information processing system gives points to the corrector and approver when correcting incompatible information. This prevents errors in the incompatible information from being left unattended, and improves the quality of the incompatible information stored in the shared database. Also, the information processing system gives points to the use applicant, the registrant, and the approver when parts of the incompatible sub-information, which is a part of the incompatible information, are used. This increases the reuse of incompatible sub-information. Further, when the information processing system presents a combination of related syntax incompatibility information and performance incompatibility information to the user, points are given to the registrant and approver of each incompatibility information. As a result, latent incompatibilities are discovered at an early stage, problems are prevented, and rework of incompatibility absorption is suppressed.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

非互換情報データベースの利用を促進する。 記憶部(11)は、第1のソフトウェアに依存するソースコードを第2のソフトウェアに適合させる書換方法を示す非互換情報(13)と非互換情報(13)の登録者を示す登録者情報(14)とを記憶する。処理部(12)は、非互換情報(13)の利用者と非互換情報(13)の利用結果とを示す利用情報(16)を取得する。処理部(12)は、利用情報(16)が示す利用結果の種別を特定する。処理部(12)は、複数の利用結果の種別と複数の評価値との間の対応関係を示す評価基準情報(15)に基づいて、特定した種別に応じて、利用情報(16)が示す利用者および登録者情報(14)が示す登録者の少なくとも一方に付与する評価値を算出する。

Description

情報処理プログラム、情報処理方法および情報処理装置
 本発明は情報処理プログラム、情報処理方法および情報処理装置に関する。
 情報処理システムは、ソフトウェアベンダから提供されるソフトウェアを使用することがある。ソフトウェアの例として、DBMS(Database Management System)などのミドルウェアが挙げられる。情報処理システムで実行されるプログラムのソースコードは、提供されるソフトウェアの仕様に依存して作成されることがある。例えば、プログラムは、DBMSにSQL文を送信してデータベース操作機能を呼び出すなど、提供されるソフトウェアに対して要求を送信してソフトウェアの機能を呼び出すことがある。
 情報処理システムは、使用するソフトウェアを変更することがある。例えば、ソフトウェアベンダがバージョンアップを行った場合、情報処理システムが、使用するソフトウェアを新バージョンに更新することがある。また、例えば、情報処理システムが、他のソフトウェアベンダから提供される同種のソフトウェアに切り替えることがある。
 ただし、ソフトウェアを変更することで、ソフトウェア間の非互換性に基づく不具合が既存プログラムに発生することがある。例えば、サポートするSQL文の言語仕様など、要求を記述するための言語仕様が異なるために、既存プログラムから新ソフトウェアへの要求の送信にエラーが発生することがある。また、例えば、現ソフトウェアと新ソフトウェアとの間で、同一の要求に対する機能または性能が異なることがある。よって、ソフトウェアの変更は、ソースコードの修正を伴う可能性がある。
 なお、ソフトウェア部品の利用実績に基づいて、ソフトウェア部品の再利用の重要性を評価する重要性評価システムが提案されている。また、課題に対する解決案を複数のユーザから受け付け、解決案に対する報酬としてユーザにポイントを付与する情報処理装置が提案されている。また、ユーザから画像または動画のコンテンツの投稿を受け付け、投稿されたコンテンツに広告を関連付け、コンテンツの閲覧回数に応じてユーザに報酬を付与するコンテンツ共有システムが提案されている。
国際公開第2003/069466号 特開2006-99418号公報 国際公開第2015/100496号
 ソースコードの修正を支援する1つの方法として、コンピュータが、ソフトウェア変更時のソースコードの書換方法を規定した非互換情報を保存しておき、保存された非互換情報が示す書換方法を提示または実行する方法が考えられる。
 非互換情報を保存するデータベースが複数のユーザによって共有されることで、非互換性の知識が共有され、ソースコードの修正作業が効率化される可能性がある。しかし、単に共有データベースを整備しただけでは、複数のユーザから共有データベースが活発に利用されるとは限らない。そのため、有用な非互換情報の蓄積や非互換情報の実践的利用が十分に促進されないおそれがある。そこで、1つの側面では、本発明は、非互換情報データベースの利用を促進することを目的とする。
 1つの態様では、以下の処理をコンピュータに実行させる情報処理プログラムが提供される。第1のソフトウェアに依存するソースコードを第2のソフトウェアに適合させる書換方法を示す非互換情報と非互換情報の登録者を示す登録者情報とを含むデータベースに対する利用情報であって、非互換情報の利用者と非互換情報の利用結果とを示す利用情報を取得する。利用情報が示す利用結果の種別を特定する。複数の利用結果の種別と複数の評価値との間の対応関係を示す評価基準情報に基づいて、特定した種別に応じて、利用情報が示す利用者および登録者情報が示す登録者の少なくとも一方に付与する評価値を算出する。また、1つの態様では、コンピュータが実行する情報処理方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
 1つの側面では、非互換情報データベースの利用を促進できる。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態の情報処理装置を説明するための図である。 第2の実施の形態の情報処理システムの例を示す図である。 情報処理装置のハードウェア例を示すブロック図である。 データベース製品の非互換吸収の流れの例を示す図である。 情報処理装置の機能例を示すブロック図である。 エッジテーブルと構文非互換マスタテーブルの例を示す図である。 変換前のソースコードと構文ツリーの例を示す図である。 属性情報の例を示す図である。 構文テーブルの例を示す図である。 命令テーブルの例を示す図である。 構文非互換情報の例を示す図である。 変換後のソースコードと構文ツリーの例を示す図である。 変換前のソースコードと構文ツリーの他の例を示す図である。 構文非互換情報の他の例を示す図である。 構文非互換情報の他の例を示す図(続き)である。 性能非互換情報の例を示す図である。 SQL構文情報の例を示す図である。 価値マスタテーブルの例を示す図である。 非互換情報管理に用いられるテーブルの例を示す図である。 ポイント集計テーブルの例を示す図である。 非互換情報管理の手順例を示すフローチャートである。 非互換情報管理の手順例を示すフローチャート(続き)である。
 以下、本実施の形態を図面を参照して説明する。
 [第1の実施の形態]
 第1の実施の形態を説明する。
 図1は、第1の実施の形態の情報処理装置を説明するための図である。
 第1の実施の形態の情報処理装置10は、あるソフトウェアに依存するソースコードを別のソフトウェアに適合するように書き換えるという非互換吸収を支援する。情報処理装置10は、非互換吸収の方法を示す非互換情報を管理する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータ、非互換情報管理装置またはソフトウェア開発支援装置と呼ばれてもよい。
 情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
 記憶部11は、非互換情報13および登録者情報14を含むデータベースを記憶する。また、記憶部11は、価値マスタテーブル15を記憶する。
 非互換情報13は、第1のソフトウェアに依存するプログラムのソースコードを、第2のソフトウェアに適合するように書き換える書換方法を示す。非互換情報13は、非互換吸収の知識を一定の形式で表現した知識情報である。第1のソフトウェアは変更前のソフトウェアに相当し、第2のソフトウェアは変更後のソフトウェアに相当する。変更前後のソフトウェアは、ソフトウェアベンダから提供されるソフトウェア製品であってもよく、DBMSやWebサーバなどのミドルウェアであってもよい。また、変更前後のソフトウェアは、異なるソフトウェアベンダから提供される同種のソフトウェアでもよいし、同一のソフトウェアベンダから提供される異なるバージョンのソフトウェアでもよい。
 ソースコードは、ソフトウェアへの要求を示す要求メッセージを規定してもよい。要求メッセージはSQL文でもよく、ソースコードはSQLまたはSQLプロシジャ言語で記述されてもよい。変更前後のソフトウェアへの要求を記述するための言語は、類似しているものの同一でないことがある。例えば、変更前後のソフトウェアは、共にSQLなどの汎用的なクエリ言語をサポートする一方、クエリ言語を独自に拡張していることがある。
 非互換情報13は、不具合の原因となる構文上の特徴と書換後の構文とを示すものであってもよい。非互換情報13は、ソースコードの中から非互換箇所を検出する手順を示す特定命令と、非互換箇所を書き換える手順を示す書換命令とを含んでもよい。非互換情報13は、例えば、構文非互換性、機能非互換性または性能非互換性を解消する。
 構文非互換性は、変更前のソフトウェアでは許容されていた構文が、変更後のソフトウェアでは許容されないという非互換性である。構文非互換性をもつプログラムが変更後のソフトウェアに要求メッセージを送信すると、送信エラーが発生して変更後のソフトウェアの実行が失敗することがある。機能非互換性は、変更後のソフトウェアの実行結果が変更前のソフトウェアの実行結果と一致しないという非互換性である。機能非互換性をもつプログラムが変更後のソフトウェアに要求メッセージを送信すると、期待した実行結果が得られないことがある。性能非互換性は、変更後のソフトウェアの実行性能が変更前のソフトウェアよりも低いという非互換性である。性能非互換性をもつプログラムが変更後のソフトウェアに要求メッセージを送信すると、待ち時間が著しく長くなることがある。
 登録者情報14は、非互換情報13をデータベースに登録した登録者を示す。登録者は、通常、非互換情報13を作成した作成者である。登録者情報14は、例えば、登録者の名前または登録者を識別するユーザIDである。登録者情報14は、非互換情報13を登録する際に非互換情報13の有効性を検証した承認者を更に示していてもよい。
 価値マスタテーブル15は、非互換情報13の利用結果の種別と評価値との間の対応関係を示す。価値マスタテーブル15が、評価基準情報と呼ばれてもよい。評価値は、非互換情報13の価値向上に役割を果たした関係者に付与されるポイントである。評価値が付与される役割は利用結果の種別に応じて異なってもよく、付与される評価値は利用結果の種別に応じて異なってもよい。また、1回の利用結果から複数の役割に評価値が付与されてもよく、それら複数の役割の間で評価値が異なってもよい。
 利用結果の種別は、当初想定された第1のソフトウェアから第2のソフトウェアへの非互換吸収が成功したことを含んでもよい。この利用結果からは、今回の利用者と非互換情報13の登録者とに評価値が付与されてもよい。また、利用結果の種別は、当初想定された第1のソフトウェアから第2のソフトウェアへの非互換吸収とは異なるソフトウェア間の非互換吸収に非互換情報13を応用することを含んでもよい。この利用結果からは、他のソフトウェアへの応用を発見した利用者に評価値が付与されてもよい。
 また、利用結果の種別は、非互換情報13の中の一部情報の部分利用を含んでもよい。例えば、非互換情報13は、ソースコードの中の不連続な複数の文字列を書き換える書換方法を示す複数の非互換サブ情報を含むことがある。その場合、ユーザは、複数の非互換サブ情報のうちの一部の非互換サブ情報を再利用できることがある。この利用結果からは、今回の利用者と非互換情報13の登録者とに評価値が付与されてもよい。
 また、利用結果の種別は、非互換情報13と他の非互換情報との抵触の検出を含んでもよい。例えば、データベースに登録された他の非互換情報が、第2のソフトウェアの不具合原因となる構文上の特徴を規定していることがある。他の非互換情報は、性能非互換情報であってもよい。この場合、非互換情報13が示す書換方法に従って書き換えられたソースコードが、他の非互換情報が示す構文上の特徴に該当することがある。この利用結果からは、非互換情報13の登録者と他の非互換情報の登録者とに評価値が付与されてもよい。また、利用結果の種別は、非互換情報13の修正の提案を含んでもよい。この利用結果からは、非互換情報13の修正を提案した利用者に評価値が付与されてもよい。
 処理部12は、非互換情報13を含むデータベースに対する利用情報を取得する。利用情報は、非互換情報13の利用者と非互換情報13の利用結果とを示す。利用情報は、利用者の名前または利用者を識別するユーザIDを含んでもよい。処理部12は、利用者が操作する他の情報処理装置から利用情報を受信してもよい。
 処理部12は、取得した利用情報が示す利用結果の種別を判定する。そして、処理部12は、価値マスタテーブル15に基づいて、特定した種別に応じて、取得した利用情報が示す利用者および登録者情報14が示す登録者の一方または両方に付与する評価値を算出する。処理部12は、算出された評価値を記憶部11または他の記憶装置に保存してもよい。また、処理部12は、算出された評価値を表示装置に表示してもよい。また、処理部12は、算出された評価値を他の情報処理装置に送信してもよい。
 例えば、処理部12は、利用情報16,17を取得する。利用情報16は、ユーザBが、第1のソフトウェアから第2のソフトウェアへの非互換吸収に非互換情報13を利用したことを示す。利用情報17は、ユーザCが、第3のソフトウェアから第4のソフトウェアへの非互換吸収に非互換情報13を応用できることを発見したことを示す。処理部12は、利用情報16から、利用者であるユーザBに付与する評価値18aを算出し、登録者であるユーザAに付与する評価値18bを算出する。また、処理部12は、利用情報17から、利用者であるユーザCに付与する評価値19を算出する。
 以上説明したように、第1の実施の形態の情報処理装置10は、非互換情報13の利用者および利用結果を示す利用情報を取得し、価値マスタテーブル15に基づいて、利用結果の種別に応じて利用者と登録者の少なくとも一方に付与する評価値を算出する。これにより、共有データベースへの非互換情報13の登録の価値や非互換情報13の利用の価値が評価され、登録者や利用者にインセンティブが与えられる。よって、非互換情報を含む共有データベースの利用が促進される。その結果、複数のユーザの間で非互換吸収のための知識が共有され、非互換吸収の作業が効率化される。
 [第2の実施の形態]
 次に、第2の実施の形態を説明する。第2の実施の形態の情報処理システムは、データベース製品を使用するプログラムのソースコードを解析し、使用するデータベース製品を変更する際の修正作業を支援する。データベース製品の変更は、異なるソフトウェアベンダから提供されるデータベース製品の間の変更と、同一のソフトウェアベンダから提供される異なるバージョンの間の変更とを含む。データベース製品の間には非互換性が存在することがある。非互換性による不具合を解消するようにソースコードを修正することは、非互換吸収と呼ばれることがある。
 図2は、第2の実施の形態の情報処理システムの例を示す図である。
 第2の実施の形態の情報処理システムは、ネットワーク30に接続された端末装置31,32,33などの複数の端末装置と情報処理装置100とを含む。ネットワーク30は、LAN(Local Area Network)を含んでもよく、インターネットを含んでもよい。端末装置31,32,33は、ユーザが操作するクライアントコンピュータである。情報処理装置100は、端末装置31,32,33からアクセスされるサーバコンピュータである。情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。
 端末装置31,32,33を含む複数の端末装置はそれぞれ、非互換吸収に役割を果たすユーザによって使用される。ユーザは、エンジニア(技術者)と呼ばれてもよい。ただし、ユーザが、複数のエンジニアを含む組織であってもよい。情報処理装置100は、非互換情報を蓄積するデータベースを管理し、データベースの利用状況を監視する。情報処理装置100は、データベースの利用を促進するため、利用状況に応じて、関係するユーザに対してインセンティブとしてポイントを付与する。ポイントは、評価値と呼ばれてもよい。ユーザに付与されたポイントは、ユーザの人事評価に用いられてもよい。
 非互換情報は、複数のユーザによって共有される知識情報である。非互換情報のデータベースは、複数のユーザによって共有される共有データベースである。非互換情報は、変更前のデータベース製品と変更後のデータベース製品の組に対応付けられる。非互換情報は、ソースコードの中から非互換箇所を特定する特定方法と、特定された非互換箇所を非互換性が解消されるように書き換える書き換え方法とを示す。
 ユーザの中には、新規な非互換情報をデータベースに登録するユーザが含まれる。このユーザは登録者と呼ばれることがある。端末装置31は、例えば、登録者によって使用されている。登録者の端末装置は、変更前後のデータベース製品の識別子を指定して、非互換情報を情報処理装置100に送信する。
 また、ユーザの中には、新規な非互換情報を承認するユーザが含まれる。このユーザは承認者と呼ばれることがある。端末装置32は、例えば、承認者によって使用されている。承認者は、非互換情報がデータベースに正式に登録される前に、非互換情報が正しく動作することを確認する。承認者の候補は、登録者の上司や経験豊富なエンジニアなど、予め決められていてもよい。承認者の端末装置は、非互換情報を承認する場合、承認メッセージを情報処理装置100に送信する。情報処理装置100は、承認者からの承認メッセージを待って、新規な非互換情報をデータベースに正式に登録する。
 また、ユーザの中には、既存の非互換情報が他のデータベース製品に適用可能であることを確認したユーザが含まれる。他のデータベース製品への適用は継承と呼ばれることがあり、このユーザは継承申請者と呼ばれることがある。継承は、変更前のデータベース製品と変更後のデータベース製品の少なくとも一方が異なることである。
 継承申請者の端末装置は、非互換情報の識別子と変更前後のデータベース製品の識別子を指定して、継承申請メッセージを情報処理装置100に送信する。継承の場合も新規登録の場合と同様に、承認者による承認が行われる。情報処理装置100は、承認者からの承認メッセージを待って、申請されたデータベース製品と非互換情報とを対応付ける。
 また、ユーザの中には、データベースに登録された非互換情報を、既知のデータベース製品にそのまま適用したユーザが含まれる。この利用形態は単純利用と呼ばれることがあり、このユーザは利用申請者と呼ばれることがある。端末装置33は、例えば、利用申請者によって使用されている。利用申請者の端末装置は、非互換情報の識別子を指定して、利用実績メッセージを情報処理装置100に送信する。
 また、ユーザの中には、既存の非互換情報を修正するユーザが含まれる。このユーザは修正者と呼ばれることがある。非互換情報を利用しようとした場合に、非互換情報にバグが含まれていると、非互換情報が正しく動作しないことがある。非互換情報のバグには、非互換情報に従って変換されたソースコードが変更後のデータベース製品で正しく実行されないことも含まれる。その場合、ユーザは非互換情報を修正することがある。
 修正者の端末装置は、非互換情報の識別子を指定して、修正された非互換情報を情報処理装置100に送信する。修正の場合も新規登録の場合と同様に、承認者による承認が行われる。情報処理装置100は、承認者からの承認メッセージを待って、修正された非互換情報をデータベースに正式に登録する。
 また、ユーザの中には、既存の非互換情報に含まれる一部情報を、非互換情報全体の用途とは異なる用途で利用したユーザが含まれる。後述するように、非互換情報の一部情報は、非互換サブ情報と呼ばれることがある。非互換サブ情報は、他の非互換情報の中に組み込まれることもある。この利用形態は部品利用と呼ばれることがあり、このユーザは部品利用申請者と呼ばれることがある。部品利用申請者の端末装置は、非互換サブ情報の識別子を指定して、利用実績メッセージを情報処理装置100に送信する。
 ここで、情報処理装置100は、利用可能な非互換情報の検索など、非互換情報の利用を支援するユーザインタフェースをユーザに提供してもよい。例えば、ユーザの端末装置は、変更前後のデータベース製品の識別子を指定して、変換前のソースコードを情報処理装置100に送信する。情報処理装置100は、ソースコードを解析し、指定されたデータベース製品に対応付けられた非互換情報と照合する。
 情報処理装置100は、ソースコードの中の非互換箇所、マッチする非互換情報および非互換性解消のための書換方法を、ユーザの端末装置に通知する。情報処理装置100は、ソースコードに対して非互換情報の書換方法を仮に実行して、変換後のソースコードのイメージをユーザの端末装置に送信してもよい。ソースコードを正式に変換する前の作業は、アセスメントと呼ばれることがある。
 アセスメントにおいてソースコードを仮変換した場合、情報処理装置100は、変換後のソースコードが別の非互換箇所を含んでいるか判定してもよい。この判定には、他の非互換情報が利用される。変換後のソースコードが別の非互換箇所を含む場合、ある非互換情報が別の非互換性を発生させている可能性があり、2つの非互換情報が抵触している可能性がある。この場合、情報処理装置100は、抵触した非互換情報もユーザに提示する。関連する他の非互換情報の提示は非互換情報のレコメンドと呼ばれることがあり、関連する2つの非互換情報の利用は非互換情報の結合と呼ばれることがある。
 抵触する非互換情報が提示されたユーザは、元の非互換情報の利用を断念することもあるし、2つの非互換情報の書換方法を併用することもある。なお、第2の実施の形態では主に、元の非互換情報が構文非互換情報であり、抵触する非互換情報が性能非互換情報である場合が想定される。構文非互換情報は、変更後のデータベース製品がサポートしない構文を書き換える書換方法を示す。性能非互換情報は、変更後のデータベース製品の実行性能が著しく低下する構文を示し、性能低下を解消する書換方法を示すことがある。構文非互換情報によって、ソースコードが変更後のデータベースで動作しないという不具合は解消されるものの、実行性能が著しく低下するという別の不具合が生じることがある。
 図3は、情報処理装置のハードウェア例を示すブロック図である。
 情報処理装置100は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。端末装置31,32,33が、情報処理装置100と同様のハードウェアを有してもよい。
 CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータの少なくとも一部をRAM102にロードし、プログラムを実行する。情報処理装置100は、複数のプロセッサを有してもよい。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
 RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類の揮発性メモリを有してもよい。
 HDD103は、OS(Operating System)、ミドルウェア、アプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
 GPU104は、CPU101と連携して画像を生成し、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。なお、情報処理装置100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
 入力インタフェース105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。情報処理装置100に複数の入力デバイスが接続されてもよい。
 媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
 記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
 通信インタフェース107は、ネットワーク30に接続され、ネットワーク30を介して端末装置31,32,33と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
 次に、情報処理システムによる非互換吸収の流れを説明する。
 図4は、データベース製品の非互換吸収の流れの例を示す図である。
 情報処理システムは、変更前のデータベース製品に依存するソースコード131を取得する。ソースコード131は、SQL文またはSQLプロシジャコードを含む。SQL文は、SQLを用いて記述されたデータベースクエリである。SQLの基本仕様は標準化されているものの、データベース製品によっては基本仕様を拡張した独自仕様をもつことがある。SQLプロシジャコードは、SQLと整合するように規定された手続き型言語のプログラムであり、ストアドプロシジャとして動作する。
 情報処理システムは、ソースコード131の構文解析を行い、構文ツリー132を生成する。構文ツリー132は、文、節、句、語などの言語要素の構造を示すツリー型データである。構文解析を通じて生成される構文ツリー132は、字句解析のみを行う場合と異なり、ソースコード131において各語が出現する文脈を表現できる。例えば、SQL文やSQLプロシジャコードでは、同じ変数であっても、変数が記述される位置によって変数の有効範囲が異なることがある。そのため、非互換吸収では構文ツリー132が有用である。ただし、情報処理システムはソースコード131の意味解析を行わなくてよく、構文ツリー132は言語要素の論理的意味を示す意味情報を含まなくてよい。
 情報処理システムは、変更前のデータベース製品と変更後のデータベース製品との組に対応付けられた非互換情報133を、知識情報として保持している。データベース製品は、製品名とバージョン番号の組で識別され得る。非互換情報133は、特定命令の列と書換命令の列とを含む。特定命令は、変更前のデータベース製品では正常に動作するものの変更後のデータベース製品では不具合が発生するおそれがある非互換箇所を、構文ツリー132の中から特定するための命令である。書換命令は、特定命令によって特定された非互換箇所について、変更後のデータベース製品において不具合が発生しないように構文ツリー132を書き換えるための命令である。
 情報処理システムは、構文ツリー132に対して、非互換情報133に含まれる特定命令を実行する。特定命令によって構文ツリー132の中から非互換箇所が検出された場合、情報処理システムは、構文ツリー132に対して、非互換情報133に含まれる書換命令を実行して非互換吸収を行う。これにより、非互換性が解消されるように構文ツリー132が書き換えられる。情報処理システムは、書き換えられた構文ツリー132からソースコード134を生成する。ソースコード134は、ソースコード131に対して非互換吸収を行った結果であり、変更後のデータベース製品用のソースコードである。
 図5は、情報処理装置の機能例を示すブロック図である。
 情報処理装置100は、非互換情報記憶部121および評価情報記憶部122を有する。これらの記憶部は、例えば、RAM102またはHDD103を用いて実装される。また、情報処理装置100は、非互換情報登録部123、非互換検出部124、利用申請受信部125およびポイント管理部126を有する。これらの処理部は、例えば、CPU101およびプログラムを用いて実装される。
 非互換情報記憶部121は、非互換情報を記憶する。また、非互換情報記憶部121は、変更前のデータベース製品と変更後のデータベース製品の組から、利用可能な非互換情報を検索するための管理情報を記憶する。非互換情報には、構文非互換情報と性能非互換情報とが含まれる。構文非互換性は、変更前のデータベース製品では許容されていたSQLまたはSQLプロシジャ言語の構文が、変更後のデータベース製品では許容されないという構文エラーである。構文非互換情報は、構文ツリーから非互換箇所を特定する手順を示す特定命令と、特定された非互換箇所を書き換える手順を示す書換命令とを含む。性能非互換性は、同一の機能について、変更後のデータベース製品の性能が変更前のデータベース製品と比べて著しく低いことである。
 評価情報記憶部122は、非互換情報に関与したユーザのポイントを算出するための評価情報を記憶する。評価情報には、ポイントの算出方法を示すマスタ情報が含まれる。ポイントの算出方法は、情報処理システムの管理者によって事前に決定される。
 非互換情報登録部123は、変更前後のデータベース製品の識別子と新規な非互換情報とを、登録者の端末装置から受信する。すると、非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信し、承認者の端末装置から承認メッセージを受信する。非互換情報登録部123は、指定された変更前後のデータベース製品と対応付けて、新規な非互換情報を非互換情報記憶部121に保存する。このとき、非互換情報登録部123は、新規登録をポイント管理部126に報告する。
 また、非互換情報登録部123は、非互換情報の識別子と変更前後のデータベース製品の識別子とを、継承申請者の端末装置から受信する。すると、非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信し、承認者の端末装置から承認メッセージを受信する。非互換情報登録部123は、非互換情報記憶部121の管理情報を更新して、指定された非互換情報を指定された変更前後のデータベース製品と対応付ける。このとき、非互換情報登録部123は、継承をポイント管理部126に報告する。
 ここで、既存の非互換情報の継承は、その非互換情報の登録者が行うことで効率化されることがある。また、既存の非互換情報の継承は、新規な非互換情報の作成と比べて作業負担が小さいため、その非互換情報の登録者が優先的に行うことでユーザ間の評価の公平性が図られる。そこで、非互換情報登録部123は、新しいデータベース製品が出現してから一定期間を、新しいデータベース製品に関して元の登録者が優先的に継承申請者になることができる優先期間に設定する。優先期間を経過しても元の登録者が継承を申請しない場合に、他のユーザが継承申請者になることができる。また、優先期間内では、新規登録時の承認者が優先的に継承の承認者になることができる。
 また、非互換情報登録部123は、非互換情報の識別子と修正された非互換情報とを、修正者の端末装置から受信する。すると、非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信し、承認者の端末装置から承認メッセージを受信する。非互換情報登録部123は、非互換情報記憶部121に記憶された非互換情報を更新する。このとき、非互換情報登録部123は、修正をポイント管理部126に報告する。
 非互換検出部124は、変更前後のデータベース製品の識別子とソースコードとを、端末装置から受信する。すると、非互換検出部124は、指定された変更前後のデータベース製品に対応する非互換情報を、非互換情報記憶部121から検索する。また、非互換検出部124は、ソースコードの構文解析を行って構文ツリーを生成する。非互換検出部124は、構文非互換情報に含まれる特定命令を構文ツリーに対して実行して、非互換箇所を検出する。非互換検出部124は、検出された非互換箇所と構文非互換情報が示す書換方法とを含むアセスメント情報を、端末装置に返信する。
 このとき、非互換検出部124は、構文非互換情報に含まれる書換命令を構文ツリーに対して仮に実行し、変換後の構文ツリーにマッチする性能非互換情報を検索する。マッチする性能非互換情報が存在する場合、非互換検出部124は、アセスメント情報に性能非互換情報を更に含めて、性能非互換情報の利用をレコメンドする。その場合、非互換検出部124は、結合のレコメンドをポイント管理部126に報告する。
 利用申請受信部125は、非互換情報の識別子を、利用申請者の端末装置から受信する。すると、利用申請受信部125は、利用申請をポイント管理部126に報告する。また、利用申請受信部125は、非互換サブ情報の識別子を、利用申請者の端末装置から受信する。すると、利用申請受信部125は、部品利用をポイント管理部126に報告する。
 ポイント管理部126は、非互換情報登録部123、非互換検出部124および利用申請受信部125から報告を受け付ける。ポイント管理部126は、評価情報記憶部122に記憶されたマスタ情報に従って、報告毎に1以上のユーザに対して付与されるポイントを算出し、算出されたポイントを評価情報記憶部122に記録する。
 新規登録の場合、ポイント管理部126は、登録者と承認者にポイントを付与する。継承の場合、ポイント管理部126は、継承申請者と今回の承認者にポイントを付与する。利用申請の場合、ポイント管理部126は、利用申請者と、利用された非互換情報の登録者および承認者にポイントを付与する。修正の場合、ポイント管理部126は、修正者と今回の承認者にポイントを付与する。部品利用の場合、ポイント管理部126は、利用申請者と、利用された非互換サブ情報を含む非互換情報の登録者および承認者にポイントを付与する。結合のレコメンドの場合、ポイント管理部126は、構文非互換情報の登録者および承認者と、性能非互換情報の登録者および承認者とにポイントを付与する。
 次に、ソースコードおよび非互換情報のデータ構造について説明する。
 図6は、エッジテーブルと構文非互換マスタテーブルの例を示す図である。
 非互換情報記憶部121は、エッジテーブル141を記憶する。エッジテーブル141は、変更前のデータベース製品と変更後のデータベース製品の組を表すエッジを管理する。変更前のデータベース製品は非互換吸収元と呼ばれることがあり、変更後のデータベース製品は非互換吸収先と呼ばれることがある。データベース製品は、製品名とバージョン番号とによって識別される。エッジテーブル141の1つのレコードは、1つのエッジに対応する。各レコードは、エッジキー、吸収元製品および吸収先製品を含む。
 エッジキーは、エッジを識別するビット列である。異なるエッジには異なるエッジキーが割り当てられる。エッジキーに含まれる複数のビットのうち、何れか1つのビットの値が1であり、他のビットの値が0である。よって、値が1であるビットの位置によって、エッジが識別される。エッジキーがビットマップと呼ばれてもよい。吸収元製品は変更前のデータベース製品であり、吸収先製品は変更後のデータベース製品である。
 例えば、あるエッジキーは、製品1のバージョン1から製品1のバージョン2への非互換吸収を表す。また、あるエッジキーは、製品1のバージョン1から製品2のバージョン1への非互換吸収を表す。また、あるエッジキーは、製品1のバージョン2から製品2のバージョン2への非互換吸収を表す。また、あるエッジキーは、製品1のバージョン2から製品2のバージョン1への非互換吸収を表す。
 また、非互換情報記憶部121は、構文非互換マスタテーブル142を記憶する。構文非互換マスタテーブル142は、構文非互換情報を管理する。構文非互換マスタテーブル142の1つのレコードは、1つの構文非互換情報に対応する。各レコードは、非互換番号、構文非互換名および参照エッジキーを含む。
 非互換番号は、構文非互換情報を識別する識別番号である。構文非互換名は、構文非互換情報が検出および書換の対象とする非互換箇所の特徴を端的に表現した文字列である。構文非互換名は、構文非互換情報の登録者によって決定されてもよい。参照エッジキーは、構文非互換情報が有効なエッジを示すビット列である。参照エッジキーは、構文非互換情報が有効な1以上のエッジに割り当てられたエッジキーの論理和である。1つのエッジに対して有効な構文非互換情報は2以上存在することがあり、1つの構文非互換情報は2以上のエッジに対して有効であることがある。よって、エッジと構文非互換情報とは、参照エッジキーを介して多対多に対応付けられる。
 1つのエッジキーは値が1のビットを1つのみ含み、異なるエッジキーの間では値が1のビットの位置が異なる。よって、構文非互換情報がn個のエッジに関連する場合、参照エッジキーは値が1のビットをn個含む。あるデータベース製品の組、すなわち、あるエッジに対して有効な構文非互換情報を検索する場合、非互換検出部124は、そのエッジのエッジキーと各構文非互換情報の参照エッジキーとの論理積を算出する。論理積が0である構文非互換情報は、そのエッジに対して有効でない。一方、論理積が0でない構文非互換情報は、そのエッジに対して有効である。これにより、非互換検出部124は、関連する構文非互換情報を高速に検索することができる。
 図7は、変換前のソースコードと構文ツリーの例を示す図である。
 ここで、SQL文の構文について説明する。文は末尾に終端記号を含む。文は終端記号の前に節を含むことがある。節は先頭に命令語を含み、命令語と終端記号の間に句、式または語を含む。句は先頭にオブジェクト種別、前置詞、副詞または括弧を含む。句は続いて句、式または語を含み、句、式または語が2回以上連続することがある。句は続いて節を含むことがある。式は関数名または語を含み、続いて演算子を含む。
 終端記号は、文の終端を表す。終端記号は、セミコロン(「;」)であることがある。語は、文の中で意味をもつ最小の言語単位である。語には、識別子、予約語、関数名および演算子が含まれる。予約語には、命令語、オブジェクト種別およびその他の予約語が含まれる。命令語は、CREATEやUPDATEなどの命令を示す。オブジェクト種別は、TABLEなどのオブジェクトの種類を示す。その他の予約語は、BEGINなど、命令語およびオブジェクト種別以外の予約語である。式には、演算子によって結合された語と語の組や、演算子によって結合された語と式の組が含まれる。また、式には、関数名と引数の組が含まれる。引数は、開括弧(「(」)と閉括弧(「)」)に挟まれる。
 句には、一般句、述語句、接尾句、定義句および未分類句が含まれる。一般句は、修飾語と目的語の組である。例えば、TABLE T1のように、オブジェクト種別と識別子の組は一般句である。述語句には、FROM T1やAS T2のように、前置詞と目的語の組が含まれる。また、述語句には、WHERE C1のように、副詞と目的語の組が含まれる。接尾句は、開括弧と閉括弧とで挟まれており、データ型の指定やキーカラムの指定に使用され得る。定義句は、変数の型を指定する言語要素であり、予約語以外の語とデータ型を示す予約語とを含む。未分類句は、一般句、述語句、接尾句および定義句の何れにも該当しない句である。
 構文ツリー152は、ソースコード151の構文を示す。ソースコード151は、SELECT * FROM S1.T1 WHERE C1='1';というSQL文を含む。構文ツリー152は、ツリー構造の無向グラフである。構文ツリー152は、それぞれ言語要素を示す複数のノードと、それら複数のノードをツリー構造に結合する複数のエッジとを含む。上位ノードと下位ノードとの間のエッジは、下位ノードに対応する言語要素が、上位ノードに対応する言語要素に包含されることを表す。同一レベル内では、複数の言語要素の出現順序が保持される。左ノードに対応する言語要素は、右ノードに対応する言語要素よりも先に出現する。
 構文ツリー152は、SELECT,*,FROM,S1.T1,WHERE,C1,=,'1'というキーワードに対応する8個の語ノードを含む。また、構文ツリー152は、1個の文ノード、1個の節ノード、2個の述語句ノード、1個の式ノードおよび1個の終端記号ノードを含む。なお、各ノードは言語要素の種別や値などの属性をもつ。図示する構文ツリーの例では、一部の属性のみが表示されている。また、終端記号が「終」、一般句が「句」、述語句が「述」、接尾句が「接」、定義句が「定」、未分類句が「未」と記載されることがある。
 図8は、属性情報の例を示す図である。
 属性情報153は、構文ツリーの1つのノードに対応付けられる。属性情報153は、位置情報、分類、分類属性、種別、値、値属性および行番号を含む。ただし、ノードの種別によって、一部の項目の項目値が定義されないことがある。
 位置情報は、構文ツリー内でのノードの位置を示す。後述するように、ノードの位置は、縦位置と横位置を含む二次元座標で表現される。分類は、文、節、句、式、語などの最上位の分類を示す。分類属性は、一般ノードと補完ノードの区別を示す。一般ノードは、ソースコードの記述から直接的に抽出された言語要素を示す。補完ノードは、ソースコードに明示的に記述されていないものの解釈上補完された言語要素を示す。種別は、一般句や命令語など、分類を更に細分化したグループである。値は、語の文字列である。値属性は、値の種別である。値属性には、一般文字列と補完文字列が含まれる。行番号は、ノードに対応する言語要素がソースコードの中で出現する行の番号である。
 構文ツリーは、二次元表形式の構文テーブルとして表現され得る。これにより、ノードの位置の特定が容易となり、ノードの識別やノード探索の手順の記述が容易となる。構文ツリーに含まれるノードは、以下のような規則で構文テーブルに配置される。
 図9は、構文テーブルの例を示す図である。
 構文テーブル154は、図7の構文ツリー152と同等の構文テーブルである。構文テーブル154の左上のセルの位置座標が(1,1)である。下に進むほど縦位置を示す行番号が大きくなり、右に進むほど横位置を示す列番号が大きくなる。各セルの位置は、(行番号,列番号)という二次元座標によって指定される。
 文を示すノードは、構文テーブル154の左上のセルに配置される。あるノードの直下にある子ノードのうち最も左側の子ノードは、当該ノードに対応するセルの1つ下のセルに配置される。1つ下のセルは、行番号が1つ大きく列番号が同じセルである。あるノードと同じ親ノードをもつ他のノードであって当該ノードより右側にあるものは、当該ノードに対応するセルの右側のセルに配置される。右側のセルは、行番号が同じであり列番号が大きいセルである。各ノードが配置されるセルは、深さ優先順に決定される。
 1つの列には、構文ツリーに含まれる1つの語ノードが配置される。よって、親子関係にある2つのノードの行番号は連続する一方、同一の親ノードをもつ2つのノードの列番号は不連続であることがある。これにより、ソースコード151に含まれる9個の語に対応する語ノードが、構文テーブル154の第1列から第9列に順序を保持して配置される。構文テーブル154と構文ツリー152とは、相互に変換可能である。構文非互換情報は、構文ツリーの上で条件を満たすノードを探索する1以上の特定命令と、構文ツリーに含まれる一部のノードを書き換える1以上の書換命令とを含む。
 図10は、命令テーブルの例を示す図である。
 命令テーブル155は、構文非互換情報で使用され得る命令の定義を示す。命令テーブル155の1つのレコードが1つの命令を示す。命令テーブル155の1つのレコードは、命令、縦位置、横位置、探索属性およびキーワードを含む。
 縦位置、横位置、探索属性およびキーワードは、命令の引数である。縦位置は、着目する現ノードと対象ノードとの間の上下方向の位置関係に対する条件である。+は上方向を示し、-は下方向を示し、nは現ノードからの距離を示し、*は距離制限なしを示す。横位置は、着目する現ノードと対象ノードとの間の左右方向の位置関係に対する条件である。=は現ノードと同じ横位置を示し、+は右方向を示し、-は左方向を示し、nは現ノードからの距離を示し、*は距離制限なしを示す。
 横位置は[命令番号]というフォーマットで指定されることがある。これは、その命令番号をもつ命令で選択されたノードの横位置を始点として探索を行うことを示す。また、横位置は[命令番号1:命令番号2]というフォーマットで指定されることがある。これは、命令番号1をもつ命令で選択されたノードの横位置と、命令番号2をもつ命令で選択されたノードの横位置との間を探索することを示す。探索属性は、対象ノードがもつ分類、分類属性、種別および値属性に対する条件である。
 キーワードは、ノードを特定するための探索属性以外の情報である。キーワードは、語の値としての識別子であることがある。また、キーワードとして、実行済みの命令の命令番号が指定されることがある。これは、その命令によって特定されたノードを再選択することを示す。また、命令の結果が真である場合、すなわち、条件を満たすノードが存在する場合に実行されるアクションが、命令に付随して規定され得る。
 アクションなしは、次の命令に進むことを示す。RETは、次の命令を実行し、次の命令の結果が偽である場合に当該命令に戻ることを示す。次の命令において条件を満たすノードが検出されなかった場合、次の命令の結果が偽と判定される。また、着目する現ノードの属性情報を利用した他の命令そのものが、アクションとして規定されることがある。
 命令には、FETCH,SEARCH,POP,GET PRM,SET PRM,!,DELETE,CREATE,MODIFYが含まれる。FETCH,SEARCH,POP,GET PRM,SET PRM,!は、特定命令として使用され得る。DELETE,CREATE,MODIFYは、書換命令として使用され得る。
 FETCHは、条件を満たすノードを探索し、着目する現ノード(カレントノード)を、検出されたノードに変更する命令である。SEARCHは、条件を満たすノードを探索するものの、現ノードを変更しない命令である。POPは、現ノードを、実行済みのFETCHによって選択されたノードに戻す命令である。GET PRMは、条件を満たすノードの属性情報をスタックに保存する命令である。SET PRMは、スタックに保存された属性情報を出力する命令である。SET PRMは、FETCHまたはSEARCHのキーワードの中で使用されることがある。!は、真偽を反転する否定命令である。SEARCHの前に!を付加することで、条件を満たすノードが検出されない場合に命令の結果が真と判定される。
 DELETEは、現ノードを基準にして指定範囲のノードを構文ツリーから削除する命令である。CREATEは、現ノードの前または後に部分ツリーを挿入する命令である。挿入される部分ツリーは、命令列とは別にCREATE情報として保存されている。CREATEは、CREATE情報を識別するCREATE情報番号を引数としてもつ。MODIFYは、現ノードの属性情報を書き換える命令である。アクションでは正規表現プログラムが指定され得る。
 通常、構文非互換情報は、非互換箇所に関する最も特徴的なキーワードを最初に検索する。最初のキーワードはアンカーと呼ばれることがあり、構文ツリーからのアンカーの検索はアンカーサーチと呼ばれることがある。構文非互換情報は、構文ツリー内のアンカーの周辺から、条件を満たす属性をもつ周辺ノードを検索する。これにより、非互換箇所を形成するノード集合が特定される。非互換箇所の特徴は一意条件と呼ばれることがある。非互換箇所が検出されると、構文非互換情報は、検出済みの何れかのノードを基点として書き換えるノードを探索する。基点はアンカーであることがある。
 図11は、構文非互換情報の例を示す図である。
 構文非互換情報156は、非互換情報記憶部121に記憶される。構文非互換情報156は、図7に示した構文ツリー152に適用される構文非互換情報の例である。ここでは、ソースコード151に含まれるC1='1'という構文が変更後のデータベース製品でサポートされておらず、C1='1'::NUMERICに書き換えることで構文非互換性が解消されるものとする。構文非互換情報156の1つのレコードは、1つの特定命令または1つの書換命令に対応する。構文非互換情報156の各レコードは、命令番号、命令属性、命令、縦位置、横位置、探索属性、キーワードおよびアクションを含む。
 命令番号は、命令の実行順序を示す昇順の自然数である。命令属性は、特定命令と書換命令の区別を示す。縦位置、横位置、探索属性およびキーワードは、命令の引数である。アクションは、命令の結果が真である場合に実行される処理を示す。構文非互換情報156は、第1命令から第8命令までの8個の命令を含む。第1命令から第7命令までは特定命令であり、第8命令は書換命令である。
 第1命令は、種別が命令語であり値がSELECTであるノードを検索し、現ノードとして選択する。第2命令は、縦位置が現ノードの1つ上であり、分類が節であるノードを検索し、現ノードとして選択する。第3命令は、縦位置が現ノードの1つ下であり、種別が述語句であるノードを検索し、現ノードとして選択する。第3命令に該当するノードが複数ある場合、1つのノードが選択されて以下の第4命令が実行される。第4命令の結果が偽である場合、第3命令に戻って他のノードが選択される。第4命令は、縦位置が現ノードの1つ下であり、分類が語であり値がWHEREであるノードを検索する。
 第5命令は、縦位置が現ノードの1つ下であり、種別が式であるノードを検索し、現ノードとして選択する。第6命令は、縦位置が現ノードの1つ下であり、分類が語であり値が等号であるノードを検索する。第7命令は、縦位置が現ノードの1つ下であり、横位置が第6命令で検出されたノードより右であり、種別が引用識別子であるノードを検索し、現ノードとして選択する。第8命令は、現ノードの右に、アクション欄のCREATE情報番号で指定された::NUMERICを追加する。
 なお、後述するように、構文非互換情報は2以上の非互換サブ情報を含むことがある。そのため、同一の非互換サブ情報に属する命令の範囲に対して、非互換サブ情報を識別する非互換サブ番号が付与される。構文非互換情報が2以上の非互換サブ情報に分割されない場合、構文非互換情報の全体が1つの非互換サブ情報と解釈される。例えば、構文非互換情報156に含まれる第1命令から第8命令は同一の非互換サブ情報に属しており、第1命令から第8命令の範囲に対して1つの非互換サブ番号が付与される。
 図12は、変換後のソースコードと構文ツリーの例を示す図である。
 非互換検出部124は、構文ツリー152に対して構文非互換情報156を実行することで、構文ツリー158を生成する。構文ツリー158は、SELECT,*,FROM,S1.T1,WHERE,C1,=,'1',::,NUMERICというキーワードに対応する10個の語ノードを含む。また、構文ツリー158は、1個の文ノード、1個の節ノード、2個の述語句ノード、2個の式ノードおよび1個の終端記号ノードを含む。構文ツリー158は、ソースコード157に相当する。ソースコード157は、SELECT * FROM S1.T1 WHERE C1='1'::NUMERIC;というSQL文を含む。よって、ソースコード151がソースコード157に変換される。
 図13は、変換前のソースコードと構文ツリーの他の例を示す図である。
 構文ツリー162は、ソースコード161の構文を示す。ソースコード161は、SELECT CAST(C1 AS NUMBER) FROM T1 AS TBL1 WHERE EXISTS(SELECT 1 FROM T2 AS TBL2 WHERE TBL1.C2=CAST(TBL2.C2 AS NUMBER));というSQL文を含む。このSQL文は、WHERE EXISTS以下に副問い合わせを含んでおり、複雑な構文をもつ。
 構文ツリー162は、SELECT,CAST,(,C1,AS,NUMBER,),FROM,T1,AS,TBL1,WHERE,EXISTS,(,SELECT,1,FROM,T2,AS,TBL2,WHERE,TBL1.C2,=,CAST,(,TBL2.C2,AS,NUMBER,),)というキーワードに対応する30個の語ノードを含む。また、構文ツリー162は、1個の文ノード、2個の節ノード、6個の述語句ノード、1個の接尾句ノード、1個の未分類句ノード、4個の式ノードおよび1個の終端記号ノードを含む。
 図14は、構文非互換情報の他の例を示す図である。
 構文非互換情報163は、非互換情報記憶部121に記憶される。構文非互換情報163は、図13の構文ツリー162に適用される構文非互換情報の例である。ここでは、データ型NUMBERが変更後のデータベース製品によってサポートされておらず、データ型をNUMBERからNUMERICに変換することで構文非互換性が解消されるものとする。
 構文非互換情報163は、第1命令から第19命令までの19個の命令を含む。第1命令から第4命令までは、1つ目のデータ型を探索する特定命令であり、第5命令から第6命令までは、1つ目のデータ型を書き換える書換命令である。第7命令から第17命令までは、2つ目のデータ型を探索する特定命令であり、第18命令から第19命令までは、2つ目のデータ型を書き換える書換命令である。第1命令から第6命令までが1つ目の非互換サブ情報に属し、第7命令から第19命令までが2つ目の非互換サブ情報に属する。
 第1命令は、構文ツリー162の中から、種別が命令語であり値がSELECTであるノードを検索し、現ノードとして選択する。第2命令は、縦位置が現ノードより上であり、分類が節であるノードを検索し、現ノードとして選択する。第3命令は、縦位置が現ノードの1つ下であり、横位置が第1命令のSELECTより右であり、分類が式であるノードを検索し、現ノードとして選択する。第4命令は、縦位置が現ノードの1つ下であり、横位置が現ノードより右であり、種別がデータ型であり値がNUMBERであるノードを検索し、現ノードとして選択する。第4命令の結果が偽である場合は第3命令に戻る。
 第5命令は、現ノードを削除する。第6命令は、種別がデータ型であり値がNUMERICである新たなノードを生成し、削除されたノードの位置に挿入する。
 図15は、構文非互換情報の他の例を示す図(続き)である。
 第7命令は、第1命令で選択されたSELECTのノードに現ノードを戻す。第8命令は、縦位置が現ノードの1つ下であり、種別が述語句であるノードを検索し、現ノードとして選択する。第9命令は、縦位置が現ノードの1つ下であり、横位置が現ノードより右であり、分類が式であるノードを検索し、現ノードとして選択する。第9命令の結果が偽である場合は第8命令に戻る。第10命令は、縦位置が現ノードの1つ下であり、横位置が現ノードより右であり、種別が接続句であるノードを検索し、現ノードとして選択する。第10命令の結果が偽である場合は第9命令に戻る。
 第11命令は、縦位置が現ノードの1つ下であり、横位置が現ノードより右であり、分類が節であるノードを検索し、現ノードとして選択する。第11命令の結果が偽である場合は第10命令に戻る。第12命令は、縦位置が現ノードの1つ下であり、種別が命令語であり値がSELECTであるノードを検索する。第12命令の結果が偽である場合は第11命令に戻る。第13命令は、第12命令のSELECTの上にあり、分類が節であるノードを検索し、現ノードとして選択する。第13命令の結果が偽である場合は第12命令に戻る。
 第14命令は、縦位置が現ノードの1つ下であり、横位置が第11命令の節より右であり、種別が述語句であるノードを検索し、現ノードとして選択する。第15命令は、縦位置が現ノードの1つ下であり、横位置が第12命令のSELECTより右であり、分類が式であるノードを検索し、現ノードとして選択する。第15命令の結果が偽である場合は第14命令に戻る。第16命令は、縦位置が現ノードの1つ下であり、横位置が第13命令の節より右であり、分類が式であるノードを検索し、現ノードとして選択する。第16命令の結果が偽である場合は第15命令に戻る。
 第17命令は、縦位置が現ノードの1つ下であり、横位置が第14命令の述語句より右であり、種別がデータ型であり値がNUMBERであるノードを検索し、現ノードとして選択する。第17命令の結果が偽である場合は第16命令に戻る。第18命令は、現ノードを削除する。第19命令は、種別がデータ型であり値がNUMERICである新たなノードを生成し、削除されたノードの位置に挿入する。
 このように、複雑な構文非互換情報は2以上の非互換サブ情報に分割されることがある。再利用性が高い非互換サブ情報は、元の構文非互換情報とは異なる用途に流用されることがあり、他の構文非互換情報に流用されることもある。
 図16は、性能非互換情報の例を示す図である。
 性能非互換情報164は、非互換情報記憶部121に記憶される。ここでは、あるSQL文を実行するための負荷が、変更前のデータベース製品では低いのに対し、変更後のデータベース製品では高い場合を考える。この性能非互換性は、SELECT * FROM S.T WHERE C='値'::NUMERIC;という構文をもつSQL文で発生する。そして、::NUMERICを::NUMBERに変更にすることで、この性能非互換性を解消することが可能であるものとする。
 性能非互換情報164は、性能非互換名、性能非互換番号、エッジキー、SQL構文、総レコード数、処理レコード数、現象インデックス、変更前レスポンス、変更後レスポンス、変更前スループットおよび変更後スループットを含む。また、性能非互換情報164は、変更前CPU使用率、変更後CPU使用率、変更前CPU待ち割合、変更後CPU待ち割合、変更前I/O量、変更後I/O量、ハードウェアおよび解消方法を含む。
 性能非互換名は、性能非互換性の発生原因を端的に表す名称である。性能非互換番号は、性能非互換情報164を識別する識別番号である。エッジキーは、性能非互換情報164が適用される吸収元製品と吸収先製品の組を識別する。SQL構文は、性能非互換性が発生するSQL文の構文である。総レコード数は、性能非互換性が発見されたときにデータベース製品に記憶されていたレコードの数である。処理レコード数は、性能非互換性が発見されたときにSQL文の処理対象となったレコードの数である。
 現象インデックスは、データベース製品において発生した性能低下の種類を示すフラグの集合である。例えば、最下位ビットはCPU使用率の増加を表し、下から2番目のビットはCPU待ち時間の増加を表し、下から3番目のビットはI/O量の増加を表す。1つの性能非互換性が、2種類以上の性能低下の現象を引き起こすことがある。
 変更前レスポンスは、変更前のデータベース製品で測定されたSQL文に対する応答時間である。変更後レスポンスは、変更後のデータベース製品で測定されたSQL文に対する応答時間である。変更前スループットは、変更前のデータベース製品で測定された単位時間当たりの処理レコード数である。変更後スループットは、変更後のデータベース製品で測定された単位時間当たりの処理レコード数である。変更前CPU使用率は、変更前のデータベース製品で測定されたCPU使用率である。変更後CPU使用率は、変更後のデータベース製品で測定されたCPU使用率である。
 変更前CPU待ち割合は、変更前のデータベース製品で測定されたCPU待ち時間の割合である。CPU待ち時間の割合は、SQL文の処理に要した時間のうち、CPUが記憶装置からの応答を待っている待ち時間の割合である。変更後CPU待ち割合は、変更後のデータベース製品で測定されたCPU待ち時間の割合である。変更前I/O量は、変更前のデータベース製品で測定された記憶装置との間のデータ送信量である。変更後I/O量は、変更後のデータベース製品で測定された記憶装置との間のデータ送信量である。
 ハードウェアは、性能非互換性が発見されたときに使用されたハードウェアの仕様である。ハードウェアの仕様には、例えば、CPUのコア数やクロック周波数、レコードを記憶する記憶装置の種類などが含まれる。解消方法は、性能非互換性を解消する対応策の説明である。解消方法は、SQL文の書換方法であることがある。
 図17は、SQL構文情報の例を示す図である。
 SQL構文情報165は、非互換情報記憶部121に記憶される。SQL構文情報165は、性能非互換性が発生するSQL文の特徴を表す。SQL構文情報165は、性能非互換情報164と関連付けられる。SQL構文情報165は、SQL構文番号、性能非互換番号、BOW(Bag of Words)ベクトルおよびキーワードリストを含む。
 SQL構文番号は、SQL構文情報165を識別する識別番号である。性能非互換番号は、SQL構文情報165が示すSQL構文に起因して発生する性能非互換性を示す性能非互換情報の識別番号である。BOWベクトルは、性能非互換性が発生するSQL文に含まれるキーワードとその出現個数を列挙したベクトルである。キーワードリストは、性能非互換性が発生するSQL文に含まれるキーワードを、SQL文での出現順序の通りに並べたリストである。なお、性能非互換性の発生に影響しないキーワードは、BOWベクトルおよびキーワードリストから除外されている。
 例えば、WHERE … '…'::NUMERICというSQL構文が、性能非互換性の発生原因となっているものとする。この場合、WHEREが1つ、引用識別子が1つ、::が1つ、NUMERICが1つであることを示すBOWベクトルが生成される。また、WHERE、引用識別子、::、NUMERICという出現順序を示すキーワードリストが生成される。
 非互換検出部124は、ソースコード151が非互換吸収の対象であるとき、ソースコード151の構文解析を行って構文ツリー152を生成する。非互換検出部124は、構文ツリー152に対して構文非互換情報156の特定命令および書換命令を仮に実行して、構文ツリー152を構文ツリー158に変換する。更に、非互換検出部124は、構文ツリー158とSQL構文情報165のキーワードリストとを照合して、構文ツリー158がSQL構文情報165のSQL構文を含むか判定する。
 例えば、非互換検出部124は、構文ツリー158の葉ノードである語ノードを、左から右に向かって走査する。非互換検出部124は、構文ツリー158の語ノードを走査する間に、キーワードリストに含まれるキーワードがその順序で出現したか判定する。キーワードリストに含まれる全てのキーワードがその順序で出現した場合、非互換検出部124は、構文ツリー158がSQL構文情報165のSQL構文を含むと判定する。その場合、非互換検出部124は、構文非互換情報156に従ってソースコード151を書き換えると、性能非互換情報164が示す性能非互換性のリスクがあると判定する。
 一方、キーワードリストに含まれる全てのキーワードがその順序で出現しているわけではない場合、非互換検出部124は、構文ツリー158がSQL構文情報165のSQL構文を含まないと判定する。その場合、非互換検出部124は、構文非互換情報156に従ってソースコード151を書き換えても、性能非互換情報164が示す性能非互換性は発生しないと判定する。ここでは、構文ツリー158に含まれるWHERE,'1',::,NUMERICというキーワードをもつ語ノードが、SQL構文情報165のキーワードリストに該当する。よって、非互換検出部124は、性能非互換性のリスクがあると判定する。
 この場合、非互換検出部124は、ソースコード151に含まれる非互換箇所および構文非互換情報156の書換方法と併せて、性能非互換情報164をユーザに提示する。これは、構文非互換情報156と性能非互換情報164の結合のレコメンドに相当する。
 次に、評価情報のデータ構造について説明する。
 図18は、価値マスタテーブルの例を示す図である。
 評価情報記憶部122は、価値マスタテーブル143を記憶する。価値マスタテーブル143は、第1の実施の形態の価値マスタテーブル15に対応する。価値マスタテーブル143は、ユーザに付与されるポイントの算出方法を規定する。価値マスタテーブル143は、基準ポイントを含む。例えば、基準ポイントは、100ポイントである。
 価値マスタテーブル143は、新規登録ポイントおよび新規承認ポイントを含む。新規承認ポイントは、非互換情報の新規登録の際に登録者に付与される。新規承認ポイントは、登録される非互換情報の承認者に付与される。新規登録ポイントおよび新規承認ポイントは、基準ポイントに対する割合として規定される。例えば、新規登録ポイントは基準ポイントの100%、新規承認ポイントは基準ポイントの90%である。
 また、価値マスタテーブル143は、継承申請ポイントおよび継承承認ポイントを含む。継承申請ポイントは、既存の非互換情報の継承時に継承申請者に付与される。継承承認ポイントは、非互換情報の継承の承認者に付与される。継承申請ポイントおよび継承承認ポイントは、基準ポイントに対する割合として規定される。例えば、継承申請ポイントは基準ポイントの2%、継承承認ポイントは基準ポイントの1%である。
 また、価値マスタテーブル143は、利用申請ポイント、利用時登録者ポイントおよび利用時承認者ポイントを含む。利用申請ポイントは、非互換情報の単純利用または部品利用の際に利用申請者に付与される。利用時登録者ポイントは、利用された非互換情報の登録者に付与される。利用時承認者ポイントは、利用された非互換情報の承認者に付与される。利用申請ポイント、利用時登録者ポイントおよび利用時承認者ポイントは、基準ポイントに対する割合として規定される。例えば、利用申請ポイントは基準ポイントの10%、利用時登録者ポイントおよび利用時承認者ポイントは基準ポイントの1%である。
 ただし、利用申請ポイントには、後述する利用側係数が乗算される。利用時登録者ポイントおよび利用時承認者ポイントには、後述する作成側係数が乗算される。利用側係数および作成側係数は、非互換情報の累積利用回数に依存して変化する。利用側係数は、累積利用回数が多いほど小さい。よって、利用実績の少ない非互換情報の方が利用申請ポイントが大きくなる。作成側係数は、累積利用回数が多いほど大きい。よって、利用実績の多い非互換情報の方が利用時登録者ポイントおよび利用時承認者ポイントが大きくなる。このように、非互換情報の利用時のポイントは、利用側と作成側とで非対称になる。
 また、価値マスタテーブル143は、修正ポイントおよび修正承認ポイントを含む。修正ポイントは、非互換情報の修正の際に修正者に付与される。修正承認ポイントは、修正された非互換情報の承認者に付与される。修正ポイントおよび修正承認ポイントは、基準ポイントに対する割合として規定される。例えば、修正ポイントは基準ポイントの100%、修正承認ポイントは基準ポイントの90%である。
 また、価値マスタテーブル143は、結合時登録者ポイントおよび結合時承認者ポイントを含む。結合時登録者ポイントは、2つの非互換情報の結合のレコメンドが行われた際に、各非互換情報の登録者に付与される。結合時承認者ポイントは、各非互換情報の承認者に付与される。非互換情報の利用申請を待たずに結合のレコメンドに対してポイントが付与されるのは、潜在的な非互換性を早期に発見して不具合を未然に防止し、非互換吸収の手戻りを抑制するという好ましい効果が発揮されているためである。結合時登録者ポイントおよび結合時承認ポイントは、基準ポイントに対する割合として規定される。例えば、結合時登録者ポイントおよび結合時承認ポイントは、基準ポイントの1%である。
 ただし、結合時登録者ポイントおよび結合時承認者ポイントには、後述する作成側係数が乗算される。作成側係数は、レコメンド回数が多いほど大きい。よって、結合実績の多い非互換情報の方が結合時登録者ポイントおよび結合時承認者ポイントが大きくなる。
 また、価値マスタテーブル143は、基本係数、利用側調整係数および作成側調整係数を含む。基本係数は、利用側係数および作成側係数の初期値である。利用側調整係数は、利用回数1回当たりの利用側係数の減少量である。作成側調整係数は、利用回数1回当たりの作成側係数の増加量である。例えば、基本係数が1、利用側調整係数が0.001/回、作成側調整係数が0.001/回である。
 利用側係数は、基本係数-(累積利用回数-1)×利用側調整係数と算出される。よって、初回利用時の利用側係数は基本係数と一致し、累積利用回数の増加に伴って利用側係数が減少する。ただし、利用側係数の下限は0である。作成側調整係数は、基本係数+(累積利用回数-1)×作成側調整係数と算出される。よって、初回利用時の作成側係数は基本係数と一致し、累積利用回数の増加に伴って作成側係数が増加する。ただし、作成側係数の上限が設定されてもよい。
 図19は、非互換情報管理に用いられるテーブルの例を示す図である。
 評価情報記憶部122は、登録利用状況テーブル144を記憶する。登録利用状況テーブル144の1つのレコードは、1つの非互換サブ情報または1つの性能非互換情報に対応する。登録利用状況テーブル144の各レコードは、番号、利用回数、初期登録者、初期承認者、保守権利者および保守承認権利者を含む。
 番号は、非互換サブ情報を識別する非互換サブ番号、または、性能非互換情報を識別する性能非互換番号である。利用回数は、その情報の累積利用回数である。構文非互換情報の単純利用は、構文非互換情報に含まれる全ての非互換サブ情報の利用を意味する。初期登録者は、その情報を非互換情報記憶部121に登録した登録者のユーザ名である。初期承認者は、登録時にその情報を承認した承認者のユーザ名である。
 保守権利者は、登録者としての地位を受け継いだユーザのユーザ名である。初期登録者が非互換吸収の業務から離れた場合、初期登録者と保守権利者とが一致しない。その場合、初期登録者に代わって保守権利者が、優先的に継承申請者となる権利を有する。保守承認権利者は、承認者としての地位を受け継いだユーザのユーザ名である。初期承認者が非互換吸収の業務から離れた場合、初期承認者と保守承認権利者とが一致しない。その場合、初期承認者に代わって保守承認権利者が、優先的に継承の承認者となる権利を有する。
 また、評価情報記憶部122は、結合状況テーブル145を記憶する。結合状況テーブル145の1つのレコードは、構文非互換情報と性能非互換情報の組に対応する。結合状況テーブル145の各レコードは、構文非互換番号、性能非互換番号およびレコメンド回数を含む。構文非互換番号は、結合された構文非互換情報を識別する。性能非互換番号は、結合された性能非互換情報を識別する。レコメンド回数は、累積の結合回数である。
 また、評価情報記憶部122は、利用申請テーブル146を記憶する。利用申請テーブル146の1つのレコードは、1つの非互換吸収プロジェクトにおける1つの非互換サブ情報または性能非互換情報の利用に対応する。利用申請テーブル146の各レコードは、ユーザ名、申請ID、番号および個数を含む。
 ユーザ名は、単純利用における利用申請者または部品利用における部品利用申請者の名前である。申請IDは、単純利用または部品利用が行われた非互換吸収プロジェクトを識別する識別子である。番号は、利用された非互換サブ情報を識別する非互換サブ番号または利用された性能非互換情報を識別する性能非互換番号である。なお、構文非互換情報の単純利用は、構文非互換情報に含まれる全ての非互換サブ情報の利用を意味する。個数は、非互換吸収プロジェクトにおいて検出された非互換箇所の数である。
 図20は、ポイント集計テーブルの例を示す図である。
 評価情報記憶部122は、ポイント集計テーブル147を記憶する。ポイント管理部126は、ポイント集計テーブル147を表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。ポイント集計テーブル147の1つのレコードは、1人のユーザに対応する。ポイント集計テーブル147の各レコードは、ユーザ名およびポイントを含む。ユーザ名は、ユーザの名前である。ただし、ユーザの名前以外のユーザIDが用いられてもよい。ポイントは、ユーザに付与された合計のポイントである。
 次に、情報処理装置100の処理手順について説明する。
 図21は、非互換情報管理の手順例を示すフローチャートである。
 (S10)情報処理装置100は、端末装置からメッセージを受信する。
 (S11)情報処理装置100は、受信されたメッセージが第1種別であるか、すなわち、非互換情報の新規登録であるか判断する。非互換情報の新規登録である場合、ステップS12に処理が進む。それ以外の場合、ステップS15に処理が進む。
 (S12)非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信する。非互換情報登録部123は、承認者から承認メッセージを受信する。
 (S13)非互換情報登録部123は、新規の非互換情報を非互換情報記憶部121に保存する。非互換情報が構文非互換情報である場合、非互換情報登録部123は、構文非互換マスタテーブル142にレコードを追加する。また、非互換情報登録部123は、登録利用状況テーブル144に登録者および承認者を記録する。
 (S14)ポイント管理部126は、価値マスタテーブル143を参照して、登録者に付与するポイントおよび承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、登録者に100ポイントを付与し、承認者に90ポイントを付与する。そして、非互換情報管理が終了する。
 (S15)情報処理装置100は、受信されたメッセージが第2種別であるか、すなわち、既存の非互換情報の継承申請であるか判断する。継承申請である場合、ステップS16に処理が進む。それ以外の場合、ステップS19に処理が進む。
 (S16)非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信する。承認者の候補は、登録利用状況テーブル144の初期承認者または保守承認権利者が優先される。非互換情報登録部123は、承認者から承認メッセージを受信する。
 (S17)非互換情報登録部123は、構文非互換マスタテーブル142に含まれる参照エッジキーを更新して、構文非互換情報を新たなエッジに対応付ける。
 (S18)ポイント管理部126は、価値マスタテーブル143を参照して、継承申請者に付与するポイントおよび今回の承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、継承申請者に2ポイントを付与し、承認者に1ポイントを付与する。そして、非互換情報管理が終了する。
 (S19)情報処理装置100は、受信されたメッセージが第3種別であるか、すなわち、非互換情報の利用申請であるか判断する。利用申請である場合、ステップS20に処理が進む。それ以外の場合、ステップS23に処理が進む。
 (S20)ポイント管理部126は、利用申請を利用申請テーブル146に記録し、利用された非互換情報の累積利用回数を、利用申請に含まれる個数だけ増やす。
 (S21)ポイント管理部126は、価値マスタテーブル143を参照して、累積利用回数に依存する利用側係数と作成側係数とを算出する。累積利用回数が多いほど、利用側係数が小さく算出され、作成側係数が大きく算出される。
 (S22)ポイント管理部126は、価値マスタテーブル143とステップS21の利用側係数とに基づいて、利用申請者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、利用申請者に0ポイント以上10ポイント以下の変動ポイントを付与する。また、ポイント管理部126は、価値マスタテーブル143とステップS21の作成側係数とに基づいて、利用した非互換情報の登録者に付与するポイントと承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、登録者および承認者にそれぞれ1ポイント以上の変動ポイントを付与する。そして、非互換情報管理が終了する。
 図22は、非互換情報管理の手順例を示すフローチャート(続き)である。
 (S23)情報処理装置100は、受信されたメッセージが第4種別であるか、すなわち、既存の非互換情報の修正であるか判断する。修正である場合、ステップS24に処理が進む。それ以外の場合、ステップS27に処理が進む。
 (S24)非互換情報登録部123は、承認者の候補を選択して承認依頼メッセージを送信する。非互換情報登録部123は、承認者から承認メッセージを受信する。
 (S25)非互換情報登録部123は、非互換情報記憶部121に記憶されている既存の非互換情報を更新する。
 (S26)ポイント管理部126は、価値マスタテーブル143を参照して、修正者に付与するポイントおよび今回の承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、修正者に100ポイントを付与し、承認者に90ポイントを付与する。そして、非互換情報管理が終了する。
 (S27)情報処理装置100は、受信されたメッセージが第5種別であるか、すなわち、非互換サブ情報の部品利用であるか判断する。部品利用である場合、ステップS28に処理が進む。それ以外の場合、ステップS31に処理が進む。
 (S28)ポイント管理部126は、部品利用を利用申請テーブル146に記録し、利用された非互換サブ情報の累積利用回数を、利用申請に含まれる個数だけ増やす。
 (S29)ポイント管理部126は、価値マスタテーブル143を参照して、累積利用回数に依存する利用側係数と作成側係数とを算出する。累積利用回数が多いほど、利用側係数が小さく算出され、作成側係数が大きく算出される。
 (S30)ポイント管理部126は、価値マスタテーブル143とステップS29の利用側係数とに基づいて、部品利用申請者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、部品利用申請者に0ポイント以上10ポイント以下の変動ポイントを付与する。また、ポイント管理部126は、価値マスタテーブル143とステップS29の作成側係数とに基づいて、利用した非互換サブ情報の登録者に付与するポイントと承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、登録者および承認者に1ポイント以上の変動ポイントを付与する。そして、非互換情報管理が終了する。
 (S31)情報処理装置100は、受信されたメッセージが第6種別である、すなわち、非互換吸収のアセスメントであると判断する。非互換検出部124は、端末装置から受信されたソースコードに対してアセスメントを実行し、アセスメント結果を端末装置に送信する。情報処理装置100は、アセスメントの中で、異なる非互換情報の結合のレコメンドが行われたか判断する。結合のレコメンドが行われた場合、ステップS32に処理が進む。それ以外の場合、非互換情報管理が終了する。
 (S32)ポイント管理部126は、結合状況テーブル145において、結合された非互換情報の組に対応するレコメンド回数を1だけ増やす。
 (S33)ポイント管理部126は、価値マスタテーブル143を参照して、ステップS32のレコメンド回数に依存する作成側係数を算出する。レコメンド回数が多いほど、作成側係数が大きく算出される。
 (S34)ポイント管理部126は、価値マスタテーブル143とステップS33の作成側係数とに基づいて、結合された各非互換情報の登録者に付与するポイントと承認者に付与するポイントを算出し、ポイント集計テーブル147に記録する。例えば、ポイント管理部126は、登録者および承認者に1ポイント以上の変動ポイントを付与する。
 以上説明したように、第2の実施の形態の情報処理システムは、データベース製品の非互換吸収のノウハウを示す非互換情報を共有データベースに蓄積する。情報処理システムは、蓄積された非互換情報を利用して、ソースコードから非互換箇所を自動的に検出し、非互換性の解消方法をユーザに提示する。また、情報処理システムは、非互換性が解消されるようにソースコードを書き換える。よって、非互換吸収が効率化される。
 また、情報処理システムは、非互換情報の登録や利用を監視し、共有データベースの価値向上に寄与したユーザにインセンティブとしてポイントを付与する。これにより、非互換情報の登録や利用が推奨され、共有データベースの活発な利用が促進される。その結果、ユーザ間で非互換吸収の知識が共有され、非互換吸収が効率化される。
 また、情報処理システムは、非互換情報の新規登録時に、登録者および承認者にポイントを付与する。これにより、共有データベースに蓄積される非互換情報が増加し、登録される非互換情報の品質も向上する。また、情報処理システムは、既存の非互換情報の継承時に、継承申請者および承認者にポイントを付与する。これにより、同一の非互換情報を適用可能なデータベース製品が増加する。このとき、非互換情報の登録者および承認者が優先的に、その非互換情報の継承申請者および承認者になることができる。よって、継承の確認が効率化される共に、ユーザ間の公平性が向上する。
 また、情報処理システムは、非互換情報の利用時に、利用申請者と登録者と承認者にポイントを付与する。これにより、共有データベースに蓄積された非互換情報の利用が増加すると共に、非互換情報の登録および承認のインセンティブも与えられる。また、利用申請者は、利用実績が少ない非互換情報を利用したときほど大きいポイントを取得する。これにより、幅広い非互換情報の利用が増加する。一方、登録者および承認者は、登録された非互換情報の利用実績が多いほど大きいポイントを取得する。これにより、非互換情報の登録および承認へのインセンティブが強化され、非互換情報の品質が向上する。
 また、情報処理システムは、非互換情報の修正時に、修正者と承認者にポイントを付与する。これにより、非互換情報の中の誤りが放置されることが抑制され、共有データベースに蓄積された非互換情報の品質が向上する。また、情報処理システムは、非互換情報の一部分である非互換サブ情報の部品利用時に、利用申請者と登録者と承認者にポイントを付与する。これにより、非互換サブ情報の再利用が増加する。また、情報処理システムは、関連する構文非互換情報と性能非互換情報を組み合わせてユーザに提示したとき、各非互換情報の登録者と承認者にポイントを付与する。これにより、潜在的な非互換性が早期に発見されて不具合が未然に防止され、非互換吸収の手戻りが抑制される。
 上記については単に本発明の原理を示すものである。更に、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 10 情報処理装置
 11 記憶部
 12 処理部
 13 非互換情報
 14 登録者情報
 15 価値マスタテーブル
 16,17 利用情報
 18a,18b,19 評価値

Claims (10)

  1.  第1のソフトウェアに依存するソースコードを第2のソフトウェアに適合させる書換方法を示す非互換情報と前記非互換情報の登録者を示す登録者情報とを含むデータベースに対する利用情報であって、前記非互換情報の利用者と前記非互換情報の利用結果とを示す利用情報を取得し、
     前記利用情報が示す前記利用結果の種別を特定し、
     複数の利用結果の種別と複数の評価値との間の対応関係を示す評価基準情報に基づいて、前記特定した種別に応じて、前記利用情報が示す前記利用者および前記登録者情報が示す前記登録者の少なくとも一方に付与する評価値を算出する、
     処理をコンピュータに実行させる情報処理プログラム。
  2.  前記評価値の算出は、前記特定した種別が、前記第1のソフトウェアと前記第2のソフトウェアの組に対する前記非互換情報の利用成功である場合、前記利用者に付与する第1の評価値と前記登録者に付与する第2の評価値とを算出する処理を含む、
     請求項1記載の情報処理プログラム。
  3.  前記データベースは、前記非互換情報の累積利用回数を示す利用回数情報を含み、
     前記第1の評価値および前記第2の評価値は、前記利用回数情報に応じて算出される、
     請求項2記載の情報処理プログラム。
  4.  前記第1の評価値は、前記累積利用回数が少ないほど大きく算出され、前記第2の評価値は、前記累積利用回数が多いほど大きく算出される、
     請求項3記載の情報処理プログラム。
  5.  前記評価値の算出は、前記特定した種別が、前記第1のソフトウェアと前記第2のソフトウェアの組とは異なる他のソフトウェアの組への前記非互換情報の応用である場合、前記利用者に付与する第3の評価値を算出する処理を含む、
     請求項1記載の情報処理プログラム。
  6.  前記非互換情報は、前記ソースコードの中の不連続な2以上の文字列を書き換える書換方法を示す2以上の非互換サブ情報を含み、
     前記評価値の算出は、前記特定した種別が、前記非互換情報に含まれる一部の非互換サブ情報の部分利用である場合、前記利用者に付与する第4の評価値と前記登録者に付与する第5の評価値とを算出する処理を含む、
     請求項1記載の情報処理プログラム。
  7.  前記データベースは、前記第2のソフトウェアの不具合原因となる構文を示す他の非互換情報と前記他の非互換情報を登録した他の登録者を示す他の登録者情報とを含み、
     前記評価値の算出は、前記特定した種別が、前記非互換情報が示す前記書換方法と前記他の非互換情報が示す前記構文との抵触である場合、前記登録者に付与する第6の評価値と前記他の登録者に付与する第7の評価値とを算出する処理を含む、
     請求項1記載の情報処理プログラム。
  8.  前記評価値の算出は、前記特定した種別が前記非互換情報の修正である場合、前記利用者に付与する第8の評価値を算出する処理を含む、
     請求項1記載の情報処理プログラム。
  9.  第1のソフトウェアに依存するソースコードを第2のソフトウェアに適合させる書換方法を示す非互換情報と前記非互換情報の登録者を示す登録者情報とを含むデータベースに対する利用情報であって、前記非互換情報の利用者と前記非互換情報の利用結果とを示す利用情報を取得し、
     前記利用情報が示す前記利用結果の種別を特定し、
     複数の利用結果の種別と複数の評価値との間の対応関係を示す評価基準情報に基づいて、前記特定した種別に応じて、前記利用情報が示す前記利用者および前記登録者情報が示す前記登録者の少なくとも一方に付与する評価値を算出する、
     処理をコンピュータが実行する情報処理方法。
  10.  第1のソフトウェアに依存するソースコードを第2のソフトウェアに適合させる書換方法を示す非互換情報と前記非互換情報の登録者を示す登録者情報とを記憶する記憶部と、
     前記非互換情報の利用者と前記非互換情報の利用結果とを示す利用情報を取得し、前記利用情報が示す前記利用結果の種別を特定し、複数の利用結果の種別と複数の評価値との間の対応関係を示す評価基準情報に基づいて、前記特定した種別に応じて、前記利用情報が示す前記利用者および前記登録者情報が示す前記登録者の少なくとも一方に付与する評価値を算出する処理部と、
     を有する情報処理装置。
PCT/JP2021/022881 2021-06-16 2021-06-16 情報処理プログラム、情報処理方法および情報処理装置 WO2022264316A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2023528843A JPWO2022264316A1 (ja) 2021-06-16 2021-06-16
EP21945993.0A EP4357911A1 (en) 2021-06-16 2021-06-16 Information processing program, information processing method, and information processing device
PCT/JP2021/022881 WO2022264316A1 (ja) 2021-06-16 2021-06-16 情報処理プログラム、情報処理方法および情報処理装置
US18/515,778 US20240086189A1 (en) 2021-06-16 2023-11-21 Non-transitory computer-readable recording medium storing information processing program, information processing method, and information processing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2021/022881 WO2022264316A1 (ja) 2021-06-16 2021-06-16 情報処理プログラム、情報処理方法および情報処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/515,778 Continuation US20240086189A1 (en) 2021-06-16 2023-11-21 Non-transitory computer-readable recording medium storing information processing program, information processing method, and information processing device

Publications (1)

Publication Number Publication Date
WO2022264316A1 true WO2022264316A1 (ja) 2022-12-22

Family

ID=84526460

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2021/022881 WO2022264316A1 (ja) 2021-06-16 2021-06-16 情報処理プログラム、情報処理方法および情報処理装置

Country Status (4)

Country Link
US (1) US20240086189A1 (ja)
EP (1) EP4357911A1 (ja)
JP (1) JPWO2022264316A1 (ja)
WO (1) WO2022264316A1 (ja)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03242727A (ja) * 1990-02-21 1991-10-29 Fujitsu Ltd 計算機システムの新旧交換時における移行システム
WO2003069466A1 (fr) 2002-02-18 2003-08-21 Japan Science And Technology Agency Système d'évaluation de l'importance d'un composant logiciel
JP2006099418A (ja) 2004-09-29 2006-04-13 Chugoku Electric Power Co Inc:The 情報処理装置、情報処理装置の制御方法、プログラム
JP2013225181A (ja) * 2012-04-19 2013-10-31 Hitachi Solutions Ltd 情報レコメンドシステム、方法、およびプログラム
WO2015100496A1 (en) 2014-01-03 2015-07-09 Investel Capital Corporation User content sharing system and method with automated external content integration
JP2016053809A (ja) * 2014-09-03 2016-04-14 大日本印刷株式会社 サーバ装置、プログラム及び情報提供方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03242727A (ja) * 1990-02-21 1991-10-29 Fujitsu Ltd 計算機システムの新旧交換時における移行システム
WO2003069466A1 (fr) 2002-02-18 2003-08-21 Japan Science And Technology Agency Système d'évaluation de l'importance d'un composant logiciel
JP2006099418A (ja) 2004-09-29 2006-04-13 Chugoku Electric Power Co Inc:The 情報処理装置、情報処理装置の制御方法、プログラム
JP2013225181A (ja) * 2012-04-19 2013-10-31 Hitachi Solutions Ltd 情報レコメンドシステム、方法、およびプログラム
WO2015100496A1 (en) 2014-01-03 2015-07-09 Investel Capital Corporation User content sharing system and method with automated external content integration
JP2016053809A (ja) * 2014-09-03 2016-04-14 大日本印刷株式会社 サーバ装置、プログラム及び情報提供方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
RAKUTEN STAFF BLOG, 15 March 2021 (2021-03-15), Retrieved from the Internet <URL:https://plaza.raluten.co.jp/recipeinfo/diary/20210310000> [retrieved on 20210816] *

Also Published As

Publication number Publication date
JPWO2022264316A1 (ja) 2022-12-22
US20240086189A1 (en) 2024-03-14
EP4357911A1 (en) 2024-04-24

Similar Documents

Publication Publication Date Title
US7685150B2 (en) Optimization of queries over XML views that are based on union all operators
US8479149B2 (en) Concept-oriented software engineering system and method for identifying, extracting, organizing, inferring and querying software system facts
US8209361B2 (en) Techniques for efficient and scalable processing of complex sets of XML schemas
CN109840256A (zh) 一种基于业务实体的查询实现方法
US7519574B2 (en) Associating information related to components in structured documents stored in their native format in a database
US11204746B2 (en) Encoding dependencies in call graphs
KR20120037393A (ko) 소프트웨어 확장 분석
Vo et al. Discovering Conditional Functional Dependencies in XML Data.
US8086561B2 (en) Document searching system and document searching method
Luong et al. A rule‐based approach for semantic annotation evolution
US9697239B1 (en) Token-based database system and method of interfacing with the token-based database system
WO2022264316A1 (ja) 情報処理プログラム、情報処理方法および情報処理装置
Kuć et al. ElasticSearch server
US20230418803A1 (en) Techniques for integrating data for multple instances of a data artifact
US11068468B2 (en) Extensible validation framework
WO2022254504A1 (ja) 情報処理プログラム、情報処理方法および情報処理装置
US10719424B1 (en) Compositional string analysis
US10338903B2 (en) Simulation-based code duplication
US9965453B2 (en) Document transformation
JP2010186412A (ja) 文書管理方法及び管理装置
WO2022195726A1 (ja) 情報処理プログラム、情報処理方法および情報処理装置
US20240012803A1 (en) Mechanisms for deleting triples of a database store
US20240012802A1 (en) Mechanisms for serializing triples of a database store
US20230334268A1 (en) Logical pointers supporting reuse of text translations
Hirsch et al. Spotting and removing wsdl anti-pattern root causes in code-first web services: a thorough evaluation of impact on service discoverability

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 21945993

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2023528843

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 2021945993

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2021945993

Country of ref document: EP

Effective date: 20240116