JP2022108452A - Program managing device and program managing method - Google Patents
Program managing device and program managing method Download PDFInfo
- Publication number
- JP2022108452A JP2022108452A JP2021003458A JP2021003458A JP2022108452A JP 2022108452 A JP2022108452 A JP 2022108452A JP 2021003458 A JP2021003458 A JP 2021003458A JP 2021003458 A JP2021003458 A JP 2021003458A JP 2022108452 A JP2022108452 A JP 2022108452A
- Authority
- JP
- Japan
- Prior art keywords
- program
- difference
- module
- server
- environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
Description
本発明は、プログラム管理装置及びプログラム管理方法に関する。 The present invention relates to a program management device and program management method.
サーバ内開発など、複数人による開発プロジェクトにおいては、開発したプログラムがGitに代表される構成管理ツールなどに登録して管理される(例えば、特許文献1)。この構成管理ツールでは、改修ソースを行単位でマージするため、複数人の作業であっても同行で異なる改修が入らない限り、改修ソースのデグレードなどは発生しないようになっている。 In a development project involving multiple people, such as in-server development, a developed program is registered and managed in a configuration management tool such as Git (for example, Patent Document 1). This configuration management tool merges modified sources line by line, so even if multiple people are working together, unless different modifications are made by the same person, degradation of the modified source will not occur.
プロジェクトが大きくなればなるほど、サーバ内開発を実施したときのプログラム管理、構成管理にかかる作業時間が長くなり、開発物の環境反映にネックとなり、結果作業コストが増大するという課題がある。特に、レガシーシステムの開発の場合、行単位でマージする際に、同行で異なる改修が入った場合はコンフリクトとしてエラーが発生するため、開発者による手動のマージ作業が残存していた。また、マージする際に、プログラムの差分に関して予め定められたルールを参照する方法も知られているが、プログラムの差分だけを考慮すると、過剰な差分が抽出されてしまい、やはり手作業による対応が必要であった。 The larger the project is, the longer the work time required for program management and configuration management when performing development within the server becomes a bottleneck in reflecting the environment of the development product, resulting in an increase in work costs. In particular, in the case of legacy system development, when merging line by line, an error would occur as a conflict if different modifications were made at the same line, so manual merging work by the developer remained. There is also a known method of referring to predetermined rules regarding program differences when merging. was necessary.
本発明の目的は、サーバ内開発などの複数人による開発プロジェクトにおけるプログラムの管理を効率的に実施することのできるプログラム管理装置及びプログラム管理方法を提供することにある。 SUMMARY OF THE INVENTION It is an object of the present invention to provide a program management apparatus and a program management method capable of efficiently managing programs in a development project by a plurality of people, such as in-server development.
前述の課題を解決するために、本発明は、複数の開発者によるサーバ内におけるプログラムの開発作業を管理するプログラム管理装置において、前記複数の開発者がそれぞれ開発したプログラムと、検証環境に格納されている現在のプログラムとの差分であるプログラム差分を抽出する第一処理部と、前記プログラム差分に応じたマージ処理のルールが予め定められたマージルールを有する記憶部と、前記複数の開発者がそれぞれ開発したモジュールと、検証環境に格納されている現在のモジュールとの差分であるモジュール差分を抽出する第二処理部と、を備え、前記第二処理部は、前記モジュール差分が抽出されない場合、前記プログラム差分を棄却し、前記マージルールを参照して、前記開発したプログラムと前記現在のプログラムとをマージ処理することで前記検証環境のプログラムを更新する。 In order to solve the above-described problems, the present invention provides a program management apparatus for managing program development work in a server by a plurality of developers, in which programs developed by the plurality of developers and stored in a verification environment are stored in a verification environment. a first processing unit for extracting a program difference that is a difference from a current program that is currently running; a storage unit having merge rules in which rules for merging processing according to the program difference are predetermined; each developed module and a second processing unit that extracts a module difference that is a difference from the current module stored in the verification environment, wherein the second processing unit extracts the module difference when the module difference is not extracted, The program in the verification environment is updated by discarding the program difference, referring to the merge rule, and merging the developed program and the current program.
本発明によれば、プログラムとモジュールの差分の関係を考慮したプログラム管理が可能となり、プログラム管理、構成管理に伴うコストを削減することが可能となる。 According to the present invention, it becomes possible to perform program management in consideration of the relationship between programs and modules, and to reduce costs associated with program management and configuration management.
以下、本発明の実施形態について、図面を用いて説明する。 BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, embodiments of the present invention will be described with reference to the drawings.
図2は、本実施形態に係る開発支援システムにおけるプログラムの登録の推移の概要を示す図である。図2では、バージョン管理及びリポジトリ管理において、環境毎のプログラムを管理する領域であるブランチの分岐例と、ブランチにおいて開発したプログラムについての登録(コミット)の状況の例と、を左から右方向への時系列で示している。ここでは、本番環境で稼働しているプログラムが格納されるマスタブランチから、まずプロジェクト及び品質保証のためのブランチ(顧客検証用)が分岐して作成される。次に、開発者A、B及びCのそれぞれが、自身の開発のためのブランチを分岐させて作成し、開発が完了した後に顧客検証用ブランチに統合(マージ)してから、マスタブランチに統合(マージ)されている。 FIG. 2 is a diagram showing an overview of transition of program registration in the development support system according to the present embodiment. In FIG. 2, in version control and repository management, from left to right, an example of a branch, which is an area for managing programs for each environment, and an example of the registration (commit) status of a program developed in the branch. are shown in chronological order. Here, a branch for project and quality assurance (for customer verification) is first created by branching from the master branch that stores the program running in the production environment. Next, each of developers A, B, and C creates a branch for their own development, integrates (merges) into the customer verification branch after development is completed, and then integrates into the master branch. (merged).
プログラムは、環境などの単位で個別に設けられたブランチ上で管理される。図3は、コーディングにおけるブランチの作成例について概要を示した図である。図3では、マスタとなるプログラムが登録されているマスタブランチ401(ブランチ名“master”)に、“A.xxx”や“B.xxx”などのプログラム(ソースコード)が登録されていることを示している。新しいブランチは、任意のタイミングで作成することができ、例えば、既存のリポジトリをコピーすることで作成することができる。この場合、作成されたブランチは元のブランチから分岐したものとなる。なお、最初のブランチは新規に作成する。 Programs are managed on branches that are individually provided for units such as environments. FIG. 3 is a diagram showing an overview of an example of creating branches in coding. In FIG. 3, it can be seen that programs (source code) such as "A.xxx" and "B.xxx" are registered in the master branch 401 (branch name "master") in which the master program is registered. showing. A new branch can be created at any time, for example by copying an existing repository. In this case, the created branch is a branch of the original branch. Create a new branch first.
図3では、マスタブランチ401から、顧客検証用環境のプログラムを格納するメインブランチである顧客検証用ブランチ402(ブランチ名“develop”)が分岐して作成された状態を示している。さらに、顧客検証用ブランチ402から、環境Aについての開発用のブランチである環境A用ブランチ403(ブランチ名“feature_A”)が分岐して作成され、同じく、顧客検証用ブランチ402から、環境Bについての開発用のブランチである環境B用ブランチ404(ブランチ名“feature_B”)が分岐して作成された状態を示している。 FIG. 3 shows a state in which a customer verification branch 402 (branch name “develop”), which is the main branch for storing the program for the customer verification environment, is created by branching from the master branch 401 . Further, from the customer verification branch 402, an environment A branch 403 (branch name "feature_A"), which is a development branch for the environment A, is created by branching. A branch for environment B 404 (branch name "feature_B"), which is a branch for development of the environment B, is branched and created.
また、作成されたブランチは、例えば開発対象のプログラムを他環境へ反映/同期させるなど、任意のタイミングで分岐元のブランチに統合(マージ)することができる。図4は、環境A及び環境Bで開発したプログラムを顧客検証用環境に反映する際のブランチの統合例について概要を示した図である。図4では、分岐元である顧客検証用ブランチ402に対して、分岐して作成された環境A用ブランチ403と、分岐して作成された環境B用ブランチ404とが、マージされる状態を示している。このマージにより、顧客検証用ブランチ402に対して、環境A用ブランチ403に登録されたプログラムの内容が行単位で差分が判断され、挿入される。このように、開発の進展に伴って、複数のブランチに分岐したり、複数のブランチを統合したりしながら開発が進められる。 Also, the created branch can be integrated (merged) into the original branch at any timing, such as reflecting/synchronizing the program to be developed with another environment. FIG. 4 is a diagram showing an overview of an example of integration of branches when programs developed in environment A and environment B are reflected in the customer verification environment. FIG. 4 shows a state in which a branch 403 for environment A created by branching and a branch 404 for environment B created by branching are merged with respect to a customer verification branch 402 which is a branch source. ing. As a result of this merging, the contents of the program registered in the environment A branch 403 are inserted into the customer verification branch 402 after judging the difference line by line. In this way, as the development progresses, the development progresses while branching into a plurality of branches or integrating a plurality of branches.
前述のように、環境などの単位で個別に設けられたブランチ上で管理されるプログラムは、サーバ内に格納される。図5は、サーバ内開発の処理について概要を示した図である。図5では、プログラム修正によって開発用サーバ200に格納されているプログラム203が、コンパイルの実施(コンパイラ202の実行)によってモジュール201が生成される状態を示している。
As described above, programs managed on branches individually provided for each environment or the like are stored in the server. FIG. 5 is a diagram showing an outline of processing for development within the server. FIG. 5 shows a state in which a
<システム構成>
図1は、本発明の実施形態に係る開発支援システム1の構成例について概要を示した図である。本実施形態の開発支援システム1は、例えば、プログラム管理装置である開発支援サーバ100に対して、LAN(Local Area Network)などのネットワークを介して、各ユーザがそれぞれ使用する開発用サーバ(うち1台の開発用サーバは顧客検証用)200が複数接続され、相互に通信可能な構成を有する。各ユーザは開発用クライアント300よりネットワークを介して開発支援サーバ100及び開発用サーバ200へ通信可能な構成を有する。なお、開発支援サーバ100、開発用サーバ200及び開発用クライアント300の間の通信は、有線、無線を問わず、一般的な公衆回線網、例えば「多数同時接続」、「超低遅延」を可能とした第5世代移動通信システム、いわゆる5G(5th Generation)を用いることができる。
<System configuration>
FIG. 1 is a diagram showing an overview of a configuration example of a development support system 1 according to an embodiment of the present invention. The development support system 1 of the present embodiment connects, for example, a
開発支援サーバ100は、例えば、プログラムソースのバージョン管理や各環境情報の管理などの機能を有するサーバシステムであり、一般的なサーバ機器やクラウドコンピューティング環境上に構築された仮想サーバなどにより実装され、図示しないOS(Operating System)やDBMS(DataBase Management System)、Webサーバプログラムなどのミドルウェア上で稼働するソフトウェアプログラムなどにより実装される管理端末装置110及び開発支援サーバリポジトリ120などの各部を有する。
The
管理端末装置110は、3つの処理部(第一処理部111、第二処理部112、関係処理部113)と、処理実施時に活用されるワークスペース117と、管理端末記憶部114と、を有する。管理端末装置110は、複数の開発者がそれぞれ開発したモジュール201及びプログラム203を、顧客検証用サーバ210からワークスペース117へ複製するとともに、開発支援サーバリポジトリ120にある、現在のモジュールやプログラム、環境情報を参照した上で、3つの処理部にて処理がされる。また、管理端末記憶部114は、マージルール115と、親子定義116と、差分結果118と、を有している。
The
第一処理部111は、複数の開発者がそれぞれ開発したプログラムと、検証環境に格納されている現在のプログラムとの差分であるプログラム差分を抽出する。第二処理部112は、複数の開発者がそれぞれ開発したモジュールと、検証環境に格納されている現在のモジュールとの差分であるモジュール差分を抽出する。また、第二処理部112は、抽出したモジュール差分を差分結果118として管理端末記憶部114に出力する。さらに、第二処理部112は、モジュール差分が抽出されない場合、プログラム差分を棄却し、マージルール115を参照して、開発したプログラムと現在のプログラムとをマージ処理することで検証環境のプログラムを更新する。関係処理部113は、モジュール差分が抽出され、かつ、プログラム差分が抽出されなかった場合、モジュールとプログラムの関係を調査し、親子定義116を更新(上書き)する。なお、各処理部から出力されたコマンドは、開発支援サーバリポジトリ120の対象リポジトリにて実行される。
The
ここで、親子定義116とは、モジュールとプログラムの関係を規定するものであり、後述する図8のようにプログラムをコンパイルした結果生成されるモジュールが相対するように明示されているものである。複数のプログラムから1つのモジュールが生成される場合、同名のモジュールが複数のプログラムに相対するものとして繰り返し表記される。
また、マージルール115とは、プログラム差分に応じたマージ処理のルールが予め定められた外部ファイルであり、第二処理部112がマージ処理する際に参照される。このマージルール115では、マージ処理中に無視して良い箇所が定義されている。例えば、ファイルの各行の先頭6文字を差分として認識しないというルールの場合、改行コードから6文字分をXXXXXXとダミーの値に変換するルールを設定することでマージ処理時には同一部分として認識される。
Here, the parent-
The
開発支援サーバリポジトリ120は、複数の開発者により開発されたプログラムや各種成果物、環境情報を記憶して集中的に管理するデータベース等の記憶領域である。プログラムや各種成果物を管理するのがアプリソースコードリポジトリ121であり、バージョン管理などを実施し、例えば後述する、コミット履歴テーブル124、ユーザマスタテーブル126及びブランチ管理テーブル127を保持する。アプリソースコードリポジトリ121に保持されたこれらの情報が、管理端末装置110の各処理部で生成されるコマンドによって、更新される。IaCコードリポジトリ122は、各環境の構築もしくはプログラムの自動リリースに必要なパラメータ情報に加え、後述する環境バージョン管理テーブル125などを保持する。モジュールバックアップリポジトリ123は、アプリソースコードリポジトリ121で保持すると容量が大きくなってしまうバイナリデータを保持し、例えばモジュールのバージョン管理を実施する。
The development
開発用サーバ200は、例えば、開発者等の各ユーザがプログラム203の開発を実施するサーバであり、図示しないOSなどのミドルウェア上で稼働するソフトウェアプログラムにより実装されるコンパイラ202、モジュール201を有する。開発用サーバの中の1台は顧客検証用サーバ210として、他の開発用サーバで開発したプログラムの組み合わせテストなどを実施する環境とするが、構成としては開発用サーバ200と同等である。
The
開発用クライアント300は、開発者等の各ユーザが開発支援サーバ100及び開発用サーバ200へネットワークを介して相互通信し、開発用サーバ200の中で開発作業を行うPC(Personal Computer)等の情報処理端末であり、図示しないOSなどのミドルウェア上で稼働するソフトウェアプログラムを有する。
The
<処理フロー(開発用サーバ内のモジュール反映)>
以下では、本実施形態における開発用サーバ200内のモジュール反映の際の各処理について説明する。図6は、開発用サーバ200内のモジュール反映の処理の流れの例について概要を示したフローチャートである。
<Processing flow (reflection of module in development server)>
Below, each process at the time of module reflection in the
まず、開発用サーバ200でコンパイルを実施し、同タイミングで管理端末装置110の中にあるワークスペース117へ開発用サーバ200に格納されているモジュール201及びプログラム203が複製され、モジュール205及びプログラム204として設置される。コンパイルの実施後、開発用サーバ200内にあるモジュール201が開発環境に反映される(S01)。なお、ワークスペース117へ複製する際には、以前の処理等で生成されたファイルがある場合は削除を実施し、本処理に影響がないようにする。この処理により、以前の処理で生成されたファイルの影響を受けることなく、別環境への反映処理が再帰的に実行できる他、エラーが発生して再実行することが可能になる。
First, the
その後、ワークスペース117にあるプログラム204がアプリソースコードリポジトリ121に移動し、同リポジトリにあるユーザマスタテーブル126からユーザ情報を受け取った上でプログラムの登録処理コマンドが実行され、リポジトリ内にあるコミット履歴テーブル124及びブランチ管理テーブル127の更新処理が実施される(S02)。前述のプログラム登録と同様にモジュール205に関してもモジュールバックアップリポジトリ123に移動し、登録処理コマンドが実行され、アプリソースコードリポジトリ121内にあるコミット履歴テーブル124の更新処理が実施される(S03)。
After that, the
プログラム及びモジュールの登録後は、IaCコードリポジトリ122に格納される環境バージョン管理テーブル125に対して更新処理が実施される(S04)。なお、コミット履歴テーブル124は後述の図9、環境バージョン管理テーブル125は後述の図10、ユーザマスタテーブル126は後述の図11、ブランチ管理テーブル127は後述の図12、にて説明する。
After the registration of the programs and modules, the environment version management table 125 stored in the
<処理フロー(別サーバへの開発内容同期)>
以下では、本実施形態における別サーバへの開発内容同期の際の各処理について説明する。図7は、別サーバへの開発内容同期の処理の流れの例について概要を示したフローチャートである。まず、前述の開発用サーバ内モジュール反映と同様に、管理端末装置110の第一処理部111は、同期元のサーバに格納されているプログラムをワークスペース117へ複製する(S101)。次に、第一処理部111は、同期先のサーバにあるプログラムをIaCコードリポジトリ122に格納されている環境バージョン管理テーブル125を参照し、アプリソースコードリポジトリ121から取得する(S102)。なお、ワークスペース117へ複製する際に、以前の処理等で生成されたファイルがある場合は削除が実施され、本処理に影響がないようにする。この処理により、以前の処理で生成されたファイルの影響を受けることなく、別環境への反映処理が再帰的に実行できる他、エラーが発生して再実行することが可能になる。
<Process flow (synchronization of development content to another server)>
In the following, each process when synchronizing development content with another server in this embodiment will be described. FIG. 7 is a flowchart showing an overview of an example of the flow of processing for synchronizing development content with another server. First, the
その上で、第一処理部111は、前述の処理で取得したプログラムを機械的に合体させる、プログラムマージ処理を実施する(ステップS103)。その後、第一処理部111は、マージ処理判定を実施し(ステップS104)、処理が成功した場合は、後続のプログラムの登録(ステップS105)が実施される。マージ処理判定の結果、ネットワークやサーバなどインフラ側のエラー及び同期先サーバへの同期実行権限が不足している場合は、エラーコードが生成され(ステップS106)、ログを作成して(ステップS107)処理が終了する。
After that, the
また、マージ処理判定の結果、マージコマンドエラーの場合は、管理端末装置110の第二処理部112が、管理端末記憶部114に格納されているマージルール115を参照し、マージルールをオプションでコマンド指定した上で、再度マージ処理(ルール参照マージ処理)のコマンドを実行する(ステップS108)。その後、マージ処理判定が再度実施され(ステップS109)、前述と同様、処理が成功した場合は、後続のプログラムの登録(S105)が実施され、インフラ側のエラー及び同期先サーバへの同期実行権限が不足している場合は、エラーコード生成(ステップS110)とログ作成(ステップS107)後に処理が終了する。
If the result of the merge processing determination is a merge command error, the
再度のマージ処理判定の結果、マージコマンドエラーの場合、第二処理部112は、ステップS11での同期元プログラムの取得と同様に、同期元のサーバに格納されているモジュールをワークスペース117へ複製する(ステップS111)。次に、第二処理部112は、同期先のサーバにあるモジュールをIaCコードリポジトリ122に格納されている環境バージョン管理テーブル125を参照し、モジュールバックアップリポジトリ123から取得する(ステップS112)。その上で、第二処理部112は、前述の処理で取得したモジュールについてバイナリ比較を実施し、差分があったモジュールファイル一覧を差分結果118として管理端末記憶部114に格納する(ステップS113)。なお、差分結果118を管理端末記憶部114へ格納する際に、以前の処理等で生成されたファイルがある場合は削除が実施され、本処理に影響がないようにする。この処理により、以前の差分結果の影響を受けることなく、別環境への反映処理が再帰的に実行できる他、エラーが発生して再実行することが可能になる。
If a merge command error is found as a result of the merge process determination again, the
その後、第二処理部112は、親子定義116を管理端末記憶部114から取得(ステップS114)し、差分結果118に差分の記載がないモジュールに(親子定義上)関係するプログラムの中に差分が発生している場合、同期元プログラムの変更を棄却し、同期先プログラムを正として扱う(ステップS115)。この第二処理部112の関係プログラム差分棄却処理により、第一処理部111で実施されたマージ処理判定(ステップS104及びステップS109)で過剰に摘出された差分の一部が自動的に棄却され、これまで手動で修正してマージ処理していた作業が不要となる。なお、差分結果118に差分の記載があるモジュールに関係するプログラムの中に差分が発生していない場合は、後続のマージ処理判定(ステップS117)でマージエラーとなる。
After that, the
このように、ステップS115にて、モジュールに差分がないプログラムを廃棄した上で、第二処理部112は、マージルール115を参照し、マージルールをオプションで指定して再度マージ処理(ルール参照マージ処理)のコマンドを実行する(ステップS116)。その後、マージ処理判定が再度実施され(ステップS117)、前述と同様、処理が成功した場合は、後続のプログラムの登録(S105)が実施され、インフラ側のエラー及び同期先サーバへの同期実行権限が不足している場合は、エラーコード生成(ステップS118)とログ作成(ステップS107)後に処理が終了する。
In this way, in step S115, after discarding programs with no difference in modules, the
再度のマージ処理判定の結果、マージコマンドエラーの場合は、関係処理部113による親子定義見直し処理(ステップS119~ステップS122)を実施する。マージコマンドエラーが発生すると、関係処理部113は、まず、アプリソースコードリポジトリ121に対してテスト用のブランチを作成し(ステップS119)、同期元のサーバにて、プログラムとモジュールの親子関係調査スクリプトを実施する(ステップS120)。ここで実行するスクリプトは、プログラムを1つずつテスト用のブランチでコンパイルし、生成されたモジュールが、ワークスペース117にある(ステップS111等で取得した)モジュールと合致するかを再帰的に検証するものである。合致しない場合は、プログラムとモジュールの親子関係が間違っているため、別のプログラムに入れ替えてモジュールが合致するかを確認し、正しい親子関係を調査していく。次に、関係処理部113は、スクリプトの実行結果を、管理端末記憶部114に格納されている親子定義116へ上書きする(ステップS121)。この際、実行するスクリプトは単一のプログラムを同期元環境でコンパイルを実施し、生成されたモジュールがワークスペース117と合致するかを検証するものであり、全てのプログラムに対して再帰的に実行されるものとする。その後、関係処理部113が、IaCコードリポジトリ122の環境情報とアプリソースコードリポジトリ121を参照し、同期元環境のリストアを実施すると(ステップS122)、ステップS114に戻って、第二処理部112が、親子定義を取得し、再度ルール参照マージ処理を実行する。なお、関係処理部113による親子定義見直し後に、ステップS117のマージ処理判定で再びマージエラーが再度発生した場合には、親子定義見直し処理が何度も繰り返されるのを防止するため、その他エラーとして、エラーコード生成(ステップS118)とログ作成(S107)がされる。
If the merge command error is determined as a result of re-merge processing determination, parent-child definition review processing (steps S119 to S122) is performed by the
マージ処理判定で処理が成功したと判定された場合は、プログラムの登録処理(ステップS105)及びIaCリポジトリの処理更新(ステップS123)が実行され、リポジトリ内同期元のプログラム改修が同期先環境へ反映される(ステップS124)。マージ処理判定でその他のエラーが発生した場合は、エラーログが生成されるため、ログを調査し、原因を取り除いた上で再実行することにより、同期元のプログラム改修が同期先環境へ反映される。 If it is determined that the merge process has succeeded, the program registration process (step S105) and the IaC repository process update (step S123) are executed, and the synchronization source program modification in the repository is reflected in the synchronization destination environment. (step S124). If any other error occurs in the merge process judgment, an error log will be generated. By investigating the log, removing the cause, and re-executing, the synchronization source program modification will be reflected in the synchronization destination environment. be.
<データ構成>
図8は、開発支援サーバ100の管理端末装置110の管理端末記憶部114上に保持される親子定義116のデータ構成と具体的なデータの例について概要を示した図である。親子定義116は、プログラムとモジュールの関係性についての情報などを保持するテーブルであり、例えば、SRC、MODULなどの各項目を有している。この親子定義116は、別環境への反映時に図7におけるステップS114の親子定義取得処理にて第二処理部112に取り込まれ、図7におけるステップS115の関係プログラム差分棄却処理のインプットとして活用される。また、図7におけるステップS121の親子定義更新処理にて、SRC及びMODULの各項目が関係処理部113によって更新され、更新された親子定義116が、前述の親子定義取得処理にて第二処理部112に再度取り込まれて、関係プログラム差分棄却処理のインプットとして活用される。
<Data structure>
FIG. 8 is a diagram showing an overview of the data structure of the parent-
図9は、開発支援サーバ100の開発支援サーバリポジトリ120のアプリソースコードリポジトリ121上に保持されるコミット履歴テーブル124のデータ構成と具体的なデータの例について概要を示した図である。コミット履歴テーブル124は、プログラム及びモジュールが更新された際のバージョンや更新されたブランチに加え、更新者や更新日付及び登録処理状況についての情報などを保持するテーブルであり、例えば、VER、PREVER、SRCVER、ID、IP、DATE及びSTATUSなどの各項目を有している。このコミット履歴テーブル124は、サーバ内開発を実施する際、図6におけるステップS02のプログラムの登録及びステップS03のモジュールの登録時に、VERなどのバージョン情報、BRANAMEなどのブランチ情報を明記した新たなレコードが生成され、更新に関するIDやDATE、処理結果のSTATUSに加えて更新環境のIPなどの情報も明記される。また、レコード生成時には後述する図10に示す環境バージョン管理テーブル125も参照され、コミット履歴テーブル124のレコードのIPに対応したバージョン情報(VER)が、図9に示すコミット履歴テーブル124のPREVERとして更新される。この処理により、前世代のバージョンが新規バージョンと同レコードに明記されるため、障害発生時の切り戻し先が明確になり、リカバリ工数を抑制できる。また、別環境に反映する際には、図7におけるステップS124の環境反映処理のインプットとして、後述する図10で保持しているバージョン情報(VERなど)と関連するBRANAMEなどのブランチ情報が活用されている。
FIG. 9 is a diagram showing an overview of the data structure of the commit history table 124 held on the application
図10は、開発支援サーバ100の開発支援サーバリポジトリ120のIaCコードリポジトリ122上に保持される環境バージョン管理テーブル125のデータ構成と具体的なデータの例について概要を示した図である。環境バージョン管理テーブル125は、各サーバ環境に格納され稼働しているモジュールの最新のバージョン及び各サーバのIPやDBIDなど環境情報を含む情報を保持するテーブルであり、例えば、IP、SVRNAME、DBID、MODE、VER及びDATEなどの各項目を有している。この環境バージョン管理テーブル125は、サーバ内開発を実施する際、図6におけるステップS04のIaCリポジトリの更新時に対象環境のIPのレコードにあるVERなどのバージョン情報や、DATEといった更新日時が更新される。また、別環境に反映する際にも、前述のIaCリポジトリの更新が実施され、図7におけるステップS124の環境反映処理に活用される。
FIG. 10 is a diagram showing an overview of the data structure of the environment version management table 125 held on the
図11は、開発支援サーバ100の開発支援サーバリポジトリ120のアプリソースコードリポジトリ121上に保持されるユーザマスタテーブル126のデータ構成と具体的なデータの例について概要を示した図である。ユーザマスタテーブル126は、プログラムが更新された際の担当者や担当者の持つ権限についての情報などを保持するテーブルであり、例えば、ID、ID_NAME、PERMISSIONなどの各項目を有している。このユーザマスタテーブル126は、サーバ内開発を実施する際、図6におけるステップS02のプログラム登録時に、インプットとして活用される。また、別環境に反映する際にも、図7におけるステップS104等のマージ処理判定のインプットとして、権限が足りない場合はステップS106等のエラーコードの生成へと分岐させる処理の判断元として活用される。
FIG. 11 is a diagram showing an overview of the data structure of the user master table 126 held on the application
図12は、開発支援サーバ100の開発支援サーバリポジトリ120のアプリソースコードリポジトリ121上に保持されるブランチ管理テーブル127のデータ構成と具体的なデータの例について概要を示した図である。ブランチ管理テーブル127は、プログラムが更新された際のブランチの最新バージョンや更新日についての情報などを保持するテーブルであり、例えば、BRANAME、HEAD、DATEなどの各項目を有している。このブランチ管理テーブル127は、サーバ内開発を実施する際、図6におけるステップS02のプログラム登録時に更新対象のBRANAMEのレコードにある最新のバージョン情報をHEADとして更新し、更新日時を表すDATEを同時に更新する。また、別環境に反映する際にも、図6におけるステップ02のプログラム登録が実施され、図7におけるステップS124の環境反映処理に活用される。
FIG. 12 is a diagram showing an overview of the data configuration of the branch management table 127 held on the application
1 開発支援システム
100 開発支援サーバ
110 管理端末装置
111 第一処理部
112 第二処理部
113 関係処理部
114 管理端末記憶部
115 マージルール
116 親子定義
117 ワークスペース
118 差分結果
120 開発支援サーバリポジトリ
121 アプリソースコードリポジトリ
122 IaCコードリポジトリ
123 モジュールバックアップリポジトリ
124 コミット履歴テーブル
125 環境バージョン管理テーブル
126 ユーザマスタテーブル
127 ブランチ管理テーブル
200 開発用サーバ
201 モジュール
202 コンパイラ
203 プログラム
204 プログラム
205 モジュール
210 顧客検証用サーバ
300 開発用クライアント
401 マスタブランチ
402 顧客検証用ブランチ
403 環境A用ブランチ
404 環境B用ブランチ
1
Claims (5)
前記複数の開発者がそれぞれ開発したプログラムと、検証環境に格納されている現在のプログラムとの差分であるプログラム差分を抽出する第一処理部と、
前記プログラム差分に応じたマージ処理のルールが予め定められたマージルールを有する記憶部と、
前記複数の開発者がそれぞれ開発したモジュールと、検証環境に格納されている現在のモジュールとの差分であるモジュール差分を抽出する第二処理部と、
を備え、
前記第二処理部は、前記モジュール差分が抽出されない場合、前記プログラム差分を棄却し、前記マージルールを参照して、前記開発したプログラムと前記現在のプログラムとをマージ処理することで前記検証環境のプログラムを更新することを特徴とするプログラム管理装置。 In a program management device that manages program development work in a server by a plurality of developers,
a first processing unit for extracting a program difference, which is a difference between a program developed by each of the plurality of developers and a current program stored in a verification environment;
a storage unit having a merge rule in which a merge process rule corresponding to the program difference is predetermined;
a second processing unit for extracting a module difference, which is a difference between the module developed by each of the plurality of developers and the current module stored in the verification environment;
with
When the module difference is not extracted, the second processing unit discards the program difference, refers to the merge rule, and merges the developed program and the current program to create the verification environment. A program management device characterized by updating a program.
前記モジュール差分が抽出され、かつ、前記プログラム差分が抽出されなかった場合、モジュールとプログラムの関係を調査し、前記記憶部が有するモジュールとプログラムの親子定義を更新する関係処理部、を更に備えたことを特徴とするプログラム管理装置。 In the program management device according to claim 1,
a relationship processing unit that, when the module difference is extracted and the program difference is not extracted, investigates the relationship between the module and the program, and updates the parent-child definition of the module and the program stored in the storage unit. A program management device characterized by:
前記関係処理部は、テスト用のブランチでプログラムをコンパイルして生成されたモジュールが、前記開発したモジュールと合致するかを再帰的に検証し、合致した場合のモジュールとプログラムの関係に基づいて、前記親子定義を更新することを特徴とするプログラム管理装置。 In the program management device according to claim 2,
The relationship processing unit recursively verifies whether the module generated by compiling the program in the test branch matches the developed module, and based on the relationship between the module and the program when they match, A program management device, wherein the parent-child definition is updated.
プログラム及びモジュールが更新された際の、新規のバージョン、前世代のバージョン、更新対象のサーバ環境のIP、が同一レコードで明記されたコミット履歴テーブルと、
各サーバ環境のIP、各サーバ環境に格納され稼働している最新のバージョンと、を含む情報を保持するバージョン管理テーブルと、を更に備えたことを特徴とするプログラム管理装置。 In the program management device according to claim 1,
a commit history table in which the new version, the previous generation version, and the IP of the server environment to be updated are specified in the same record when the program and module are updated;
A program management apparatus, further comprising: a version management table holding information including an IP of each server environment and the latest version stored and running in each server environment.
前記複数の開発者がそれぞれ開発したプログラムと、検証環境に格納されている現在のプログラムとの差分であるプログラム差分を抽出するステップと、
前記複数の開発者がそれぞれ開発したモジュールと、検証環境に格納されている現在のモジュールとの差分であるモジュール差分を抽出するステップと、
前記モジュール差分が抽出されない場合、前記プログラム差分を棄却するステップと、
前記プログラム差分に応じたマージ処理のルールを参照して、前記開発したプログラムと前記現在のプログラムとをマージ処理するステップと、
を備えたことを特徴とするプログラム管理方法。 In a program management method for managing program development work in a server by a plurality of developers,
a step of extracting a program difference, which is a difference between a program developed by each of the plurality of developers and a current program stored in a verification environment;
a step of extracting a module difference, which is a difference between a module developed by each of the plurality of developers and a current module stored in a verification environment;
if the module difference is not extracted, rejecting the program difference;
a step of merging the developed program and the current program with reference to a merge processing rule according to the program difference;
A program management method comprising:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021003458A JP2022108452A (en) | 2021-01-13 | 2021-01-13 | Program managing device and program managing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021003458A JP2022108452A (en) | 2021-01-13 | 2021-01-13 | Program managing device and program managing method |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2022108452A true JP2022108452A (en) | 2022-07-26 |
Family
ID=82556598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021003458A Pending JP2022108452A (en) | 2021-01-13 | 2021-01-13 | Program managing device and program managing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2022108452A (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024038951A1 (en) * | 2022-08-17 | 2024-02-22 | 쿠팡 주식회사 | Method for providing code information and electronic device for supporting same |
-
2021
- 2021-01-13 JP JP2021003458A patent/JP2022108452A/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024038951A1 (en) * | 2022-08-17 | 2024-02-22 | 쿠팡 주식회사 | Method for providing code information and electronic device for supporting same |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10061688B2 (en) | Method and system to automatically enforce a hybrid branching strategy | |
CN106708740B (en) | Script testing method and device | |
CN111352651A (en) | Code branch management method and device | |
US11593336B2 (en) | Data pipeline branching | |
CN111783103A (en) | Dependency management method and device based on Maven, electronic device and storage medium | |
EP4189914B1 (en) | Using multiple blockchains for applying transactions to a set of persistent data objects in persistent storage systems | |
Demuth et al. | Efficient detection of inconsistencies in a multi-developer engineering environment | |
JP2022108452A (en) | Program managing device and program managing method | |
CN112394949B (en) | Service version dynamic configuration method for continuous integration | |
CN116088846A (en) | Processing method, related device and equipment for continuous integrated code format | |
Evrard et al. | Automatic distributed code generation from formal models of asynchronous concurrent processes | |
CN117289925A (en) | Software modeling method and system based on component technology | |
KR20210097560A (en) | Block chain transaction processing method | |
CN116400950A (en) | DevOps element pipeline system based on version control | |
US9396239B2 (en) | Compiling method, storage medium and compiling apparatus | |
CN111078669B (en) | Processing method, device and equipment based on name resolution tree and storage medium | |
CN111338632A (en) | Cloud platform mirror image construction method and device | |
CN113127036B (en) | Software development system, method, apparatus and medium for continuous integration of code | |
CN113448493B (en) | Method, electronic device and computer readable medium for backing up data | |
CN115809084A (en) | Version generation method and device, electronic equipment and storage medium | |
CN113806327A (en) | Database design method and device and related equipment | |
CN109240737A (en) | A kind of method and system of the packing and issuing in big data platform | |
CN118092885B (en) | Code frame method based on front-end and back-end plug-in architecture | |
Deknop et al. | Advanced Differencing of Legacy Code and Migration Logs | |
CN115016800A (en) | Software development automation processing method and device for continuous integrated deployment |