(57)【要約】【課題】プログラムを複写して並列開発を行っている時、プログラムコードに問題を発見、修正した場合に、他の複写したコードにも同じ修正を加えなければならない可能性があるが、ファイルコピーや改訂の履歴を追跡することが簡易に実施できず、行単位の複写が行われていた場合は追跡が出来ない。またコード上の変数名などの文字列が改訂されていると文字列検索では発見できず、同様の修正すべき問題が修正漏れを起こす可能性がある。【解決手段】プログラムファイルの行毎にＩＤを採番し、複写や改訂時にはそのＩＤを管理情報内に引き継いだ管理情報を持つプログラムファイル管理システムであり、そのＩＤにより複写や改訂したコードも追跡することが出来、修正箇所を漏れなく摘出することが出来る。【選択図】  図１
2011215667.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムファイル及びプログラムファイルの管理情報を関連付けて登録し、その管理情報には行毎に更新前のＩＤと更新後のＩＤを持つことを特徴とするプログラム管理システム。
【請求項２】
プログラムファイル複写時に、行毎のＩＤ情報を複写し前記プログラムの管理情報を作成する機能を持つことを特徴とするプログラムファイル管理システム。
【請求項３】
プログラムファイル更新時に、行毎にＩＤを付加し前記プログラムの管理情報を作成する機能を持つことを特徴とするプログラムファイル管理システム。
【請求項４】
前記管理情報のＩＤの情報を元に、プログラムファイルの複写前後、改訂前後の行を検出する機能を持つプログラムファイル管理システム
【請求項５】
請求項４で検出した行を表示する機能を持つプログラムファイル管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、問題発見箇所と同様修正が必要なコードの検出機能を持つ、プログラムファイル管理システムに関するものである。
【背景技術】
【０００２】
プログラムのファイル管理は、たとえばソースコードの変更履歴を記録し管理するＣＶＳ(Concurrent Versions System)などの構成管理ツールを利用することで、各プログラムファイル自体とその履歴を管理することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−３２３２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラム開発する際に、複数のプログラム使用環境へ提供するため、もしくは異なる機能を追加で持たせるために、１つのプログラムを複製して並行開発を行うことがある。
【０００５】
しかしプログラム開発中に、プログラムファイル中のコード上の問題を発見したとき、その問題がファイルを複製していることにより他の並行開発しているプログラムファイル中にも存在する可能性があり、同様の箇所が存在するかを探索する必要がある。
【０００６】
この探索する方法としては、修正を行ったコードがどの時点で作成されたか、他の並行開発へのプログラムファイル複製がいつ時点で行われたか、複製先に現時点でそのコードが存在するか、を調査するため煩雑であった。
【０００７】
また、コード上の変数名などの文字が改訂されているだけで、そのコードが存在するか文字列で検索しても発見できなくなるが、プログラムファイル中の修正すべき問題は変わらずに存在していることがあった。
【０００８】
また、ファイルの複製でなく行単位の複写が行われていた場合、ファイル複製の履歴記録では追跡ができないため、修正漏れが発生していた。
【０００９】
本発明が解決する課題は、あるプログラムファイルのコードと同様の箇所が存在するコードを簡易に検索が行えること、また改訂されている場合も検索が行えること、これにより同様の問題の修正漏れを防ぐことである。
【課題を解決するための手段】
【００１０】
プログラムファイルを管理するシステムであり、プログラムファイルを管理する管理情報を持つ。管理情報にはプログラムファイルの各行のコード毎に採番されたＩＤを持つ。
【００１１】
また本システムは、ファイルやコード行の複写時に管理情報を作成する機能を持ち、複写先の各コードの管理情報に複写元のＩＤを引き継いだ管理情報が作成される。
【００１２】
また本システムはエディタ機能を持ち、行が改訂されたときは、その行の管理情報内に改訂前のＩＤと改訂後の新しく採番されたＩＤの２つを持つ。
【発明の効果】
【００１３】
本発明のプログラムファイル管理システムは、プログラムファイル各行のＩＤを管理することにより、ファイル複写やファイル内の行単位の複写であっても、そのＩＤ情報を検索するだけで同じ行を検索することが出来る。
【００１４】
また、コード行が改訂されている場合も、管理情報内で改訂前後のＩＤを遡って検索することにより、その行の全改訂前後の行を検索することが出来、修正漏れを防ぐことができる。
【００１５】
行毎にＩＤを付加し管理するプログラム管理システムは、例えば特開２００７−３２３２０５号公報に存在するが、改訂前の行ＩＤ引き継いで管理しないため、行毎の改訂前後の探索には利用できない。
【図面の簡単な説明】
【００１６】
【図１】プログラムファイル管理システムのブロック構成図
【図２】プログラムファイル管理システムのハードウェア構成図
【図３】リポジトリのファイルデータ構成図
【図４（ａ）】ファイル複写機能の処理フロー図
【図４（ｂ）】ファイル複写機能の中のソースコード情報複写処理の処理フロー図
【図５（ａ）】エディタ機能の処理フロー図
【図５（ｂ）】エディタ機能の中の行追加処理の処理フロー図
【図５（ｃ）】エディタ機能の中の行改訂処理の処理フロー図
【図５（ｄ）】エディタ機能の中の行削除処理の処理フロー図
【図５（ｅ）】エディタ機能の中の行複写処理の処理フロー図
【図６（ａ）】履歴ＩＤ探索機能の処理フロー図
【図６（ｂ）】履歴ＩＤ探索機能の中の元ファイルＩＤ検索の処理フロー図
【図６（ｃ）】履歴ＩＤ探索機能の中の改訂・複写後ソースデータ情報検索の処理フロー図
【図６（ｄ）】履歴ＩＤ探索機能の中の結果表示の処理フロー図
【図７】探索履歴ＩＤテーブルの例
【図８】履歴ＩＤ登録テーブルの例
【図９】検索コードテーブルの例
【発明を実施するための形態】
【００１７】
図１は、本発明によるプログラムファイル管理システムの一実施例を示すブロック構成図である。プログラムファイル管理システムは、図１に示すように、プログラムファイルを管理情報を編集しながら改訂するエディタ機能１０１、ファイル複写時に管理情報を作成しながらリポジトリに登録するファイル複写機能１０２、あるコード行が複写されて作成されたコードや、改訂されたコードの行を検索する履歴ＩＤ探索機能１０３、エディタ機能でのプログラムファイル編集時にユーザ操作されたプログラムファイルを格納する一時リポジトリ１０４、プログラムファイルを管理するリポジトリ１０５、を備えるように構成される。
【００１８】
図２は、本発明によるプログラムファイル管理システムの一実施例を示すハードウェア構成図である。プログラムファイル管理システムは、図２に示すように、ユーザがエディタ機能に対する操作指示やファイル複写、行の探索の指示を行う入力装置２０１、ユーザへエディタ機能によるコード編集の状態や行の検索の結果を表示する出力装置２０２、エディタ機能やファイル複写機能や履歴ＩＤ探索機能を処理する処理装置２０３、リポジトリや一時リポジトリが格納されるデータ保管装置２０４、から構成される。
【００１９】
図３は、リポジトリ１０５内容の一実地例を示すファイルデータ構成図である。リポジトリ１０５は、ファイルを個別に識別するファイル管理情報３０１と、各ファイルの内容を各行の情報を付加して保管するソースコード情報３０２を有する。
【００２０】
ファイル管理情報３０１は、ファイル名３０３、ファイルが再格納されたときに１づつ増えて履歴番号を示すＲｅｖ．３０４、同ファイル名の中で一番最新である場合に１である最新フラグ３０５、ファイルとＲｅｖ．毎に一意の番号を採番したファイルＩＤ３０６を有する。
【００２１】
ソースコード情報３０２は、ファイルのファイルＩＤ３０７、そのファイル内の行番号３０８、ファイル内容のコード３０９、履歴ＩＤはファイル内容の行毎に番号が採番される。履歴ＩＤ[引継]３１０は、そのファイルの改訂前の履歴ＩＤを引継いで格納される。履歴ＩＤ[改訂]３１１は、その行が改訂されたときに新たな履歴ＩＤが採番されて格納される。
【００２２】
図４は、ファイル複写機能１０２が、ファイル複写時に履歴ＩＤを引継いでリポジトリ書き換えを行う処理の一実施例を示す処理フロー図である。全体の処理フロー図を図４(ａ)、下位処理であるソースコード情報複写処理（４０８）の処理フロー図を図４(ｂ)に示す。まずユーザから指示された複写元・先のファイル情報を受け取る（４０１）、次に受け取った複写元ファイルの情報からファイル管理情報３０２を検索し複写元ファイルのファイルＩＤを取得する（４０２）。次に、複写先ファイルのファイルＩＤを採番する（４０３）。次に、ファイル管理情報３０１のファイル名３０３に複写先ファイルを書込み、Ｒｅｖ．３０４に０を書込み、最新フラグ３０５に１を書込み、ファイルＩＤ３０６に採番したファイルＩＤを書き込む（４０４）。次にリポジトリ１０５のソースコード情報３０２から１データ読み込み（４０６）、複写元ファイルのファイルＩＤと一致するかを判断する（４０７）、一致した場合は、ソースコード情報複写処理（４０８）を実行する。これをソースコード情報３０２が終了するまで繰り返す（４０５）。
【００２３】
図４(b)はソースコード情報複写処理（４０８）の内容を示したフロー図である。ソースコード情報複写処理（４０８）はリポジトリ１０５のソースコード情報３０２へ複写先ファイルの情報を書き込む処理である。まず採番した複写先ファイルＩＤ、読み込んでいるソースコード情報の行番号３０８とコード３０９を書き込む（４０９）。次に読み込んでいるソースコード情報の履歴ＩＤ[改訂]３１１にデータが格納されているか判断する（４１０）。格納されている場合は履歴ＩＤ[引継]へその複写元データの履歴ＩＤ[改訂]を書き込む（４１１）。格納されていなかった場合は履歴ＩＤ[引継]へその複写元データの履歴ＩＤ[引継]を書き込む（４１２）。
【００２４】
図５は、エディタ機能１０１がファイルの編集時にユーザからの操作によりリポジトリ１０５の編集を行う処理の一実施例を示す処理フロー図である。エディタ機能の全体フロー図を図５(a)に示す。エディタ機能内部の操作毎の処理を図５(b)〜(e)に示す。まず図５(a)のフローを説明する。エディタ機能はまず編集するファイルの情報を取得する（５０１）。取得した編集するファイルの情報からファイル管理情報３０１を検索し編集するファイルのファイルＩＤを取得する（５０２）。次にリポジトリ１０５のファイル管理情報３０１、ソースコード情報３０２から、編集するファイルのファイルＩＤと合致するデータだけを一時リポジトリに複写して格納する（５０３）。次にユーザからの操作毎に一時リポジトリ内の情報を書き換える処理を行う（５０５）。行追加の操作がされたときは行追加処理（５０６）を行う。行改訂の操作が行われたときは行改訂処理（５０７）を行う。行削除の操作が行われたときは行削除処理（５０８）を行う。行複写の操作が行われたときは行複写処理（５０９）を行う。この操作毎の処理をエディタ操作が終了するまで繰り返し行う（５０４）。次に編集後のファイルのＩＤを採番する（５１０）。次にリポジトリ１０５内の編集元ファイル管理情報を書き換える（５１１）。具体的には、最新フラグ３０５を０に設定する。次に一時リポジトリ１０４内のファイル管理情報を書換えながらリポジトリ１０５へ書き込む（５１２）。具体的にはＲｅｖ．３０４を１増分した値に書き換え、最新フラグ３０５を１に設定し、ファイルＩＤ３０６を編集後ファイルＩＤ採番（５１０）で取得したファイルＩＤに設定する。次に一時リポジトリ１０４内のソースコード情報を書換えながらリポジトリ１０５へ書き込む（５１３）。書換えの内容は具体的には、ファイルＩＤ３０７を編集後ファイルＩＤ採番（５１０）で取得したファイルＩＤに設定する。
【００２５】
図５(ｂ)は、エディタ機能で行追加が操作されたときの一時リポジトリ１０４内のソースコード情報を書き換える行追加処理（５０６）の処理フロー図である。まずソースコード情報を１データ読み込み（５１５）、行番号が行追加を操作された行より大きいかを判断する（５１６）。大きい場合は、行番号を増加させて書き換える（５１７）。この処理をソースコード情報が終了するまで繰り返す（５１４）。次に追加行のための履歴ＩＤを採番し（５１８）、追加行の情報をソースコード情報へ書き込む（５１９）。
【００２６】
図５(ｃ)は、エディタ機能で行改訂が操作されたときの一時リポジトリ内のソースコード情報を書き換える行改訂処理（５０７）の処理フロー図である。まず履歴ＩＤを採番し（５２０）、ソースコード情報の改訂が行われた行の履歴ＩＤ[改訂]に採番した履歴ＩＤを書き込む（５２１）。
【００２７】
図５(ｄ)は、エディタ機能で行削除が操作されたときの一時リポジトリ内のソースコード情報を書き換える行削除処理（５０８）の処理フロー図である。まずソースコード情報から削除操作された行のデータを削除する（５２２）。次にソースコード情報から１データ読込み（５２４）、行番号が削除行の位置より大きいかを判断する（５２５）。大きい場合は、行番号を減算して書き換える（５２６）。この処理をソースコード情報が終了するまで繰り返す（５２３）。
【００２８】
図５(ｅ)は、エディタ機能で行複写が操作されたときの一時リポジトリ内のソースコード情報を書き換える行複写処理（５０９）の処理フロー図である。まず複写元のソースコード情報と複写先の位置情報を取得する（５２７）、次に複写元ソースコード情報を１データ読み込む（５３０）、複写元のソースコード情報から複写先のソースコード情報を作成しながら書き込む。具体的には、ファイルＩＤを複写し、行番号は複写先の行番号を付加し、コードを複写して書き込む（５３１）、次に複写元のソースコード情報に履歴ＩＤ[改訂]が存在するか判断する（５３２）、履歴ＩＤ[改訂]が存在した場合は複写元データの履歴ＩＤ[改訂]を複写先の履歴ＩＤ[引継]へ書き込む（５３３）、履歴ＩＤ[改訂]が存在しなかった場合は複写元データの履歴ＩＤ[引継]を複写先の履歴ＩＤ[引継]へ書き込む（５３４）。次にソースコード情報を１データ読み込み（５３６）、読み込んだソースコード情報の行番号が行複写を操作された行より大きいかを判断する（５３７）。大きい場合は、行番号を増加させて書き換える（５３８）。この処理をソースコード情報が終了するまで繰り返す（５３５）。
【００２９】
図６(ａ)は問題のあるコードを発見した場合に同様の修正を行うプログラムファイルを検索する全体の処理フロー図である。まず、問題が発生した行の元ファイルＩＤを検索する（６０１）。次に検索した元ファイルＩＤの改訂後・複写後のソースデータ情報を検索する（６０２）。最後に検索したソースデータ情報を表示する（603）。各下位の処理フローを図６(ｂ)〜(ｄ)に示す。
【００３０】
図６(ｂ)は問題が発生した行の元ファイルＩＤを検索する処理フロー図である。まず、問題が発生した行の情報を入力装置２０１から取得する（６０４）。行の情報から履歴ＩＤを取得し、探索履歴ＩＤテーブルへ格納する（６０５）。次にソースコード情報から１データ読み込み（６０７）、読込んだデータの履歴ＩＤ[改訂]が探索履歴ＩＤテーブルの履歴ＩＤと合致するかを判断する（６０８）。合致した場合は、読込んだデータの履歴ＩＤ[引継]にデータが存在するかを判断する（６０９）。存在した場合はそのデータを、探索履歴ＩＤテーブルへ書換えで格納する（６１０）。次にソースコード情報の読み込み位置を初期化して（６１１）、ソースコード情報を再度先頭から読み込み開始する。ここまでの処理をソースコード情報が終了するまで繰り返す（６０６）。
【００３１】
図６(ｃ)は、検索した元ファイルＩＤの改訂後・複写後のソースデータ情報を検索する処理フロー図である。まず探索履歴ＩＤテーブルから１データ読み込み（６１２）、次にソースコード情報から１データ読込む（６１３）。ここで探索履歴ＩＤテーブルから読込んだ履歴ＩＤと、ソースコード情報から読込んだ履歴ＩＤ[引継]が合致するか判断し（６１６）、合致した場合は追跡結果テーブルに追記する（６１７）。次に履歴ＩＤ[改訂]が存在するか判断し（６１８）、存在した場合は探索履歴ＩＤテーブルに追記で格納する（６１９）。ソースコード情報を１データ読込んでから（６１５）ここまでの処理をソースコード情報が終了するまで繰り返す（６１４）。更に、探索履歴ＩＤテーブル１データ読み込んでから（６１３）ここまでの処理を探索履歴ＩＤテーブルが終了するまで繰り返す（６１２）。
【００３２】
図６(ｄ)は、検索したソースデータ情報を表示する処理フロー図である。まず追跡結果テーブルから１データ読込む（６２０）。次にファイル管理情報から１データ読込む（６２１）。追跡結果テーブルから読込んだデータのファイルＩＤとファイル管理情報から読込んだデータのファイルＩＤが一致するか判断する（６２４）。一致した場合は検索コードテーブルに追記する（６２５）。ファイル管理情報を１データ読み込んでから（６２３）ここまでの処理をファイル管理情報が終わるまで繰り返す（６２２）。更に追跡履歴テーブルを１データ読込んでから（６２１）ここまでの処理を追跡履歴テーブルが終わるまで繰り返す（６２０）。次に検索コードテーブルから１データ読込み（６２６）、読込んだ検索コードテーブルの最新フラグが１であるか判断する（６２８）。最新フラグが１であった場合は検索コードテーブルのそのデータを表示する（６２９）。検索コードテーブルを１レコード読込んでから（６２７）ここまでの処理を検索コードテーブルが終了するまで繰り返す（６２６）。これにより問題が発見された行の複写行及び改訂前後の行が全て表示され、漏れなく修正対象が表示できる。
【００３３】
図７は探索履歴ＩＤテーブルの実施例である。
【００３４】
図８は追跡結果テーブルの実施例である。
【００３５】
図９は検索コードテーブルの実施例である。
【符号の説明】
【００３６】
１０１  エディタ機能部
１０２  ファイル複写機能部
１０３  履歴ＩＤ探索機能部
１０４  一時リポジトリ
１０５  リポジトリ
２０１  入力装置
２０２  出力装置
２０３  処理装置
２０４  データ保管装置
３０１  ファイル管理情報部
３０２  ソースコード情報部
３０３  ファイル名
３０４  Ｒｅｖ．
３０５  最新フラグ
３０６  ファイルＩＤ
３０７  ファイル名
３０８  行番号
３０９  コード
３１０  履歴ＩＤ[引継]
３１１  履歴ＩＤ[改訂]
【図１】
2011215667.tif 000003
【図２】
2011215667.tif 000004
【図３】
2011215667.tif 000005
【図４（ａ）】
2011215667.tif 000006
【図４（ｂ）】
2011215667.tif 000007
【図５（ａ）】
2011215667.tif 000008
【図５（ｂ）】
2011215667.tif 000009
【図５（ｃ）】
2011215667.tif 000010
【図５（ｄ）】
2011215667.tif 000011
【図５（ｅ）】
2011215667.tif 000012
【図６（ａ）】
2011215667.tif 000013
【図６（ｂ）】
2011215667.tif 000014
【図６（ｃ）】
2011215667.tif 000015
【図６（ｄ）】
2011215667.tif 000016
【図７】
2011215667.tif 000017
【図８】
2011215667.tif 000018
【図９】
2011215667.tif 000019