Migration support device, migration support method, and program
The migration support device uses a generation AI to simplify program specifications by tracing back processes, addressing the complexity issue in migrating outdated systems, thereby reducing costs and improving maintainability.
Patent Information
- Application Number
- JP2024077336
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-10
- Publication Date
- 2025-11-20
- Estimated Expiration
- 2044-05-10
AI Technical Summary
Existing systems being migrated often use outdated programs with missing or outdated documentation, leading to poor maintainability and increased complexity, which hampers productivity and competitiveness due to the need for extensive recoding and verification.
A migration support device utilizing a generation AI to derive simple and logical program specifications by tracing back processes from output to input, avoiding complex data structures and optimizing the destination program to maintain simplicity.
Prevents the destination program from becoming overly complex, reduces migration time and costs, and improves maintainability by generating clear and efficient program specifications.
Smart Images

Figure 2025171714000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a migration support device, a migration support method, and a program. [Background technology]
[0002] Migration is performed to migrate existing systems owned by businesses to another environment for the purpose of reducing running costs, etc. For example, migration is performed to migrate a system built with an architecture independently developed by a business to an open system. Patent Document 1 discloses a technology for applying a system configuration definition file created for one environment to system deployment in another environment. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] International Publication No. 2017 / 017937 Summary of the Invention [Problem to be solved by the invention]
[0004] In some cases, the source system being migrated still uses programs created nearly decades ago. In such cases, documents defining the program requirements do not exist, or even if they do exist, they often have not been updated, which tends to result in poor maintainability and productivity for the programs.
[0005] In a typical migration, the source program is recoded in a different target language to generate the target program.Then, when the same value is input to both the source and target programs, a method is used to verify that the target program operates correctly by checking whether the same value is output from both programs.
[0006] Even if the verification is successful, coding in a different language and verifying it requires a huge amount of work. Furthermore, if the source program has a unique data structure, the destination program will often be more complex than the source program in order to incorporate that unique structure. If the program becomes more complex than before the migration, maintainability will worsen, and engineers will have to focus on program maintenance, leaving them with less time to focus on product development. This results in a loss of competitiveness in an era where the speed of product development determines the fate of a company.
[0007] In view of the above-mentioned problems, the present invention aims to provide a migration support device, a migration support method, and a program that can prevent the destination program from becoming complicated when migrating a system to a different environment. [Means for solving the problem]
[0008] A migration support device according to one embodiment of the present invention comprises an acquisition unit that acquires first program information for constructing a first system, which is the source of migration, and a generation unit that inputs the first program information into a generation AI to acquire from the generation AI an algorithm that derives output from input in the first system, and generates specifications for a program for constructing a second system, which is the destination of migration, based on the acquired algorithm. [Effects of the Invention]
[0009] According to the present invention, when migrating a system to a different environment, it is possible to prevent the programs at the migration destination from becoming complicated. [Brief explanation of the drawings]
[0010] [Figure 1] 1 is a block diagram showing a configuration of a migration support system according to an embodiment. [Figure 2] FIG. 2 is a diagram for explaining a process performed by a migration support apparatus according to an embodiment. [Figure 3] FIG. 2 is a diagram for explaining a process performed by a migration support apparatus according to an embodiment. [Figure 4] 10 is a flowchart showing the flow of processing performed by the migration support apparatus according to the embodiment. [Figure 5] 10A and 10B are diagrams illustrating the effects of the embodiment. [Figure 6] FIG. 10 is a diagram for explaining conventional migration as a comparative example. DETAILED DESCRIPTION OF THE INVENTION
[0011] Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
[0012] 1 is a block diagram showing the configuration of a migration support system according to an embodiment. The migration support system 1 is a system that supports migration of an existing system owned by a business or the like to another environment. The migration support system 1 includes a migration support device 100, a migration source system information DB 200, a generation artificial intelligence (generation AI) 300, and an operation terminal 400. These are connected to each other so as to be able to communicate with each other via a network 500 such as the Internet.
[0013] The source system information DB200 is a database that stores information about the source system that is the target of migration. Information about the source system (program information) includes program source code, file definitions, JCL (Job Control Language), and various utilities. A file definition is a file that defines the data used in the system. For example, a file definition may define that data indicating the "end-of-month balance" is stored as a 10-digit number. JCL is a definition that controls the execution of programs (jobs). For example, JCL includes a job scheduler that defines when and which programs to execute. The job scheduler defines programs (jobs) to be executed on specific days, such as the end of the month or the first four business days of the month.
[0014] The generation AI 300 is an AI that learns patterns and relationships based on collected training data and generates content based on the learned content. In this embodiment, a text generation AI that generates natural language (text) as content is used as the generation AI 300. A commercial generation AI may be used as the generation AI 300. Commercial text generation AIs include GPT-4 (registered trademark), Llama2, and PaLM2. By using a commercial generation AI, preparations such as collecting training data are not required, and a system can be easily constructed. However, in this embodiment, an on-premise generation AI may be used as the generation AI 300. The on-premise generation AI here refers to a generation AI constructed using servers and network devices owned and managed by a business operator (here, the company operating the source system).
[0015] The operation terminal 400 is a communication terminal owned or used by an operator, such as a personal computer. The operator here is the operator who performs the migration.
[0016] The migration support device 100 is a computer device that generates a destination program specification by using a generation AI 300. The migration support device 100 includes a communication unit 110, a generation unit 120, and an output unit 130. The communication unit 110 communicates with the source system information DB 200, the generation AI 300, and the operation terminal 400 via a network 500. The generation unit 120 generates a destination program specification by using the generation AI 300. The output unit 130 outputs the destination program specification generated by the generation unit 120.
[0017] In this embodiment, support is provided to enable a logical and rational configuration of a destination system without inheriting the complex system configuration of the source system. Specifically, the migration support device 100 causes the generation AI 300 to read the program information of the source system and search for a process that leads from input to output in the source system. In this case, the generation AI is requested to search backward in the input direction for a corresponding process for each item of the output (final output) that is ultimately output by the source system, to associate the most upstream item input to the source system with the final output, and to perform a search that clarifies the processing process from the most upstream item to the final output.
[0018] Exploration here means determining whether the generating AI has explicitly traced back to the most upstream item the items corresponding to the items in the final output, and what calculations, conversions, and reinterpretations are being performed between those items.
[0019] By having the generation AI search in this way, this embodiment makes it possible to search for simple, clear processing that is not complicated, without being bound by the source system configuration. For example, even if the source program has a unique data structure, the generation AI can search for processing that derives output from input in the source system, regardless of that data structure. Therefore, it is possible to avoid a situation where the destination program becomes more complex than before migration, drastically reduce the source code compared to before migration, shorten the migration time, and reduce the migration costs. On the other hand, even if the generation AI derives a simple and uncomplicated process, there may be cases where only the abstract process is shown and the specific processing process is not expressed. For example, the generation AI may output a search result such as "calculate in subroutine 1," but the specific processing of "subroutine 1" is not shown. In such cases, at first glance, the output search result may appear to be simple and uncomplicated, and the search by the generation AI may appear to have been performed correctly. However, in reality, the search by the generation AI is likely not converged. To address this issue, the migration support device 100 adjusts the search results by the generation AI so that they are not too complex and so that specific processing is derived. For example, if a process whose complexity is less than a threshold is derived from the generation AI, the migration support apparatus 100 replaces the derived process with specific source code. Complexity is an index that indicates the degree of complexity of a process, and is, for example, the number of signal processes executed to realize a certain process, such as processes that access data, processes that perform arithmetic operations or statistical processing, processes according to branches, etc. In other words, the greater the number of times that data is accessed, the greater the number of times that arithmetic operations or statistical processing are performed, the greater the number of branches, etc., the more complex the process. The replacement with specific source code may be performed using an API (Application Programming Interface), or by requesting a generation AI to create specific source code. Then, based on the number of lines of source code and the number of calculations, the search result is determined to be one that executes specific signal processing. This allows the migration support device 100 to adopt, as the destination program specification, a program whose complexity is below a threshold and which indicates specific processing. In the following description, a search result in which the complexity is less than the threshold and in which a specific process is indicated will be referred to as an "expected process."
[0020] In this embodiment, verification is performed for each process (process that leads from input to output) that the generation AI is made to search for, and the verification does not focus on what kind of processing is performed in the process from input to output, but on whether the output for the input matches before migration. This makes it possible to improve the accuracy and efficiency of verification.
[0021] Furthermore, in this embodiment, preprocessing may be performed to prevent the destination system from becoming too complex. For example, rather than targeting all program information held by the source system for migration, it is better to identify necessary elements and target only program information related to the identified elements for migration. Based on this concept, for example, in this embodiment, preprocessing is performed to organize batch processes running in the destination system and target program information executed in the batch processes for migration. This preprocessing may be performed using a generation AI, automatically extracted from batch process logs, or manually by a worker. This makes it possible to avoid targeting program information related to processes that have not been used, such as test programs or processes that were previously executed but are no longer executed, from being targeted for migration.
[0022] Here, various constraints may be imposed on the generation AI 300, such as a limit on the number of characters in the prompt to be input to the generation AI. If such constraints are imposed, it becomes difficult to have the generation AI load all of the program information to be migrated at once. If the generation AI cannot load all of the program information to be migrated, the generation AI will not be able to correctly identify the correspondence between input and output in the source system, and it will be impossible to output search results, or it will be difficult to output the correct algorithm as the search result.
[0023] To address this issue, in this embodiment, program information (second program information) corresponding to the processing performed in the source system is extracted from the program information (first program information) to be migrated. The scope of the second program information extracted from the first program information can include, for example, subsystems, task units, job blocks, related job streams tracing back from output, and job steps. Here, a subsystem corresponds to an individual system included in the source system. A task unit refers to a task performed in the source system, such as report output, screen display, or the generation of an IF (interface) file used for linking with an external system. A job block is a series of programs executed by JCL and a set of data used in that series of programs. A job block can be, for example, a set of programs executed on a processing deadline, such as daily, monthly, or on a specific day (e.g., the fourth business day at the beginning of the month). A related job stream is a set of programs that focuses on one output item and consists of the output item, the process for outputting it, and the input data used in that process. A job step is a series of programs used to derive output from input, obtained by tracing back from the output of a job stream to the input data in an upstream (input) direction. Job steps include programs that divide a series of programs included in the related job stream into individual programs, and data sets that are referenced or output as the programs are executed. Here, the largest processing unit is the system, followed by smaller and smaller units such as subsystems, business units, job blocks, related job streams tracing back from output, and job steps. It is more efficient to have the generation AI search larger processing units, but on the other hand, the larger the processing unit, the more likely it is that it will exceed the character limit of the prompt entered into the generation AI, and the more likely the search results will not represent the "expected processing." Therefore, in this embodiment, first, the generation AI performs a search for the largest possible processing unit in the source system, and if the search result does not result in "expected processing," the processing unit is reduced and an attempt is made to perform a search so that the search result in units of related job streams will result in "expected processing." Then, only if the related job stream does not result in "expected processing" because it exceeds the input limit given to the generation AI, the related job stream is divided into job steps and the generation AI is made to perform a search in units of job steps.
[0024] An image of the process of dividing related job streams into job steps will be explained using Figures 2 and 3. Figures 2 and 3 are diagrams for explaining the process performed by the migration support apparatus according to the embodiment.
[0025] Figure 2 shows a schematic representation of the program information used in the source system. In Figure 2, processing is executed from left to right when viewed from the front. Each of the following in Figure 2 are examples of program information used in the source system: "MF data," "DUMP," "PS file," "batch AP," "temporary file," "SORT," "MERGE," "subsequent data," "reference data," "online AP," "report," "IF file," and "screen."
[0026] "MF data" is data used for input in the source system and serves as master data that forms the basis of processing. "DUMP" is a process that outputs the contents of a file or memory to a disk or other location in advance for debugging or data recovery. "PS file" is a file generated as an intermediate file during processing. "Batch AP" is an application program that executes batch processing. "Temporary file" is a file that is temporarily generated. "SORT" is a process that sorts data according to specific rules, such as sorting numbers from largest to smallest. "MERGE" is a process that merges and consolidates multiple data sets. "Subsequent data" is data used for linking with external systems. "Reference data" is data referenced when outputting to a screen. "Online AP" is an application program that executes a process to output images over a network. "Reports," "IF files," and "screens" are information output from the source system. "Reports" are output from reports. "IF files" are output files used for linking with external systems. "Screen" is the output of image information to be displayed on the screen of a terminal device connected to the source system. For convenience, the example in Figure 2 shows an example in which the source system contains only simple program information, but in reality, the system configuration is often such that complex processes are executed in a complex order.
[0027] When dividing a related job stream into job steps, as shown in FIG. 2, the generation unit 120 first identifies the output of the related job stream in the source system. For example, the generation unit 120 identifies a "report" as the output of the related job stream. Then, the generation unit 120 extracts program information that executes the identified output, in this case, "subsequent data" that outputs a "report" (STEP 1). Next, the generation unit 120 extracts the processes used to generate the "subsequent data," in this case, "batch processing" and "temporary file." Here, if the program information ("batch processing" and "temporary file") extracted as the processing used to generate the "subsequent data" does not use the "MF data" used as input in the source system, the generation unit 120 executes an extraction process to extract job steps from the related job stream. This job step extraction process is a process to extract programs used to execute the extracted program information (here, "batch processing" and "temporary file"). The generation unit 120 repeatedly executes the job step extraction process until the program extracted in the job step extraction process becomes a program that uses the "MF data" as input in the source system (STEP 2). In this way, the generation unit 120 extracts the program information (programs and data groups) extracted in STEP 1 and STEP 2 as job steps extracted from the related job stream to be migrated, thereby dividing the related job stream into job steps.
[0028] Fig. 3 shows the details of the processing shown in STEP 1 and STEP 2 in Fig. 2. As shown in Fig. 3, in STEP 1, the generation unit 120 identifies "end of month balance" as data to be output in the "report" which is an output item, as the starting point for extracting job steps from the related job stream. The generation unit 120 also extracts program information "daily tally sheet creation AP" (not shown in Fig. 2) which indicates as output "GETSUMATSUZAN", which is data corresponding to the identified "end of month balance".
[0029] In STEP 2, the generation unit 120 identifies "ZANDAKA," which is data used as input in the "daily tally sheet creation AP," and extracts program information "batch AP" in which the identified "ZANDAKA" is indicated as output. Here, if "MF data" is not used in the "batch AP," the generation unit 120 executes extraction processing to extract job steps. Through the job step extraction processing, the generation unit 120 identifies "C_ZANDAKA," which is data used as input in the "batch AP," and extracts program information in which the identified "C_ZANDAKA" is indicated as output. The generation unit 120 repeatedly executes the job step extraction processing until the program extracted in the job step extraction processing becomes a program in which "MF data" is used as input in the system before migration. Here, an example is shown in which "C_ZANDAKA" is calculated by signal processing (addition processing) of the data "AMOUNT" and data "INTEREST," which are "MF data." The generating unit 120 repeatedly executes the job step extraction process until the program extracted in the job step extraction process is a program that executes signal processing (addition processing) of "AMOUNT" and data "INTEREST."
[0030] In this way, a related job stream is a series of programs used to derive output from input, obtained by focusing on one output item and tracing back upstream (to the input side) to the input data to extract the series of programs executed to output that output item. A job step is a program equivalent to the smallest unit of a job consisting of "input, processing, and output," obtained by dividing a related job stream. A job block includes a series of programs used to output each of a plurality of outputs that are output daily, monthly, on a specific day, etc. In other words, in this embodiment, a job block is used as a processing unit larger than a job stream, and a job block has a structure in which a plurality of job streams are included.
[0031] Here, the flow of processing performed by the migration support apparatus 100 will be described with reference to Fig. 4. Fig. 4 is a flowchart showing the flow of processing performed by the migration support apparatus according to the embodiment.
[0032] The migration support device 100 acquires the source assets (step S10). The source assets are information (program information) related to the source system stored in the source system information DB 200. The assets to be migrated as program information include, for example, the following information: (S10-1) Program source code (S10-2) File definition body (S10-3) Job scheduler definition body (S10-4) Various utilities (S10-1) The program source code includes program source code written in various programming languages, such as COBOL, PL / 1, and assembler. (S10-2) The file definition body includes, for example, a copy clause that converts input data information defined in a form into a format used in a specific programming language (e.g., COBOL). (S10-3) The job scheduler definition body is a file that defines a job scheduler as one aspect of JCL. (S10-4) The various utilities include programs that execute processes such as "SORT" and "MERGE" shown in Figure 2.
[0033] The migration support device 100 executes the prompt (step S11). For example, the migration support device 100 inputs the program information acquired in step S10 to the generation AI 300, and executes the prompt by inputting to the generation AI 300 a prompt that requests the generation AI 300 to identify, from the input program information, the correspondence between input and output in the system, search for a process that derives output from the input in the identified correspondence, and output a non-complex process from the searched process as an "algorithm that derives output from input."
[0034] The migration support device 100 executes a first determination process related to Determination 1 on the output obtained from the generation AI 300 as a result of executing Step S11 (Step S12). As the first determination process, the migration support device 100 determines whether an algorithm has been generated by the generation AI 300. For example, if the generation AI 300 outputs a search result such as, "There are five types of inputs, and the output corresponding to each input is.... The algorithm that derives the first output corresponding to the first input is a process of adding data B indicating interest to input data A indicating the balance," the migration support device 100 determines that an algorithm has been generated by the generation AI 300. On the other hand, if the generation AI 300 outputs an error indicating that "the number of characters that can be entered at one time in the prompt has exceeded the limit," or if the generation AI 300 outputs an abstract or simplified search result that does not explicitly correspond to actual signal processing, such as "Calculate in subroutine 1," the migration support device 100 determines that an algorithm has not been generated by the generation AI 300.
[0035] In the first determination process, if it is determined that an algorithm has not been generated by the generation AI 300, the migration support device 100 executes a process of narrowing down the assets to be read into the prompt (step S13). The range of program information to be narrowed down is, for example, as follows: (S13-1) The entire source system (S13-2) Business units or subsystem units implemented at the source (S13-3) Job block unit (S13-4) Related job stream units
[0036] (S13-1) The entire system at the migration source includes all of the program information to be migrated. (S13-2) The business unit or subsystem unit implemented at the migration source includes business such as report output, or the programs executed as subsystems related to report output, and the data groups referenced or output in conjunction with the execution of each of these programs. (S13-3) The job block unit includes the programs executed on processing dates such as daily, monthly, or specific days, and the data groups referenced or output in conjunction with the execution of each of these programs. (S13-4) The related job stream unit includes the series of programs used to derive output from input, and the data groups referenced or output in conjunction with the execution of each of these programs, which are obtained by focusing on one item of output from the system and tracing back upstream (to the input side) to the input data.
[0037] In step S18, which will be described later, the following program information is set as the search range. (S13-5) Job step unit (S13-5) A job step unit includes a program that is obtained by dividing a series of programs included in a related job stream into individual programs, and a group of data that is referenced or output as the program is executed. A job step is the smallest unit of a job expressed as a series of (input-processing-output) flows.
[0038] The migration support device 100 narrows down the assets by, for example, generating program information (second program information) by dividing the entire program information to be migrated (first program information) into units such as subsystems, business units, job blocks, and related job streams traced back from output. The migration support device 100 returns to step S11 and executes a prompt based on the program information corresponding to the narrowed down assets. Specifically, the migration support device 100 inputs the program information corresponding to the narrowed down assets to the generation AI 300, and executes the prompt by inputting a prompt to the generation AI 300 from the input program information, requesting that the generation AI 300 identify a correspondence between input and output from the input, search for a process that derives output from the input in the identified correspondence, and output the search result as an "algorithm that derives output from input."
[0039] If it is determined in the first determination process that an algorithm has been generated by the generation AI 300, the migration support device 100 executes a second determination process related to determination 2 (step S14). The second determination process is a process for determining whether or not multiple response processes included in the algorithm generated by the generation AI 300 should be adopted as the destination program specification. The response process here is, for example, a process in units of related job streams. That is, it is a process from an input to a system to the output of one output item. For example, if the algorithm generated by the generation AI 300 is (S13-1) the entire source system, (S13-2) a business unit or a subsystem unit, or (S13-3) a job block unit, the algorithm usually includes multiple outputs. The process leading up to the output of one output item among these multiple outputs, that is, the process in units of related job streams, is an example of a "response process."
[0040] The migration support device 100 determines whether to adopt the response processing based on the result of determining whether each of the response processing is an "expected processing." The migration support device 100 regards the determination result of the second determination processing as the determination result obtained by the worker determining and inputting whether the algorithm and response processing output from the generation AI 300 are "expected processing." Alternatively, the migration support device 100 may make a determination related to the second determination processing based on the result of the migration support device 100 determining whether the algorithm and response processing output from the generation AI 300 are specific and explicit.
[0041] In step S14, as a second judgment process, depending on the execution unit of the algorithm generated by the generation AI 300, the migration support device 100 determines whether to adopt the algorithm itself corresponding to the execution unit generated by the generation AI 300 as a corresponding process as the program specification of the destination.
[0042] If the corresponding processing determined to be adopted as the destination program specification in the second determination process is included in the algorithm generated by the generation AI 300 (step S14-YES), the migration support device 100 performs a screening process (step S15). The screening process is a process of sorting out, for each corresponding processing, the source program information (second program information) corresponding to the algorithm generated by the generation AI 300. More specifically, the migration support device 100 executes a process of sorting out the corresponding processing determined to be "adopted" and the corresponding processing determined not to be "adopted" in step S14.
[0043] The migration support apparatus 100 executes a third determination process. The third determination process is a process for determining whether or not to "adopt" the response process, and is a process for executing branching based on the selection result of step S15.
[0044] A prompt tuning process is executed for the corresponding process determined to be "not adopted" in step S15 (steps S16-NO, S17). The prompt tuning process is a process of generating program information (third program information) including only the corresponding process determined to be "not adopted" in step S15 as a tuning target. The tuning here is a process of adjusting the algorithm so that it becomes an algorithm that indicates "expected processing" by having the generation AI 300 regenerate the algorithm. If an algorithm that indicates "expected processing" can be generated, it can be adopted as the specification of the destination program.
[0045] For example, the migration support device 100 generates program information (third program information) by excluding source program information corresponding to the corresponding process determined to be adopted in the second determination process from source program information (second program information) corresponding to the algorithm generated by the generation AI 300. The migration support device 100 returns to step S11, inputs the third program information to the generation AI 300, and executes the prompt by inputting to the generation AI 300 a prompt requesting that the input-output correspondence relationship be identified from the input program information, that a process that derives the output from the identified correspondence relationship be searched for, and that the search result be output as an "algorithm that derives the output from the input."
[0046] Here, in the process of automatically generating a program, tuning is typically performed so that the meta (here, the algorithm generated by the generation AI 300) is optimized as a whole. In other words, if only some of the corresponding processes in the algorithm generated by the generation AI 300 are determined to be "adopted" and the remaining corresponding processes are determined to be "not adopted" because they do not indicate "expected processing," tuning is typically repeated until all of the corresponding processes included in the algorithm are determined to be "adopted." However, if tuning is repeated until all of the corresponding processes included in the algorithm are determined to be "adopted," there is a high probability that the algorithm as a whole will become more complex.
[0047] To address this issue, in this embodiment, work processes that lead to complexity are eliminated as much as possible and not incorporated. Specifically, in this embodiment, instead of repeating tuning until all of the corresponding processes included in the algorithm are determined to be "adoptable," a screening process is performed. In this embodiment, some of the corresponding processes in the algorithm can be expressed as processes that do not become complex, and if they are determined to be "adoptable," third program information that excludes the corresponding processes determined to be "adoptable" is generated by a screening process. Then, this third program information is targeted for tuning. This prevents the algorithm from becoming too complex overall and controls the entropy of the complexity of the tuning target from increasing, thereby guiding the algorithm toward simplification rather than toward complexity.
[0048] For example, if the algorithm generated by the generation AI300 includes 100 corresponding processes, and the second judgment process determines that 80 of the 100 corresponding processes are to be "adopted," the remaining 20 corresponding processes, excluding the 80 corresponding processes determined to be "adopted," are targeted for tuning, and in the execution of the prompt shown in the next step S11, program information corresponding to the 20 corresponding processes is input to the generation AI300, and the prompt is executed by inputting a prompt to the generation AI300 from the input program information that requests the generation AI300 to identify the correspondence between input and output in the system, search for a process that derives output from the input in the identified correspondence, and output the search result as an "algorithm that derives output from input." Then, if the algorithm generated by the generation AI300 in response to executing this prompt includes 20 corresponding processes, and the second judgment process determines that 10 of the 20 corresponding processes are to be "adopted," then in the same manner, in the execution of the prompt shown in the next step S11, the prompt is executed by inputting program information corresponding to the 10 corresponding processes into the generation AI300. By repeating this screening process and prompt execution, the proportion of uncomplicated response processes can be steadily increased. Furthermore, the algorithms generated by the generation AI 300 after the screening process do not affect the response processes removed in the screening process. Therefore, based on the content of the algorithms generated by the generation AI 300 after the screening process, there is no need to review the content of the response processes removed after the screening process from the algorithms generated by the generation AI 300 before the screening process and consider the processing content.
[0049] On the other hand, if the corresponding process determined to be adopted as the destination program specification in step S14 is not included in the algorithm generated by the generation AI 300 (step S14-NO), the migration support device 100 performs a process of dividing into job steps (step S18). The migration support device 100 divides the source program information corresponding to each of the multiple corresponding processes (for example, processes corresponding to related job stream units) included in the algorithm into individual programs, thereby generating a series of job steps from upstream (input side) to downstream (output side).
[0050] The migration support device 100 executes a prompt for each job step (step S19). For example, the migration support device 100 inputs program information corresponding to downstream (output-side) job steps into the generation AI 300, and executes the prompt by inputting a prompt to the generation AI 300 requesting that the generation AI 300 identify a correspondence between the input and the output from the input program information, search for a process that derives the output from the input based on the identified correspondence, and output the search result as an "algorithm that derives the output from the input." The migration support device 100 executes the prompts sequentially from downstream (output side) to upstream (input side) to generate an algorithm corresponding to the processing of the entire job stream. For example, when executing a prompt, the migration support device 100 executes the prompt by linking intermediate states so that the generation AI 300 can grasp the relationship between the series of job steps. Alternatively, the relationship between the series of job steps may be input in a single prompt execution, or the relationship between the series of job steps may be input by repeatedly interacting with the generation AI 300, tracing back from downstream (output side) to upstream (input side).
[0051] The migration support apparatus 100 executes a fourth determination process (step S20). The fourth determination process is a process for determining whether or not a series of algorithms generated by the generation AI 300, that is, algorithms generated corresponding to each job step from downstream (output side) to upstream (input side), should be adopted as the destination program specification. As with the second determination process, the migration support apparatus 100 determines whether or not to adopt an algorithm based on the determination result of whether the algorithm indicates "expected processing." If the series of algorithms includes one that is determined to be "not adopted" in the fourth determination process (step S20-NO), the migration support apparatus 100 executes a screening process and a prompt tuning process (step S21). The screening process and the prompt tuning process here are the same as the processes shown in steps S15 to S17. However, in step S21, "processing corresponding to the job step" is used as the "corresponding process" in steps S15 to S17. On the other hand, if the migration support apparatus 100 determines in the fourth determination process that the series of algorithms is to be "adopted" (step S20-YES), it integrates the series of algorithms (algorithms corresponding to the series of job steps) (step S22).
[0052] In this embodiment, by inputting program information into the generation AI 300 in as large a unit as possible, an algorithm is generated that takes into account only the correspondence between input and output, i.e., an algorithm that does not reflect the complexity of the intermediate processing executed at the source before reaching the output. Then, due to the constraints of the generation AI 300, if the generated algorithm does not indicate the "expected processing," the algorithm is generated on a job step basis. Specifically, only if the algorithm generated by the generation AI 300 corresponding to the related job stream does not indicate the "expected processing," the generation AI 300 is made to generate an algorithm on a job step basis, resulting in an algorithm that includes intermediate processing. Even when intermediate processing is included, the screening process and prompt tuning process are repeatedly performed so that the search result indicates the "expected processing" for each intermediate processing.
[0053] The migration support device 100 executes a job stream optimization process for the algorithms corresponding to the related job streams integrated in step S22 and the corresponding processes corresponding to the related job streams determined to be "adopted" in step S15 (step S23). The job stream optimization process is a process for optimizing the algorithms corresponding to the related job streams. For example, if common processes are executed multiple times in algorithms corresponding to the related job streams, the migration support device 100 collectively executes the processes in the common processes in the algorithms. This reduces the number of executions of the common processes, thereby performing optimization. For example, an algorithm corresponding to the related job streams may reference the same data table multiple times. Repeated execution of such a process to access the data table multiple times is inefficient. Therefore, in the algorithm corresponding to the related job streams, the process to access the data table is executed once, and the data used in the algorithm is collectively referenced in that access. This allows the migration support device 100 to generate an efficient algorithm (optimization algorithm).
[0054] The migration support device 100 performs unit verification (step S24). The migration support device 100 performs unit verification by inputting the same input data to the source system and the algorithm to be verified, and checking whether the same output data is output from each. The purpose of unit verification is to check relatively simple editing functions in related job stream units, and verification is performed from the perspective of covering each process executed in conditional branches, for example.
[0055] In the unit verification, if the verification fails, that is, if different outputs are produced for the same input (step S25-NO), the migration support device 100 executes prompt tuning processing with a narrower scope (step S26). The migration support device 100 executes prompt tuning processing targeting the algorithm for which the verification failed. For example, the migration support device 100 generates, as a tuning target, program information including only the processing to be verified (e.g., branch processing) from among the algorithms for which the verification failed, and inputs the generated program information to the AI 300, causing the generation AI 300 to regenerate an algorithm corresponding to the input program information.
[0056] If the unit verification is successful, that is, if the same output is produced for the same input (YES in step S25), the migration support device 100 performs comprehensive verification (step S27). In comprehensive verification, the functionality of the entire system is confirmed. The verification method is the same as in the unit verification. The same input data is input to the source system and the verification target (an integration of algorithms that have been verified as successful in the unit verification) and comprehensive verification is performed by confirming whether the same output data is output from each. In comprehensive verification, verification is performed from the perspective of whether the system can be used for actual operation, focusing on a test that verifies whether the processing executed according to the job schedule, for example, multiple output items output when data for a specific processing day is input, match each other. If the comprehensive verification is successful, that is, if the same output is produced for the same input (YES in step S27), the migration support device 100 terminates processing.
[0057] In the comprehensive verification, if the verification is NG, that is, if different outputs are produced for the same input (step S27-NO), the migration support apparatus 100 returns to step S26 and executes prompt tuning processing with a narrower range.
[0058] Thus, according to the embodiment, the migration support device 100 includes an acquisition unit that acquires first program information for constructing a first system, which is a migration source, and a generation unit that inputs the first program information into a generation AI to acquire from the generation AI an algorithm that derives an output from an input in the first system, and generates specifications for a program for constructing a second system, which is a migration destination, based on the acquired algorithm. This allows the migration support device 100 of the embodiment to avoid complicating the program at the migration destination when migrating a system to a different environment.
[0059] The effects of this embodiment will now be described with reference to Figures 5 and 6. Figure 5 is a diagram for explaining the effects of this embodiment. Figure 6 is a diagram for explaining conventional migration as a comparative example. The upper part of Figure 5, like Figure 2, shows a schematic representation of the program information used in the source system. The lower part of Figure 5 shows a schematic representation of the destination program specifications. As shown in this figure, the complexity of the system structure in the source system is eliminated in the destination system, making it possible to realize program specifications in the destination system that are based on algorithms condensed only into logical structures. The upper part of Figure 6, like Figure 2, shows a schematic representation of the program information used in the source system. The lower part of Figure 6 shows a schematic representation of the destination program specifications generated by a conventional migration. As shown in this figure, in a conventional migration, the programming language used in the source system is simply replaced with the destination language, and the complexity of the system structure is preserved as is, resulting in no change in complexity. Alternatively, in an attempt to preserve the source's unique structure, the system structure may become even more complex. For example, when the RDBMS (relational database management system) is changed from a source RDB (relational database) to a destination RDB, additional technical measures are required to manage data in the same way as the source at the destination, further complicating the system structure.
[0060] (Modification 1 of the embodiment) Here, a first modification of the embodiment will be described. In this modification, an on-premise generation AI is used as the generation AI 300.
[0061] Here, general text generation AI needs to undergo extensive training in order to cope with natural language, which has many variations.
[0062] On the other hand, in this embodiment, the source system to be migrated is typically developed using a predetermined programming language in accordance with predetermined development rules. In the case of a computer language (programming language), due to constraints such as compilers, a stricter syntax (grammar) is defined compared to natural languages, and the system is built using only the computer language in which syntax errors have been eliminated. Furthermore, migration does not need to accommodate many systems at once; migration can be performed based on rules in a specific environment, such as coding rules, common functions, and JCL usage. In other words, generative AI is applied in a simplified and standardized environment. Here, general commercial generative AI is trained to be able to handle any language, including programming languages, while on-premise generative AI can be trained to learn the programming languages and development rules used in the source system, as well as the system-specific relationships used in the open system adopted in the destination system. For this reason, if the same script is input into a commercial generation AI and an on-premise generation AI, the on-premise generation AI may output more accurate analysis results, i.e., search results that simplify the specifications of the target program while searching more accurately. Furthermore, if an on-premise generation AI can be used to narrow down the scope of learning that the generation AI has to perform to the migration target, it will be possible to avoid the restrictions imposed as upper limits on the generation AI's tokens and prompts. Furthermore, by combining the narrowing down of tuning targets performed in the screening process (step S15 in Figure 4) described in the above embodiment with the use of an on-premise generation AI, it is possible to improve the efficiency of automatic algorithm generation.
[0063] Furthermore, security can be ensured by using on-premise generative AI. Businesses that own the source system may be concerned that if they input their system's program information into an open LLM (commercial generative AI), that program information may be leaked to the outside. In reality, even when commercial generative AI is used, the service provider that provides the commercial generative AI manages the information to prevent such leaks, but using on-premise generative AI is extremely effective in completely eliminating those concerns.
[0064] (Modification 2 of the embodiment) Here, a second modification of the embodiment will be described. In this modification, the generation AI is made to search for a processing unit corresponding to a time period. Specifically, when the generation AI 300 searches, the migration support device 100 extracts a specific section, such as a date, as a time period from a job scheduler definition body or JCL. By extracting time periods that are frequently used in business operations, such as the end of the month, the end of the fiscal year, the fourth business day at the beginning of the month, or the last business day of the month, and making the generation AI 300 perform a search in processing units corresponding to the extracted time periods, it becomes easy to perform verification based on a specific processing date and to set up a batch job group in the new system to which the migration is to be performed. Furthermore, in terms of implementation, in order to efficiently execute processing to be executed on a specific day, a history database corresponding to the date of that specific day can be created in advance in a DWH (data warehouse), etc. This reduces the execution load of the program that generates the output of the processing to be executed on that specific day, which is expected to improve performance in the destination system and also reduces resources in the cloud where the destination program is implemented, contributing to cost reduction.
[0065] (Modification 3 of the embodiment) Here, a third variation of the embodiment will be described. In this variation, multiple generation AIs conduct a search while interacting with each other. For example, when extracting job steps from a related job stream, the output of the extracted job step is used as a clue to extract job steps that use that output as input. In this case, to avoid interrupting processing on a job step-by-job step basis, when a first generation AI extracts a job step, it passes the output of that job step to a second generation AI. The second generation AI extracts a job step that uses the output obtained from the first generation AI as input. When the second generation AI extracts a job step, it passes the output of that job step to the first generation AI. The first generation AI extracts a job step that uses the output obtained from the second generation AI as input. This makes it possible for the generation AIs to work together to advance the search as if they were conversing with each other.
[0066] The migration support device 100 in the above-described embodiment may be implemented in whole or in part by a computer. In this case, a program for implementing this function may be recorded on a computer-readable recording medium, and the program may be loaded into a computer system and executed. Note that the term "computer system" as used herein includes hardware such as an OS and peripheral devices. Furthermore, the term "computer-readable recording medium" refers to portable media such as flexible disks, optical magnetic disks, ROMs, and CD-ROMs, as well as storage devices such as hard disks built into a computer system. Furthermore, the term "computer-readable recording medium" may also include devices that dynamically store programs for a short period of time, such as communication lines used when transmitting programs via networks such as the Internet or telephone lines, or devices that store programs for a fixed period of time, such as volatile memory within a computer system serving as a server or client. The program may also be designed to implement some of the above-described functions, or may be capable of implementing the above-described functions in combination with a program already stored in the computer system, or may be implemented using a programmable logic device such as an FPGA.
[0067] Although an embodiment of the present invention has been described above in detail with reference to the drawings, the specific configuration is not limited to this embodiment, and includes designs within the scope of the gist of the present invention. [Explanation of symbols]
[0068] 1. Migration support system 100...Migration support device 110...Communication unit (acquisition unit) 120...Generation section 130...Output section 200...Source system information DB 300…Generation AI 400...Work terminal
Claims
1. an acquisition unit that acquires first program information for constructing a first system that is a migration source; a generation unit that inputs the first program information into a generation AI, acquires from the generation AI an algorithm that derives an output from an input in the first system, and generates a specification of a program that constructs a second system that is a migration destination based on the acquired algorithm; A migration support device comprising:
2. The generation unit execute a first determination process to determine whether the algorithm has been generated by a generation AI; generating second program information by extracting program information corresponding to a process to be realized by the first system from the first program information when it is determined in the first determination process that the algorithm has not been generated; inputting the second program information into a generating AI to obtain the algorithm corresponding to the second program information from the generating AI; The migration support device according to claim 1 .
3. The generation unit extracting, from the first program information, an output program that executes output in the first system and a first intermediate processing program that is used to execute the output program; if the first intermediate processing program does not use input in the first system, repeatedly executing a related job stream extraction process for extracting a second intermediate processing program to be used in executing the first intermediate processing program from the first program information until the second intermediate processing program becomes a program that uses input in the first system; extracting, as the second program information, the output program, the first intermediate processing program, the second intermediate processing program extracted in response to the execution of the related job stream extraction process, and a data group used in each program; The migration support device according to claim 2 .
4. The generation unit executes a second determination process for determining whether or not to adopt a plurality of response processes included in the algorithm corresponding to the second program information based on the complexity of each of the response processes; If the corresponding process determined to be adopted in the second determination process is not included in the algorithm, the second program information is divided into a plurality of programs; executing a division algorithm generation process for generating the algorithm corresponding to the divided program by inputting the divided program into a generation AI; execute the division algorithm generation process for each of the divided programs; Integrating the algorithms corresponding to each of the divided programs; generating the integrated algorithm as the algorithm corresponding to the second program information; 4. The migration support device according to claim 2 or 3.
5. The generation unit executes a second determination process for determining whether or not to adopt a plurality of response processes included in the algorithm corresponding to the second program information based on the complexity of each of the response processes; generating third program information by excluding, from the second program information, program information corresponding to the response processing determined to be adopted in the second determination processing, when the response processing determined to be adopted in the second determination processing is included in the algorithm; generating the algorithm corresponding to the third program information by inputting the third program information into a generation AI; 4. The migration support device according to claim 2 or 3.
6. the generation unit generates an optimization algorithm that optimizes execution of a common process in the correspondence process when the common process in the correspondence process determined to be adopted in the second determination process is executed multiple times. The migration support device according to claim 4 .
7. The generation unit In the algorithm corresponding to the second program information, a process of outputting one output item from among outputs in the first system is set as the corresponding process. The migration support device according to claim 4 .
8. A migration support method performed by a migration support device that is a computer, comprising: an acquisition unit acquires first program information for constructing a first system that is a migration source; The generation unit inputs first program information into the generation AI, thereby acquiring from the generation AI an algorithm that derives an output from an input in the first system, and generates a specification of a program that constructs the second system, which is the destination of migration, based on the acquired algorithm. Migration support methods.
9. The migration support device is a computer. Acquire first program information for constructing a first system that is a migration source; By inputting first program information into a generation AI, an algorithm for deriving an output from an input in the first system is obtained from the generation AI, and a specification of a program for constructing a second system to be migrated is generated based on the obtained algorithm. program.
Citation Information
Patent Citations
Method for generating program specifications
JP1993040616A
Method for shifting processing
JP1996263280A
Template generation device, template generation method and program
JP2018173699A
Source file generation program, source file generation method, and information processing device
JP2020135159A
Generation device and test code generation method
JP2022090770A