Software development system and job execution order management method

The proposed software development system and job execution order management method address the inefficiencies in current CI tools by calculating job priorities and execution orders based on estimated execution times and user-defined parameters, resulting in improved efficiency and reduced developer burden in continuous integration.

JP2025068433APending Publication Date: 2025-04-28ASTEMO LTD
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
JP2023178360
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2023-10-16
Publication Date
2025-04-28

AI Technical Summary

Technical Problem

Current continuous integration (CI) tools cannot effectively manage the execution order of jobs, including builds, tests, and analysis, leading to inefficiencies and increased burdens on developers due to the inability to reflect job priorities and respond to emergencies.

Method used

A software development system and job execution order management method that includes a version control server, a job execution order management system with a virtual queue, a priority calculation unit, and an execution order calculation unit, which calculates job priorities and execution orders based on estimated execution times and user-defined parameters.

Benefits of technology

This solution enables efficient management of job execution orders in continuous integration, reducing developer burden and improving software development quality by ensuring optimal job execution based on priority and execution time considerations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025068433000001_ABST
    Figure 2025068433000001_ABST
Patent Text Reader

Abstract

To provide a software development system capable of efficiently managing the execution order of all jobs, including build and test / analysis jobs, based on the execution time of the jobs, etc.SOLUTION: A software development system includes: a version control server for managing source code and change history of the source code; a job execution order management system for managing the execution order of jobs; and a group of job execution machines for performing processing within each job. The job execution order management system includes: a virtual queue for storing jobs in execution order; a priority calculation unit for calculating the priority of jobs; and an execution order calculation unit for calculating the execution order of jobs; and is configured to issue job execution commands according to the priority based on input user needs.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] The present invention relates to a configuration of a software development system and a development method thereof, and in particular to a technique that is effective when applied to software development using continuous integration. [Background technology]

[0002] In recent years, in various fields, the number of functions required for software has increased, and the scale of development has become huge and complicated. As a result, the burden on developers has also increased. For example, if a bug is discovered in the later stages of development and needs to be fixed, the developer will have to go back to the earlier stages of development to make the corrections, which further increases the burden on the developer.

[0003] As a result, development sites are increasingly adopting a development methodology called "Continuous Integration (CI)" in order to reduce the burden on developers and improve the quality of software development.

[0004] CI is a development method that provides a mechanism for a continuous cycle of development, testing, and release, and automatically executes build tests each time source files are changed due to frequent specification changes.

[0005] By using CI, errors can be found in the early stages of development and quickly corrected, which not only reduces lead time but also contributes to maintaining a certain level of quality.

[0006] Here, the builds and tests that make up CI are called "jobs." Additionally, the tools used to run CI are called "CI tools." Additionally, the PC that performs the actual processing is called the "job execution machine."

[0007] Background of the present technical field includes, for example, a technology such as that described in Patent Document 1. Patent Document 1 discloses "a software build system and a software build method for giving priority to the development of high-priority software." [Prior art documents] [Patent documents]

[0008] [Patent Document 1] JP 2017-215762 A Summary of the Invention [Problem to be solved by the invention]

[0009] By the way, CI tools do not allow the order of the job queue to be manipulated, so jobs are executed in the order in which they are entered into the job queue.

[0010] As a result, the priority of jobs cannot be reflected, and there are problems with dealing with emergencies such as monopolizing a job execution machine with jobs that take a long time to execute, or executing a high-priority job first.

[0011] In the above-mentioned Patent Document 1, the developer and the test executor set build priorities for the build jobs, and manage the execution order of the jobs based on the set priorities.

[0012] However, since this only applies to build jobs, and the order in which jobs are processed is determined solely by the priority set by the user, even if a job has a short processing time and will be completed quickly, if it is set to a low priority, it may be postponed, making it necessary to wait for a job that takes a long time to process to finish.

[0013] Therefore, an object of the present invention is to provide a software development system and a job execution order management method that can efficiently manage the execution order of all jobs, including builds and tests / analyses, taking into account the job execution time, etc. [Means for solving the problem]

[0014] In order to solve the above problems, the present invention comprises a version management server that manages source code and the change history of the source code, a job execution order management system that manages the execution order of jobs, and a group of job execution machines that perform processing within a job, wherein the job execution order management system has a virtual queue that stores jobs in execution order, a priority calculation unit that calculates the priority of the jobs, and an execution order calculation unit that calculates the execution order of the jobs, and is characterized in that it issues job execution commands in accordance with priorities based on input user needs.

[0015] The present invention is also characterized by including the steps of: (a) inputting a job start instruction; (b) acquiring file update information and executed job information based on the input in step (a); (c) calculating an estimated job execution time based on the file update information and executed job information acquired in step (b); (d) calculating a job priority based on the estimated job execution time calculated in step (c); (e) calculating a job execution order based on the job priority calculated in step (d); and (f) outputting a job execution command based on the job execution order calculated in step (e). Effect of the Invention

[0016] According to the present invention, it is possible to realize a software development system and a job execution order management method that can efficiently manage the execution order of all jobs, including builds and tests / analyses, taking into account the execution time of the jobs, etc.

[0017] This makes it possible to manage the optimal job execution order during continuous integration, reducing the burden on developers and contributing to improving the quality of software development.

[0018] Problems, configurations and effects other than those described above will become apparent from the following description of the embodiments. [Brief description of the drawings]

[0019] [Figure 1] 1 is a diagram showing a schematic configuration of a software development system according to a first embodiment of the present invention. [Diagram 2] 1. FIG. 4 is a diagram showing an example of an execution order calculation performed in the execution order calculation unit 80 of FIG. [Diagram 3] FIG. 11 is a diagram showing an example of a priority determination factor for determining the priority of a job. [Figure 4A] FIG. 2 is a diagram showing a process flow in the software development system of FIG. [Figure 4B] FIG. 4B is a diagram showing a detailed flow of the process (1) in FIG. 4A. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0020] Hereinafter, an embodiment of the present invention will be described with reference to the drawings. In the drawings, the same components are designated by the same reference numerals, and detailed description of overlapping parts will be omitted. EXAMPLES

[0021] A software development system and a job execution order management method according to a first embodiment of the present invention will be described with reference to FIGS. 1 to 4B.

[0022] Fig. 1 is a diagram showing a schematic configuration of a software development system according to the present embodiment. Fig. 2 is a diagram showing an example of execution order calculation performed by the execution order calculation unit 80 in Fig. 1. Fig. 3 is a diagram showing an example of priority determination factors for determining the priority of jobs. Fig. 4A is a diagram showing a process flow in the software development system in Fig. 1, and Fig. 4B is a diagram showing a detailed flow of process (1) in Fig. 4A.

[0023] As shown in FIG. 1, the software development system of this embodiment mainly comprises a version management server 30 which manages the configuration of files, a job execution machine group 200 having a plurality of machines which calculates and determines the order in which jobs are executed and processes the jobs, and a job execution order management system 50 which requests the job execution machine group 200 to execute jobs.

[0024] The version control server 30 has a function for managing the configuration of files, and includes a branch 32 for managing files, a repository 31 for managing multiple branches, a job queue 35 for managing the order of job execution, and a CI tool 34 having a CI script group 36 of execution scripts. The branch 32 manages a source file group 33 having program source files. In other words, the version control server 30 manages source code and the change history of the source code.

[0025] The job execution order management system 50 comprises a job management device 51 which manages jobs, a virtual queue 52 which manages the order of job execution, an estimated execution time calculation unit 60 which calculates an estimated execution time of a job, a priority calculation unit 70 which calculates the priority of a job, an execution order calculation unit 80 which calculates the order of job execution, and a job execution machine group monitoring unit 90 which monitors the status of the job execution machine group 200.

[0026] The virtual queue 52 corresponds to the job execution machines 211 to 213, and has jobs 53 to 55 to be executed by each of the job execution machines 211 to 213. The virtual queue 52 stores the jobs in the order of execution.

[0027] It is also possible to set in the job execution order management system 50 the same number of virtual queues 52 as the number of job executing machines constituting the job executing machine group 200. Furthermore, when one job corresponds to multiple job executing machines constituting the job executing machine group 200, the job may be stored in multiple virtual queues 52.

[0028] The job execution machine group 200 is made up of job execution machines 211 to 213 that execute jobs.

[0029] A user 1 transmits a job start instruction 20, which is a job execution request, to a version management server 30 via a user terminal 2. The version management server 30 transmits file update information 40 and executed job information 41 to a job execution order management system 50. The file update information 40 includes past update information of a source file group 33, and the executed job information 41 includes the job start instruction 20 and a CI script group 36.

[0030] When the job execution order management system 50 receives the file update information 40 and the executed job information 41, it sends an execution time estimation request 61 from the job management device 51 to the estimated execution time calculation unit 60. The execution time estimation request 61 includes the executed job information 41 and job information in the virtual queue 52.

[0031] The estimated execution time calculation unit 60 calculates the estimated execution time of the received execution job information 41. Then, the estimated execution time 62 is sent to the priority calculation unit 70, which calculates the priority of the job. After that, the job priority 71 is sent to the execution order calculation unit 80, which determines the execution order of the jobs in conjunction with the job information in the virtual queue 52. The job execution order determined by the execution order calculation unit 80 is sent to the job management device 51 as an execution order determination result 81.

[0032] The job execution order management system 50 monitors the job execution machine group 200 using a job execution machine group monitoring unit 90, and sends job execution machine group information 91 to the job management device 51. As soon as the execution state of the monitored machine becomes idle, it receives next execution job information 56 from the virtual queue 52 and sends a job execution request 110, an input file 111, and prioritized execution job information 112 to the job execution machine group 200.

[0033] After completing the job execution, the job execution machine group 200 sends the job execution result 100 to the version management server 30. Note that the job execution result 100 may be sent to the job execution order management system 50 and then sent to the version management server 30 via the job execution order management system 50.

[0034] The following describes an embodiment of a method for managing the execution order of a plurality of jobs.

[0035] An example of the execution order calculation performed by the execution order calculation unit 80 will be described with reference to FIG.

[0036] The job execution time 401 , whether the job can be completed by a predetermined time 405 , and the estimated job completion time 406 are calculated by the estimated execution time calculation unit 60 and sent to the priority calculation unit 70 as the estimated execution time 62 .

[0037] User-defined parameters etc. 407, desired job completion time 408, and emergency information 409 are calculated as execution job information 41 by the priority calculation unit 70, and associated file size 402, source code length, file size 403, and difference from previous execution 404 are sent to the execution order calculation unit 80 as job priority 71. Associated file size 402 may be the number of associated files. Also, difference from previous execution 404 may be the number of target files for the job to be executed this time.

[0038] The execution order calculation unit 80 determines the execution order by weighting the received information. For example, if the priority is determined by weighting the desired job completion time 408, the possibility of job completion by a given time 405, and the job execution time 401 in that order, the execution order will be job 3 → job 1 → job 2 → job 4.

[0039] For the desired completion time 408 of the job with the highest weighting, job 3 needs to be completed earlier than job 1, so the order is job 3 → job 1. For the job completion possibility by the specified time 405 of the next highest weighting, jobs 1 and 3 can be completed by the specified time, so they have higher priority than jobs 2 and 4. Furthermore, for the execution time 401 of the job with the next highest weighting, the execution time of job 2 is shorter than the execution time of job 4, so the order is job 2 → job 4. In other words, if the execution time of a job is short, the priority of that job is increased. As a result, the execution order is job 3 → job 1 → job 2 → job 4.

[0040] As another example, if the priority is determined by setting weights in the order of urgency information 409 and source code length 403, the execution order will be job 1→job 2→job 3→job 4.

[0041] The priority determination factors for determining the priority of a job will be described with reference to Fig. 3. Each factor in Fig. 3 corresponds to each factor with the same reference numeral in Fig. 2.

[0042] The execution time 401 of the job is calculated by the estimated execution time calculation unit 60. At that time, the calculation is based on the size 402 of the related files (branches), the length of the source code, the size 403 of the files, and the difference 404 from the previous execution.

[0043] The "Job completion by specified time" 405 determines whether the job can be completed by the specified time based on the estimated execution time of the job calculated by the estimated execution time calculation unit 60, the current time, and the end time of the currently executing job.

[0044] The estimated job completion time 406 determines when the job will end based on the estimated job execution time calculated by the estimated execution time calculation unit 60, the current time, and the end time of the job currently being executed.

[0045] User-defined parameters 407, desired time of job completion 408, and emergency information 409 such as customer response are sent as execution job information 41 when the job is executed.

[0046] The priority of an uncompleted job may be determined based on the actual completion time of a completed job.

[0047] The process flow in the software development system of FIG. 1 will be described with reference to FIG. 4A and FIG. 4B.

[0048] As shown in FIG. 4A, a user 1 sends a job start instruction 20 to a version management server 30 .

[0049] The version management server 30 sends file update information 40 and executed job information 41 to the job execution order management system 50 .

[0050] 4B , in the job execution order management system 50, the job management device 51 sends an execution time estimation request 61 to the estimated execution time calculation unit 60. The estimated execution time calculation unit 60 calculates an estimated execution time 62 and sends it to the priority calculation unit 70. The priority calculation unit 70 calculates a job priority 71 and sends it to the execution order calculation unit 80. The execution order calculation unit 80 calculates the execution order and sends an execution order determination result 81 to the job management device 51.

[0051] The job execution machine group monitoring unit 90 in the job execution order management system 50 monitors the status of each job execution machine in the job execution machine group 200, and sends job execution machine group information 91 to the job management device 51. When the execution status of a machine being monitored becomes idle, the job management device 51 retrieves next execution job information 56 from the virtual queue 52.

[0052] 4A, the job execution order management system 50 sends a job execution request 110, an input file 111, and prioritized execution job information 112 to the job execution machine group 200. After completing the job execution, the job execution machine group 200 sends a job execution result 100 to the version management server 30. At this time, the job execution result 100 may be sent to the version management server 30 via the job execution order management system 50.

[0053] As described above, in the present invention, in addition to the priority defined by the user, the execution order of jobs is managed based on the execution time of a job, which is based on the size of related files and the length of source code, the expected completion time of a job, etc.

[0054] A job management device is provided for managing the execution order and monitoring the job execution machines, and the execution order is managed using a virtual queue linked to each job execution machine, and when the job execution machine becomes available, an execution command for the top job in the virtual queue is sent.

[0055] In addition, each time a job execution request is received, the job is stored in a virtual queue taking into consideration the optimal execution order, and an execution command is issued from the job execution order management system.

[0056] When processing is performed in CI, the execution time of the job is calculated and the job priority is determined in advance based on parameters such as user-defined priority, making it possible to manage the optimal job execution order.

[0057] This allows jobs to be executed in the optimal order during continuous integration, rather than in the order in which the execution requests were sent.

[0058] The present invention is not limited to the above-described embodiment, but includes various modified examples. For example, the above-described embodiment has been described in detail to clearly explain the present invention, and is not necessarily limited to those including all of the configurations described. It is also possible to replace a part of the configuration of one embodiment with the configuration of another embodiment, and it is also possible to add the configuration of another embodiment to the configuration of one embodiment. It is also possible to add, delete, or replace a part of the configuration of each embodiment with another configuration. [Explanation of symbols]

[0059] 1. User 2. User terminal 20...Job start instruction 30…Version control server 31…Repository 32…Brunch 33...Source files 34…CI tools 35…Job queue 36…CI scripts 40...File update information 41...Job execution information 50...Job execution order management system 51...Job management device 52…Virtual Queue 53…Job 1 54…Job 2 55…Job N 56…Next execution job information 60...Estimated execution time calculation unit 61...Execution time estimation request 62…Estimated execution time 70...Priority calculation section 71…Job priority 80... Execution order calculation unit 81...Results of execution order determination 90...Job execution machine group monitoring unit 91...Job execution machine group information 100...Job execution result 110...Job execution request 111...input file 112...Priority execution job information 200: Job execution machines 211...Job execution machine 1 212...Job execution machine 2 213...Job execution machine M 401 - Job execution time 402...The size of the associated file (branch) 403...length of source code, file size 404...Differences from previous execution (branch changes) 405...Job completion by the specified time 406 - Estimated completion time of the job 407...User-defined parameters (priority) etc. 408 - Desired time of job completion 409...Emergency information.

Claims

1. A version control server that manages source code and its revision history; a job execution order management system for managing the order of job execution; a job execution machine group for performing processing within the job; The job execution order management system includes a virtual queue for storing jobs in an execution order; a priority calculation unit that calculates the priority of a job; an execution order calculation unit that calculates an execution order of jobs; A software development system that issues job execution commands according to priorities based on input user needs.

2. 2. The software development system of claim 1, The job execution order management system is a software development system having an estimated execution time calculation unit that calculates an estimated execution time of a job.

3. 3. The software development system of claim 2, The job execution order management system is a software development system that manages the job execution order based on at least one of the execution time of a job and the expected end time of the job.

4. 3. The software development system of claim 2, The job execution order management system of the software development system increases the priority of a job when the execution time of the job is short.

5. 3. The software development system of claim 2, The job execution order management system is a software development system that determines the priority of jobs based on whether or not the jobs can be completed by a preset specified time.

6. 3. The software development system of claim 2, The job execution order management system is a software development system that determines the priority of uncompleted jobs based on the actual completion times of completed jobs.

7. 3. The software development system of claim 2, The job execution order management system is a software development system that estimates the execution time of a job based on either the number or size of related files, or the length of source code.

8. 3. The software development system of claim 2, The job execution order management system is a software development system that estimates the execution time of a job based on the difference from the previous execution time or the number of target files of the job to be executed this time.

9. 2. The software development system of claim 1, A software development system in which the priority calculation unit includes at least one of a time when job execution is completed and emergency information as priority determination factors.

10. 2. The software development system of claim 1, The execution order calculation unit of the software development system performs different weighting for each of a plurality of priority determination factors.

11. 2. The software development system of claim 1, The job execution order management system is a software development system having virtual queues the same number as the number of job execution machines that make up the job execution machine group.

12. 2. The software development system of claim 1, A software development system which stores a job in a plurality of virtual queues when the job corresponds to a plurality of job execution machines that constitute the job execution machine group.

13. 2. The software development system of claim 1, The software development system monitors the status of each of the plurality of job execution machines constituting the job execution machine group, and issues an execution command to a job execution machine whose job execution status has become idle.

14. A method for managing job execution sequences includes the following steps: (a) inputting a job start instruction; (b) acquiring file update information and execution job information based on the input of the (a) step; (c) calculating an estimated execution time of the job based on the file update information and the execution job information acquired in the (b) step; (d) calculating a priority of the job based on the estimated execution time of the job calculated in (c); (e) calculating a job execution order based on the job priorities calculated in the (d) step; (f) a step of outputting a job execution command based on the job execution order calculated in the step (e).

15. A job execution order management method according to claim 14, further comprising the steps of: The job execution order management method according to claim 1, wherein in the step (e), the job execution order is calculated based on at least one of an estimated job execution time and a predicted job end time.

Citation Information

Patent Citations

  • Build system for software and build method for software

    JP2017215762A