(57)【特許請求の範囲】
【請求項１】
開発者がソースコードの編集を行なうクライアント装置と、ソースコード情報を格納する記憶装置を備えた構成管理サーバとが通信自在に接続される構成管理システムであって、
前記構成管理サーバは、前記クライアント装置から、ソースコード編集要求情報を受信すると、編集要求があったソースコードに対して依存関係のあるソースコード情報である依存関係情報を前記記憶装置から抽出する手段と、
前記記憶装置から、前記依存関係のあるソースコードのカバレージ情報を抽出する手段と、
前記依存関係情報と前記カバレージ情報とから、依存関係のあるソースコードのうちカバレージが未取得のソースコード情報を取得する手段と、
前記記憶装置から、ソースコードの編集状況を表す排他制御情報を抽出する手段と、
前記排他制御情報に基づき、前記カバレージが未取得のソースコードが、現在、他の開発者によって編集されているかどうかをチェックする手段と、
他の開発者によって編集されている場合、前記クライアント装置に対し編集不可能である通知情報を送信する手段と、
他の開発者によって編集されていない場合、前記編集要求のあったソースコードと前記カバレージが未取得のソースコードとを編集中のソースコードとして他の開発者が編集できないように前記記憶装置に格納されている排他制御情報を更新する手段と、
更新が完了したら、前記カバレージが未取得のソースコード情報及び前記編集要求のあったソースコードの情報から成る編集可能範囲情報と前記編集要求のあったソースコードと依存関係のあるソースコードの内容とを前記クライアント装置に送信する手段と、
前記クライアント装置から編集されたソースコードと依存関係のあるソースコードの内容とを受信すると、前記記憶装置に格納されているソースコード情報を更新する手段とを備え、
前記クライアント装置は、前記構成管理サーバから、編集要求したソースコードと依存関係のあるソースコードの内容と前記編集可能範囲情報とを受信すると、前記編集可能範囲情報に基づき、編集可能範囲のソースコードの箇所を編集可能領域として表示し、編集不可能範囲のソースコードの箇所を編集不可能領域として表示する手段と、
前記編集可能範囲内で編集されたソースコードと依存関係のあるソースコードの内容とを前記構成管理サーバに送信する手段とを備えたことを特徴とする構成管理システム。
【請求項２】
前記構成管理サーバに、ソースコードに対してテストを実行するテスト装置が通信自在に接続され、
前記テスト装置は、前記構成管理サーバからソースコードを受信すると、テストドライバを使用し、受信したソースコードに対してテストを実施し、カバレージ情報を取得する手段と、
前記カバレージ情報を前記構成管理サーバに送信する手段とを備え、
前記構成管理サーバは、前記記憶装置に格納されるソースコード情報を更新すると、更新したソースコードを前記テスト装置に送信する手段と、
前記テスト装置からカバレージ情報を受信すると、前記記憶装置に格納されているカバレージ情報を更新する手段と、
更新された前記ソースコードを基にコールツリー生成手段を用いて前記記憶装置に格納されている依存関係情報を更新する手段と、
前記クライアント装置から受信したソースコードに基づき、前記記憶装置に格納されている前記排他制御情報を編集可能な状態に更新する手段とを備えたことを特徴とする請求項１記載の構成管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードを編集する際に、プログラムの動作の整合性を保ちつつ、１つのファイルに対して複数人による同時編集を可能とする構成管理システムに関するものである。
【背景技術】
【０００２】
プログラムを構成する複数のソースコードを管理する上でVisual SourceSafe（以下、VSS）などの構成管理ツールがある。構成管理ツールを使用することによって、プログラムのソースコード１つ１つの整合性を保ち、管理することができる。しかし、VSSの構成管理ツールの場合、１つのファイルに対して複数の人が同時に修正することができないため、プログラム開発の効率化を図ることができない。
特許文献１では、ファイルの内容を部分領域単位に区切り、ファイルを編集する際には部分領域単位で排他制御し、管理することで、複数の開発者が１つのファイルに対して同時に編集する方法が開示されている。
【特許文献１】特開２００５−３０１８３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特許文献１の場合、部分領域単位で管理することにより同時編集は可能となるが、ソースコードを管理する上で、編集対象のソースコードのみを排他制御の対象としている。そのため、編集対象のソースコードが他のソースコードを参照している関係（以下、依存関係）がある場合、依存関係のあるソースコードを他の開発者によって編集されてしまうと、プログラムの処理が正しく動作しなくなる可能性がある。
【０００４】
以上の現状に鑑み、本発明は、ソースコードを編集する際に編集対象のソースコードと依存関係のあるソースコードに対しても排他制御の対象とすることにより、プログラムの動作の整合性を保ちつつ、１つのファイルに対して複数人による同時編集を可能とする構成管理システムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、開発者がソースコードの編集を行なうクライアント装置と、ソースコード情報を格納する記憶装置を備えた構成管理サーバとが通信自在に接続される構成管理システムであって、
前記構成管理サーバは、前記クライアント装置から、ソースコード編集要求情報を受信すると、編集要求があったソースコードに対して依存関係のあるソースコード情報である依存関係情報を前記記憶装置から抽出する手段と、
前記記憶装置から、前記依存関係のあるソースコードのカバレージ情報を抽出する手段と、
前記依存関係情報と前記カバレージ情報とから、依存関係のあるソースコードのうちカバレージが未取得のソースコード情報を取得する手段と、
前記記憶装置から、ソースコードの編集状況を表す排他制御情報を抽出する手段と、
前記排他制御情報に基づき、前記カバレージが未取得のソースコードが、現在、他の開発者によって編集されているかどうかをチェックする手段と、
他の開発者によって編集されている場合、前記クライアント装置に対し編集不可能である通知情報を送信する手段と、
他の開発者によって編集されていない場合、前記編集要求のあったソースコードと前記カバレージが未取得のソースコードとを編集中のソースコードとして他の開発者が編集できないように前記記憶装置に格納されている排他制御情報を更新する手段と、
更新が完了したら、前記カバレージが未取得のソースコード情報及び前記編集要求のあったソースコードの情報から成る編集可能範囲情報と前記編集要求のあったソースコードと依存関係のあるソースコードの内容とを前記クライアント装置に送信する手段と、
前記クライアント装置から編集されたソースコードと依存関係のあるソースコードの内容とを受信すると、前記記憶装置に格納されているソースコード情報を更新する手段とを備え、
前記クライアント装置は、前記構成管理サーバから、編集要求したソースコードと依存関係のあるソースコードの内容と前記編集可能範囲情報とを受信すると、前記編集可能範囲情報に基づき、編集可能範囲のソースコードの箇所を編集可能領域として表示し、編集不可能範囲のソースコードの箇所を編集不可能領域として表示する手段と、
前記編集可能範囲内で編集されたソースコードと依存関係のあるソースコードの内容とを前記構成管理サーバに送信する手段とを備えたことを特徴とする構成管理システムを提供するものである。
【０００６】
請求項２に係る発明は、前記構成管理サーバに、ソースコードに対してテストを実行するテスト装置が通信自在に接続され、
前記テスト装置は、前記構成管理サーバからソースコードを受信すると、テストドライバを使用し、受信したソースコードに対してテストを実施し、カバレージ情報を取得する手段と、
前記カバレージ情報を前記構成管理サーバに送信する手段とを備え、
前記構成管理サーバは、前記記憶装置に格納されるソースコード情報を更新すると、更新したソースコードを前記テスト装置に送信する手段と、
前記テスト装置からカバレージ情報を受信すると、前記記憶装置に格納されているカバレージ情報を更新する手段と、
更新された前記ソースコードを基にコールツリー生成手段を用いて前記記憶装置に格納されている依存関係情報を更新する手段と、
前記クライアント装置から受信したソースコードに基づき、前記記憶装置に格納されている前記排他制御情報を編集可能な状態に更新する手段とを備えたことを特徴とする請求項１記載の構成管理システムを提供するものである。
【発明の効果】
【０００７】
本発明の構成管理システムによれば、次のような効果がある。
（１）編集対象のソースコードに加え、編集対象のソースコードと依存関係のあるソースコードに対しても排他制御を行うため、プログラムの動作の整合性を保つことができる。
（２）ソースコード間の依存関係情報、テスト済みのソースコード情報を基にソースコードの編集可能範囲を決定し、この編集可能範囲のみを排他制御が必要なソースコードとして管理するため、１つのファイルに対して複数人による同時編集が可能となり、作業効率が向上する。
【発明を実施するための最良の形態】
【０００８】
以下、実施例を示した図面を参照しつつ本発明を適用した構成管理システムの一実施の形態について説明する。
図１は、本発明の構成管理システムの実施形態の一例を示すシステム構成図であり、本発明の構成管理システムは、開発者が作成したソースコードを管理する構成管理サーバ１０１と、ソースコードの表示・編集を行うクライアント装置１０２と、構成管理サーバ１０１に備えられ、ソースコードに関する情報を格納する記憶装置１０３と、構成管理サーバ１０１が管理するソースコードに対してテストを実行するテスト装置１０４とから構成されている。
【０００９】
構成管理サーバ１０１は、クライアント装置１０２又はテスト装置１０４と通信を行うサーバ通信部１０５と、記憶装置１０３にソースコードに関する情報を格納するデータ格納部１０６と、記憶装置１０３からソースコードに関する情報を抽出するデータ抽出部１０７と、クライアント装置１０２からのソースコード編集要求に対して、編集対象ソースコードと依存関係のあるソースコード又はテスト済みのソースコード情報を記憶装置１０３から取得し、依存関係のあるソースコードのうち編集可能な範囲を決定する編集範囲決定部１０８とから構成されている。
【００１０】
クライアント装置１０２は、構成管理サーバ１０１と通信を行うクライアント通信部１０９と、構成管理サーバ１０１から送信されるソースコード内容を画面に表示する表示部１１０と、表示されたソースコードに対して開発者が追加・変更・削除などを行う入力部１１１と、構成管理サーバ１０１から送信される編集可能なソースコードの範囲情報を基に、画面に表示されるソースコードの入力範囲を制御する排他制御部１１２とから構成されている。クライアント装置１０２は複数存在するものとする。
【００１１】
記憶装置１０３は、ソースコードに関する情報として、構成管理サーバ１０１が管理するソースコード内容を表すソースコード情報１１３と、構成管理サーバ１０１が管理するソースコードのうちテスト済みのソースコード情報を表すテスト済みソースコード情報１１４と、ソースコード間の依存関係の情報を表す依存関係情報１１５と、構成管理サーバ１０１が管理するソースコードの編集状況を表す排他制御情報１１６とを記憶する。
【００１２】
前記依存関係情報１１５は、コールツリー生成手段であるコールツリーを生成する既存のツールを使用し、取得するものとする。テスト済みソースコード情報１１４と依存関係情報１１５は、構成管理サーバ１０１にソースコードを格納するたびに更新されるものとする。また、本実施例ではテスト済みソースコード情報１１４としてカバレージ情報が格納されるものとする。本実施例で使用するカバレージ情報とは、テスト実行時にソースコードのどの部分が実行されたかという情報のことを意味する。
【００１３】
テスト装置１０４は、構成管理サーバ１０１からソースコード情報１１３の受信や受信したソースコードの実行結果を構成管理サーバ１０１に送信するテスト装置通信部１１７と、受信したソースコードに対してテストを実行するテスト実行部１１８から構成されている。前記テスト実行部１１８で使用するテストドライバのソースコードは、開発者によって指定位置に格納されたものを読み込むものとする。また、前記クライアント装置１０２、前記テスト装置１０４はネットワークを通じて構成管理サーバ１０１と接続されている。
【００１４】
図２は、構成管理サーバ１０１が管理するソースコード情報のデータ構造２００である。ソースコード情報のデータ構造２００は、構成管理サーバ１０１が管理するソースコードのファイル名を表すファイル名２０１と、ファイル名２０１のパッケージ構成を表すパッケージ名２０２と、管理するソースコードの行番号を表す行番号２０３と、ファイル名２０１とパッケージ名２０２と行番号２０３で示すソースコードの内容を表すソースコード内容２０４とから構成されている。
【００１５】
図３は、テスト済みソースコード情報のデータ構造３００である。テスト済みソースコード情報のデータ構造３００は、テスト済みのソースコード情報として、テスト実施対象のソースコードファイルを表すファイル名３０１と、ファイル名３０１のパッケージ構成を表すパッケージ名３０２と、テスト実施対象のメソッドを表すメソッド名３０３と、対象ファイルのソースコード内でテストを実施した行を表す行番号３０４と、行番号３０４で表す行でテストを実施した列の開始番号を表す開始列番号３０５と、行番号３０４で表す行でテストを実施した列の終了番号を表す終了列番号３０６とから構成されている。
【００１６】
図４は、ソースコードの依存関係情報のデータ構造４００である。ソースコードの依存関係情報のデータ構造４００は、依存関係情報として、対象のソースコードファイルのファイル名を表すファイル名４０１と、ファイル名４０１のパッケージ構成を表すパッケージ名４０２と、ファイル名４０１とパッケージ名４０２で示すソースコードファイル内に書かれた対象のメソッド名を表すメソッド名４０３と、メソッド名４０３で表すソースコードの開始行を表す行開始番号４０４と、メソッド名４０３で表すソースコードの終了行を表す行終了番号４０５と、ファイル名４０１とパッケージ名４０２とメソッド名４０３で表すソースコードと依存関係のあるファイル名を表す依存ファイル名４０６と、依存ファイル名４０６のパッケージ構成を表す依存パッケージ名４０７と、依存関係があるメソッドを表す依存メソッド名４０８と、依存メソッド名４０８の開始行を表す依存行開始番号４０９と、依存メソッド名４０８の終了行を表す依存行終了番号４１０から構成されている。
【００１７】
図５は、排他制御情報のデータ構造５００である。排他制御情報のデータ構造５００は、排他制御情報として、排他制御の対象のファイルを表すファイル名５０１と、ファイル名５０１のパッケージ構成を表すパッケージ名５０２と、排他制御の対象となるメソッド名を表すメソッド名５０３と、メソッド名５０３で表すメソッドの排他制御の対象となるソースコード行を表す行番号５０４と、行番号５０４で表すソースコード行のうち、排他制御の開始列を表す開始列番号５０５と、行番号５０４で表すソースコード行のうち、排他制御の終了列を表す終了列番号５０６と、排他制御するソースコードをどのクライアント装置１０２が編集しているのかを表す編集装置５０７とから構成されている。
【００１８】
図６は、クライアント装置１０２からソースコード編集要求があった際に、構成管理サーバ１０１が管理する記憶装置１０３に格納しているソースコードのうち編集可能なソースコード範囲を決定するフローチャートである。構成管理サーバ１０１は、クライアント装置１０２から、ソースコード編集要求情報を受信すると、編集要求があったソースコードに対して、依存関係のあるソースコード情報を記憶装置１０３の依存関係情報１１５から取得（抽出）する（ステップ６０１）。編集要求があったソースコードと依存関係のあるソースコードのカバレージ情報を記憶装置１０３のテスト済みソースコード情報１１４から取得（抽出）する（ステップ６０２）。ステップ６０１とステップ６０２で取得した情報から、依存関係のあるソースコードのうちカバレージが未取得のソースコード情報１１３を取得する（ステップ６０３）。ここで取得したカバレージ未取得のソースコード情報１１３と編集要求のあったソースコードの情報とを編集可能範囲情報とする。また、編集可能範囲情報として、ファイル名、パッケージ名と行番号、列開始番号、列終了番号があるものとする。
【００１９】
記憶装置１０３から排他制御情報１１６を取得（抽出）する（ステップ６０４）。ステップ６０３で取得したカバレージ未取得のソースコード情報が、現在、他の開発者によって編集されているかをチェックする（ステップ６０５）。なお、ステップ６０５ではステップ６０３で取得したカバレージ未取得のソースコード情報以外の箇所についてはチェックを行わないものとする。もし、他の開発者によって編集されている場合、要求元の開発者へ編集不可能であることを通知する（通知情報を送信する）（ステップ６０６）。他の開発者によって編集されていない場合、編集要求のあったソースコード範囲とステップ６０３で取得したカバレージ未取得のソースコードを編集中のソースコードとして排他制御情報を更新する（ステップ６０７）。排他制御情報の更新が完了したら、編集要求のあったソースコードと、依存関係のあるソースコードの内容と、ソースコードの編集可能範囲情報をクライアント装置１０２に送信する（ステップ６０８）。
【００２０】
図７は、クライアント装置側で表示されるソースコードエディタの画面７００である。ソースコードエディタの画面７００は、構成管理サーバ１０１が備える記憶装置１０３に格納しているソースコードファイルのリストを表示するファイル一覧７０１、編集対象のソースコードと依存関係のある関数（またはメソッド）を表示する編集対象関数・メソッド一覧７０２、構成管理サーバ１０１が管理するソースコードを表示するソースコードビュー７０３、構成管理サーバ１０１にソースコードの編集を要求する編集ボタン７０４、開発者がソースコードビュー７０３上で編集した内容を構成管理サーバ１０１が管理する記憶装置１０３に格納する保存ボタン７０５から構成されている。開発者がソースコードを編集する場合には、ソースコードビュー７０３上で編集対象となるソースコードの範囲を選択し、編集ボタン７０４を押下することで構成管理サーバ１０１に開発者が編集したいソースコードとして、編集要求情報を送信する。
【００２１】
図８は、構成管理サーバ１０１にソースコードの編集要求を行い、ソースコードの編集を行う画面８００である。構成管理サーバ１０１から、ソースコードと編集可能範囲情報を受信すると、クライアント装置１０２のソースコードの編集を行う画面８００は、ソースコードの編集可能範囲に対してはソースコードビュー７０３上で編集可能領域８０１として表示し、開発者からの入力を可能とする。編集可能範囲外の箇所については、編集可能領域８０１と背景色を反転し、編集不可能領域８０２として表示する。編集不可能領域８０２では、開発者からのソースコードの入力を受け付けないものとする。また、受信する編集可能範囲情報を基に編集対象関数・メソッド一覧７０２に編集対象のソースコードと依存関係のある関数の一覧を表示するものとする。
【００２２】
図９は、編集対象関数・メソッド一覧７０２に表示される依存関係の関数を選択した際に表示される依存関係ソースコードエディタ画面９００である。依存関係ソースコードエディタ画面９００は、編集対象関数・メソッド一覧７０２に表示される関数一覧の中から関数を選択すると、ソースコードビュー７０３に対象のソースコードを表示する。その際に、編集可能範囲情報を基に編集可能領域８０１、編集不可能領域８０２も含め、ソースコードビュー７０３に表示するものとする。
【００２３】
図１０は、あるクライアント装置１０２にてソースコード編集時に、他クライアント装置１０２で同じソースコードを参照した際に表示される他クライアント装置から見たソースコードエディタの画面１０００である。他クライアント装置から見たソースコードエディタの画面１０００は、ソースコードビュー７０３上に表示されるソースコードのうち、他クライアント装置１０２にて編集中であるソースコードの箇所に対しては、編集不可能領域８０２として表示する。また、他クライアント装置１０２で編集不可能領域８０２と表示されているソースコードは編集要求を行うことができないこととする。
【００２４】
図１１は、図６のフローチャートに沿って編集可能範囲を決定する際に、ステップ６０６で編集不可の情報をクライアント装置１０２に送信したときに表示部１１０に表示されるソースコード編集不可画面１１００である。ソースコード編集不可画面１１００は、クライアント装置１０２で、編集不可の情報を受信した際に、ソースコードの編集を行う画面８００では対象のソースコードが編集できないことをダイアログボックス１１０１にて表示する。ダイアログボックス１１０１は、例えば、ほぼ同時に２つのクライアント装置１０２，１０２が同じソースコードに対して編集要求を行った際に、編集可能範囲を決定する処理を先に完了したクライアント装置１０２を編集可能とし、もう一方のクライアント装置１０２では編集できないときに表示される。
【００２５】
図１２は、クライアント装置１０２側のソースコードの編集を行うエディタ画面８００で編集したソースコードを構成管理サーバ１０１が管理する記憶装置１０３に格納する際のフローチャートである。ソースコードの編集を行うエディタ画面８００で保存ボタン７０５を押下するとクライアント装置１０２は編集対象のソースコードとそのソースコードと依存関係のあるソースコードの内容を構成管理サーバ１０１に送信し、構成管理サーバ１０１は、それらの情報を受信すると（ステップ１２０１）、記憶装置１０３に格納されているソースコード情報をクライアント装置１０２から送信されたソースコードに更新する（ステップ１２０２）。次に、構成管理サーバ１０１は、記憶装置１０３に格納されているソースコード情報をテスト装置１０４に送付（送信）する（ステップ１２０３）。テスト装置１０４は、構成管理サーバ１０１からソースコード情報を受信すると、テスト実行部１１８にて、開発者が作成し、指定位置に格納したテストドライバのソースコードを取得する（ステップ１２０４）。そして、テスト実行部１１８は、ステップ１２０４にて取得したテストドライバを使用し、構成管理サーバ１０１から送付（送信）されたソースコードに対してテストを実施する（ステップ１２０５）。テスト装置１０４は、ステップ１２０５でテスト実行した際にカバレージ情報を取得し、構成管理サーバ１０１に送付（送信）する（ステップ１２０６）。構成管理サーバ１０１は、テスト装置１０４から、カバレージ情報を受信すると、記憶装置１０３に格納されているカバレージ情報を最新のカバレージ情報に更新する（ステップ１２０７）。又、ステップ１２０２で更新されたソースコードを基にコールツリー生成ツールを用いて依存関係情報１１５を更新する（ステップ１２０８）。更に、記憶装置１０３に格納されている排他制御情報１１６を他の利用者が利用できるように、クライアント装置１０２から送信されたソースコードを編集可能の状態に更新する（ステップ１２０９）。
【００２６】
以上のように、本実施の形態の構成管理システムによれば、次のような効果がある。
（１）編集対象のソースコードに加え、編集対象のソースコードと依存関係のあるソースコードに対しても排他制御を行うため、プログラムの動作の整合性を保つことができる。
（２）ソースコード間の依存関係情報、テスト済みのソースコード情報を基にソースコードの編集可能範囲を決定し、この編集可能範囲のみを排他制御が必要なソースコードとして管理するため、１つのファイルに対して複数人による同時編集が可能となり、作業効率が向上する。
【図面の簡単な説明】
【００２７】
【図１】本発明による構成管理システムを概略的に示す説明図である。
【図２】本発明による構成管理サーバで管理するソースコード情報のデータ構造図である。
【図３】本発明によるテスト済みソースコード情報のデータ構造図である。
【図４】本発明による依存関係情報のデータ構造図である。
【図５】本発明による排他制御情報のデータ構造図である。
【図６】本発明による編集範囲決定部の処理の流れを示すフローチャートである。
【図７】本発明による構成管理サーバにあるソースコードを表示するエディタ表示画面である。
【図８】本発明によるソースコードの編集を行なうエディタ表示画面である。
【図９】本発明による依存関係があるメソッドを選択した際に表示されるエディタ表示画面である。
【図１０】本発明による他クライアント装置で表示されるエディタ表示画面である。
【図１１】本発明による構成管理サーバから編集不可情報を受信した際のエディタ表示画である。
【図１２】本発明による編集したソースコードを保存する際の流れを示すフローチャートである。
【符号の説明】
【００２８】
１０１  構成管理サーバ
１０２  クライアント装置
１０３  記憶装置
１０４  テスト装置
１１３  ソースコード情報
１１５  依存関係情報
１１６  排他制御情報
８０１  編集可能領域
８０２  編集不可能領域
【図１】
0004889593.tif 000002
【図２】
0004889593.tif 000003
【図３】
0004889593.tif 000004
【図４】
0004889593.tif 000005
【図５】
0004889593.tif 000006
【図６】
0004889593.tif 000007
【図７】
0004889593.tif 000008
【図８】
0004889593.tif 000009
【図９】
0004889593.tif 000010
【図１０】
0004889593.tif 000011
【図１１】
0004889593.tif 000012
【図１２】
0004889593.tif 000013