1. Field of the Invention
The present invention relates to selection of a test case to be carried out in a regression test of a program, and more particularly to a technique for deciding the priorities of the test cases where there are two or more test cases to be carried out.
2. Background Information
In making a change to a program for function expansion or problem revision, a regression test is commonly carried out to check whether or not a new problem arises due to the change. In the regression test, the change is confirmed and test cases already carried out in the past are carried out again. However, if all the test cases in the past are carried out every time the change is made, an enormous number of man-hours are required. Thus, it has become common practice to select some test cases from among the test cases carried out in the past to reduce the number of man-hours.
As the prior art for selecting some test cases from among the test cases carried out in the past, there is US Patent Publication No.: 2003-91431. Disclosed therein is a technique that in making a revision to each source file comprising a program, a correspondence table showing the correspondence between the revision ID of specifying the revision, the source file names of a revised source files and the test case used for testing the source file is created, and when the program is changed, the test cases associated with the changed source file are selected and re-executed.
With the disclosed technique, a list of test cases associated with the changed source file is provided, but the information concerning the priority of each listed test case is not provided. Therefore, the program developer can not judge which test case is more likely to cause an error among the listed test cases, and discover the new problem due to the change efficiently.
Thus, to solve this problem, a technique for deciding the priorities of test cases to be carried out has been developed. For example, US Patent Publication No.: 2004-5399, discloses a technique where the number of revisions in each state of the software operating while transiting between plural states is stored as development history information, and a plurality of test cases for testing the software by connecting the states with trigger are created in which each test case is weighted using the development history information. Also, disclosed is another technique that each test case is weighted according to the presence or absence of track record on the real machine, and another technique that each test case is weighted according to the pass/fail result of carrying out the test case.
Thus, it is an object of the invention to provide an information processing apparatus, method and program for extracting the test cases to be newly carried out due to the revision of program, as well as deciding the priority of each of the extracted test cases, indicating the probability of causing an error again, from the relationship with the new revision in a regression test of program.
One general embodiment of the invention is implemented by a method for deciding the priority of a test case to be carried out in a regression test of a program, which is carried out in an information processing apparatus as in the following manner. Herein, the program includes one or more functions. A revision history table that associates each of a plurality of first revision identifiers, which identifies the past revision, with one or more first function identifiers each of which identifies the function revised in the past revision identified by the associated first revision identifier is read from a storage part of the information processing apparatus. One or more second function identifiers each of which identifies the function revised in the new revision are acquired. The number of matched function identifiers between the one or more first function identifiers associated with the first revision identifier and the acquired one or more second function identifiers is obtained for each first revision identifiers in the revision history table. The priority of the test case for testing the past revision identified by each first revision identifier is obtained, based on the number of matched function identifiers that is obtained for each first revision identifier in the revision history table.
If the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision. As the number of matched functions between plural functions revised in the new revision and plural functions revised in the past revision is larger, the possibility that the past test case for testing the past revision causes an error again is increased due to the new revision. Thus, the degree of overlap between the functions revised in the new revision and the functions revised in the past revision is defined as the priority of the past test case for testing the past revision. The typical term function means a group of instructions to receive data called the argument perform a certain process and return the result. However, the functions in this invention include the function without argument and the function returning no result.
In the method, each second function identifier may be directly acquired via an input part of the information processing apparatus from the user. Instead, only a second revision identifier for identifying the new revision may be accepted via the input part of the information processing apparatus from the user. In this case, a source code of the program in a version associated with the second revision identifier is obtained by referring to a correspondence table that associates the revision identifier for identifying the revision and the version of the program revised in the revision. Each second function identifier is acquired by comparing the source code of the program in the current version and the source code of the program in the previous version and detecting the unmatched function.
Preferably, in obtaining the number of matched function identifiers, each matched function identified by the matched function identifiers is weighted by determining whether or not a reviser of each matched function is different between the new revision and the past revision. The number of matched function identifiers is obtained in consideration of the weighted result. More specifically, the matched function of which the reviser is different between the new revision and the past revision is more heavily weighted than the matched function of which the reviser is not different.
If the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision, as described above. However, if the past revision is made by oneself, such possibility is lower than that in the case where the past revision is made by others. Thus, the matched function is weighted depending on whether or not the reviser making the new revision and the reviser making the past revision are identical.
Also, in obtaining the number of matched function identifiers, each matched function identified by the matched function identifiers is weighted according to the amount of revision due to new revision for the matched function. The number of matched function identifiers is obtained in consideration of the weighted result. More specifically, the matched function for which the amount of revision due to new revision is large is more heavily weighted than the matched function for which the amount of revision is small.
If the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision, as described above. However, if the amount of revision due to new revision is small, the possibility that the past test case for testing the past revision causes an error again in the new revision is low, even though the same function was revised in the past. Thus, the matched function is weighted according to the amount of revision due to new revision.
In obtaining the number of matched function identifiers, each matched function identified by the matched function identifiers is weighted according to the number of past revision for the matched function. The number of matched function identifiers is obtained in consideration of the weighted result. More specifically, the matched function for which the number of past revisions is large is more heavily weighted than the matched function for which the number of the past revisions is small.
If the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision, as described above. The possibility of causing an error is increased as the number of times the function is revised in the past is larger. Thus, the matched function is weighted according to the number of past revisions.
The above method further comprises outputting a list of first revision identifiers in which the first revision identifiers are arranged in the decided order of priority via an output part of the information processing apparatus.
The information processing apparatus 100 further comprises a new revision associated data acquisition part 270, a revision history creation/update part 275, a first function risk table creation part 280, a second function risk table creation part 285, and a list creation/output part 290. The first storage part 230 and the second storage part 255 may be the physically same storage unit.
The new revision associated data 235 is data concerning the new revision newly made to the program. As one example, the new revision associated data 235 includes a revision identifier of specifying the new revision owing to a revision factor such as problem revision or function addition and a function identifier of specifying the newly revised function, and may further,include a file identifier of specifying the file containing the newly revised function, and a reviser identifier of specifying the reviser making the new revision. In this embodiment, the program may be composed of two or more files.
The version correspondence table 260 is the table associating the revision ID of specifying the revision made to the program and the version of program to which the revision is made.
The new revision associated data acquisition part 270 acquires new revision associated data 235 and temporarily stores the acquired new revision associated data 235 in the first storage part 230, when a new revision is made to the program. Herein, temporarily storing means probably deleting data after being used by the count part 205 as will be described later or used to update the revision history table 240. The new revision associated data acquisition part 270 acquires new revision associated data 235 from the user via an input part of the information processing apparatus 100 as one example.
The new revision associated data acquisition part 270 may acquire the new revision ID of specifying the new revision from the user via the input part of the information processing apparatus 100. In this case, the new revision associated data acquisition part 270 obtains the version of program corresponding to the new revision ID by referring to the version correspondence table 260. And the new revision associated data 235 is acquired by comparing the source code of program in the concerned version and the source code of program in the previous version of the concerned version and detecting one or more functions in which they are unmatched.
The revision history table 240 is the table that organizes data concerning the past revisions made to the program. As one example, the revision history table 240 associates each of plurality of the revision IDs, which identifies the past revision, with one or more function names each of which identifies the revised function in the concerned revision, and may further associate it with the reviser name and the file name of the file including the function to which the revision is made.
The revision history creation/update part 275 creates the revision history table 240, and updates the revision history table 240 if the new revision is made to the program. The revision history creation/update part 275 updates the revision history table 240 by adding new revision associated data 235 to the revision history table 240 (see
The count part 205 reads the new revision associated data 235 and the revision history table 240 from the first storage part 230, compares one or more function names associated with the concerned revision ID and one or more function names within the new revision associated data 235 for each revision ID of the revision history table 240, and counts the number of the function names in which they are matched. Each counted number is added to the revision history table 240 by the priority decision part 200 as the priority of test case to test the revision of the corresponding revision ID.
This method for deciding the priority of the past test case is based on the following inference. That is, the inference is that if the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision. This inference is that plural functions to be newly revised and plural functions revised in the past revision are more matched, the test case for testing the past revision is more likely to cause an error again due to new revision.
On the other hand, in the past revision ID “5”, three functions are revised, like the past revision LD “1”, in which the same function as revised with the new revision ID “9” is one function, Function2_1. Therefore, the priority of the past revision ID “5” over the new revision ID “9” is 1. That is, the degree of overlapping the functions revised in the new revision is larger in the revision ID “1” than in the revision ID “5”, whereby the possibility of causing an error again due to new revision is stronger in the revision ID “1” and the priority over the new revision ID “9” is larger in the revision ID “1”.
The first weighting part 210 weights the specified function by determining whether or not the reviser of the function specified by the matched function name is different between the new revision and the past revision within the revision history table 240, if the count part 205 judges that the function name associated with the revision ID within the revision history table 240 and the function name within the new revision associated data 235 are matched. Specifically, the first weighting part 210 weights the specified function more heavily if the reviser of the function specified by the matched function name is different between the new revision and the past revision within the revision history table 240 than not different.
This method for weighting the priority of the past test case is based on the following inference. That is, the inference is that if the function already revised in the past is revised, the past test case for testing the past revision is likely to cause an error again due to new revision, but if the past revision is made by oneself, such possibility is lower than the past revision is made by others.
The weight for weighting by the first weighting part 210 may be an integer or decimal fraction as far as it is the positive number, and set by the user. When the weighting is made by the first weighting part 210, the count part 205 obtains the number of matched function names in consideration of the weighted result. As one example, the count part 205 multiplies the number of matched function names by the weight for weighting by the first weighting part 210. Each value obtained by the count part 205 is added as the priority of the test case for testing the revision of the corresponding revision ID to the revision history table 240 by the priority decision part 200.
On the other hand, in the past revision ID “5”, the same functions as revised with the new revision ID “9” are two functions, Function1_2 and Function3_1, among the revised functions, as is the case with the past revision ID “1”. However, the reviser of the past revision ID “5” is “PersonB” who is the same as the reviser of new revision, in which the weight for these functions is 1. Accordingly, the priority of the past revision ID “5” over the new revision ID “9” is 2, which is the number 2 of matched function names multiplied by the weight 1.
That is, the degree of overlapping the functions revised in the new revision is the same in the revision ID “1” and the revision ID “5”. Taking notice of only this point, the possibility of causing an error again due to new revision is equivalent in the revision ID “1” and “5”. However, it is the reviser of new revision that made the revision with the revision ID. “5”, whereby the possibility of causing an error again due to new revision is low, and the priority over the new revision ID “9” in consideration of the reviser is larger in the revision ID “1”.
The first function risk table 245 is the table showing the amount of revision for the function revised in the new revision. Though the function is newly added by the revision in some cases, the first function risk table 245 does not include the newly added function, because it is considered that the newly added function has no influence on the past revision. The first function risk table creation part 280 creates the first function risk table 245 and temporarily stores it in the first storage part 230. Herein, temporarily storing means probably deleting the first function risk table 245 after being used by the second weighting part 215 as will be described later. The first function risk table 245 is created by the first function risk table creation part 280 in the following manner.
First of all, the first function risk table creation part 280 acquires the version of program corresponding to the new revision ID by referring to the correspondence table 260. Then, the first function risk table creation part 280 obtains the changed function name by referring to the new revision associated data 235. The first function risk table creation part 280 reads the source code of program in the acquired version and the source code of program in the previous version of the acquired version from the second storage part 255, compares the changed function between two versions, and finally obtains the amount of revision of interest. The amount of revision is a sum of the number of lines added to the function, the number of deleted lines and the number of changed lines. The addition, deletion and change of comments are excluded.
The second weighting part 215 weights the specified function by determining whether or not the amount of revision in the new revision for the function specified by the matched function name is large by referring to the first function risk table 245, if the count part 205 judges that the function name associated with the past revision ID within the revision history table 240 and the function name within the new revision associated data 235 are matched. Specifically, the second weighting part 215 assigns a greater weight to the specified function in the case where the amount of revision in the new revision for the function specified by the matched function name is large than it is small.
This method for weighting the priority of the past test case is based on the following inference. That is, the inference is that if the function already revised in the past is revised, the test case for testing the past revision is likely to cause an error again due to new revision, but if the amount of revision due to new revision is small, the possibility that the test case for testing the past revision causes an error again due to new revision is low, even though the same function is revised in the past.
The weight for weighting by the second weighting part 215 may be a value that reflects the amount of revision, or the amount of revision itself. When the weighting is made by the second weighting part 215, the count part 205 obtains the number of matched function names in consideration of the weighted result. As one example, the count part 205 obtains the total value by adding the weights decided for the function if there is matched function name. Each obtained total value is appended as the priority of the test case for testing the revision of the corresponding revision ID to the revision history table 240 by the priority decision part 200.
Thus, the revision history table 240 of
On the other hand, in the past revision ID “5”, the same functions as revised with the new revision ID “9” are two functions, Function1_2 and Function3_1, among the revised functions. By the way, the risk values (amounts of revision) for these functions are 10 and 50. Accordingly, the priority of the past revision ID “5” over the new revision ID “9” is 60 by adding the weights, 0 and 50 of the matched function names.
That is, the degree of overlapping the functions revised in the new revision is the same in the revision ID “1” and the revision ID “5”. Taking notice of only this point, the possibility of causing an error again due to new revision is equal in the revision ID “1” and “5”. However, the function Function3_1 having a large amount of revision in the new revision is revised with the revision ID “5”, besides the Function1_2, whereas the function Function2_1 having a small amount of revision in the new revision is revised with the revision ID “1”, besides the Function1_2. Therefore, the possibility that the test case associated with the revision ID “1” causes an error again due to new revision is low. Accordingly, in considering the amount of revision for the function due to new revision, the priority over the new revision ID “9” is larger with the revision ID “5”.
The second function risk table 250 is the table showing the number of revisions for the function revised in the past. The second function risk table creation part 285 creates the second function risk table 250 and temporarily stores it in the first storage part 230. Herein, temporarily storing means probably deleting the second function risk table after being used by the third weighting part 220 as will be described later. The second function risk table creation part 285 reads the revision history table 240 from the first storage part 230, and acquires the number of revisions by counting the number of times that each function appears in the revision history table 240.
The third weighting part 220 weights the specified function by determining whether or not the number of past revisions for the function specified by the matched function name is large by referring to the second function risk table 250, if the count part 205 judges that the function name associated with the past revision ID within the revision history table 240 and the function name within the new revision associated data 235 are matched. Specifically, the third weighting part 220 assigns a greater weight to the specified function in the case where the number of past revisions for the function specified by the matched function name is large than it is small.
This method for weighting the priority of the past test case is based on the following inference. That is, the inference is that if the function already revised in the past is revised, the test case for testing the past revision is likely to cause an error again due to new revision, and the possibility that the test case is an error is stronger as the number of past revisions for the function is greater.
The weight for weighting by the third weighting part 220 may be a value that reflects the number of revisions, or the number of revisions itself. When the weighting is made by the third weighting part 220, the count part 205 obtains the number of matched function names in consideration of the weighted result and decides the priority of the test case. As one example, the count part 205 obtains the total value by adding the weights decided for the functions if there are matched function names. Each decided priority is appended as the priority of the test case for testing the revision of the corresponding revision ID to the revision history table 240 by the priority decision part 200. The process by the third weighting part 220 and the count part 205 is the same as that by the second weighting part 215 and the count part 205 described with reference to
The list creation part 290 reads the revision history table 240 with, the priority added from the first storage part 230 and creates a list by arranging the revision IDs according to priority.
As described above, with the information processing apparatus 100 according to the embodiment of the invention, the past test case to be carried out again is provided along with the priority from the relation with the new revision in the regression test of program. Therefore, even when there are many past test cases to be carried out, the past test case with high priority, or strong possibility of causing an error, can be examined preponderantly, and the problem that newly arises due to new revision can be found efficiently.
Referring to the flowcharts of
Next, the new revision associated data acquisition part 270 acquires the version of program corresponding to the new revision ID by referring to the version correspondence table 260 (step 110). The new revision associated data acquisition part 270 reads the source code in the previous version of the acquired version and the source code in the acquired version from the second storage part 255, and detects the unmatched function by comparing them (step 115). The new revision associated data acquisition part 270 sets all the function names of the detected unmatched functions and the file names of the files including the concerned functions in the table of new revision associated data 235 (step 120). The process is ended. In this manner, the new revision associated data 235 as shown in
Next, the count part 205 determines whether or not the file name is acquired for every file associated with the current revision ID (step 220). If there is any file name not acquired (step 220: NO), the count part 205 acquires the next file name within the revision history table 240 (step 225). The count part 205 further determines whether or not the function name is acquired for every function of acquired file name (step 230). If the function name is acquired for every function (step 230: YES), the process returns to step 220. If there is any function name not acquired (step 230: NO), the count part 205 acquires the next function name within the revision history table 240 (step 235). It is determined whether or not there is matched data by retrieving the new revision associated data 235 with the acquired file name and function name as the retrieval key (step 240).
If the matched data is found (step 240: YES), the counter is incremented by one (step 245). If the answer is NO at step 240, or if the matched data is not found, the process returns to step 230, or the process returns from step 245 to step 230. If the answer is YES at step 220, or if the file name is acquired for every file associated with the current revision ID, the current counter value is appended as the priority associated with the current revision ID to the revision history table 240 (step 250). The process returns to step 210. If the answer is YES at step 210, or if the priority is decided for every revision ID, the process is ended. In this manner, the revision history table 240 with the priority added as shown in
If the count part 205 ends checking all the files associated with the current revision ID and counting the number of the matched function names, the first weighting part 210 acquires the reviser name associated with the current revision ID from the revision history table 240 (step 350). The first weighting part 210 determines whether or not the acquired reviser name is matched with the reviser name included in the new revision associated data 235 (step 355). If unmatched (step 355: NO), the first weighting part 210 multiplies the counter by a positive weight value (e.g., “2”) above 1 that is preset by the user, and substitutes the value into the counter (step 360).
If the answer is YES at step 355, or if the reviser name is matched, the first weighting part 210 multiplies the counter by a positive weight value of 1 or less (e.g., “1”) preset by the user, and substitutes the value into the counter (step 365). The process proceeds from step 360 or 365 to step 370, where the priority decision part 200 appends the current counter value as the priority associated with the current revision ID to the revision history table 240. The process returns to step 310. If the answer is YES at step 310, or if the priority is decided for every revision ID, the process is ended. In this manner, the revision history table including the priority in consideration of weighting by the reviser as shown in
If the answer is YES at step 420, or if the acquired file name is in the first function risk table, the process goes to step 430, or the process proceeds from step 425 to step 430, where the first function risk table creation part 280 further determines whether or not the function name is acquired for every function of the acquired file name. If there is no function name not acquired (step 430: YES), the process returns to step 410. If there is any function name not acquired (step 430: NO), the first function risk table creation part 280 acquires the next function name within the new revision associated data 235 (step 435). The first function risk table creation part 280 determines whether or not the acquired function name exists in the first function risk table (step 440). If not (step 440: NO), the function name is appended to the first function risk table (step 445).
If the answer is YES at step 440, or if the function name is in the first function risk table, the process goes to step 450, or the process proceeds from step 445 to step 450, where the first function risk table creation part 280 obtains the amount of revision due to new revision for the function with the acquired function name. The amount of revision is obtained by comparing the function after revision due to new revision and the function before revision. The first function risk table creation part 280 sets the acquired amount of revision as the risk associated with the current function name in the first function risk table creation part 280 (step 455). The process returns to step 430. In this manner, the first function risk table as shown in
If there is any file name not acquired (step 510: NO), the second function risk table creation part 285 acquires the next file name within the revision history table 240 (step 515). And the second function risk table creation part 285 determines whether or not the acquired file name exists in the second function risk table (step 520). If not (step 520: NO), the file name is appended to the second function risk table (step 525). If the answer is YES at step 520, or if the acquired file name is in the first function risk table, the process goes to step 530, or the process proceeds from step 525 to step 530, where the second function risk table creation part 285 further determines whether or not the function name is acquired for every function of the acquired file name. If there is no function name not acquired (step 530: YES), the process returns to step 510.
If there is any function name not acquired (step 530: NO), the second function risk table creation part 285 acquires the next function name within the revision history table 240 (step 535). The second function risk table creation part 285 determines whether or not the acquired function name exists in the second function risk table (step 540). If not (step 540: NO), the function name is appended to the second function risk table (step 545). Then, the second function risk table creation part 285 sets the value of risk associated with the current function name to 0 (step 550). If the answer is YES at step 540, or if the function name is in the second function risk table, the process goes to step 555, or the process proceeds from step 550 to step 555, where the second function risk table creation part 285 increments the value of risk associated with the current function name by one. The process returns to step 530. In this manner, the second function risk table as shown in
If the count part 205 determines that data matched with the acquired file name and function name exists in the new revision associated data 235 (step 645: YES), the second weighting part 215 acquires the risk value of the function with the matched function name by referring to the first function risk table (step 650). The count part adds the risk value acquired by the second weighting part 215 to the counter (step 655). The process returns to step 635. At step 635, if it is determined that the function name is acquired for every function of the acquired file name, the process returns to step 625. Further, at step 625, if it is determined that the file name is acquired for every file associated with the current revision ID, the process goes to step 660. The priority decision part 200 appends the current counter value, or the sum of risk values of the functions of the matched function names as the priority associated with the current revision ID to the revision history table 240.
In this manner, the revision history table including the priority in consideration of weighting due to the amount of revision for the function as shown in
On the dialog box of
The host controller 110 connects the CPU 105 gaining access to the RAM 115 at a high transfer rate to the RAM 115. The CPU 105 operates based on a program stored in the hard disk to control each part. The program for deciding the priority of test case to be carried out according to the embodiment of the invention is stored in the hard disk, and executed using the RAM 115 by the CPU 105. The program enables the information processing apparatus 100 to function as the priority decision part 200 including the count part 205, the first weighting part 210, the second weighting part 215 and the third weighting part 225, the first storage part 230 that stores the new revision associated data 235, the revision history table 240, the first function risk table 245 and the second function risk table 250, and the second storage part 255 that stores the version correspondence table 260 and the source code 265 of program in each version.
The, program further, enables the information processing apparatus 100 to function as the new revision associated data acquisition part 270, the revision history creation/update part 275, the first function risk table creation part 280, the second function risk table creation part 285, and the list creation/output part 290. The specific function and operation are the same as described using
The readable medium for the information processing apparatus may be arbitrary unit containing the program or relevant program for use in an instruction execution system, device or apparatus, and capable of storing, communicating, propagating or conveying the program. The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or device or apparatus), or a propagation medium. Examples of the readable medium for the information processing apparatus include a semiconductor or solid-state storage device, a magnetic tape, a removable information processing apparatus/diskette, a random access memory (RAM), a read only memory (ROM), a rigid magnetic disk and an optical disk. Example of the optical disk at the present time include a compact disk read only memory (CD-ROM), a compact disk read/write (CD-R/W) and a DVD.
Also, the input/output controller 130 connects the communication interface 145 that is a relatively high speed input/output device, the hard disk drive 135 and the CD-ROM drive 140 to the host controller 110. The communication interface 135 enables the communications via a network with an external apparatus.
Also, the input/output controller 130 is connected to the relatively slow input/output devices such as the super I/O controller 150 and the keyboard mouse controller 165, and the flash ROM 160. The flash ROM 160 stores a boot program executed by the CPU 105 at the time of booting up the information processing apparatus 100 and the programs dependent on the hardware of the information processing apparatus 100. The flexible disk drive 155 reads the program or data from the flexible disk and provides it via the RAM 115 to the super I/O controller 150. The super I/O controller 150 connects the flexible disk, and various input/output devices via a parallel port, a serial port, a keyboard port, or a mouse port, for example.
While the present invention has been described above in connection with the embodiment, the technical scope of the invention is not limited to the scope described in the embodiment. For example, the weighting in deciding,the priority is any one of the weighting by the reviser, weighting by the amount of revision due to new revision for the function, and weighting by the number of revisions due to past revision for the function in the above embodiment. However, a combination of the above methods of weighting is also possible. As an example, the weighting by the amount of revision due to new revision for the function and the weighting by the reviser may be combined. For example, suppose that there are two or more functions matched with the certain past revision ID, and the reviser is different from the reviser of new revision. In this case, the priority of the concerned revision ID can be obtained by multiplying the total amount of revision for the matched functions due to new revision by the weight value in which the reviser is different.
Also, though the reviser is decided for each revision ID in the above description, the reviser may be alternatively decided for each function or each file. In this case, the priority of the revision ID is a sum of weight values decided by the revisers of the matched functions. In this manner, it will be apparent to those skilled in the art that various changes or improvements may be made to the above embodiment. Accordingly, such changes or improvements may be also naturally included in the technical scope of the invention.
Number | Date | Country | Kind |
---|---|---|---|
2006-310711 | Nov 2006 | JP | national |