(57)【要約】【課題】  複数開発者が同一のソースファイルを同時に編集することを可能としながらソースファイルの整合性を確保し、かつ開発者がソースファイルの変更部分を容易に把握可能なバージョン管理システムを提供する。【解決手段】  バージョン管理システム１００を構成するバージョン管理システムサーバ１１０は、ソースファイル分割登録手段，排他制御手段，変更履歴管理手段，メソッド編集手段の各処理手段と、ソースファイル格納部１１１，メソッド名一覧情報格納部１１２の各情報格納部とを備える。ソースファイル分割登録手段はソースファイルのプログラム言語に応じて解析し、ソースファイルをメソッド単位に分割して生成したメソッドファイルをソースファイル格納部に格納する。排他制御部，変更履歴管理部，メソッド編集部は、各メソッドファイル毎に排他制御処理，変更履歴管理処理，編集処理を行う。【選択図】      図１
2006277435.tif 000002
【特許請求の範囲】
【請求項１】
開発対象プログラムを構成するソースファイルを登録し、登録されたソースファイルに対する編集処理についての排他制御を行うとともに、編集されたソースファイルの変更履歴管理を行うソースファイルバージョン管理システムにおいて、
前記ソースファイルのプログラム言語に応じてソースファイルを解析し、当該ソースファイルをメソッド以外の共通情報とメソッド単位とのソースコードファイルに分割したメソッドファイルを生成して、当該メソッドファイルを前記排他制御及び変更履歴管理の対象として登録するソースファイル分割登録手段を備えることを特徴とするソースファイルバージョン管理システム。
【請求項２】
前記ソースファイルバージョン管理システムは、
任意に選択されたメソッドファイルの削除要求に応じて、当該メソッドファイルを削除するメソッドファイル編集手段を備えることを特徴とする請求項１に記載のソースファイルバージョン管理システム。
【請求項３】
前記メソッドファイル編集手段は、任意に選択されたメソッドファイルのメソッド名の変更要求に応じて、当該メソッドファイルを構成するソースコード中のメソッド名を変更することを特徴とする請求項２に記載のソースファイルバージョン管理システム。
【請求項４】
前記メソッドファイル編集手段は、任意に選択されたソースファイルに対するメソッドファイルの追加要求に応じて、任意のメソッド名を含むメソッドファイルを生成して登録することを特徴とする請求項２又は３のいずれかに記載のソースファイルバージョン管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム開発において、プログラムを構成するファイルのバージョンを管理するシステムに関する。
【背景技術】
【０００２】
プログラム開発では、一般に、開発の過程で発生するプログラムの修正，バージョンアップ時のプログラムの変更に伴うファイルの修正に関し、複数の開発者により修正されたファイルの整合性を確保するために、ファイルを共有するとともに、ファイルの変更履歴（バージョン間の差分）を管理するシステムが用いられている。
このようなシステムとしては、従来より、ある開発者が編集を行っている共有ファイルについて、他の開発者による編集を禁止するような排他制御を行うこととしたシステムが公知となっている（例えば、非特許文献１参照。）
【非特許文献１】「Microsoft Visual SourceSafe 6.0 製品のご案内（評価ガイド）」、[online]、Ｍａｉｃｒｏｓｏｆｔ、［平成１６年１１月２２日検索］インターネット＜URL：http://www.microsoft.com/japan/msdn/ssafe/prodinfo/default.htm＞
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、前記非特許文献に記載のバージョン管理システムでは、ファイル単位に排他制御を行っているため、ある開発者による作業が終了するまで他の開発者は同一のソースファイルを編集することができなかった。従って、複数開発者が同一ファイルの編集を行う場合には、無駄な待ち時間が発生するため、プログラム開発の迅速化，効率化を図ることができなかった。
また、ソースファイルの変更履歴管理についても、ファイル単位で行っているため、ソースファイルのサイズが大きく、かつ変更箇所が複数個所にまたがっている場合、変更箇所を把握し難いという問題があった。
【０００４】
本発明は前記課題を解決するためのものであり、複数開発者が同一のソースファイルを同時に編集することを可能としながらソースファイルの整合性を確保し、かつ開発者がソースファイルの変更部分を容易に把握可能なバージョン管理システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
前記課題を解決するため本発明は、開発対象プログラムを構成するソースファイルを登録し、登録されたソースファイルに対する編集処理についての排他制御を行うとともに、編集されたソースファイルの変更履歴管理を行うソースファイルバージョン管理システムにおいて、前記ソースファイルのプログラム言語に応じてソースファイルを解析し、当該ソースファイルをメソッド単位のソースコードファイルに分割したメソッドファイルを生成して、前記排他制御及び変更履歴管理の対象として登録するソースファイル分割登録手段を備えることを特徴とする。
また、前記ソースファイルバージョン管理システムは、任意に選択されたメソッドファイルの削除要求に応じて、当該メソッドファイルを削除するメソッドファイル編集手段を備えることを特徴とする。
また、前記メソッドファイル編集手段は、任意に選択されたメソッドファイルのメソッド名の変更要求に応じて、当該メソッドファイルを構成するソースコードのメソッド名を変更することを特徴とする。
また、前記メソッドファイル編集手段は、任意に選択されたソースファイルに対するメソッドファイルの追加要求に応じて、任意のメソッド名のメソッドファイルを生成して登録することを特徴とする。
【発明の効果】
【０００６】
以上の構成により本発明では、ソースファイルをメソッド単位に分割して登録することとしたので、メソッド単位での排他制御及び変更履歴管理が可能となる。
従って、複数開発者が同時に同一のソースファイルを編集することが可能となり、複数開発者によるプログラム開発の作業効率を向上させることができる。また、メソッド単位に変更履歴を参照できバージョン間の差分情報も同様にメソッド単位に確認ができるため、バージョン間の変更部分を容易に把握することが可能となる。
さらに、メソッド単位での削除，メソッド名の変更，メソッドファイルの追加を可能としたので、開発作業効率がさらに向上することとなる。
【発明を実施するための最良の形態】
【０００７】
以下、本発明の一実施の形態に係るバージョン管理システムについて、図面に基づき説明する。
図１は、本発明の一実施の形態に係るバージョン管理システムの概略構成を示すブロック図である。
本実施の形態に係るバージョン管理システム１００は、ソースファイルの管理を行うバージョン管理システムサーバ１１０と、バージョン管理システムサーバ１１０へのソースファイルの登録，編集等を行うバージョン管理システムクライアント１２０とから構成されている。
バージョン管理システムサーバ１１０は、ソースファイル分割登録手段、排他制御手段、変更履歴管理手段、メソッド編集手段の各処理手段と、ソースファイルを分割して格納するソースファイル格納部１１１と、メソッド名一覧情報格納部１１２とを備える。
本実施の形態に係るバージョン管理システム１００は、バージョン管理システムサーバ１１０が、バージョン管理システムクライアント１２０から登録されたソースファイルを共通情報と各メソッドとに分割して格納し、共通情報又は各メソッド毎に排他制御，変更履歴管理，編集等を可能としている。
【０００８】
図２は、バージョン管理システムサーバ１１０がバージョン管理システムクライアント１２０に表示させるクライアント画面の一例を示す図である。
クライアント画面２００は、ファイル登録ボタン２０１と、登録ファイル一覧表示部２１０とを有する。登録ファイル一覧表示部２１０は、フォルダをツリー状に表示するフォルダ表示部２１１と、各フォルダ内に登録されているソースファイルの一覧を表示するファイル表示部２１２と、各ソースファイル内に含まれるメソッドの一覧を表示するメソッド表示部２１３と、メソッドがチェックアウトされているか否か及びチェックアウトを行っているユーザのユーザＩＤを示す状態表示部２１４とから構成されている。
登録ファイル一覧表示部２１０のファイル表示部２１２においてマウスの右クリック等の所定の操作に応じてファイル単位での編集メニュー２１５として「メソッド追加」を表示する。また、メソッド表示部２１３においてマウスの右クリック等の所定の操作に応じてメソッド単位での編集メニュー２１６を表示する。編集メニュー２１６には、「編集」「チェックアウト」「チェックイン」「メソッド削除」「メソッド名変更」が含まれる。
「編集」は、バージョン管理システムクライアントにおいて任意のエディタを起動して、選択された任意のメソッドの内容を表示する処理を示す。
「チェックアウト」は、選択されたメソッドの排他制御を行う処理を示す。
「チェックイン」は、編集後のメソッド内容を登録する処理を示す。
「メソッド削除」は、選択されたメソッド自体を削除する処理を示す。
「メソッド名変更」は、選択されたメソッドについて登録されているメソッド名を変更する処理を示す。
メソッドファイルの編集を行う場合には、まず、「チェックアウト」を選択させ、任意のメソッドファイルを排他制御状態とした後、「編集」を選択させてエディタを起動することにより、ユーザによる編集を可能とする。
ユーザによる編集がされた後は「チェックイン」を選択させることにより、編集後のメソッドファイルをソースファイル格納部に上書登録する。この際、メソッドファイル内に含まれるメソッド名がメソッド名一覧情報に登録されたメソッド名と異なる場合には、新たなメソッド名をメソッド名一覧情報格納部に上書登録する。また、メソッドファイルの内容が全て削除された状態（空の状態）で「チェックイン」が選択された場合には、メソッドが削除されたものとみなし、ソースファイル格納部１１１に登録されたメソッドファイルを削除するとともに、メソッド名一覧情報格納部１１２から対応するメソッド名を削除する。
【０００９】
以上の構成に基づき、本実施の形態に係るバージョン管理システム１００の行う処理として、まず、ソースファイル登録処理について説明する。
図３は、図２に示すクライアント画面２００において、ファイル登録ボタンが押下された場合に表示するファイル種別選択画面の一例を示す図である。
ファイル種別選択画面３００は、ファイル種別として「ソースファイル」又は「通常のファイル」のいずれかを選択させるラジオボタン３０１と、ＯＫボタン３０２とを有する。ここで、「通常のファイル」とは、「ソースファイル」以外のファイル（データファイル、パラメータファイル等）を示す。
バージョン管理システムクライアント１２０では、クライアント画面２００においてファイル登録ボタン２０１が押下されると、ファイル種別選択画面３００を表示する。ファイル種別選択画面３００において、ユーザによりラジオボタン３０１で「ソースファイル」又は「通常のファイル」のいずれかが選択され、ＯＫボタン３０２が押下されると、ファイル種別を含む登録要求をバージョン管理システムサーバ１１０に送信する。
【００１０】
図４は、登録要求を受信したバージョン管理システムサーバ１１０のソースファイル分割登録手段が行うソースファイル登録処理手順を示すフローチャートである。
ソースファイル登録部は、バージョン管理システムクライアント１２０からの登録要求のあったファイルとともに、当該登録要求に含まれるファイル種別を取得する（ステップ４０１）。
ファイル種別が「ソースファイル以外」を示す場合には、取得したファイルをそのまま登録する（ステップ４０２）。一方、ファイル種別が「ソースファイル」を示す場合には、例えば、「．ｊａｖａ」又は「．ｃｐｐ」等のファイルの拡張子に基づき、プログラム言語の種類を判定する（ステップ４０３）。
判定したプログラム言語に応じて、予め定義された分割基準情報に基づき、ソースファイルを解析し、共通部分（メソッド以外の部分）と各メソッド単位とに分割する（ステップ４０４）。
分割した各ファイルをソースファイル格納部１１１に格納するとともに（ステップ４０５）、ソースファイルの解析結果から、メソッド名一覧を生成して、メソッド名一覧情報格納部１１２に格納する。（ステップ４０６）
【００１１】
図５，６は、バージョン管理システムサーバ１１０に登録されたソースファイルの一例を示す図であり、図５はｊａｖａ言語（「Ｊａｖａ」は、米国サンマイクロシステムズ社の登録商標である。）のソースファイルの例を示し、図６はＣ＋＋言語のソースファイルの例を示す。
図５に示すように、ｊａｖａ言語の場合には、例えば、packageの宣言（「package xxx.yyy.zzz;」）やimport文（「import java.util.*;」）等のクラス定義（「public class SampleA{」）の前に記述されている文、クラス定義（「public class SampleA」）、メンバ変数の宣言（「private String strA;」）、およびソースファイルの最後のクラス定義のおわり（「}」）を共通部分とみなす。メソッド宣言の始まり（「public void methodA(){」）からメソッド宣言の終わり（「}」）までをメソッド部分とみなす。コンストラクタ宣言の始まり（「public SampleA(){」）からコンストラクタ宣言の終わり（「}」）についても、通常のメソッドと同様に扱う。
一方、図６に示すように、Ｃ＋＋言語の場合には、例えば、マクロ定義（「#include <SampleB.h>」）、クラス宣言の始まり（「class SampleB {」）からクラス宣言の終わり（「}」）を共通部分とみなす。メソッド宣言の始まり（「void SampleB::methodA() {」）からメソッド宣言の終わり（「}」）までをメソッド部分とみなす。コンストラクタ宣言の始まり（「SampleB::SampleB() {」）からコンストラクタ宣言の終わり（「}」）についても、通常のメソッドと同様に扱う。
【００１２】
次に、ソースファイル格納部１１１に格納された分割ファイルの編集処理において、排他制御手段が行う排他制御処理について説明する。
図７は排他制御処理を示す概念図であり、図８は排他制御手段が表示するエラーメッセージ画面の一例を示す図である。
図２に示すクライアント画面２００のフォルダ表示部２０１にツリー状に表示されているフォルダ一覧から任意のフォルダが選択されると、ファイル表示部２０１にファイルの一覧とともに、各ファイルに含まれるメソッドの一覧と、各メソッドの状態を表示する。
この状態において任意のメソッドに対しチェックアウト操作がなされると
図７に示すように、バージョン管理システムサーバ１１０の排他制御手段は、バージョン管理システムクライアント１２０ＡからメソッドＡ７００に対するチェックアウト要求を受付けると、排他管理情報７０１を生成し、メソッドＡ７００に対応付けてソースファイル格納部１１１に格納するとともに、登録ファイル一覧表示部２１２の状態表示欄２１４に「チェックアウト中（ｕｓｅｒＡ）」を表示させる。
この状態において、バージョン管理システムクライアント１２０ＢからメソッドＡ７００に対するチェックアウト要求を受付けると、バージョン管理システムサーバ１１０の排他制御手段は、排他管理情報７０１を参照してメソッドＡ７００がチェックアウト中であることを判定し、バージョン管理システムクライアント１２０Ｂに、例えば、図８に示すようなエラーメッセージ画面８００を表示させる。
【００１３】
また、ソースファイル格納部１１１に格納された分割ファイルの編集処理において、変更履歴管理手段が行う変更履歴管理処理について説明する。
変更履歴管理処理について説明する。
図９は、変更履歴管理処理を示す概念図である。
図９に示すように、変更履歴管理手段は、バージョン管理システムクライアント１２０Ａからのチェックインを受付け、メソッドＡ９００についての差分情報９０１を生成し、当該メソッド毎の分割ファイルに対応付けて、ソースファイル格納部１１１に格納する。
以上の処理によりメソッド単位でのソースコードの変更履歴管理を行う。
【００１４】
次に、各メソッド単位での編集処理について説明する。
図１０〜１２は、クライアント画面２００において「メソッド追加」「メソッド削除」「メソッド名変更」が選択された場合に表示する各表示画面の一例を示す図である。
「メソッド追加」が選択された場合には、図１０に示すように、メソッド名入力欄１００１と、追加するメソッドの位置を決めるためのメソッド追加対象のソースファイル内に含まれる共通部分（Common）以外のメソッドの一覧を表示するメソッド挿入位置選択部１００２と，ＯＫボタン１００３と、キャンセルボタン１００４とを有するメソッド追加画面１０００を表示する。メソッド追加画面１０００において、メソッド名入力欄１００１に任意のメソッド名が入力された状態で、メソッド挿入位置選択部１００２で挿入するメソッドの位置を選択し，ＯＫボタン１００３が押下されると、メソッド名一覧情報に入力されたメソッド名のメソッドをメソッド挿入位置選択部１００２で選択されたメソッドの前に追加するとともに、改行を１行含むメソッドファイルを生成する。メソッド挿入位置選択部１００２で挿入するメソッドの位置を選択していない場合は，メソッド名一覧情報の最後にメソッドを追加する。
「メソッド削除」が選択された場合には、図１１に示すように、「メソッドを削除しますか？」という確認メッセージとともに、「はい」ボタン１１０１と「いいえ」ボタン１１０２とを備えたメソッド削除確認画面１１００を表示する。メソッド削除確認画面１１００において、「はい」ボタン１１０１が押下されると、メソッド名一覧情報から任意に選択されたメソッドファイルに対応するメソッド名を削除するとともに、ソースファイル格納部１０１に格納されたメソッドファイルを削除する。
「メソッド名変更」が選択された場合には、図１２に示すように、メソッド名修正欄１２０１と、ＯＫボタン１２０２と、キャンセルボタン１２０３とを有するメソッド名変更画面１２００を表示する。メソッド名変更画面１２００において、メソッド名修正欄１２０１に任意のメソッド名が入力された状態で、ＯＫボタン１２０２が押下されると、メソッド名一覧情報の中に登録されたメソッド名を修正し、ソースファイル格納部１１１に格納されたメソッドファイルのメソッド名を修正するとともに、メソッド名一覧情報格納部１０２のメソッド名を修正して更新する。
【００１５】
図１３は、バージョン管理システムサーバ１１０のメソッド編集手段が行うメソッド編集処理の主な流れを示すフローチャートである。
バージョン管理システムクライアント１２０からチェックイン要求を受付けると、メソッド編集手段は、受信したメソッドファイルが空であるかを判定し（ステップ１３０１）、メソッドファイルが空である場合には、結果として「メソッド削除」と同等の変更を行ったことになるので、メソッド名一覧情報から当該メソッドファイルに対応する情報を削除するとともに（ステップ１３０２）、ソースファイル格納部１１１から該当するメソッドファイルを削除して処理を終了する（ステップ１３０３）。
一方、メソッドファイルが空でない場合には、メソッド名が変更されているか否かを判定し（ステップ１３０４）、メソッド名が変更されている場合には、メソッド名一覧情報のメソッド名を変更するとともに（ステップ１３０５）、メソッドファイルを上書き保存して処理を終了する（ステップ１３０６）。
メソッド名が変更されていない場合には、そのままメソッドファイルを上書き保存する（ステップ１３０７）。
【００１６】
以上のように、本実施の形態に係るソースファイルバージョン管理システムでは、ソースファイルをメソッド単位に分割したファイルを生成して登録することとしたので、メソッド単位での排他制御，編集，変更履歴管理等が可能となる。
【００１７】
なお、前記実施の形態では、ソースファイルをメソッドファイル単位で分割して登録することとしているが、これに限らず、タグ等で識別可能な範囲を示す単位であれば、他の単位で分割することとしてもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施の形態に係るソースファイルバージョン管理システムの概略構成を示すブロック図である。
【図２】ソースファイル編集処理において表示するクライアント画面の一例を示す図である。
【図３】ソースファイル登録処理において表示するファイル種別選択画面の一例を示す図である。
【図４】ソースファイルバージョン管理システムの行うソースファイル登録処理手順を示すフローチャートである。
【図５】ソースファイルバージョン管理システムに登録されたソースコードの一例（ｊａｖａ言語）を示す図である。
【図６】ソースファイルバージョン管理システムに登録されたソースコードの一例（Ｃ＋＋言語）を示す図である。
【図７】ソースファイルバージョン管理システムの行う排他制御処理を示す概念図である。
【図８】排他制御処理において表示するエラーメッセージ画面の一例を示す図である。
【図９】ソースファイルバージョン管理システムの行う変更履歴管理処理を示す概念図である。
【図１０】メソッドファイル編集処理において表示するメソッド追加画面の一例を示す図である。
【図１１】メソッドファイル編集処理において表示するメソッド削除確認画面の一例を示す図である。
【図１２】メソッドファイル編集処理において表示するメソッド名変更画面の一例を示す図である。
【図１３】ソースファイルバージョン管理システムの行うメソッドファイル編集処理手順を示すフローチャートである。
【符号の説明】
【００１９】
１００  バージョン管理システム、１１０  バージョン管理システムサーバ、１１１  ソースファイル格納部、１１２  メソッド名一覧情報格納部、１２０  バージョン管理システムクライアント。
【図１】
2006277435.tif 000003
【図２】
2006277435.tif 000004
【図３】
2006277435.tif 000005
【図４】
2006277435.tif 000006
【図５】
2006277435.tif 000007
【図６】
2006277435.tif 000008
【図７】
2006277435.tif 000009
【図８】
2006277435.tif 000010
【図９】
2006277435.tif 000011
【図１０】
2006277435.tif 000012
【図１１】
2006277435.tif 000013
【図１２】
2006277435.tif 000014
【図１３】
2006277435.tif 000015