(57)【要約】【課題】ソースコード管理システムにおいて、ソースコード全体のビルドを行う前にソースコード全体の整合性を検出して、ソースコード全体のビルドの繰り返しによるソフトウェア開発効率の低下を回避できるようにする。【解決手段】記憶部１１０は、解析処理部１４０によって整合と判定されたソースコードをソースコードメイン記憶部１１１にて記憶し、不整合と判定されたソースコードをソースコード一時記憶部１１６にて記憶する。そして、記憶部１１０の記憶対象のソースファイルを通信部１２０が受信すると、解析処理部１４０は、通信部１２０の受信したソースファイルと、ソースコードメイン記憶部１１１の記憶するソースファイルとの整合性を判定する。そして、記憶部１１０は、通信部１２０の受信したソースファイルを、解析処理部１４０の判定結果に従って、ソースコードメイン記憶部１１１またはソースコード一時記憶部１１６に記憶する。【選択図】図１
2012089055.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得部と、
前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理部と、
前記解析処理部が整合と判定すると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理部が不整合と判定すると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理部と、
を具備することを特徴とするソースコード管理サーバ装置。
【請求項２】
前記記憶部は、複数バージョンの前記整合ソースファイルを記憶可能であり、
前記解析処理部は、少なくとも最新バージョンの前記整合ソースファイルについて前記登録対象ソースファイルとの整合性を判定する、
ことを特徴とする請求項１に記載のソースコード管理サーバ装置。
【請求項３】
前記記憶部は、前記整合ソースファイルに含まれる構成要素の定義を示す定義情報と、前記整合ソースファイルにて参照される構成要素を示す参照情報とを記憶し、
前記解析処理部は、前記定義情報と、前記登録対象ソースファイルに含まれる構成要素の定義と、前記登録対象ソースファイルにて参照される構成要素とに基づいて、前記登録対象ソースファイルにて参照される構成要素の名前および型情報が、前記定義情報に含まれる定義または前記整合ソースファイルに含まれる構成要素の定義のいずれかにおける構成要素の名前および型情報と一致する場合に整合と判定し、一致しない場合に不整合と判定する、
ことを特徴とする請求項１または請求項２に記載のソースコード管理サーバ装置。
【請求項４】
前記解析処理部が不整合と判定すると、不整合の内容を示す結果通知を送信する結果通知送信部を具備する、ことを特徴とする請求項１から３のいずれか一項に記載のソースコード管理サーバ装置。
【請求項５】
ソースコード管理サーバ装置の行うソースコード管理方法であって、
登録対象ソースファイル取得部が、ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得ステップと、
解析処理部が、前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理ステップと、
ソースコード書込処理部が、前記解析処理ステップにて整合と判定されると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理ステップにて不整合と判定されると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理ステップと、
を具備することを特徴とするソースコード管理方法。
【請求項６】
ソースコード管理サーバ装置としてのコンピュータに、
ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得ステップと、
前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理ステップと、
前記解析処理ステップにて整合と判定されると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理ステップにて不整合と判定されると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理ステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコード管理サーバ装置、ソースコード管理方法およびプログラムに関する。
【背景技術】
【０００２】
複数の開発担当者が１つのソフトウェアを開発する場合、通常、複数の開発担当者は独立して異なる部分のソースコードを編集（生成および変更）し、各開発者が編集したソースコードを合わせてビルド（ソースコードに対してコンパイルやリンク等を行って、実行ファイルあるいは中間ファイルを生成する処理）する。
かかる開発の際、複数の開発担当者が独立して作業を行うため、ある開発担当者が編集した部分が、当該開発担当者の担当する範囲内で整合性を保ちビルド可能であっても、別の担当者の担当部分と不整合を生じ、複数のソースコードを組み合わせたソースコード全体のビルドが出来ない可能性がある。
【０００３】
この、ソースコード全体の整合性や、ソースコード全体のビルドの可否は、ソースコード全体のビルドを実施して初めて確認できることが一般的である。
ここで、ソースコード全体のビルドを行う際、ソースコード規模が大きくなるにつれてビルドに要する処理時間が長くなる。そして、不具合を検出して更新（修正）し、再びビルドを実施する場合、ビルドに要する処理時間は更に長くなってしまう。このようなビルドの処理を行う時間は、開発担当者の待ち時間となり、ソフトウェア開発効率が低下してしまう。
【０００４】
なお、プログラムの管理あるいは解析に関する先行文献としては、以下のものがある。
特許文献１に記載のプログラム修正支援システムは、管理者の入力する、修正すべき対象ファイルを特定する条件に基づいて、修正対象のファイルを検索し、検索結果と、管理者の入力する修正方針コメントとをメッセージ表示する。これにより、修正箇所のチェック漏れを無くすことができるとされている。
また、特許文献２に記載のコンピュータは、構造体要素が実体語句−＞要素語句の形で示されているときに、まず、実体語句の定義・宣言箇所を検索して実体語句の型を取得し、その後、取得した実体語句の型を定義している部分において、要素語句の定義・宣言箇所を検索して、構造体要素の型を取得する。これにより、複数の語句で構成される語句（構造体）の定義・宣言を容易に検索できるとされている。
また、特許文献３に記載の退避データ判別装置は、プログラムのループ構造を解析し、コンピュータの故障等に備えて退避（保存）すべきデータを解析結果に基づいて選択する。これにより、効率的なデータ退避が可能になるとされている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３４６４０９号公報
【特許文献２】特開２００７−３４６５４号公報
【特許文献３】特開２００８−２３４０５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
大規模なソフトウェアを開発する場合、ソースコードの変更履歴を記録するために、ＣＶＳ（Concurrent Version System）やSubversion等のソースコード管理システムを利用することが一般的である。しかしながら、一般に用いられるソースコード管理システムは、上述したソースコード全体の整合性を検出することは出来ず、ソースコード全体のビルドを繰り返して長時間を要することによるソフトウェア開発効率の低下を回避できない。
また、特許文献１〜３のいずれも、ソースコード全体の整合性を検出する技術は開示しておらず、ソースコード全体のビルドの繰り返しによるソフトウェア開発効率の低下を回避できない。
【０００７】
本発明は、このような事情を考慮してなされたものであり、その目的は、ソースコード全体のビルドを行う前にソースコード全体の整合性を検出して、ソースコード全体のビルドの繰り返しによるソフトウェア開発効率の低下を回避可能なソースコード管理サーバ装置、ソースコード管理方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
この発明は上述した課題を解決するためになされたもので、本発明の一態様によるソースコード管理サーバ装置は、ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得部と、前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理部と、前記解析処理部が整合と判定すると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理部が不整合と判定すると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理部と、を具備することを特徴とする。
【０００９】
また、本発明の一態様によるソースコード管理方法は、ソースコード管理サーバ装置の行うソースコード管理方法であって、登録対象ソースファイル取得部が、ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得ステップと、解析処理部が、前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理ステップと、ソースコード書込処理部が、前記解析処理ステップにて整合と判定されると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理ステップにて不整合と判定されると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理ステップと、を具備することを特徴とする。
【００１０】
また、本発明の一態様によるプログラムは、ソースコード管理サーバ装置としてのコンピュータに、ソースコードの一部を格納したソースファイルを整合ソースファイルと不整合ソースファイルとに分類して複数記憶可能な記憶部に記憶させるための前記ソースファイルである登録対象ソースファイルを取得する登録対象ソースファイル取得ステップと、前記登録対象ソースファイルと前記記憶部の記憶する前記整合ソースファイルとの整合性を判定する解析処理ステップと、前記解析処理ステップにて整合と判定されると、前記登録対象ソースファイルを整合ソースファイルとして前記記憶部に書き込み、前記解析処理ステップにて不整合と判定されると、前記登録対象ソースファイルを前記不整合ソースファイルとして前記記憶部に書き込むソースコード書込処理ステップと、を実行させるためのプログラムである。
【発明の効果】
【００１１】
本発明によれば、ソースコード全体のビルドを行う前にソースコード全体の整合性を検出して、ソースコード全体のビルドの繰り返しによるソフトウェア開発効率の低下を回避できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施形態におけるソースコード管理システムの概略構成を示す構成図である。
【図２】同実施形態における定義情報メイン記憶部の記憶する定義情報ファイルのデータ構造の例を示す図である。
【図３】同実施形態における参照情報メイン記憶部の記憶する参照情報ファイルのデータ構造の例を示す図である。
【図４】同実施形態において、ソースコード管理サーバ装置が、記憶部のファイルを更新する処理手順を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施の形態について説明する。
なお、以下では、プログラムを構成する要素のうち、変数や定数や関数など定義して用いられる要素を単に「構成要素」と称する。また、「定義」には型宣言が含まれる。
【００１４】
図１は、本発明の一実施形態におけるソースコード管理システム１の概略構成を示す構成図である。同図において、ソースコード管理システム１は、ソースコード管理サーバ装置１００と、３台のクライアント端末装置２００と、ネットワーク３００とを具備する。そして、ソースコード管理サーバ装置１００と、各クライアント端末装置２００とは、ネットワーク３００を介して接続されている。また、ソースコード管理サーバ装置１００は、記憶部１１０と、通信部（登録対象ソースファイル取得部、結果通知送信部）１２０と、ソースコード書込処理部１３０と、解析処理部１４０と、ソースコード読出処理部１５０とを具備する。記憶部１１０は、ソースコードメイン記憶部１１１と、定義情報メイン記憶部１１２と、参照情報メイン記憶部１１３と、ソースコード一時記憶部１１６と、定義情報一時記憶部１１７と、参照情報一時記憶部１１８とを具備する。
【００１５】
ソースコード管理システム１は、プログラムのソースコードをソースファイルにて管理するシステムであり、クライアント端末装置２００において更新または新規に生成されるソースファイルを、ソースコード管理サーバ装置１００が記憶し管理する。
ここで、ソースコード管理システム１が管理するソースファイルは、１つのプログラムのソースコード全体を含むものであってもよいし、ソースコードの一部を含むものであってもよい。例えば、開発対象のプログラムが大規模である場合、ソースコードがライブラリ形式で記述されることが考えられる。この場合、例えば、クライアント端末装置２００が、プログラム開発担当者の操作に従って、各ライブラリと、ライブラリを呼び出す実行ファイルとを、それぞれ別のソースファイルとして生成し、ソースコード管理サーバ装置１００は、これらのソースファイルを記憶し管理する。
以下では、ソースコード管理システム１が、１つのプログラムのソースコードを複数のソースファイルにて管理する場合について説明する。
【００１６】
このように、１つのプログラムのソースコードが複数のソースファイルにて生成され管理される場合、各ソースファイル内には不整合（コンパイル時あるいはリンク時等にエラーを生じさせる原因）が無いが、ソースファイルを組み合わせたソースコード全体としては不整合が生じる場合がある。例えば、あるソースファイル中で参照されるライブラリを定義するソースファイルが存在しない場合や、あるソースファイル中で参照される変数の型が、別のソースファイル中における当該変数の型宣言と矛盾する場合などが考えられる。
【００１７】
そこで、ソースコード管理システム１では、生成または更新されたソースファイルをソースコード管理サーバ装置１００が記憶する際に、当該ソースファイルの整合性を、他のソースファイルとの整合性も含めて判定し、整合と判定したソースファイル（不整合を検出しなかったソースファイル。以下では、「整合ソースファイル」と称する）と、不整合と判定したソースファイル（以下では、「不整合ソースファイル」と称する）とを分けて管理する。
【００１８】
クライアント端末装置２００は、ユーザ（プログラム開発担当者）の操作に従って、ソースファイルを新規生成する、あるいは、ソースコード管理サーバ装置１００の記憶するソースファイルを更新する。そして、クライアント端末装置２００は、生成または更新したソースファイルをソースコード管理サーバ装置１００に送信する。以下では、クライアント端末装置２００がソースコード管理サーバ装置１００に送信するソースファイルを、「登録対象ソースファイル」と称する。
また、クライアント端末装置２００は、ユーザの操作に従って、更新の元となるソースファイルを要求する信号をソースコード管理サーバ装置１００に送信する。
なお、ソースコード管理システム１の具備するクライアント端末装置２００の台数は、図１に示す３台に限らず、１台以上であればよい。たとえば、ソースコード管理システム１が１台のクライアント端末装置２００を具備し、複数のユーザが当該クライアント端末装置２００を共用する場合にも、ソースコード全体として不整合が生じる可能性がある。さらには、１人のユーザが１台のクライアント端末装置２００を用いて全てのソースコードを生成する場合にも、ソースコード全体として不整合が生じる可能性がある。このような場合に、本発明を適用することにより、ソースコード全体の不整合を予め検出し、ソースコード全体のビルド時におけるビルドの繰り返しを避けることができる。
【００１９】
ソースコード管理サーバ装置１００において、記憶部１１０は、クライアント端末装置２００から送信される登録対象ソースファイルを記憶する。その際、記憶部１１０は、解析処理部１４０が登録対象ソースファイルを整合と判定すると、当該ソースファイルを、ソースコードメイン記憶部１１１にて記憶する。一方、記憶部１１０は、解析処理部１４０が登録対象ソースファイルを不整合と判定すると、当該ソースファイルを、ソースコード一時記憶部１１６にて記憶する。これにより、記憶部１１０は、ソースファイルを、整合ソースファイルと不整合ソースファイルとに分類して記憶する。
【００２０】
ここで、ソースコードメイン記憶部１１１は、複数バージョンの整合ソースファイルを記憶する。例えば、ソースコードメイン記憶部１１１が記憶する整合ソースファイルのヘッダ部分には、当該整合ソースファイルのバージョンを識別するバージョン識別子と、当該整合ソースファイルを通信部１２０が受信した日時を示す登録日時情報とを含むバージョン情報とが含まれる。そして、ソースコード書込処理部１３０は、整合ソースファイルをソースコードメイン記憶部１１１に書き込む際に、バージョン情報をヘッダ部分に付与（更新または新規書込）し、ソースコードメイン記憶部１１１が既に記憶する同一ファイル名のソースファイルには上書きせずに、別ファイルとして書き込む。
【００２１】
また、記憶部１１０は、ソースファイルに含まれる構成要素の定義を示す定義情報と、ソースファイルにて参照される構成要素を示す参照情報とを記憶する。
具体的には、記憶部１１０の定義情報メイン記憶部１１２は、ソースコードメイン記憶部１１１の記憶する整合ソースファイルについて、ファイル名毎に、最新バージョンのファイルに含まれる構成要素の定義を示す定義情報を、定義情報ファイルにて記憶する。
【００２２】
図２は、定義情報メイン記憶部１１２の記憶する定義情報ファイルのデータ構造の例を示す図である。同図に示すように、定義情報には、ソースファイル名を格納するソースファイル名欄と、変数名や定数名や関数名などの構成要素名を格納する構成要素名欄と、構成要素の型情報を格納する型情報欄とが含まれる。図２における各行が定義情報に相当し、図２の全体が定義情報ファイルに相当する。
【００２３】
例えば、行Ｌ１１１〜Ｌ１１３は、ファイル名が「program1.c」であるソースファイルの最新バージョンにて定義されている構成要素の情報を示す。行Ｌ１１１は、変数「var1」がint型（整数型）として定義されていることを示し、行Ｌ１１２は、変数「var2」がchar型（文字列型）として定義されていることを示す。また、行Ｌ１１３は、関数「functionB」が、int型の引数とchar型の引数とを持つ関数として定義されていることを示す。
同様に、行Ｌ１２１〜Ｌ１２３は、ファイル名が「program2.c」であるソースファイルの最新バージョンにて定義されている構成要素の情報を示す。
【００２４】
また、記憶部１１０の参照情報メイン記憶部１１３は、ソースコードメイン記憶部１１１の記憶する整合ソースファイルについて、ファイル名毎に、最新バージョンのファイルから参照される構成要素を示す参照情報を、参照情報ファイルにて記憶する。
【００２５】
図３は、参照情報メイン記憶部１１３の記憶する参照情報ファイルのデータ構造の例を示す図である。同図に示すように、参照情報ファイルには、ソースファイル名を格納するソースファイル名欄と、変数名や定数名や関数名などの構成要素名を格納する構成要素名欄と、構成要素の型情報を格納する型情報欄とが含まれる。図３における各行が参照情報に相当し、図３の全体が参照情報ファイルに相当する。
【００２６】
例えば、行Ｌ２１１〜Ｌ２１２は、ファイル名が「call1.c」であるソースファイルの最新バージョンにて参照されている構成要素の情報を示す。行Ｌ２１１は、int型の変数「var1」が参照されていることを示し、行Ｌ２１２は、char型の変数「var2」が参照されていることを示す。
同様に、行L２２１〜Ｌ２２３は、ファイル名が「call2.c」であるソースファイルの最新バージョンにて参照されている構成要素の情報を示し、行Ｌ２３１〜Ｌ２３３は、ファイル名が「call3.c」であるソースファイルの最新バージョンにて参照されている構成要素の情報を示す。
【００２７】
ここで、図２と図３とを参照すると、図３の行Ｌ２１１と図２の行Ｌ１１１とは、構成要素名が「var1」で同一であり、型情報も「int型」で同一である。このように、構成要素名と型情報とが同一である参照と定義とを、以下では「整合する」と称する。すなわち、行Ｌ２１１に示される参照は、行Ｌ１１１に示される定義と整合する。同様に、行Ｌ２１２に示される参照は、行Ｌ２１１に示される定義と整合する。
なお、図２および図３は、構成要素の定義を含むソースファイルと構成要素の参照を含むソースファイルとが別々のソースファイルである場合の例を示しているが、本発明の適用範囲はこの場合に限らず、１つのソースファイル中に、構成要素の定義と構成要素の参照とが含まれていてもよい。
【００２８】
ソースコード一時記憶部１１６は、クライアント端末装置２００から送信される登録対象ソースファイルのうち、既にソースコードメイン記憶部１１１に記憶されているソースファイルと不整合となるものを記憶する。ソースコード一時記憶部１１６は、不整合ソースファイルを一時的に記憶する記憶部であり、この不整合ソースファイルはクライアント端末装置にて修正され整合ソースファイルとなった後に、ソースコードメイン記憶部１１１に記憶される。
なお、ソースコード一時記憶部１１６が、ソースコードメイン記憶部１１１と同様、複数バージョンのソースファイルを記憶するようにしてもよいし、クライアント端末装置２００から送信される最新バージョンのソースファイルのみを記憶するようにしてもよい。
【００２９】
定義情報一時記憶部１１７は、ソースコード一時記憶部１１６の記憶する不整合ソースファイルに含まれる構成要素の定義を示す定義情報を定義情報ファイルにて記憶する。
参照情報一時記憶部１１８は、ソースコード一時記憶部１１６の記憶する不整合ソースファイルにおいて参照される構成要素を示す参照情報を参照情報ファイルにて記憶する。
定義情報一時記憶部１１７の記憶する定義情報と、参照情報一時記憶部１１８の記憶する参照情報とは、例えば、ソースコードメイン記憶部に新たなライブラリのソースファイルが追加された場合に、解析処理部１４０が、ソースコード一時記憶部１１６の記憶するソースコードの整合性を改めて判定する際に用いられる。当該判定において、ソースコード一時記憶部１１６の記憶するソースコードが整合と判定された場合、ソースコード書込処理部１３０は、当該ソースコードをソースメイン記憶部１１１に移動させる。
【００３０】
通信部１２０は、ネットワーク３００を介して、クライアント端末装置２００と通信を行う。特に、通信部１２０は、クライアント端末装置２００から登録対象ソースファイルを取得する。ここで、登録対象ファイルは、クライアント端末装置２００において更新または新規生成されたソースファイルである。また、通信部１２０は、解析処理部１４０が不整合と判定した登録対象ソースファイルについて、不整合の内容を示す結果通知を送信する。
また、通信部１２０は、ソースファイルを要求するクライアント端末装置２００からの信号を受信すると、当該信号をソースコード読出処理部１５０に出力し、ソースコード読出処理部１５０の読み出すソースファイルをクライアント端末装置２００に返信する。
【００３１】
ソースコード書込処理部１３０は、登録対象ソースファイルの各々を、解析処理部１４０による整合性判定結果に基づいて、ソースコードメイン記憶部１１１またはソースコード一時記憶部１１６に書き込む。
解析処理部１４０は、登録対象ソースファイルの各々と、ソースコードメイン記憶部１１１が既に記憶しているソースファイル（整合ソースファイル）との整合性を判定する。その際、解析処理部１４０は、定義情報メイン記憶部１１２が記憶する定義情報ファイルと、参照情報メイン記憶部１１３が記憶する参照情報ファイルとに基づいて、ソースコードメイン記憶部１１１の記憶する整合ソースファイルの最新バージョンと登録対象ソースファイルとの、参照関係の整合性を判定する。
【００３２】
例えば、図２に示される定義情報ファイルは、後述するように、ソースコードメイン記憶部１１１の記憶する制御ソースファイルの最新バージョンにおける定義情報と、登録対象ファイルにおける定義情報とを含む。また、図３に示される参照情報ファイルは、後述するように、ソースコードメイン記憶部１１１の記憶する制御ソースファイルの最新バージョンにおける参照情報と、登録対象ファイルにおける参照情報とを含む。
【００３３】
ここで、ソースファイル「call1.c」が登録対象ソースファイルである場合、当該ソースファイル中では、int型の構成要素「var1」と、char型の構成要素「var2」とが参照されている（図３の行Ｌ２１１および行Ｌ２１２）。
そして、このint型の構成要素「var1」と、char型の構成要素「var2」とは、いずれもソースファイル「program1.c」にて定義されている（図２の行Ｌ１１１および行Ｌ１１２）。従って、ソースファイル「call1.c」における構成要素の参照は、いずれも定義情報ファイル中の定義情報と整合しており、解析処理部１４０は、登録対象ソースファイル「call1.c」を整合と判定する。
【００３４】
一方、ソースファイル「call2.c」が登録対象ソースファイルである場合、当該ソースファイル中では、int型の構成要素「var1」と、char型の構成要素「var2」と、引数がint型およびint型の関数の構成要素「functionC」とが参照されている（図３の行Ｌ２２１〜行Ｌ２２３）。
これに対して、int型の構成要素「var1」と、char型の構成要素「var2」とは、いずれもソースファイル「program1.c」にて定義されている（図２の行Ｌ１１１および行Ｌ１１２）が、構成要素「functionC」は、定義情報ファイル中に含まれていない。従って、ソースファイル「call2.c」における構成要素の参照には、定義情報ファイル中の定義情報と不整合のものが含まれており、解析処理部１４０は、登録対象ソースファイル「call2.c」を不整合と判定する。
【００３５】
また、ソースファイル「call3.c」が登録対象ソースファイルである場合、当該ソースファイル中では、float型の構成要素「var3」と、char型の構成要素「var4」と、引数がint型およびchar型の関数の構成要素「functionB」とが参照されている（図３の行Ｌ２２１〜行Ｌ２２３）。
これに対して、これらと同名の構成要素がソースファイル「program2.c」にて定義されており（図２の行Ｌ１２１〜Ｌ１２３）、構成要素「var4」と構成要素「functionB」とは型情報も一致するが、構成要素「var3」については、定義情報ファイルにおける型はint型であり、参照時のfloat型と一致しない。従って、ソースファイル「call3.c」における構成要素の参照には、定義情報ファイル中の定義情報と不整合のものが含まれており、解析処理部１４０は、登録対象ソースファイル「call3.c」を不整合と判定する。
【００３６】
このように、解析処理部１４０が登録対象ソースファイルの整合性を判定し、記憶部１１０が、解析処理部１４０の判定結果に基づいて、整合ソースファイルと不整合ソースファイルとを分類して記憶することにより、記憶部１１０は、ソースコード全体として整合するソースファイルを記憶可能である。このソースコード全体として整合するソースファイルをビルドすることにより、ソースコード全体のビルドの繰り返しを避けることができ、ソフトウェア開発効率の低下を回避できる。
【００３７】
ソースコード読出処理部１５０は、通信部１２０から出力される、ソースファイルを要求するクライアント端末装置２００からの信号に応じて、ソースコードメイン記憶部１１１またはソースコード一時記憶部１１６からソースファイルを読み出し、読み出したソースファイルを通信部１２０に出力する。例えば、ソースファイルを要求するクライアント端末装置２００からの信号には、要求するソースファイルのファイル名とバージョン識別子とが含まれ、ソースコード読出処理部１５０は、当該ファイル名およびバージョン識別子に該当するソースファイルを検索して取得し、通信部１２０に出力する。
ネットワーク３００は、ソースコード管理サーバ装置１００と各クライアント端末装置２００との間の通信経路を提供する。
【００３８】
次に、図４を参照して、ソースコードを登録する際のソースコード管理サーバ装置１００の動作について説明する。
図４は、ソースコード管理サーバ装置１００が、記憶部１１０のファイルを更新する処理手順を示すフローチャートである。ソースコード管理サーバ装置１００は、通信部１２０にて、クライアント端末装置２００からソースファイル（登録対象ソースファイル）を受信すると同図の処理を開始する。通信部１２０の受信する登録対象ソースファイルの数は、１つであってもよいし、複数であってもよい。
まず、通信部１２０は、受信した登録対象ソースファイルを、ソースコード書込処理部１３０を経由して解析処理部１４０に出力する（ステップＳ１０１）。
【００３９】
ステップＳ１０２〜Ｓ１３３のループでは、解析処理部１４０は、通信部１２０から出力された登録対象ソースファイルを（例えば、通信部１２０の受信した順、あるいはクライアント端末装置２００にて開発担当者が指定した順に）１つずつ解析して、記憶部１１０の記憶内容を更新する。
まず、解析処理部１４０は、出力された登録対象ソースファイルのうち１つ（以下では、当該ファイルを「処理対象ファイル」と称する）を解析して、同ファイル内で定義されている構成要素の名前と型情報とを読み出し、定義情報メイン記憶部１１２の記憶する定義情報（定義情報ファイル）を更新する（ステップＳ１０２）。その際、解析処理部１４０は、定義情報ファイルの内容を元に戻せるように、更新前の定義情報ファイルを一時保存した上で更新を行う。
【００４０】
また、解析処理部１４０は、ステップＳ１０２で解析したファイル内で参照されている構成要素の名前と型情報とを読み出し、参照情報メイン記憶部１１３の記憶する参照情報（参照情報ファイル）を更新する（ステップＳ１０３）。その際、解析処理部１４０は、参照情報ファイルの内容を元に戻せるように、更新前の参照情報ファイルを一時保存した後に更新を行う。
そして、解析処理部１４０は、更新後の参照情報ファイルに含まれる構成要素の各々について、更新後の定義情報ファイルに含まれる同名の構成要素を検索する解析を行うことにより（ステップＳ１１１）、更新後の参照情報ファイルに含まれる構成要素のうち、更新後の定義情報ファイルに含まれないもの、あるいは、更新後の定義情報ファイルに含まれる同名の構成要素と型情報が一致しないもの（以下、両者を併せて「不一致の参照」と称する）が有るか否かに基づいて、定義と参照とが不整合か否かを判定する（ステップＳ１１２）。
【００４１】
不一致の参照が無いと判定した場合（ステップＳ１１２：ＮＯ）、すなわち整合と判定した場合、解析処理部１４０は、整合を示す信号をソースコード書込処理部１３０に出力し、ソースコード書込処理部１３０は処理対象ファイルをソースコードメイン記憶部１１１に書き込む（格納する。ステップＳ１２１）。
そして、解析処理部１４０は、処理対象ファイルの別バージョン、すなわち処理対象ファイルと同名のファイルがソースコード一時記憶部１１６に記憶されているか否かを判定する（ステップＳ１３１）。
【００４２】
処理対象ファイルと同名のファイルがソースコード一時記憶部１１６に記憶されていると判定した場合（ステップＳ１３１：ＹＥＳ）、解析処理部１４０はソースコード書込処理部１３０を介して、処理対象ファイルと同名のファイルをソースコード一時記憶部１１６から削除する（ステップＳ１３２）。また、解析処理部１４０は、処理対象ファイルと同名のファイルにおける定義を示す定義情報を、定義情報一時記憶部１１７の記憶する定義情報ファイルから削除し、処理対象ファイルと同名のファイルにおける参照を示す参照情報を、参照情報一時記憶部１１８の記憶する参照情報ファイルから削除する。
【００４３】
そして、解析処理部１４０は、通信部１２０から出力された全ての登録対象ソースファイルを処理済みか否かを判定する（ステップＳ１５１）。未処理のファイルがあると判定した場合（ステップＳ１５１：ＮＯ）、ステップＳ１０２に戻り、未処理のファイルの処理を続行する。
【００４４】
一方、ステップＳ１５１において、全てのファイルについて処理済みと判定した場合（ステップＳ１５１：ＹＥＳ）、解析処理部１４０は、処理対象ファイルの各々について、整合または不整合の判定結果、および、不整合と判定した場合は、不整合と判定した構成要素の名前、および定義の有無、定義がある場合はさらに当該定義の含まれるファイル名を含む結果通知を生成し、通信部１２０に出力する。そして、通信部１２０は、解析処理部１４０から出力された結果通知を、登録対象ソースファイルを送信したクライアント端末装置２００に、ネットワーク３００を介して送信する（ステップＳ１５２）。
その後、同図の処理を終了する。
【００４５】
一方、ステップＳ１３１において、処理対象ファイルと同名のファイルがソースコード一時記憶部１１６に記憶されていないと判定した場合（ステップＳ１３１：ＮＯ）。ステップＳ１５１に進む。
一方、ステップＳ１１２において、不一致の参照が有ると判定した場合（ステップＳ１１２：ＹＥＳ）、すなわち不整合と判定した場合、解析処理部１４０は、不整合を示す信号をソースコード書込処理部１３０に出力し、ソースコード書込処理部１３０は処理対象ファイルをソースコード一時記憶部１１６に書き込む（格納する。ステップＳ１４１）。
そして、解析処理部１４０は、ステップＳ１０２で更新した定義情報ファイルを元に（すなわち、一時保存した定義情報ファイルに）戻し、ステップＳ１０２で行った更新と同様の更新を定義情報一時記憶部１１７に対して行う（すなわち、処理対象ファイル内で定義されている構成要素の名前と型情報とに基づいて、定義情報一時記憶部１１７の記憶する定義情報ファイルを更新する）。また、解析処理部１４０は、ステップＳ１０３で更新した参照情報ファイルを元に戻し、ステップＳ１０３で行った更新と同様の更新を参照情報一時記憶部１１８に対して行う（ステップＳ１４１）。
その後、ステップＳ１５１に進む。
【００４６】
以上のように、ソースコードメイン記憶部１１１が、整合ソースファイルを記憶し、ソースコード一時記憶部１１６が不整合ソースファイルを記憶することにより、記憶部１１０は、ソースファイルを整合ソースファイルと不整合ソースファイルとに分類して記憶する。そして、解析処理部１４０は、通信部１２０の受信する登録対象ソースファイルとソースコードメイン記憶部１１１の記憶する整合ソースファイルとの整合性を判定し、ソースコード書込処理部１３０は、解析処理部１４０が整合と判定した場合は、登録対象ソースファイルをソースコードメイン記憶部１１１に記憶させ、解析処理部１４０が不整合と判定した場合は、登録対象ソースファイルをソースコード一時記憶部１１６に記憶させる。
これにより、ソースコードメイン記憶部１１１の記憶するソースファイルは、全体として整合が取れているので、ソースコード全体のビルドを行う際に、不整合を検出してビルドを繰り返し、ソフトウェア開発効率が低下することを回避できる。
【００４７】
また、ソースコードメイン記憶部１１１は、複数バージョンのソースファイルを記憶し、定義情報メイン記憶部１１２が、最新バージョンのソースファイルにおける定義情報を記憶し、参照情報メイン記憶部１１３が、最新バージョンのソースファイルにおける参照情報を記憶する。そして、解析処理部１４０は、定義情報メイン記憶部１１２の記憶する定義情報と、参照情報メイン記憶部１１３の記憶する参照情報と、通信部１２０の受信する登録対象ソースファイルにおける構成要素の定義および参照とに基づいて整合性の判定を行う。
これにより、ソースコードメイン記憶部１１１が既に記憶しているソースファイルについて構成要素の定義や参照の解析を行う必要が無い。この点で、解析処理部１４０が整合性の判定を行うのに要する時間を短縮できる。
【００４８】
また、解析処理部１４０は、整合性の判定結果や、不整合と判定したソースファイルについて不整合の内容を示す解析結果を生成し、通信部１２０が、この解析結果をクライアント端末装置２００に送信する。
これにより、ユーザは、登録対象ソースファイルの不整合部分を知ることができ、不整合を除去する編集を、より容易に行うことができる。
【００４９】
なお、記憶部１１０が整合ソースファイルと不整合ソースファイルとを分類して記憶する方法は、上述した整合ソースファイルをソースコードメイン記憶部１１１にて記憶し、不整合ソースファイルをソースコード一時記憶部１１６にて記憶する方法に限らない。例えば、解析処理部１４０が、整合性判結果に基づいて、整合ソースファイルと不整合ソースファイルとを区別するフラグをソースファイルのヘッダに含め、記憶部１１０は、このフラグを含むソースファイルを記憶するようにしてもよい。これによっても、整合ソースファイルと不整合ソースファイルとを分類することができ、上述したのと同様の処理を行うことが出来る。
【００５０】
なお、記憶部１１０が、定義情報（定義情報ファイル）および参照情報（参照情報ファイル）を記憶せず、解析処理部１４０が、整合性の判定を行う際に、ソースコードメイン記憶部１１１の記憶する整合ソースファイルの各々を解析して定義情報および参照情報を取得するようにしてもよい。
この場合、解析処理部１４０が整合性の判定を行うのに要する時間は長くなるものの、記憶部１１０が定義情報および参照情報を記憶する必要が無いので、記憶部１１０の必要とする記憶容量を低減させることができる。
【００５１】
なお、ソースコード管理サーバ装置１００はコンピュータであり、従って、ソースコード管理サーバ装置１００の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００５２】
以上、本発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００５３】
１  ソースコード管理システム
１００  ソースコード管理サーバ装置
１１０  記憶部
１１１  ソースコードメイン記憶部
１１２  定義情報メイン記憶部
１１３  参照情報メイン記憶部
１１６  ソースコード一時記憶部
１１７  定義情報一時記憶部
１１８  参照情報一時記憶部
１２０  通信部
１３０  ソースコード書込処理部
１４０  解析処理部
１５０  ソースコード読出処理部
２００  クライアント端末装置
３００  ネットワーク
【図１】
2012089055.tif 000003
【図２】
2012089055.tif 000004
【図３】
2012089055.tif 000005
【図４】
2012089055.tif 000006