(57)【要約】【課題】依存関係のある複数のソースコードを複数の開発者が同時に更新することを防止すること。【解決手段】要求登録手段２３は、ソースコードを含む要求情報をクライアント装置から受け取る。依存関係アクセス手段１６は、複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフ３２を参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索する。開発者マップアクセス手段２８は、複数ファイル名を開発者識別情報集合に対応付ける開発者マップ３４を参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索する。通知手段２４は、前記該当開発者識別情報が示す開発者に前記要求情報を通知する。このとき、開発者は、更新しようとするソースコードが他の開発者の更新と競合するかどうかを確認することができる。【選択図】図１
2009223822.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードを含む要求情報をクライアント装置から受け取る要求登録手段と、
複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索する依存関係アクセス手段と、
複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索する開発者マップアクセス手段と、
前記該当開発者識別情報が示す開発者に前記要求情報を通知する通知手段
とを具備するソースコード更新通知装置。
【請求項２】
請求項１において、
要求ソースコードと要求ファイル名とをそれぞれ示す複数要求情報を格納する要求格納庫と、
前記複数要求情報のうちの前記ソースコードを示す該当要求情報が示す該当ファイル名を検索する要求アクセス手段とを更に具備し、
前記開発者識別情報集合のうちから前記該当ファイル名に対応する該当開発者識別情報を検索する
ソースコード更新通知装置。
【請求項３】
請求項２において、
前記要求情報は、前記ソースコードを示すファイルのファイル名を更に示し、
前記要求登録手段は、前記複数要求情報が前記要求情報を含むように、前記要求格納庫を更新する
ソースコード更新通知装置。
【請求項４】
請求項２または請求項３のいずれかにおいて、
前記複数要求情報は、それぞれ、要求開発者識別情報を更に示し、
前記通知手段は、前記該当開発者識別情報のうちの前記該当要求情報により示されない不更新開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知する
ソースコード更新通知装置。
【請求項５】
請求項２〜請求項４のいずれかにおいて、
前記複数要求情報は、それぞれ、前記要求ソースコードのステータスを更に示し、
前記要求アクセス手段は、前記該当要求情報のうちの前記要求ソースコードが更新完了である更新完了要求情報を検索し、
前記通知手段は、前記該当開発者識別情報のうちの前記更新完了要求情報により示される更新完了開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知する
ソースコード更新通知装置。
【請求項６】
ソースコードを含む要求情報をクライアント装置から受け取るステップと、
複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索するステップと、
複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索するステップと、
前記該当開発者識別情報が示す開発者に前記要求情報を通知するステップ
とを具備するソースコード更新通知方法。
【請求項７】
請求項６において、
要求ソースコードと要求ファイル名とをそれぞれ示す複数要求情報を格納する要求格納庫を参照して、前記複数要求情報のうちの前記ソースコードを示す該当要求情報が示す該当ファイル名を検索するステップと、
前記開発者識別情報集合のうちから前記該当ファイル名に対応する該当開発者識別情報を検索するステップ
とを更に具備するソースコード更新通知方法。
【請求項８】
請求項７において、
前記要求情報は、前記ソースコードを示すファイルのファイル名を更に示し、
更に、
前記複数要求情報が前記要求情報を含むように、前記要求格納庫を更新する
を更に具備するソースコード更新通知方法。
【請求項９】
請求項７または請求項８のいずれかにおいて、
前記複数要求情報は、それぞれ、要求開発者識別情報を更に示し、
更に、
前記該当開発者識別情報のうちの前記該当要求情報により示されない不更新開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知するステップ
を更に具備するソースコード更新通知方法。
【請求項１０】
請求項７〜請求項９のいずれかにおいて、
前記複数要求情報は、それぞれ、前記要求ソースコードのステータスを更に示し、
更に、
前記該当要求情報のうちの前記要求ソースコードが更新完了である更新完了要求情報を検索するステップと、
前記該当開発者識別情報のうちの前記更新完了要求情報により示される更新完了開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知するステップ
とを更に具備するソースコード更新通知方法。
【請求項１１】
ソースコードを含む要求情報をクライアント装置から受け取るステップと、
複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索するステップと、
複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索するステップと、
前記該当開発者識別情報が示す開発者に前記要求情報を通知するステップ
とをコンピュータに実行させるソースコード更新通知プログラム。
【請求項１２】
請求項１１において、
要求ソースコードと要求ファイル名とをそれぞれ示す複数要求情報を格納する要求格納庫を参照して、前記複数要求情報のうちの前記ソースコードを示す該当要求情報が示す該当ファイル名を検索するステップと、
前記開発者識別情報集合のうちから前記該当ファイル名に対応する該当開発者識別情報を検索するステップ
とを更に前記コンピュータに実行させるソースコード更新通知プログラム。
【請求項１３】
請求項１２において、
前記要求情報は、前記ソースコードを示すファイルのファイル名を更に示し、
更に、
前記複数要求情報が前記要求情報を含むように、前記要求格納庫を更新する
を更に前記コンピュータに実行させるソースコード更新通知プログラム。
【請求項１４】
請求項１２または請求項１３のいずれかにおいて、
前記複数要求情報は、それぞれ、要求開発者識別情報を更に示し、
更に、
前記該当開発者識別情報のうちの前記該当要求情報により示されない不更新開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知するステップ
を更に前記コンピュータに実行させるソースコード更新通知プログラム。
【請求項１５】
請求項１２〜請求項１４のいずれかにおいて、
前記複数要求情報は、それぞれ、前記要求ソースコードのステータスを更に示し、
更に、
前記該当要求情報のうちの前記要求ソースコードが更新完了である更新完了要求情報を検索するステップと、
前記該当開発者識別情報のうちの前記更新完了要求情報により示される更新完了開発者識別情報が示す開発者に前記ソースコードが競合していないことを更に通知するステップ
とを更に前記コンピュータに実行させるソースコード更新通知プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード更新通知装置およびソースコード更新通知方法に関し、特に、ソフトウェアの開発において複数人の並行開発をサポートするソースコード更新通知装置およびソースコード更新通知方法に関する。
【背景技術】
【０００２】
ソフトウェアの開発において、複数人の並行開発をサポートする版管理ソフトウェアが知られている。このようなソフトウェアとしては、オープンソースの「ＣＶＳ」、「Ｓｕｂｖｅｒｓｉｏｎ」や、Ｍｉｃｒｏｓｏｆｔ社の「Ｖｉｓｕａｌ  ＳｏｕｒｃｅＳａｆｅ」などが例示される。また、ソースコードの変更要求を管理するソフトウェアとしては、オープンソースの「Ｔｒａｃ」が知られており、版管理ソフトウェアの「Ｓｕｂｖｅｒｓｉｏｎ」と連携して、複数の変更要求と複数のソースコードの関連を管理することができる。
【０００３】
複数人の並行開発において、特に大規模な開発になった場合において、ソースコードは、複数の開発者が同時にチェックインする場面が多くあり、互いに影響しあうソースコードを異なる開発者が更新するというような場面も想定される。このとき、あるソースコードへの変更要求に対する、他のソースコードの影響を把握するためには、変更要求の対象となっているソースコードを確認して、関数やクラス、メソッドの間の依存関係を確認しなければならず、膨大な工数がかかるという課題がある。
【０００４】
特開２００５−２６６９７６号公報には、修正の影響を受ける可能性のあるプログラムの確認状況を把握することができるプログラム保存装置が開示されている。そのプログラム保存装置は、プログラムと、そのプログラムを保存する保存者を特定する情報とを関連付けて保存し、他のプログラムを前記保存されたプログラムの修正版のプログラムとしてさらに保存することができる保存手段を有するプログラム保存装置において、他のプログラムを修正版のプログラムとして保存するときに、前記他のプログラムにより影響を受ける可能性のあるプログラムの部分を前記保存された修正前のプログラムから抽出する抽出手段と、前記抽出手段により抽出されたプログラムの部分が影響を受ける可能性のあることを前記プログラムの部分を保存した保存者に通知する表示を行う表示手段とを有し、前記表示手段は、前記保存した保存者に通知する表示を行う際に、前記他のプログラムによる影響の確認を要求する旨、および／または、影響の確認結果の通知を要求する旨を表示することを特徴としている。
【０００５】
このような方式では、影響を受けるソースコードを他の開発者が同時並行で更新していた場合、影響を与えるソースコードがリポジトリに登録された時点ではじめて、影響があることが通知されるため、その通知までに実施したソースコードの更新作業が無効となる可能性があるという問題がある。
【０００６】
特開２０００−２０２９８号公報には、開発の途中で生じるパッケージ構成の変更作業を支援し、適切なパッケージを用いた設計を行うことが可能なソフトウェア開発支援装置が開示されている。そのソフトウェア開発支援装置は、モジュール化の概念をパッケージという形で取り入れたソフトウェア開発を支援するソフトウェア開発支援装置であって、ソースファイルを解析し、各パッケージを構成するクラス及びメンバの情報を登録したリポジトリデータベースと、解析の結果得られた構文解析情報を登録した構文解析情報データベースとを作成するソース解析部と、前記リポジトリデータベース中の情報を可視化してクラス及びメンバのシンボルとクラス及びメンバの参照関係を示す図形データを作成するリポジトリ可視化部と、前記作成した図形データをグラフィック端末へ表示すると共に当該ソースファイルのパッケージ構成を変更する指示を受け付ける表示制御部と、前記表示制御部を介して受けた指示に従って、リポジトリデータベース、構文解析情報データベース及びソースファイルの内容を更新し、当該ソースファイルのパッケージ構成を変更するプログラム修正部とを備えることを特徴としている。
【０００７】
特開２００２−４１４８８号公報には、コンピューティング環境のクラスタを管理するシステムが開示されている。そのシステムは、前記システムが、前記コンピューティング環境のクラスタのデータ用のグローバル・データ記憶域を提供するためのレジストリ・コンポーネントであって、前記クラスタが前記コンピューティング環境の１つまたは複数のノードを含むレジストリ・コンポーネントと、前記１つまたは複数のノードのうちの少なくとも１つのノード上にローカルにデータを維持し、前記レジストリ・コンポーネントにグローバル・データを記憶するための構成コンポーネントと、前記クラスタの１つまたは複数の通信経路の状況を提供するための活性コンポーネントであって、前記レジストリ・コンポーネントおよび前記構成コンポーネントに依存する活性コンポーネントと、前記クラスタの１つまたは複数の他のコンポーネントに１つまたは複数のサービスを提供するためのグループ・サービス・コンポーネントであって、前記レジストリ・コンポーネント、前記構成コンポーネント、および前記活性コンポーネントに依存するグループ・サービス・コンポーネントと、前記クラスタの１つまたは複数のリソース・コントローラへの通信を可能にするためのリソース管理コンポーネントであって、前記レジストリ・コンポーネント、前記構成コンポーネント、および前記グループ・サービス・コンポーネントに依存するリソース管理コンポーネントとを含んでいる。
【０００８】
特開２００６−２７７４３５号公報には、複数開発者が同一のソースファイルを同時に編集することを可能としながらソースファイルの整合性を確保し、かつ開発者がソースファイルの変更部分を容易に把握可能なバージョン管理システムが開示されている。そのソースファイルバージョン管理システムは、開発対象プログラムを構成するソースファイルを登録し、登録されたソースファイルに対する編集処理についての排他制御を行うとともに、編集されたソースファイルの変更履歴管理を行うソースファイルバージョン管理システムにおいて、前記ソースファイルのプログラム言語に応じてソースファイルを解析し、当該ソースファイルをメソッド以外の共通情報とメソッド単位とのソースコードファイルに分割したメソッドファイルを生成して、当該メソッドファイルを前記排他制御及び変更履歴管理の対象として登録するソースファイル分割登録手段を備えることを特徴としている。
【０００９】
特開２００７−１２２１３５号公報には、開発プロセスの各段階における成果物について、修正された成果物により影響される他の成果物を通知することにより、ソフトウェアの開発を支援する開発支援装置が開示されている。その開発支援装置は、ソフトウェアの要求を記述した要求記述文書、該要求記述文書から作成される設計モデル、および、該設計モデルから作成されるプログラムコードである成果物の開発を支援する開発支援装置であって、成果物および成果物間の対応情報を格納する記憶部と、修正する成果物の入力を受け付ける修正受付部と、前記修正受付部により受け付けた成果物を起点として、前記記憶部に格納された成果物間の対応情報を辿ることにより、修正する成果物が影響する他の成果物を追跡する修正追跡部と、前記修正追跡部により追跡された成果物を通知する修正通知部と、を有することを特徴としている。
【００１０】
【特許文献１】特開２００５−２６６９７６号公報
【特許文献２】特開２０００−２０２９８号公報
【特許文献３】特開２００２−４１４８８号公報
【特許文献４】特開２００６−２７７４３５号公報
【特許文献５】特開２００７−１２２１３５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
従来の版管理システムにおいては、同一のファイルに対して複数の開発者が同時に更新を行う危険性を回避することはできるが、チェックインを行うファイルとは異なるが関連のあるファイルが更新された場合に、関連のあるファイルの更新に当該ファイルが影響を受ける場合であっても、その更新の影響を反映することなく、当該ファイルをチェックインしてしまう状態を回避することができないことがある。
【００１２】
また、従来のバグ管理システムにおいては、プロジェクトにおいて現在行われている要求の一覧から各要求の詳細を開発者が確認することはできるが、自分が更新をしようと思っている部分に関連する要求が存在するかどうかは、要求を一つずつ手作業で確認していかなければならず、プロジェクトの規模が大きくなった場合には現実的ではないという課題がある。
【００１３】
本発明の課題は、依存関係のある複数のソースコードを複数の開発者が同時に更新することを防止するソースコード更新通知装置およびソースコード更新通知方法を提供することにある。
【課題を解決するための手段】
【００１４】
本発明によるソースコード更新通知装置は、要求登録手段と依存関係アクセス手段と開発者マップアクセス手段と通知手段とを備えている。その要求登録手段は、ソースコードを含む要求情報をクライアント装置から受け取る。その依存関係アクセス手段は、複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索する。その開発者マップアクセス手段は、複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索する。その通知手段は、前記該当開発者識別情報が示す開発者に前記要求情報を通知する。
【００１５】
本発明によるソースコード更新通知方法は、ソースコードを含む要求情報をクライアント装置から受け取るステップと、複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索するステップと、複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索するステップと、前記該当開発者識別情報が示す開発者に前記要求情報を通知するステップとを備えている。
【００１６】
本発明によるソースコード更新通知プログラムは、ソースコードを含む要求情報をクライアント装置から受け取るステップと、複数ソースコードを複数依存ソースコードに対応付ける依存関係グラフを参照して、前記複数依存ソースコードのうちの前記ソースコードに対応する該当ソースコードを検索するステップと、複数ファイル名を開発者識別情報集合に対応付ける開発者マップを参照して、前記開発者識別情報集合のうちから前記該当ソースコードを含むソースコードファイルに対応する該当開発者識別情報を検索するステップと、前記該当開発者識別情報が示す開発者に前記要求情報を通知するステップとコンピュータに実行させる。
【発明の効果】
【００１７】
本発明によるソースコード更新通知装置およびソースコード更新通知方法によれば、開発者は、更新しようとするソースコードが他の開発者の更新と競合するかどうかを確認することができ、依存関係のある複数のソースコードを複数の開発者が同時に更新することを防止することができる。
【発明を実施するための最良の形態】
【００１８】
図面を参照して、本発明によるソースコード更新通知装置の実施の形態を記載する。そのソースコード更新通知装置は、図１に示されているように、ソースコード更新通知システム１に適用されている。ソースコード更新通知システム１は、複数のコンピュータが互いに双方向に情報を伝送することができるように接続されている。その複数の情報処理装置は、クライアント装置１００とサーバ装置２００とを含んでいる。クライアント装置１００は、ソースコード更新通知システム１に複数が存在することもあり、このとき、クライアント装置１００は、同時にサーバ装置２００に処理依頼を送ることもありうる。
【００１９】
クライアント装置１００は、処理依頼手段１１とワークスペース１２とを備えている。ワークスペース１２は、クライアント装置１００が備える２次記憶装置に確保された記憶領域であり、開発者ごとに割り当てられている。ワークスペース１２は、サーバ装置２００からチェックアウトしたディレクトリ構成のコピーを保持する。処理依頼手段１１は、開発者から入力装置を介して入力される処理依頼を受け付け、サーバ装置２００にその依頼された処理を送信する。その処理は、ソースコードの更新に関する処理であり、「チェックアウト」と「要求作成」と「チェックイン」とが含まれている。また、処理依頼手段１１は、ワークスペース１２にアクセスし、ソースコードファイルのパス情報をもとに該当するソースコードファイルを取得する。
【００２０】
サーバ装置２００は、チェックアウト処理手段２１とチェックイン処理手段２２と要求登録手段２３と通知手段２４とリポジトリアクセス手段２５と依存関係アクセス手段２６と要求アクセス手段２７と開発者マップアクセス手段２８とリポジトリ３１と依存関係グラフ３２と要求格納庫３３と開発者マップ３４とを備えている。
【００２１】
チェックアウト処理手段２１は、処理依頼手段１１から受け取った対象ファイルのパスをリポジトリアクセス手段２５に渡して、リポジトリ３１からチェックアウトしたソースコードファイルを受け取り、そのソースコードファイルをクライアント装置１００に送信する。
【００２２】
チェックイン処理手段２２は、処理依頼手段１１から受け取った対象ファイルのパスとソースコードファイルとをリポジトリアクセス手段２５に渡す。チェックイン処理手段２２は、リポジトリアクセス手段２５から返されるチェックイン結果を処理依頼手段１１に返す。チェックイン処理手段２２は、また、チェックインするファイルを解析して、関数またはクラス、メソッドとその関数やメソッド内で呼び出しを行っている関数やメソッドとの関連を抽出して、依存関係アクセス手段２６に渡す。その関数やクラス、メソッド間の関連の抽出に関しては、例えば特開２０００−２０２９８号公報に記述されている方法が用いられる。チェックイン処理手段２２は、さらに、処理依頼手段１１から受け取ったソースコードファイル名とチェックインした開発者の開発者ＩＤを開発者マップアクセス手段２８に渡す。チェックイン処理手段２２は、処理依頼手段１１から要求を受け取っていれば、その要求を要求アクセス手段２７に渡す。チェックイン処理手段２２は、最終的に処理結果を、処理依頼手段１１に返すとともに、更新した要求を通知手段２４に渡す。
【００２３】
要求登録手段２３は、処理依頼手段１１から要求を受け取り、その要求のステータスを“ｏｐｅｎ”に設定して要求アクセス手段２７に渡す。要求登録手段２３は、要求アクセス手段２７からその要求登録の処理結果が返されたときに、その結果を処理依頼手段１１に返すとともに、登録した要求を通知手段２４に渡す。要求登録手段２３は、また、処理依頼手段１１から受け取った要求中のソースコードファイル名と開発者ＩＤとを開発者マップアクセス手段２８に渡す。
【００２４】
通知手段２４は、チェックイン処理手段２２または要求登録手段２３から受け取った要求が示すファイル名とメソッド名とを依存関係アクセス手段２６に渡す。通知手段２４は、さらに、依存関係アクセス手段２６から受け取ったツリーを要求アクセス手段２７に渡して、そのツリー上の各メソッドに対するステータスが“ｏｐｅｎ”の要求があれば、要求のリストを受け取る。通知手段２４は、さらに、受け取った要求のリストを順に走査してファイル名、メソッド名、開発者を抽出して、開発者ごとに、競合フラグをｔｒｕｅにして、通知のリストを作成する。通知手段２４は、また、そのファイル名で開発者マップ３４を検索して、開発者ＩＤを取得し、その要求に含まれない開発者ＩＤに対して、競合フラグをｆａｌｓｅにして、通知のリストを作成する。通知手段２４は、また、そのメソッドが参照されているメソッドのツリーからステータスが“ｏｐｅｎ”の要求がなかったメソッドに関して、ツリー上の各メソッドの属するファイル名から開発者マップアクセス手段２８に、アクセスして開発者ＩＤのリストを取得して、競合フラグをｆａｌｓｅにして、開発者ごとに通知を更新する。通知手段２４は、さらに、更新した通知をそれぞれの開発者に対して、通知する。
【００２５】
リポジトリアクセス手段２５は、チェックアウト処理手段２１から受け取った対象ファイルのパスをもとにリポジトリ３１にアクセスして、ファイルをチェックアウトする。リポジトリアクセス手段２５は、また、チェックイン処理手段２２から受け取った対象ファイルのパスをもとにリポジトリ３１にアクセスして、受け取ったファイルをチェックインする。リポジトリアクセス手段２５は、例えば、オープンソースの「ＣＶＳ」、「Ｓｕｂｖｅｒｓｉｏｎ」を利用して実施する。
【００２６】
依存関係アクセス手段２６は、受け取ったファイル名とメソッド名からそのメソッドを参照しているメソッドのツリーを返したり、受け取った２つの、ファイル名とメソッド名の組の間の有向な関連を依存関係グラフ３２に新規に追加または更新したりする。
【００２７】
要求アクセス手段２７は、受け取ったメソッド名が含まれている要求のうちのステータスが“ｏｐｅｎ”である要求を返したり、その受け取った要求を要求格納庫３３に登録または更新し、処理結果を返したりする。
【００２８】
開発者マップアクセス手段２８は、受け取ったファイル名と開発者ＩＤの関連を開発者マップ３４に追加または更新したり、受け取ったファイル名に紐づいた開発者を返したりする。
【００２９】
リポジトリ３１は、版管理データベースであり、ファイルの時系列なデータにバージョン番号をつけてそのデータを管理する。例えば、リポジトリ３１としては、オープンソースの「ＣＶＳ」、「Ｓｕｂｖｅｒｓｉｏｎ」のデータベースが利用される。
【００３０】
依存関係グラフ３２は、関数またはクラス、メソッド（以下「ソースコード」と略記される）の間の呼び出し関係を表現した有向グラフを格納している。すなわち、その有向グラフは、ソースコードの各々を、そのソースコードの更新の影響を受ける他のソースコードに対応付けている。その有向グラフでは、例えば、メソッド間の呼び出し関係においては、各メソッドを、ファイル名とメソッド名とにより一意に特定している。
【００３１】
要求格納庫３３は、要求を格納したデータベースである。開発者マップ３４は、ファイル名をそのファイルを開発した開発者のリストに紐付けたマップを格納している。
【００３２】
なお、リポジトリ３１および依存関係グラフ３２および要求格納庫３３および開発者マップ３４は、サーバ装置２００上、またはサーバ装置２００からアクセス可能な記憶領域にあればよい。
【００３３】
図２は、要求格納庫３３に格納される要求を示している。その要求４０は、要求ＩＤ４１と変更理由４２と開発者ＩＤ４３とステータス４４と複数のソースコード情報４５−１〜４５−Ｎとを備えている。要求ＩＤ４１は、要求４０を識別している。変更理由４２は、要求４０によりソースコードを変更する理由を示している。開発者ＩＤ４３は、複数の開発者にそれぞれ割り当てられる複数の開発者ＩＤの１つを示し、要求４０を登録する開発者を識別している。ステータス４４は、要求４０により変更されるソースコードの状態を示している。その状態は、“ｏｐｅｎ”、“ｃｌｏｓｅ”を含んでいる。その“ｏｐｅｎ”は、要求４０により変更されるソースコードが更新中であることを示している。その“ｃｌｏｓｅ”は、要求４０により変更されるソースコードが更新完了であることを示している。その複数のソースコード情報４５−１〜４５−Ｎの各ソースコード情報４５−ｉ（ｉ＝１，２，３，…，Ｎ）は、要求４０により変更されるソースコードを示し、ファイル名４６とメソッド名４７とを示している。ファイル名４６は、要求４０により変更されるソースコードを含むファイルのファイル名を示している。メソッド名４７は、要求４０により変更されるソースコードを含むメソッドのメソッド名を示している。
【００３４】
図３は、通知手段２４により開発者に通知される通知を示している。その通知５０は、開発者ＩＤ５１と要求５２と複数のリスト５３−１〜５３−Ｎを示している。要求５２は、要求格納庫３３に格納される要求の１つを示している。開発者ＩＤ５１は、複数の開発者にそれぞれ割り当てられる複数の開発者ＩＤの１つを示し、要求５２が示す要求を作成した開発者を識別している。複数のリスト５３−１〜５３−Ｎの各リスト５３−ｉは、ファイル名５４とメソッド名５５と競合フラグ５６とを示している。メソッド名５５は、要求５２が示す要求により特定されるメソッドを参照しているツリー（依存関係アクセス手段２６から受け取ったツリー）が示す複数のメソッドのうちの１つのメソッドのメソッド名を示している。ファイル名５４は、メソッド名５５が示すメソッドを含むファイルのファイル名を示している。競合フラグ５６は、メソッド名５５が示すメソッドの更新が競合しているか否かを示し、ｔｒｕｅかｆａｌｓｅのいずれかの値を示している。そのｔｒｕｅは、競合していることを示している。そのｆａｌｓｅは、競合していないことを示している。
【００３５】
すなわち、通知５０は、要求４０に応答して作成されたときに、要求５２が要求ＩＤ４１を示している。
【００３６】
図４は、開発者マップ３４により格納される開発者マップを示している。その開発者マップ６０は、ファイル名とそのソースコードファイルを開発した開発者ＩＤを紐付けたマップであり、ファイル名集合６１を開発者集合６２に対応付けている。すなわち、ファイル名集合６１の任意の要素は、開発者集合６２の１つの要素に対応している。ファイル名集合６１の要素は、ソースコードファイルを識別し、そのソースコードファイルのファイル名を示している。開発者集合６２の要素は、そのソースコードファイルを開発した開発者を識別し、その開発者を識別する開発者ＩＤを示している。開発者集合６２の１つの要素は、そのソースコードファイルを開発した開発者が複数であるときに、その複数の開発者をそれぞれ識別する複数の開発者ＩＤを示している。開発者マップ６０は、チェックインや要求登録の際、または、その他任意のタイミングで、当該開発者ＩＤと当該ファイル名の関連を追加または更新または削除することができる。
【００３７】
本発明によるソースコード更新通知方法の実施の形態は、ソースコード更新通知システム１により実行される。処理が入力されたときの動作と、チェックアウトの動作と、要求作成の動作と、チェックインの動作と、要求を受け取ったときの動作とを備えている。
【００３８】
図５は、処理が入力されたときの動作を示している。開発者は、ソースコード更新通知システム１に「チェックアウト」と「要求作成」と「チェックイン」とのうちのいずれかの処理を実行させるときに、その処理に必要である情報をクライアント装置１００に入力する。すなわち、開発者は、リポジトリ３１上の対象ファイルをチェックアウトするときに、処理の種類として「チェックアウト」を指定し、その対象ファイルのパスをクライアント装置１００に入力する。このとき、対象ファイルのパスは、複数指定したり、ディレクトリ名で指定したりすることも可能である。開発者は、要求を作成するときに、処理の種類として「要求作成」を指定し、登録する要求をクライアント装置１００に入力する。開発者は、対象ファイルをチェックインするときに、処理の種類として「チェックイン」を指定して、開発者ＩＤとのその対象ファイルのパスとをクライアント装置１００に入力する。このとき、その対象ファイルは、複数指定したり、ディレクトリ名で指定したりすることも可能である。さらに、開発者は、必要に応じて、ステータスを“ｃｌｏｓｅ”に更新した要求をクライアント装置１００に入力する。
【００３９】
処理依頼手段１１は、クライアント装置１００に入力された情報に基づいて処理の種類を判別する（ステップａ１）。処理依頼手段１１は、処理の種類が「チェックアウト」であれば、受け取った対象ソースコードファイルのパスをサーバ装置２００上のチェックアウト処理手段２１に送る（ステップａ２）。処理依頼手段１１は、処理の種類が「要求作成」であれば、受け取った要求をサーバ装置２００上の要求登録手段２３に送る（ステップａ３）。処理依頼手段１１は、処理の種類が「チェックイン」であれば、受け取った対象ソースコードファイルのパスから、ワークスペース１２にアクセスして該当ソースコードファイルを取得する（ステップａ４）。処理依頼手段１１は、次いで、受け取った開発者ＩＤと対象ソースコードファイルのパスとソースコードファイルと、必要に応じて更新された要求をサーバ装置２００上のチェックイン処理手段２２に送る（ステップａ５）。
【００４０】
図６は、チェックアウトの動作を示している。チェックアウトの動作は、ステップａ２が実行された後に開始する。チェックアウト処理手段２１は、処理依頼手段１１から受け取った対象ソースコードファイルのパスをリポジトリアクセス手段２５に渡す（ステップｂ１）。リポジトリアクセス手段２５は、その受け取った対象ソースコードファイルのパスをもとにリポジトリ３１にアクセスして、ソースコードファイルをチェックアウトする（ステップｂ２）。チェックアウト処理手段２１は、そのチェックアウトしたソースコードファイルをクライアント装置１００上の処理依頼手段１１に返す（ステップｂ３）。処理依頼手段１１は、その受け取ったソースコードファイルでワークスペース１２を更新する（ステップｂ４）。
【００４１】
図７は、要求作成の動作を示している。要求作成の動作は、ステップａ３が実行された後に開始する。要求登録手段２３は、処理依頼手段１１から受け取った要求のステータスを“ｏｐｅｎ”に設定して、その設定された要求を要求アクセス手段２７に渡す（ステップｃ１）。要求アクセス手段２７は、受け取った要求を要求格納庫３３に登録する（ステップｃ２）。要求登録手段２３は、その要求が要求格納庫３３に登録されたことを示す処理結果をクライアント装置１００の処理依頼手段１１に返す（ステップｃ３）。処理依頼手段１１は、その処理結果を表示する（ステップｃ４）。要求登録手段２３は、その登録した要求を通知手段２４に渡す（ステップｃ５）。要求登録手段２３は、その要求内のファイル名と開発者ＩＤとを開発者マップアクセス手段２８に渡す（ステップｃ６）。開発者マップアクセス手段２８は、その受け取ったファイル名と開発者ＩＤの関連を開発者マップ３４に追加する（ステップｃ７）。このとき、ステップｃ３〜ｃ４の処理とステップｃ５の処理とステップｃ６〜ｃ７の処理とは、同時に並行して実行される。
【００４２】
図８は、チェックインの動作を示している。チェックインの動作は、ステップａ５が実行された後に開始する。チェックイン処理手段２２は、処理依頼手段１１から受け取った対象ソースコードファイルのパスとファイルとをリポジトリアクセス手段２５に渡す（ステップｄ１）。リポジトリアクセス手段２５は、その受け取った対象ソースコードファイルのパスをもとにリポジトリ３１にアクセスして、その受け取ったソースコードファイルをチェックインする（ステップｄ２）。チェックイン処理手段２２は、そのチェックインしたソースコードファイルを解析して、メソッドとそのメソッド内で呼び出しを行っているメソッドとの関連を抽出する（ステップｄ３）。チェックイン処理手段２２は、その抽出した関連を依存関係アクセス手段２６に渡す（ステップｄ４）。依存関係アクセス手段２６は、その受け取った関連をもとに依存関係グラフ３２を更新する（ステップｄ５）。チェックイン処理手段２２は、そのファイル名と開発者ＩＤとを開発者マップアクセス手段２８に渡す（ステップｄ６）。開発者マップアクセス手段２８は、その受け取ったファイル名と開発者の関連を、開発者マップ３４に追加する（ステップｄ７）。
【００４３】
チェックイン処理手段２２は、クライアント装置１００から要求を受け取っていれば、その受け取った要求を要求アクセス手段２７に渡す（ステップｄ８）。要求アクセス手段２７は、その受け取った要求を要求格納庫３３に登録する（ステップｄ９）。チェックイン処理手段２２は、その要求を要求格納庫３３に登録したことを示す処理結果をクライアント装置１００の処理依頼手段１１に返す（ステップｄ１０）。処理依頼手段１１は、その処理結果を表示する（ステップｄ１１）。チェックイン処理手段２２は、その登録した要求を通知手段２４に渡す（ステップｄ１２）。このとき、ステップｄ１０〜ｄ１１の処理とステップｄ１２の処理とは、同時に並行して実行される。
【００４４】
図９は、要求を受け取ったときの動作を示している。要求を受け取ったときの動作は、ステップｄ１２の後に開始し、または、ステップｃ５の後に開始する。通知手段２４は、その要求に記述されたファイル名およびメソッド名を依存関係アクセス手段２６に渡す（ステップｅ１）。依存関係アクセス手段２６は、依存関係グラフ３２にアクセスして、その受け取ったメソッドを参照しているメソッドのツリーのリストを取得する（ステップｅ２）。通知手段２４は、要求アクセス手段２７にツリーのリストを渡す（ステップｅ３）。要求アクセス手段２７は、要求格納庫３３にアクセスして、ツリーのリストに含まれるメソッドのそれぞれが含まれる要求のうちからステータスが“ｏｐｅｎ”を示す要求を検索する（ステップｅ４）。通知手段２４は、検索した要求のリストを順に走査してファイル名、メソッド名、開発者ＩＤを抽出し、競合フラグをｔｒｕｅにして、開発者単位に通知のリストを作成する（ステップｅ５）。通知手段２４は、ステップｅ５で抽出したファイル名を、開発者マップアクセス手段２８に渡す（ステップｅ６）。
【００４５】
開発者マップアクセス手段２８は、受け取ったファイル名をもとに開発者マップ３４にアクセスして、開発者ＩＤのリストを返す（ステップｅ７）。通知手段２４は、ステップｅ５に含まれない開発者ＩＤに対して、競合フラグをｆａｌｓｅにして、開発者ごとに通知のリストを作成する（ステップｅ８）。通知手段２４は、開発者マップアクセス手段２８に、ツリーのリストからステップｅ５の要求に含まれるメソッド名を除いたリストを渡す（ステップｅ９）。開発者マップアクセス手段２８は、開発者マップ３４にアクセスして、メソッドのそれぞれが含まれるソースコードファイルの開発者ＩＤを検索する（ステップｅ１０）。通知手段２４は、検索した開発者ＩＤをもとに、競合フラグをｆａｌｓｅにして、通知のリストを更新する（ステップｅ１１）。通知手段２４は、通知リストのそれぞれの開発者に対して、要求を通知する（ステップｅ１２）。通知手段２４における通知の方法は、例えば電子メールなどにより、開発者が使用する端末に送信する方法が考えられる。この場合、開発者ＩＤは、開発者ごとに割り当てられたメールアドレスを利用する。
【００４６】
本発明によるソースコード更新通知方法によれば、開発者は、ソースコードの変更を開始する際に、ソースコードの更新の開始時に、そのソースコードを示す要求をサーバ装置２００に送信することにより、更新を行う関数やクラス、メソッドが影響を受ける変更がすでに行われているかどうかを、変更を始める前に確認することができる。開発者は、さらに、その更新が行われている場合、なぜ変更が行われているのかを知ることができるため、開発者は当該更新を競合することなく実施できるかどうかを、変更を始める前に判断することができる。
【００４７】
ソースコード更新通知システム１は、要求の登録の際に、当該要求により影響を受ける要求を登録してソースコードを開発している開発者に対して、競合している旨とともに当該要求通知する仕組みをもっている。このため、要求を登録してソースコードを更新中の開発者は、当該変更に対して影響を受けることになり、当該ソースコードとは別のソースコードに対する変更を他の開発者が始める際に、その変更内容を知ることができる。
【図面の簡単な説明】
【００４８】
【図１】図１は、本発明によるソースコード更新通知装置の実施の形態を示すブロック図である。
【図２】図２は、要求を示す図である。
【図３】図３は、通知を示す図である。
【図４】図４は、開発者マップを示す図である。
【図５】図５は、処理が入力されたときの動作を示すフローチャートである。
【図６】図６は、チェックアウトの動作を示すフローチャートである。
【図７】図７は、要求作成の動作を示すフローチャートである。
【図８Ａ】図８Ａは、チェックインの動作の前半を示すフローチャートである。
【図８Ｂ】図８Ｂは、チェックインの動作の後半を示すフローチャートである。
【図９Ａ】図９Ａは、要求を受け取ったときの動作の前半を示すフローチャートである。
【図９Ｂ】図９Ｂは、要求を受け取ったときの動作の後半を示すフローチャートである。
【符号の説明】
【００４９】
１    ：ソースコード更新通知システム
１００：クライアント装置
１１  ：処理依頼手段
１２  ：ワークスペース
２００：サーバ装置
２１  ：チェックアウト処理手段
２２  ：チェックイン処理手段
２３  ：要求登録手段
２４  ：通知手段
２５  ：リポジトリアクセス手段
２６  ：依存関係アクセス手段
２７  ：要求アクセス手段
２８  ：開発者マップアクセス手段
３１  ：リポジトリ
３２  ：依存関係グラフ
３３  ：要求格納庫
３４  ：開発者マップ
４０  ：要求
４１  ：要求ＩＤ
４２  ：変更理由
４３  ：開発者ＩＤ
４４  ：ステータス
４５−１〜４５−Ｎ：ソースコード情報
４６  ：ファイル名
４７  ：メソッド名
５０  ：通知
５１  ：開発者ＩＤ
５２  ：要求
５３−１〜５３−Ｎ：リスト
５４  ：ファイル名
５５  ：メソッド名
５６  ：競合フラグ
６０  ：開発者マップ
６１  ：ファイル名集合
６２  ：開発者集合
【図１】
2009223822.tif 000003
【図２】
2009223822.tif 000004
【図３】
2009223822.tif 000005
【図４】
2009223822.tif 000006
【図５】
2009223822.tif 000007
【図６】
2009223822.tif 000008
【図７】
2009223822.tif 000009
【図８Ａ】
2009223822.tif 000010
【図８Ｂ】
2009223822.tif 000011
【図９Ａ】
2009223822.tif 000012
【図９Ｂ】
2009223822.tif 000013