Program development support system, program development support method, information processing device, and program
The program development support system addresses the inefficiency in bug detection across multiple developers by prioritizing jobs based on skill levels, ensuring effective bug detection and reduction in defect occurrence rates.
Patent Information
- Application Number
- PCT/JP2024/041591
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-04
- Filing Date
- 2024-11-25
- Publication Date
- 2025-06-12
AI Technical Summary
Existing program development support systems do not efficiently detect bugs when multiple developers share an execution environment, as they do not account for varying bug occurrence rates among developers.
A program development support system that includes a storage unit for jobs, an execution unit, a level information management unit for skill levels, and a priority determination unit that prioritizes jobs based on developer skill levels to efficiently detect bugs.
The system efficiently detects bugs by prioritizing jobs based on developer skill levels, ensuring that jobs from developers with lower skill levels, assumed to have higher defect rates, are executed with higher priority.
Smart Images

Figure JP2024041591_12062025_PF_FP_ABST
Abstract
Description
Program development support system, program development support method, information processing device, and program
[0001] The present disclosure relates to a program development support system, a program development support method, an information processing device, and a program.
[0002] Patent Document 1 discloses a program development support system. This system has an automatic execution processing server. This automatic execution processing server stores execution target information corresponding to source code that performs automatic execution processing in a predetermined order. This automatic execution processing server changes the order of the execution target information in the automatic execution queue based on ticket attribute information (specifically, priority attribute, due date attribute, or critical path attribute). This automatic execution processing server performs automatic execution processing based on the changed order.
[0003] Japanese Patent Application Laid-Open No. 2021-105866
[0004] When multiple developers share an environment for executing such jobs, it is expected that the incidence of bugs will differ for each developer. In such a situation, it is desirable to efficiently detect bugs. However, Patent Document 1 does not suggest anything about this.
[0005] The present disclosure aims to provide a technology that makes it easy to efficiently detect bugs.
[0006] The program development support system of the present disclosure comprises: a storage unit that stores jobs for testing source code committed to a source code management system; an execution unit that executes the jobs stored in the storage unit; a level information management unit that manages level information indicating the skill level of each developer of the source code; and a priority determination unit that determines the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit, and the execution unit prioritizes execution of the jobs with higher priorities determined by the priority determination unit.
[0007] The program development support method of the present disclosure includes the steps of: storing, in a storage unit that stores jobs for testing source code committed to a source code management device; executing the jobs stored in the storage unit; and using a level information management unit that manages level information indicating the skill level of each developer of the source code, determining the priorities of the jobs stored in the storage unit by a priority determination unit based on the level information managed by the level information management unit, and executing the jobs with higher priorities determined by the priority determination unit first.
[0008] The information processing device disclosed herein is an information processing device included in a program development support system that has a storage unit that stores jobs for testing source code committed to a source code management device, an execution unit that executes the jobs stored in the storage unit in order of priority, and a level information management unit that manages level information indicating the skill level of each developer of the source code, and has a priority determination unit that determines the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit.
[0009] The program disclosed herein causes a computer of an information processing device included in a program development support system that includes a storage unit that stores jobs for testing source code committed to a source code management device, an execution unit that executes the jobs stored in the storage unit in order of priority, and a level information management unit that manages level information indicating the skill level of each developer of the source code, to determine the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit.
[0010] According to the technology of the present disclosure, bugs can be detected efficiently and easily.
[0011] FIG. 1 is a schematic diagram of a program development support system according to a first embodiment. FIG. 2 is an explanatory diagram showing the skill levels of each developer. FIG. 3 is a table showing the correspondence between skill levels and priorities. FIG. 4 is an explanatory diagram showing an example of sorting jobs in a storage unit according to the first embodiment. FIG. 5 is a sequence diagram of the program development support system according to the first embodiment. FIG. 6 is a schematic diagram of a program development support system according to a second embodiment. FIG. 7 is a sequence diagram of the program development support system according to the second embodiment. FIG. 8 is an explanatory diagram showing skill information according to a third embodiment.
[0012] [Description of Embodiments of the Present Disclosure] First, embodiments of the present disclosure will be listed and described.
[0013] [1] A program development support system comprising: a storage unit that stores jobs for testing source code committed to a source code management system; an execution unit that executes the jobs stored in the storage unit; a level information management unit that manages level information indicating the skill level of each developer of the source code; and a priority determination unit that determines the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit, wherein the execution unit prioritizes the execution of the jobs with higher priorities determined by the priority determination unit.
[0014] The incidence of bugs varies depending on the skill level of the developer. The program development support system determines the priority of jobs based on the skill level of the developer, enabling efficient bug detection.
[0015] [2] The program development support system according to [1], wherein the priority determination unit determines the priority such that the job with a lower developer skill level has a higher priority.
[0016] Developers with low skill levels are expected to have a high rate of bug occurrence. The program development support system described above can efficiently detect bugs by increasing the priority of the jobs of developers who are expected to have a high rate of bug occurrence.
[0017] [3] The program development support system according to [1] or [2], further comprising a creation unit that creates the level information based on the result of the execution unit executing the job.
[0018] The program development support system can create level information based on the results of job execution, so the program development support system does not need to prepare level information in advance.
[0019] [4] The program development support system according to [1] or [2], wherein the level information management unit includes an update unit that updates the level information based on the result of the execution unit executing the job.
[0020] The program development support system can update the level information based on the results of job execution, allowing the program development support system to respond to changes in the skill level of developers.
[0021] [5] The program development support system described in [1] or [2], wherein the level information management unit manages the level information indicating the skill level of each developer for each technical field, and the priority determination unit determines the priority of the job based on the technical field corresponding to the source code and the level information.
[0022] The skill level of developers may differ depending on the technical field, and the program development support system can determine the priority of jobs taking into account the skill level according to the technical field.
[0023] [6] The program development support system described in [5], wherein the technical fields defined by the level information include multiple technical fields that may overlap with the committed source code, and the priority determination unit determines the priority of the job corresponding to the source code that overlaps with multiple technical fields based on each technical field corresponding to the source code and the level information.
[0024] The program development support system can determine the priority of jobs corresponding to source code that overlaps multiple technical fields, taking into account the skill level according to each technical field.
[0025] [7] The program development support system described in [5], wherein the priority determination unit, for the job corresponding to the source code that overlaps multiple technical fields, identifies a technical field priority from the skill level of each technical field corresponding to the source code, and determines the priority using an average value of the technical field priorities.
[0026] The above-mentioned program development support system makes it easy to avoid a situation where one job is given priority in a situation where there is a mixture of jobs corresponding to source code that overlaps with multiple technical fields and jobs corresponding to source code that only corresponds to one technical field.
[0027] [8] The program development support system according to [1] or [2], wherein the priority determination unit determines the priority based on the level information and the due date of the source code.
[0028] The program development support system can determine the priority of a job by taking into account not only the skill level of the developer but also the deadline for the source code.
[0029] [Details of the embodiments of the present disclosure] <First embodiment> 1-1. Configuration of program development support system 1 Fig. 1 shows a program development support system 1. The program development support system 1 is shared by multiple developers.
[0030] The program development support system 1 includes a source code management system 10, an execution system 20, a server 30, an information processing device 40, a node 50, and hardware 60. The source code management system 10, the execution system 20, the server 30, the information processing device 40, and the node 50 can communicate with each other via a network such as the Internet.
[0031] The source code management system 10 functions as a repository for managing source code, version information, etc. Source code created by developers is committed to the source code management system 10.
[0032] The execution system 20 functions as a CI / CD tool that continuously tests source code committed to the source code management system 10. CI stands for Continuous Integration. CD stands for Continuous Delivery. The execution system 20 includes a storage unit 21 and an execution unit 22. The storage unit 21 stores jobs that test source code committed to the source code management system 10. Jobs include not only tests but also builds and deploys. The execution unit 22 executes the jobs stored in the storage unit 21. When executing a job, the execution unit 22 controls hardware 60 via a node 50 (e.g., a personal computer). This enables testing using the hardware 60. Multiple types of hardware 60 may be provided. The hardware 60 is, for example, a circuit board or a measurement jig.
[0033] The server 30 includes a ticket information management unit 31 and a level information management unit 32. The ticket information management unit 31 manages the contents of program creation, program modification, etc. as ticket information. The ticket information includes information such as ticket identification information (e.g., ticket number), ticket title, content description, developer, development team, and source code due date. The level information management unit 32 manages level information indicating the skill level of each source code developer. The level information is stored in advance in the level information management unit 32.
[0034] The information processing device 40 includes a priority determination unit 41. The priority determination unit 41 determines the priority of the job stored in the storage unit 21 based on the level information managed by the level information management unit 32.
[0035] The priority determination unit 41 may determine priorities such that jobs with lower developer skill levels have higher priorities. For example, in the example shown in FIG. 2 , the skill levels of developers A, B, and C are 3, 2, and 1, respectively. The higher the developer's skill level, the larger the skill level value. The priority determination unit 41 stores a table (see FIG. 3 ) showing the correspondence between skill levels and priorities. In the example shown in FIG. 3 , priorities 1, 2, and 3 are associated with skill levels 3, 2, and 1, respectively. The priority determination unit 41 determines the priority of jobs corresponding to source code created by the developers based on the developer's skill level and the table. Specifically, the priority determination unit 41 determines the priority of jobs of developer A, whose skill level is 3, to be 1, the priority of jobs of developer B, whose skill level is 2, to be 2, and the priority of jobs of developer C, whose skill level is 1, to be 3. In other words, the job priorities of developers C, B, and A increase in order.
[0036] The priority determination unit 41 may determine the priority based on the level information and the due date of the source code.
[0037] The priority determination unit 41 may determine the first provisional priority of a job based on the level information. The priority determination unit 41 may determine the first provisional priority such that the lower the skill level of the developer, the higher the first provisional priority of the job. The priority determination unit 41 may determine the first provisional priority using the table shown in FIG. 3 , similar to the priority determination method described above. In this case, the first provisional priorities of the jobs of developers A, B, and C are 1, 2, and 3, respectively.
[0038] The priority determination unit 41 may determine the second provisional priority of a job based on the due date of the source code. The priority determination unit 41 may determine the second provisional priority such that the job of source code with a shorter due date has a higher second provisional priority. The second provisional priority may be, for example, the reciprocal of the number of remaining months. For example, suppose the due dates of the source code created by developers A, B, and C are 3 months, 2 months, and 1 month away, respectively. In this case, the second provisional priorities of the jobs of developers A, B, and C are 1 / 3, 2 / 3, and 1, respectively.
[0039] The priority determination unit 41 may determine the priority based on the first tentative priority and the second tentative priority. For example, the priority determination unit 41 may determine the priority as a value obtained by multiplying the first tentative priority by the second tentative priority. In the above example, the job priorities of developers A, B, and C are 1 / 3 (= 1 × (1 / 3)), 4 / 3 (= 2 × (2 / 3)), and 3 (= 3 × 1), respectively. In other words, the job priorities of developers C, B, and A increase in order.
[0040] The storage unit 21 described above creates a job when it receives a commit notification from the source code management system 10. The storage unit 21 stores the created jobs in the queue 21A in descending order of priority (see FIG. 4 ). For example, in the example of FIG. 4 , as shown on the left, jobs 1, 2, and 3 of developer A are stored in the queue 21A. Job 1 of developer A is currently running. Jobs waiting to be executed are arranged in the order of execution after job 1, which is currently running. In this situation, suppose jobs 1 and 2 of developer B and jobs 1 and 2 of developer C are created. In this case, jobs with higher priority are given priority, excluding the currently running job. Therefore, if the priorities of developers C, B, and A are highest, the jobs are arranged in the order shown on the right in FIG. 4 . In other words, after job 1 of developer A, which is currently running, jobs 1 and 2 of developer C, jobs 1 and 2 of developer B, and jobs 1 and 2 of developer A are arranged in that order.
[0041] The execution unit 22 executes the jobs stored in the storage unit 21 in the order in which they are arranged in the queue 21A. As a result, the execution unit 22 executes jobs with higher priorities determined by the priority determination unit 41 with priority.
[0042] 1-2. Processing Flow of Program Development Support System 1 The program development support system 1 performs the processing shown in FIG. 5. A developer creates source code corresponding to a ticket managed by the ticket information management unit 31. At T10 in FIG. 5, the developer commits the created source code to the source code management system 10. Along with the source code, identification information of the ticket corresponding to the source code (e.g., ticket number) is also committed to the source code management system 10. When the source code is committed, the source code management system 10 sends a commit notification to the execution system 20 at T11. Upon receiving the commit notification, the execution system 20 obtains commit information from the source code management system 10. The commit information includes source code identification information (e.g., file name), test cases, ticket identification information, etc.
[0043] After acquiring the commit information, the execution system 20 transmits the ticket identification information (e.g., ticket number) included in the commit information to the information processing device 40 at T12. When the information processing device 40 receives the ticket identification information, it requests information corresponding to the ticket identification information from the server 30 at T13. Specifically, the information processing device 40 requests information necessary to determine the priority from the server 30. The information necessary to determine the priority includes level information indicating the skill level of the developer, the due date of the source code, etc. The server 30 transmits the requested information to the information processing device 40 at T14.
[0044] After acquiring the information necessary for determining the priority, the information processing device 40 determines the priority based on the acquired information at T15. The specific method for determining the priority is as described above. At T16, the information processing device 40 transmits the determined priority to the execution system 20.
[0045] Upon receiving the priority, the execution system 20 creates a job in T17. Then, the execution system 20 sorts the jobs based on the received priority in T18. In T19, the execution system 20 executes the sorted jobs in order.
[0046] 1-3. Examples of Functions and Effects of Program Development Support System 1 The rate at which bugs occur varies depending on the skill level of the developer. The program development support system 1 determines the priority of jobs based on the skill level of the developer, making it possible to efficiently detect bugs.
[0047] Developers with low skill levels are expected to have a high rate of bug occurrence. The program development support system 1 can efficiently detect bugs by increasing the priority of jobs of developers who are expected to have a high rate of bug occurrence.
[0048] The program development support system 1 can determine the priority of a job taking into account not only the skill level of the developer but also the deadline for the source code.
[0049] Second Embodiment In the first embodiment, an example in which level information is stored in advance in an information processing device is described. In the second embodiment, an example in which the information processing device creates and updates level information is described. Note that in the second embodiment, the same components as in the first embodiment are denoted by the same reference numerals, and detailed description thereof will be omitted.
[0050] 2-1. Configuration of Program Development Support System 201 As shown in FIG. 6, the program development support system 201 of the second embodiment includes a source code management system 10, an execution system 20, a server 30, an information processing device 240, a node 50, and hardware 60.
[0051] The information processing device 240 includes a priority determination unit 41 , a creation unit 42 , and an update unit 43 .
[0052] The creation unit 42 creates level information based on the results of job execution by the execution unit 22. The "job execution results" include "success" and "failure." The creation unit 42 may create a skill level for each developer based on the results of a predetermined number of attempts (e.g., 10 attempts) for each developer. For example, the creation unit 42 may assign a skill level of 3 to a developer who has succeeded 10 times, a skill level of 2 to a developer who has succeeded 8 to 9 times, and a skill level of 1 to a developer who has succeeded 7 or fewer times. The predetermined number of attempts may be 1.
[0053] The update unit 43 updates the level information based on the results of job execution by the execution unit 22. The "job execution results" include "success" and "failure." The update unit 43 may update the skill level of each developer based on the results of a predetermined number of attempts (e.g., 10 attempts) for each developer. The predetermined number of attempts may be 1 attempt. For example, the creation unit 42 may assign a skill level of 3 to a developer who succeeds 10 times, a skill level of 2 to a developer who succeeds 8 to 9 times, and a skill level of 1 to a developer who succeeds 7 or fewer times. Alternatively, the update unit 43 may increase the skill level of a developer who has succeeded a predetermined number of times or more and decrease the skill level of a developer who has failed a predetermined number of times or more. The amount of increase in skill level may vary depending on the number of successes. The amount of decrease in skill level may vary depending on the number of failures.
[0054] 2-2. Processing flow of the program development support system 201 The program development support system 201 performs the processing shown in FIG. 7. The processing from T10 to T19 in FIG. 7 is the same as that described in the first embodiment. Every time the execution system 20 executes a job, it transmits the execution results of the job to the information processing device 40 in T20. The information processing device 40 receives the execution results of the job and creates or updates level information based on the received execution results in T21. The specific creation and update methods are as described above. When the information processing device 40 creates or updates level information, it transmits the level information to the server 30. This updates the level information on the server 30.
[0055] 2-3. Examples of Functions and Effects of the Program Development Support System 201 The program development support system 201 can create level information based on the results of executing a job. Therefore, the program development support system 201 does not need to prepare level information in advance.
[0056] The program development support system 201 can update the level information based on the results of job execution, thereby enabling the program development support system 201 to respond to changes in the skill level of developers.
[0057] Third Embodiment The skill level of a developer may differ depending on the technical field. In the third embodiment, an example that can handle such a case will be described. Note that in the third embodiment, the same components as those in the first embodiment are denoted by the same reference numerals, and detailed description thereof will be omitted.
[0058] In the third embodiment, the level information management unit 32 manages level information indicating the skill level of each developer for each technical field. Fig. 8 shows an example of the skill information in the third embodiment. The technical fields defined by the level information include, for example, programming languages such as Python and C++, and troubleshooting.
[0059] The priority determination unit 41 determines the priority of a job based on the technical field and level information corresponding to the source code. Information indicating the technical field is included, for example, in ticket information. In this case, the priority determination unit 41 identifies the developer and technical field from the ticket information acquired in T14 of FIG. 5, and determines the developer's skill level in that technical field based on the identified technical field, developer, and level information. For example, if the developer is Developer A and the technical field is Python, the priority determination unit 41 determines the skill level as 3. Then, the priority determination unit 41 determines the priority of the job based on the identified skill level.
[0060] In the example shown in FIG. 8 , the technical fields defined by the level information include multiple technical fields that may overlap with the committed source code. For example, if the programming language is C++ and the source code for troubleshooting overlaps with two technical fields, C++ and troubleshooting, the priority determination unit 41 determines the priority of the job based on the level information and each technical field corresponding to the source code. For example, for a job corresponding to source code that overlaps with multiple technical fields, the priority determination unit 41 identifies technical field priorities based on the skill levels of each technical field corresponding to the source code and determines the priority using the average value of the technical field priorities. The priority determination unit 41 may determine the average value of the technical field priorities as the priority, or may determine the average value of the technical field priorities as the first tentative priority described in the first embodiment.
[0061] The program development support system 1 of the third embodiment can determine the priority of a job taking into account the skill level according to the technical field.
[0062] The program development support system 1 of the third embodiment can determine the priority of jobs corresponding to source code that overlaps multiple technical fields, taking into account the skill level corresponding to each technical field.
[0063] The program development support system 1 of the third embodiment makes it easy to avoid a situation where one job is given priority in a situation where there is a mixture of jobs corresponding to source code that overlaps with multiple technical fields and jobs corresponding to source code that only corresponds to one technical field.
[0064] <Other Embodiments> The present disclosure is not limited to the embodiments described above and in the drawings. For example, any combination of features of the above-described or below-described embodiments is possible within a range that does not contradict. Furthermore, any feature of the above-described or below-described embodiments may be omitted unless explicitly stated as essential. Furthermore, the above-described embodiments may be modified as follows.
[0065] In the above embodiments, an example has been described in which the information processing device 40 acquires all of the information for determining the priority from the server 30. In contrast, if some or all of the information for determining the priority is managed by the source code management system 10, the information processing device 40 may acquire some or all of the information for determining the priority from the source code management system 10 directly or via the execution system 20.
[0066] In each of the above embodiments, the ticket information management unit 31 and the level information management unit 32 are configured to be provided on the same server, but they may be configured to be provided on separate servers.
[0067] The level information in the third embodiment may be created or updated as described in the second embodiment.
[0068] The level information stored in advance as in the first embodiment may be updated as in the second embodiment.
[0069] The embodiments disclosed herein should be considered to be illustrative in all respects and not restrictive. The scope of the present invention is not limited to the embodiments disclosed herein, but is defined by the claims, and is intended to include all modifications within the meaning and scope of the claims.
[0070] DESCRIPTION OF SYMBOLS 1...Program development support system 10...Source code management system 20...Execution system 21...Storage unit 21A...Queue 22...Execution unit 30...Server 31...Ticket information management unit 32...Level information management unit 40...Information processing device 41...Priority determination unit 42...Creation unit 43...Update unit 50...Node 60...Hardware 201...Program development support system 240...Information processing device
Claims
1. A program development support system comprising: a storage unit that stores jobs for testing source code committed to a source code management system; an execution unit that executes the jobs stored in the storage unit; a level information management unit that manages level information indicating the skill level of each developer of the source code; and a priority determination unit that determines the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit, wherein the execution unit gives priority to and executes the jobs with higher priorities as determined by the priority determination unit.
2. The program development support system according to claim 1, wherein said priority determination unit determines said priorities such that the lower the developer's skill level is, the higher the priority of said job.
3. The program development support system according to claim 1 or 2, further comprising a creation unit that creates said level information based on a result of said execution unit executing said job.
4. A program development support system according to claim 1 or claim 2, wherein said level information management section includes an update section that updates said level information based on a result of said execution section executing said job.
5. The program development support system according to claim 1 or claim 2, wherein the level information management unit manages the level information indicating the skill level of each developer for each technical field, and the priority determination unit determines the priority of the job based on the technical field corresponding to the source code and the level information.
6. The program development support system described in claim 5, wherein the technical fields defined by the level information include multiple technical fields that may overlap with the committed source code, and the priority determination unit determines the priority of the job corresponding to the source code where multiple technical fields overlap with each other based on each technical field corresponding to the source code and the level information.
7. The program development support system of claim 5, wherein the priority determination unit, for a job corresponding to source code that overlaps multiple technical fields, identifies a technical field priority from the skill level of each technical field corresponding to the source code, and determines the priority using an average value of the technical field priorities.
8. The program development support system according to claim 1 or 2, wherein the priority determination unit determines the priority based on the level information and the due date of the source code.
9. A program development support method comprising: a step of storing in a storage unit that stores jobs for testing source code committed to a source code management device; a step of executing the jobs stored in the storage unit; and a step of utilizing a level information management unit that manages level information indicating the skill level of each developer of the source code, and determining by a priority determination unit the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit, wherein the jobs with higher priorities determined by the priority determination unit are executed preferentially.
10. An information processing device included in a program development support system having a storage unit that stores jobs for testing source code committed to a source code management device, an execution unit that executes the jobs stored in the storage unit in order of priority, and a level information management unit that manages level information indicating the skill level of each developer of the source code, and the information processing device also has a priority determination unit that determines the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit.
11. A program for causing a computer of an information processing device included in a program development support system having a storage unit that stores jobs for testing source code committed to a source code management device, an execution unit that executes the jobs stored in the storage unit in order of priority, and a level information management unit that manages level information indicating the skill level of each developer of the source code, to execute the program to determine the priority of the jobs stored in the storage unit based on the level information managed by the level information management unit.
Citation Information
Patent Citations
Test item inportance evaluating device
JP1994131214A
Test case selection method and selection system
JP2010134643A
Prioritized test scenario generation device, method for generating prioritized test scenario, and program
JP2017033158A
Program development assistance system and program development assistance method
WO2021131435A1