(57)【特許請求の範囲】
【請求項１】
第１のプログラムソースを第２のプログラムソースに変換するプログラムソース変換装置が、
前記第１のプログラムソースを解析して許容される許容ルールをチェックするコードチェックツールを作成する工程と、
前記第１のプログラムソースを前記第２のプログラムソースに変換する工程と、
前記第１のプログラムソースに保守開発があった場合に、前記保守開発された第１のプログラムソースを、前記コードチェックツールを用いてチェックし、前記保守開発された第１のプログラムソースを前記変換済みの第２のプログラムソースに反映するための方針を決めるための、前記許容ルール外の用法を抽出する工程と、
前記方針に基づいて前記保守開発された第１のプログラムソースを第２のプログラムソースに変換して前記変換済みの第２のプログラムソースに合流させる工程と、を実行する、
ことを特徴とするプログラムソース変換方法。
【請求項２】
第１のプログラムソースを第２のプログラムソースに変換するプログラムソース変換装置において、
前記第１のプログラムソースを解析して許容される許容ルールをチェックするコードチェックツールを作成する手段と、
前記第１のプログラムソースを前記第２のプログラムソースに変換する手段と、
前記第１のプログラムソースに保守開発があった場合に、前記保守開発された第１のプログラムソースを、前記コードチェックツールを用いてチェックし、前記保守開発された第１のプログラムソースを前記変換済みの第２のプログラムソースに反映するための方針を決めるための、前記許容ルール外の用法を抽出する手段と、
前記方針に基づいて前記保守開発された第１のプログラムソースを第２のプログラムソースに変換して前記変換済みの第２のプログラムソースに合流させる手段と、を備える、
ことを特徴とするプログラムソース変換装置。
【請求項３】
保守前現行プログラムソースの構文解析を行い、前記保守前現行プログラムソースに使用されているトークンおよび構文の一覧を作成するパーサ部と、
新プログラムソースの設計基準に基づいて、前記新プログラムソースに使用することが許可されているトークン、構文、および文字列を示す許可情報、ならびに、前記新プログラムソースに使用することが禁止されているトークン、構文、および文字列を示す禁止情報を設定する設定部と、
保守後現行プログラムソースに前記許可情報および前記禁止情報が使用されているか否かを判定するためのツールを作成するツール作成部と、を備える、
ことを特徴とする情報処理装置。
【請求項４】
前記ツール作成部が作成したツールは、
前記保守後現行プログラムソースのテストを行うテスト装置にて動作した場合、前記許可情報に示されていない情報が前記保守後現行プログラムソースに使用されている、または、前記禁止情報に示される情報が前記保守後現行プログラムソースに使用されているとき、前記使用されているこれらの情報の一覧を、前記テスト装置に出力させる、
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
情報処理装置が、
保守前現行プログラムソースの構文解析を行い、前記保守前現行プログラムソースに使用されているトークンおよび構文の一覧を作成するステップと、
新プログラムソースの設計基準に基づいて、前記新プログラムソースに使用することが許可されているトークン、構文、および文字列を示す許可情報、ならびに、前記新プログラムソースに使用することが禁止されているトークン、構文、および文字列を示す禁止情報を設定するステップと、
保守後現行プログラムソースに前記許可情報および前記禁止情報が使用されているか否かを判定するためのツールを作成するステップと、を実行する、
ことを特徴とする情報処理方法。
【請求項６】
コンピュータを、
保守前現行プログラムソースの構文解析を行い、前記構文解析に基づいて、前記保守前現行プログラムソースに使用されているトークンおよび構文の一覧を作成するパーサ手段、
新プログラムソースの設計基準に基づいて、前記新プログラムソースに使用することが許可されているトークン、構文、および文字列を示す許可情報、ならびに、前記新プログラムソースに使用することが禁止されているトークン、構文、および文字列を示す禁止情報を設定する設定手段、
保守後現行プログラムソースに前記許可情報および前記禁止情報が使用されているか否かを判定するためのツールを作成するツール作成手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、現行システムから新システムへのシステム移行を伴うソフトウェア開発の技術に関する。
【背景技術】
【０００２】
現行システムから新システムへのシステム移行において、例えば、プログラムのコンバージョン開発という作業がある。コンバージョン開発では、現行システムに用いられる現行プログラムソースのプログラム言語（例：ＣＯＢＯＬ（COmmon Business Oriented Language））を別のプログラム言語（例：ＪＡＶＡ（登録商標））に置き換えて、新システムに用いられる新プログラムソースを作成する。
【０００３】
コンバージョン開発の途中段階で、現行システムの保守開発が実施される場合がある。大規模システムのコンバージョン開発であれば、長期の作業となるため、コンバージョン開発の途中段階での保守開発は複数回に及ぶこともある。保守開発が実施された場合、開発途中の新システムに対して追いつき作業を実施する。追いつき作業とは、一度作成し、システムテストまで終えた新システムの新プログラムソースに、保守開発によって発生したプログラム修正変更分を反映させる作業をいう。追いつき作業は、必須であるとはいえ、コンバージョン開発の作業量を増大させ、システム移行の遅延化を招くので、作業工数を低減化し早期に終了させたいという要望がある。しかし、保守開発ではコンバージョン開発の設計内容が基本的には考慮されないため、追いつき作業の作業工数を見積もることが困難であり、作業工数の低減化は決して容易でない。
【０００４】
特許文献１には、検証対象プログラムが、指定した内部仕様を満足するか否かを、抽象構文木を用いて検証するプログラム検証装置について開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−２１５９９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１には、追いつき作業に関する上記問題やその解決策について記載も示唆もない。その結果、プログラムのコンバージョン開発が行われるシステム移行の早期化を実現することができない。
【０００７】
そこで、本発明は、このような事情に鑑みてなされたものであり、保守開発が行われる現行システムから新システムへのシステム移行の早期化を実現することを目的とする。
【課題を解決するための手段】
【０００８】
前記目的を達成するために、本発明の情報処理装置は、
第１のプログラムソースを第２のプログラムソースに変換するプログラムソース変換装置が、
前記第１のプログラムソースを解析して許容される許容ルールをチェックするコードチェックツールを作成する工程と、
前記第１のプログラムソースを前記第２のプログラムソースに変換する工程と、
前記第１のプログラムソースに保守開発があった場合に、前記保守開発された第１のプログラムソースを、前記コードチェックツールを用いてチェックし、前記保守開発された第１のプログラムソースを前記変換済みの第２のプログラムソースに反映するための方針を決めるための、前記許容ルール外の用法を抽出する工程と、
前記方針に基づいて前記保守開発された第１のプログラムソースを第２のプログラムソースに変換して前記変換済みの第２のプログラムソースに合流させる工程と、を実行する、
ことを特徴とする。
その他の手段については後記する。
【発明の効果】
【０００９】
本発明によれば、保守開発が行われる現行システムから新システムへのシステム移行の早期化を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明を適用しない場合のシステム移行を示すシーケンスである。
【図２】本発明を適用した場合のシステム移行を示すシーケンスである。
【図３】移行開発環境におけるコンバージョン開発の詳細手順、および、現行システム保守開発環境における保守開発の詳細手順を示すフローチャートである。
【図４】リバース装置の機能構成図である。
【図５】コードチェックツールの機能構成図である。
【図６】保守後現行プログラムソース判定処理（構文の場合）を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の好適な例となる実施形態について添付の図面を参照しながら詳細に説明する。
【００１２】
≪概要≫
［従来のシステム移行］
図１に示すように、比較例となる、プログラムのコンバージョン開発が行われるシステム移行は、例えば、現行システム用サーバ１、現行システム保守用ＰＣ（Personal Computer）２、テストサーバ２ｔ、リポジトリ用サーバ３、新システム保守用ＰＣ４、テストサーバ４ｔ、コンバージョン開発用サーバ５、テストサーバ５ｔ、および、新システム用サーバ６の間で情報のやり取りが行われることで実現される。
【００１３】
現行システム用サーバ１は、現行プログラムソースＰ１（保守前現行プログラムソース）を読み込んで、現行システムの本番運用に供する処理を行うサーバである。現行システム用サーバ１は、現行システム本番環境下にあって、例えば、コンバージョン開発者の顧客先に設置されている。
現行プログラムソースＰ１は、現行システム用のプログラムのソースコードである。現行プログラムソースＰ１は、例えば、ＣＯＢＯＬで記述されているが、他の言語で記述してもよい。
なお、本明細書にて、保守開発されたか否かにかかわらず現行プログラムソースを「第１のプログラムソース」と呼び、現行システムを「第１のシステム」と呼ぶ場合がある。
【００１４】
現行システム保守用ＰＣ２は、現行プログラムソースＰ１を修正して保守済現行プログラムソースＰ２を作成するサーバである。保守済現行プログラムソースＰ２は、保守開発が完了した現行プログラムソースＰ１に等しい。保守済現行プログラムソースＰ２は、現行プログラムソースＰ１と同じ言語で記述されている。
テストサーバ２ｔは、保守済現行プログラムソースＰ２の動作確認のテストを行うサーバである。
現行システム保守用ＰＣ２およびテストサーバ２ｔは、現行システム保守開発環境下にあって、例えば、コンバージョン開発業者の顧客先に設置されている。
なお、保守開発とは、現行システムに発生した障害を引き起こすバグの修正などの非予定的な作業を含んだり、法改正に伴うプログラムの仕様変更などの予定的な作業を含んだりする。
【００１５】
リポジトリ用サーバ３は、リソース管理用サーバである。リポジトリ用サーバ３は、現行プログラムソースＰ１、保守済現行プログラムソースＰ２、新プログラムソースＰ３、および、保守済新プログラムソースＰ４を保存して管理している。
新プログラムソースＰ３は、新システム用のプログラムのソースコードである。
保守済新プログラムソースＰ４は、保守開発が完了した新プログラムソースＰ３に等しい。
リポジトリ用サーバ３は、リソース管理環境下にあって、例えば、顧客先に設置されている。なお、リソース管理環境は、現行システム保守開発環境、または、後記する新システム保守開発環境が兼ねるようにしてもよい。換言すれば、現行システム保守用ＰＣ２、または、新システム保守用ＰＣ４がリポジトリ用サーバ３として機能するように設計することができる。
【００１６】
新システム保守用ＰＣ４は、新プログラムソースＰ３を修正して保守済新プログラムソースＰ４を作成するサーバである。
テストサーバ４ｔは、保守済新プログラムソースＰ４の動作確認のテスト（システムテスト）を行うサーバである。
新システム保守用ＰＣ４およびテストサーバ４ｔは、新システム保守開発環境下にあって、例えば、顧客先に設置されている。
【００１７】
コンバージョン開発用サーバ５は、現行プログラムソースＰ１のプログラム言語を別のプログラム言語に置き換えて、新プログラムソースＰ３を作成するサーバである。新プログラムソースＰ３は、例えば、ＪＡＶＡで記述されているが、他の言語で記述してもよい。
テストサーバ５ｔは、新プログラムソースＰ３の動作確認のテストを行うサーバである。
コンバージョン開発用サーバ５およびテストサーバ５ｔは、移行開発環境下にあって、例えば、コンバージョン開発者先に設置されている。
【００１８】
新システム用サーバ６は、保守済新プログラムソースＰ４を読み込んで、新システムの本番運用に供する処理を行うサーバである。新システム用サーバ６は、新システム本番環境下にあって、例えば、顧客先に設置されている。
なお、本明細書にて、保守開発されたか否かにかかわらず新プログラムソースを「第２のプログラムソース」と呼び、新システムを「第２のシステム」と呼ぶ場合がある。
【００１９】
図１におけるシステム移行の手順は以下のとおりである。
まず、ステップＡ１にて、現行システム用サーバ１は、リポジトリ用サーバ３から取得した現行プログラムソースＰ１を読み込んで、本番運用を行っている。
【００２０】
次に、ステップＡ２にて、コンバージョン開発用サーバ５は、リポジトリ用サーバ３から取得した現行プログラムソースＰ１に対して、現行システムのコンバージョン開発を行い、新プログラムソースＰ３を作成する。また、テストサーバ５ｔが新プログラムソースＰ３の動作確認のテストを行う。テストサーバ５ｔにてテストを終えた新プログラムソースＰ３は、新システム保守用ＰＣ４に保存される。
【００２１】
次に、ステップＡ３にて、現行システム保守用ＰＣ２は、リポジトリ用サーバ３から取得した現行プログラムソースＰ１を修正し、保守開発を行い、保守済現行プログラムソースＰ２を作成する。また、テストサーバ２ｔが保守済現行プログラムソースＰ２の動作確認のテストを行う。ステップＡ３は、ステップＡ２が完了する前にステップＡ２に並行して１または複数回行われる（並行保守）。テストサーバ２ｔにてテストを終えた保守済現行プログラムソースＰ２は、リポジトリ用サーバ３に保存される。
【００２２】
次に、ステップＡ４にて、テストサーバ４ｔは、新プログラムソースＰ３のシステムテストを行う。具体的には、テストサーバ４ｔは、システムテストとして、新プログラムソースＰ３として出力されたコンバージョン結果の確認を行う。テストサーバ４ｔにてシステムテストを終えた新プログラムソースＰ３は、リポジトリ用サーバ３に保存される。
【００２３】
次に、ステップＡ５にて、現行システム用サーバ１は、リポジトリ用サーバ３から取得した保守済現行プログラムソースＰ２を読み込んで、保守済の内容で本番運用を開始する。
【００２４】
次に、ステップＡ６にて、コンバージョン開発用サーバ５は、リポジトリ用サーバ３から取得した保守済現行プログラムソースＰ２を読み込んで、追いつき作業を行う。具体的には、コンバージョン開発用サーバ５は、現行プログラムソースＰ１と保守済現行プログラムソースＰ２との差分を、ステップＡ３の保守開発によるプログラム変更修正分として特定する。また、コンバージョン開発用サーバ５は、特定したプログラム変更修正分に対して、保守済となった現行システムのコンバージョン開発を行う。また、コンバージョン開発用サーバ５は、保守済となった現行システムのコンバージョン開発の結果物を新プログラムソースＰ３に反映させて保守済新プログラムソースＰ４を作成する。「保守済となった現行システムのコンバージョン開発の結果物を新プログラムソースＰ３に反映」させることは、ステップＡ２での最初のコンバージョン開発の設計を並行保守に対応させるという工程をとることを意味する。また、テストサーバ５ｔが保守済新プログラムソースＰ４の動作確認のテストを行う。テストサーバ５ｔにてテストを終えた保守済新プログラムソースＰ４は、新システム保守用ＰＣ４に保存される。
【００２５】
次に、ステップＡ７にて、テストサーバ４ｔは、保守済新プログラムソースＰ４のシステムテストを行う。具体的には、テストサーバ４ｔは、システムテストとして、保守済新プログラムソースＰ４として出力されたコンバージョン結果の確認を行う。テストサーバ４ｔにてシステムテストを終えた保守済新プログラムソースＰ４は、リポジトリ用サーバ３に保存される。
【００２６】
次に、ステップＡ８にて、システム移行が行われる（符号Ｍ１）。具体的には、ステップＡ５にて、現行システム用サーバ１が行っていた保守済の内容での本番運用を終了するとともに、新システム用サーバ６が、リポジトリ用サーバ３から取得した保守済新プログラムソースＰ４を読み込んで、保守済の内容で本番運用を開始する。
次に、ステップＡ９にて、現行システム用サーバ１は、保守済現行プログラムソースＰ２を用いて、保守済の内容でバックアップ運用を開始する。
【００２７】
ステップＡ６の追いつき作業の作業量は、ステップＡ３の保守開発での現行プログラムソースＰ１のプログラム変更修正の結果に依存する。従来では、保守開発ではコンバージョン開発の設計内容が基本的には考慮されないため（保守開発業者は保守開発の都合を優先し、コンバージョン開発のことは気に留めないため）、保守開発での現行プログラムソースＰ１のプログラム変更修正の実現方式はさまざまである。例えば、保守開発にて移行設計が対象としていない新たな（ＣＯＢＯＬの）命令語を用いてプログラムを修正することがある（当該「修正」は、新たな「命令語」を用いた修正、および、新たな「命令語の使い方」を用いた修正、の両方の意味を含む）。この場合、コンバージョン開発の移行設計の修正が必要となる。コンバージョン（プログラム言語の変換）の大半は、所定の変換ツール用いて機械的に行うことができるが、コンバージョン開発の移行設計が修正された場合、この移行設計の修正に対応するように変換ツールを修正する必要がある。また、修正した変換ツールを用いてコンバージョンを行う際、修正した変換ツール自体の動作確認のテストを事前に行う必要がある。これらの作業が追い付き作業に伴う場合があるため、コンバージョン開発側で追いつき作業の作業量を予測し、追いつき作業の作業工数を見積もり、低減化することは容易でない。
なお、非常に複雑な変換手順に関しては、開発コストの観点から、変換ツールを用いず手作業でコンバージョンを行うことがある。現行プログラムソースＰ１のうちコンバージョン手作業部分に保守開発の修正があったとする。この場合、コンバージョン開発の移行設計の修正がなかったとしても、追いつき作業にて、保守開発の修正結果に合わせたコンバージョンが手作業でなされ、正しくコンバージョンなされたか否かのテストが行われる。
【００２８】
［本実施形態のシステム移行］
上記のような事情に鑑みて、本実施形態では、図２に示す手順をとる。図２に示すように、本実施形態での、プログラムのコンバージョン開発が行われるシステム移行は、図１に示す比較例と同様、例えば、現行システム用サーバ１、現行システム保守用ＰＣ２、テストサーバ２ｔ、リポジトリ用サーバ３、新システム保守用ＰＣ４、テストサーバ４ｔ、コンバージョン開発用サーバ５、テストサーバ５ｔ、および、新システム用サーバ６の間で情報のやり取りが行われることで実現される。以下、図１との相違点を中心的に述べて、本実施形態でのシステム移行について説明する。
【００２９】
ステップＡ２の序盤にて、ステップＢ１が行われる。ステップＢ１にて、コンバージョン開発用サーバ５は、コンバージョン開発で前提とするプログラム構文（以下、単に、「構文」と称する場合がある）を決定した後、構文を反映した設計基準１０およびコードチェックツール２０を作成する。
設計基準１０は、新プログラムソースＰ３の設計基準であり、システム移行の移行設計（後記）の必要条件をまとめて記述したものである。
コードチェックツール２０は、現行システム保守用ＰＣ２での保守開発のコーディング（後記）に用いられるツールである。コードチェックツール２０の詳細は後記する。
【００３０】
その後、ステップＡ３（図１）の代わりにステップＢ２が行われる。ステップＢ２にて、現行システム保守用ＰＣ２は、保守開発を行い、保守済現行プログラムソースＰ２を作成する際、コンバージョン開発用サーバ５から取得した、設計基準１０およびコードチェックツール２０を用いて、コンバージョン開発を前提とした（考慮した）構文などを利用する。現行システム保守用ＰＣ２は、作成した保守済現行プログラムソースＰ２に対して、コードチェックツール２０を動作させ設計基準１０から逸脱した構文などが利用されたか否かを判定する。現行システム保守用ＰＣ２は、設計基準１０から逸脱した構文などが存在する場合は、設計基準１０から逸脱した構文などが存在しないように保守済現行プログラムソースＰ２を作成してもよい。どうしても設計基準１０から逸脱した構文などが保守開発に必要となる場合は、現行システム保守用ＰＣ２は、そのような構文などをまとめて記述した基準外一覧３０を作成する。基準外一覧３０は、保守済現行プログラムソースＰ２を新プログラムソースＰ３に反映するための方針を決めることができる。基準外一覧３０の詳細は後記する。
【００３１】
その後、ステップＡ２の終盤にて、ステップＢ３が行われる。ステップＢ３にて、基準外一覧３０が存在する場合には、コンバージョン開発用サーバ５は、現行システム保守用ＰＣ２から取得した基準外一覧３０を反映させて新プログラムソースＰ３を作成する。
【００３２】
ステップＢ４の追いつき作業は、ステップＡ６（図１）の追いつき作業と同等の作業である。コンバージョン開発用サーバ５は、基準外一覧３０の方針に基づいて、保守済現行プログラムソースＰ２をコンバージョンし、新プログラムソースＰ３に合流させる。
【００３３】
コンバージョン開発（ステップＡ２）は、設計基準１０に即して行われる。このため、保守開発にて、設計基準１０に即した態様で保守済現行プログラムソースＰ２が作成されれば基準外一覧３０は作成されない。その結果、追いつき作業（ステップＢ４）では、システム移行の移行設計に関する部分を省略することができる。
また、保守開発にて、設計基準１０から逸脱した態様で保守済現行プログラムソースＰ２が作成され、基準外一覧３０が作成されたとしても、基準外一覧３０の構文などに対応した、システム移行の移行設計を、ステップＢ３の段階で、つまり、追いつき作業（ステップＢ４）に先行して行うことができる（追いつき作業の先取り）。従来（図１）では、追いつき作業（ステップＡ６）にて、保守開発の成果物としての保守済現行プログラムソースＰ２を取得して構文解析などをした後でないと、基準外一覧３０の構文などに相当する構文などを特定することができず、この特定した構文などに対応した、システム移行の移行設計を行うことができなかった。
【００３４】
上記のように、追いつき作業（ステップＢ４）の一部分を省略することができたり、コンバージョン開発の段階で先行してシステム開発の移行設計を行うことができたりする。その結果、ステップＡ６（図１）の追いつき作業と比較して、追いつき作業（ステップＢ４）の工期短縮や工数削減を達成することができ、本実施形態のシステム移行（符号Ｍ２）を、従来（図１参照）のシステム移行（符号Ｍ１）から繰り上げることができる（システム移行の早期化）。
なお、ステップＢ１での、設計基準１０およびコードチェックツール２０の作成に要する期間や、ステップＢ３での基準外一覧３０の反映に要する期間は、追いつき作業の短縮期間に比べて無視できるほど短い。
上記のステップＢ１，Ｂ３，Ｂ４を実行するコンバージョン開発用サーバ５、および、ステップＢ２を実行する現行システム保守用ＰＣ２は、本発明のプログラムソース変換装置を構成し、本発明のプログラムソース変換方法を実行する。
【００３５】
［コンバージョン開発の詳細、保守開発の詳細］
図３を参照して、移行開発環境におけるコンバージョン開発の詳細手順、および、現行システム保守開発環境における保守開発の詳細手順について説明する。
図３の左側に示すように、コンバージョン開発用サーバ５およびテストサーバ５ｔが配置されている移行開発環境では、移行性分析（ステップＢ１１）、移行設計（ステップＢ１２）、リバース（ステップＢ１３）、プログラム変換（ステップＢ３１）、変換テスト（ステップＢ３２）、プログラム変換（ステップＢ４１）、および、テスト（ステップＢ４２）がこの順序で実行される。
【００３６】
移行性分析（ステップＢ１１）では、現行プログラムソースＰ１の構文解析などが行われる。
移行設計（ステップＢ１２）では、コーディングルール（例：変数命名、メソッドやクラスの設定）の設定などが行われる。移行設計（ステップＢ１２）によって設計基準１０が作成される。
リバース（ステップＢ１３）では、公知技術のパーサに移行設計（ステップＢ１２）の結果を反映（リバース）することで、コードチェックツール２０を作成する。
上記の移行性分析（ステップＢ１１）、移行設計（ステップＢ１２）、リバース（ステップＢ１３）は、ステップＢ１（図２）にて実行される。
【００３７】
プログラム変換（ステップＢ３１）では、現行プログラムソースＰ１で使用されているプログラム言語を別のプログラム言語に変換して、新プログラムソースＰ３を作成する。
変換テスト（ステップＢ３２）では、テストサーバ５ｔによる新プログラムソースＰ３のテストを行う。
上記のプログラム変換（ステップＢ３１）および変換テスト（ステップＢ３２）は、ステップＢ３（図２）にて実行される。
【００３８】
プログラム変換（ステップＢ４１）では、保守済現行プログラムソースＰ２で使用されているプログラム言語を別のプログラム言語に変換して、保守済新プログラムソースＰ４を作成する。
テスト（ステップＢ４２）では、テストサーバ５ｔによる保守済新プログラムソースＰ４のテストを行う。
上記のプログラム変換（ステップＢ４１）および変換テスト（ステップＢ４２）は、ステップＢ４（図２）にて実行される。
【００３９】
図３の右側に示すように、現行システム保守用ＰＣ２およびテストサーバ２ｔが配置されている現行システム保守開発環境では、基本設計（ステップＢ２１）、詳細設計（ステップＢ２２）、コーディング（ステップＢ２３）、および、テスト（ステップＢ２４）がこの順序で実行される。
【００４０】
基本設計（ステップＢ２１）では、現行プログラムソースＰ１の修正変更部分およびその部分の修正事項を決定する。基本設計（ステップＢ２１）にて、設計基準１０を適宜参照する。
詳細設計（ステップＢ２２）では、設計基準１０になるべく即した態様でコーディングルールの設定などが行われる。詳細設計（ステップＢ２２）が完了すると、保守済現行プログラムソースＰ２が作成される。
コーディング（ステップＢ２３）では、作成された保守済現行プログラムソースＰ２に対して、コードチェックツール２０の出力結果を含めたコーディングレビューを行う。コーディングレビューは、繰り返し行われ、保守済現行プログラムソースＰ２に含まれるバグなどが取り除かれる。
テスト（ステップＢ４２）では、テストサーバ２ｔによる保守済現行プログラムソースＰ２のテストを行う。テスト（ステップＢ４２）が完了すると、動作確認が保証された保守済現行プログラムソースＰ２が作成される。
上記の基本設計（ステップＢ２１）、詳細設計（ステップＢ２２）、コーディング（ステップＢ２３）、および、テスト（ステップＢ２４）は、ステップＢ２（図２）にて実行される。
【００４１】
≪構成≫
［リバース装置］
図４を参照して本実施形態のリバース装置Ｒ（情報処理装置）について説明する。リバース装置Ｒは、リバース（図３のステップＢ１３）を行う装置であって、コンバージョン開発サーバ５の一部となる装置である。リバース装置Ｒは、入力部、出力部、制御部、および記憶部といったハードウェアを含むコンピュータである。例えば、制御部がＣＰＵ（Central Processing Unit）から構成される場合、その制御部を含むコンピュータによる情報処理は、ＣＰＵによるプログラム実行処理で実現される。また、そのコンピュータが含む記憶部は、ＣＰＵの指令により、そのコンピュータの機能を実現するためのさまざまなプログラムを記憶する。これによりソフトウェアとハードウェアの協働が実現される。前記プログラムは、記録媒体に記録したり、ネットワークを経由したりすることで提供することができる。
【００４２】
リバース装置Ｒは、パーサ部ｒ１（パーサ手段）と、設定部ｒ２（設定手段）と、編集部ｒ３と、ツール作成部ｒ４（ツール作成手段）とを備える。パーサ部ｒ１と、設定部ｒ２と、編集部ｒ３と、ツール作成部ｒ４は、リバース装置Ｒの制御部の具体的な機能部である。また、リバース装置Ｒは、コードチェックプログラム１４を備える。コードチェックプログラム１４は、コードチェックツール２０の一部を構成しており、コードチェックツール２０の処理内容が記述されたプログラムソースである。コードチェックプログラム１４は、リバース（図３のステップＢ１３）にて作成され、リバース装置Ｒの記憶部に記憶されている。
【００４３】
（パーサ部ｒ１）
パーサ部ｒ１は、現行プログラムソースＰ１の構文解析を行う。現行プログラムソースＰ１の構文解析が完了すると、パーサ部ｒ１は、現行プログラムソースＰ１に使用されているトークンおよび構文を特定することができる。パーサ部ｒ１は、特定したトークンを保守前トークン一覧Ｐ１ａとして出力し、特定した構文を保守前構文一覧Ｐ１ｂとして出力する。パーサ部ｒ１は、プログラム言語ごとに用意することができる。
【００４４】
（設定部ｒ２）
設定部ｒ２は、新プログラムソースＰ３の設計基準１０に基づいて、新プログラムソースＰ３に使用することが許可されている情報を許可情報１１として設定する。許可情報１１が示す許可とは、新プログラムソースＰ３を作成するコンバージョン開発側から保守済現行プログラムソースＰ２を作成する保守開発側に対する許可であり、追いつき作業（図２のステップＢ４）の短縮の観点から、保守済現行プログラムソースＰ２に対して、許可情報１１に示す情報は使用してもよいことを意味する。
【００４５】
許可情報１１は、追加トークン許可情報１１ａ、追加構文許可情報１１ｂ、および、追加文字列許可情報１１ｃを備える。
追加トークン許可情報１１ａは、新プログラムソースＰ３に使用することが許可されているトークンを示す情報である。
追加構文許可情報１１ｂは、新プログラムソースＰ３に使用することが許可されている構文を示す情報である。
追加文字列許可情報１１ｃは、新プログラムソースＰ３に使用することが許可されている文字列を示す情報である。「文字列」とは、例えばコメント文であり、プログラムソースに用いられるコードのうちプログラムの動作に寄与しないものである。本明細書にて「文字列」という語は、左記の意味で用いることにする。
【００４６】
例えば、現行プログラムソースＰ１に使用されているトークン、構文、文字列は、コンバージョン開発の開発対象とする情報であるため、許可情報１１とすることが好ましい（保守前トークン一覧Ｐ１ａ中のトークンおよび保守前構文一覧Ｐ１ｂ中の構文は許可情報１１に分類される）。ただし、現行プログラムソースＰ１に使用されているトークン、構文、文字列の一部を許可情報１１に含めないようにすることを妨げるものではない。また、コンバージョン開発側で、現行プログラムソースＰ１に使用されているトークン、構文、文字列以外のトークン、構文、文字列を適宜用意し、許可情報１１に追加してもよい。
【００４７】
また、設定部ｒ２は、新プログラムソースＰ３の設計基準１０に基づいて、新プログラムソースＰ３に使用することが禁止されている情報を禁止情報１２として設定する。禁止情報１２が示す禁止とは、新プログラムソースＰ３を作成するコンバージョン開発側から保守済現行プログラムソースＰ２を作成する保守開発側に対する禁止であり、追いつき作業（図２のステップＢ４）の短縮の観点から、保守済現行プログラムソースＰ２に対して、禁止情報１２に示す情報は使用してほしくない（または使用してはならないということにしてもよい）ことを意味する。
【００４８】
禁止情報１２は、追加トークン禁止情報１２ａ、追加構文禁止情報１２ｂ、および、追加文字列禁止情報１２ｃを備える。
追加トークン禁止情報１２ａは、新プログラムソースＰ３に使用することが禁止されているトークンを示す情報である。
追加構文禁止情報１２ｂは、新プログラムソースＰ３に使用することが禁止されている構文を示す情報である。
追加文字列禁止情報１２ｃは、新プログラムソースＰ３に使用することが禁止されている文字列を示す情報である。
【００４９】
例えば、現行プログラムソースＰ１に使用されているトークン、構文、文字列は、コンバージョン開発の開発対象とする情報であるため、禁止情報１２としないことが好ましい。ただし、現行プログラムソースＰ１に使用されているトークン、構文、文字列の一部を禁止情報１２に含めるようにすることを妨げるものではない。また、コンバージョン開発側で、所定のトークン、構文、文字列を適宜用意し、禁止情報１２に追加してもよい。
上記した許可情報１１および禁止情報１２は、保守開発上の許容ルールを構成し、コンバージョン開発側から保守開発側に提示される。
【００５０】
（編集部ｒ３）
編集部ｒ３は、パーサ部ｒ１から出力した、保守前トークン一覧Ｐ１ａおよび保守前構文一覧Ｐ１ｂ、並びに、設定部ｒ２から出力した、許可情報１１および禁止情報１２を、所望の形式にまとめるように編集する。編集部ｒ３は、まとめた情報をチェック情報１３として出力する。
【００５１】
（ツール作成部ｒ４）
ツール作成部ｒ４は、チェック情報１３とコードチェックプログラム１４とをパッケージ化することで、コードチェックツール２０（ツール）を作成する。
ツール作成部ｒ４が作成したコードチェックツール２０、および、移行設計（図３のステップＢ１２）によって作成された設計基準１０は、現行システム保守開発環境のテストサーバ２ｔにインストールされる（図２参照）。なお、コードチェックツール２０および設計基準１０を、現行システム保守開発環境の現行システム保守用ＰＣ２にインストールしてもよい。
【００５２】
［コードチェックツール２０の詳細］
図５に示すように、コードチェックツール２０は、すでに説明したチェック情報１３に加えて、パーサ部２１および判定部２２を備える。パーサ部２１および判定部２２は、コードチェックプログラム１４を構成する。
【００５３】
（パーサ部２１）
パーサ部２１は、保守後現行プログラムソースＰ５の構文解析を行う。保守後現行プログラムソースＰ５とは、保守開発によって、現行プログラムソースＰ１が暫定的にまたは確定的に修正変更されたものである。具体的には、保守後現行プログラムソースＰ５は、コーディング（図３のステップＢ２３）が途中であるときや完了したときの（テスト前の）保守済現行プログラムソースＰ２であったり、テスト（図３のステップＢ４２）が完了したときの保守済現行プログラムソースＰ２であったりする。
【００５４】
パーサ部２１は、保守後現行プログラムソースＰ５の構文解析が完了すると、保守後現行プログラムソースＰ５に使用されているトークンおよび構文を特定することができる。パーサ部２１は、特定したトークンを保守後トークン一覧Ｐ５ａとして出力し、特定した構文を保守後構文一覧Ｐ５ｂとして出力する。パーサ部２１は、プログラム言語ごとに用意することができる。
【００５５】
（判定部２２）
判定部２２は、保守後現行プログラムソースＰ５に許可情報１１および禁止情報１２が使用されているか否かを判定する。具体的には、判定部２２に、保守後トークン一覧Ｐ５ａ、保守後構文一覧Ｐ５ｂ、および、コードチェックツール２０が有するチェック情報１３（図４）を入力する。また、保守後トークン一覧Ｐ５ａとチェック情報１３に含まれる保守前トークン一覧Ｐ１ａとの差分を特定し、保守後構文一覧Ｐ５ｂとチェック情報１３に含まれる保守前構文一覧Ｐ１ｂとの差分を特定する。また、特定したこれらの差分が許可情報１１に分類されるか否か、かつ、禁止情報１２に分類されるか否かを判定する。なお、判定部２２の判定処理の詳細は後記する。
【００５６】
判定部２２は、上記の判定の判定結果２３をテストサーバ２ｔに出力させる。許可情報１１に示されていない情報が保守後現行プログラムソースＰ５に使用されている、または、禁止情報１２に示される情報が保守後現行プログラムソースＰ５に使用されているとき、判定部２２は、使用されているこれらの情報の一覧を、基準外一覧３０（図２参照）として判定結果２３に含める。
なお、判定部２２による判定は、パーサ部２１による構文解析を行った後に行うこともできるし、その構文解析を行いながら行うこともできる。
【００５７】
また、判定部２２は、トークンおよび構文だけでなく、文字列に対しても上記と同様の判定を行うことができる。具体的には、まず、コードチェックツール２０は、周知の技術によって、保守後現行プログラムソースＰ５から文字列を抽出し、保守後文字列一覧Ｐ５ｃを作成する。また、判定部２２に、保守後文字列一覧Ｐ５ｃおよびチェック情報１３（図４）を入力する。また、保守後文字列一覧Ｐ５ｃに含まれる文字列の各々が、許可情報１１に分類されるか否か、かつ、禁止情報１２に分類されるか否かを判定する。判定部２２は、文字列に関して判定結果２３をテストサーバ２ｔに出力させる。許可情報１１に示されていない情報が保守後文字列一覧Ｐ５ｃに使用されている、または、禁止情報１２に示される情報が保守後文字列一覧Ｐ５ｃに使用されているとき、判定部２２は、使用されているこれらの情報の一覧を、基準外一覧３０（図２参照）として判定結果２３に含める。
【００５８】
（判定部２２の判定処理）
図６に示すように、判定部２２が保守後現行プログラムソースＰ５に対して行う、保守後現行プログラムソース判定処理は以下のとおりである。図６では、保守後現行プログラムソースＰ５の保守後構文一覧Ｐ５ｂに含まれる構文について説明する。
【００５９】
まず、ステップＳ１にて、判定部２２は、許可情報１１の追加構文許可情報１１ｂが、保守後構文一覧Ｐ５ｂを包含するか否かを判定する。包含する場合（ステップＳ１でＹｅｓ）、保守後構文一覧Ｐ５ｂ中の構文のすべてが、新プログラムソースＰ３に使用することが許可されている構文であることを意味しており、ステップＳ２に進む。一方、包含していない場合（ステップＳ１でＮｏ）、保守後構文一覧Ｐ５ｂ中の構文の少なくとも１つが、新プログラムソースＰ３に使用することが許可されていないことを意味しており、ステップＳ４に進む。
【００６０】
次に、ステップＳ２にて、判定部２２は、禁止情報１２の追加構文禁止情報１２ｂと、保守後構文一覧Ｐ５ｂとが互いに疎であるか否かを判定する。互いに疎である場合（ステップＳ２でＹｅｓ）、保守後構文一覧Ｐ５ｂ中の構文のいずれも、新プログラムソースＰ３に使用することが禁止されている構文に該当しないことを意味しており、ステップＳ３に進む。一方、互いに疎でない場合（ステップＳ２でＮｏ）、保守後構文一覧Ｐ５ｂ中の構文の少なくとも１つが、新プログラムソースＰ３に使用することが禁止されていることを意味しており、ステップＳ４に進む。
【００６１】
次に、ステップＳ３にて、判定部２２は、保守後構文一覧Ｐ５ｂ中の構文が、許可情報１１の追加構文許可情報１１ｂのみから構成されている（設計基準１０に従っている）ことを示すＯＫ判定を出力する。
また、ステップＳ４にて、判定部２２は、保守後構文一覧Ｐ５ｂ中の構文には、許可情報１１の追加構文許可情報１１ｂに該当しない構文が含まれている、または、禁止情報１２の追加構文禁止情報１２ｂに該当する構文が含まれている（設計基準から逸脱している）ことを示すＮＧ判定を出力する。
ステップＳ４の後、ステップＳ５では、判定部２２は、保守後構文一覧Ｐ５ｂ中の構文のうち、ＮＧ判定の要因となった構文を抽出し、基準外一覧３０（許容ルール外の用法）に追加する。
次に、ステップＳ６では、判定部２２は、ＯＫ判定およびＮＧ判定を合わせた判定結果２３をテストサーバ２ｔに出力させる。
【００６２】
判定結果２３は、移行開発環境のコンバージョン開発用サーバ５およびテストサーバ５ｔに送信される。コンバージョン開発側では、判定結果２３を踏まえて、新プログラムソースＰ３を作成することができる。
【００６３】
なお、上記の判定部２２の処理の説明は、構文に関するものであったが、トークンおよび文字列の場合も同様のロジックで処理することができる。つまり、保守後構文一覧Ｐ５ｂ中のトークンが許可情報１１の追加トークン許可情報１１ａのみから構成されているか否かが判定される。また、保守後構文一覧Ｐ５ｂ中の文字列が許可情報１１の追加文字列許可情報１１ｃのみから構成されているか否かが判定される。
【００６４】
（まとめ）
本実施形態によれば、現行プログラムソースＰ１のプログラム言語を変換して新プログラムソースＰ３を作成するコンバージョン開発と、現行プログラムソースＰ１の保守開発が並行している場合において、新プログラムソースＰ３に使用することが許可および禁止されている許可情報１１および禁止情報１２を設定し、コードチェックツール２０によって、保守開発した保守後現行プログラムソースＰ５に許可情報１１および禁止情報１２が使用されているか否かを判定する。これにより、その判定結果に基づいて、保守開発によるプログラム修正変更分を的確に把握してから新プログラムソースＰ３のシステムテストなどを行うことができ、保守済現行プログラムソースＰ２に対する追いつき作業（図２のステップＢ４）の作業工数の見積もりを容易にするとともに、追いつき作業の工期短縮や工数削減（低減化）を達成することができる。
したがって、保守開発が行われる現行システムから新システムへのシステム移行の早期化を実現することができる。
【００６５】
また、コードチェックツール２０によって、保守後現行プログラムソースＰ５に基準外一覧３０が存在しないこと、または、基準外一覧３０が存在する場合にはその基準外一覧３０をコンバージョン開発側で取得することができる。これにより、基準外一覧３０が存在しなければ、保守済現行プログラムソースＰ２に対する追いつき作業では、システム移行の移行設計に関する部分を省略することができる。また、基準外一覧３０が存在していたとしても、システム移行の移行設計を、追いつき作業に先行して行うことができる。その結果、追いつき作業のさらなる工期短縮や工数削減を達成することができる。
【００６６】
（変形例）
本発明は、上記実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で、変更実施が可能であり、例えば、次の（ａ）、（ｂ）のようなものがある。
（ａ）：現行プログラムソースのプログラム言語の変換というコンバージョン開発に限られず、同じ種類のサービスを提供するが、地域別に多少なりともプログラムソースの中身を変更する必要のあるシステム開発に適用することができる。つまり、Ａ地域にて運用されているシステムの現行プログラムソースを利用してＢ地域にて運用する予定の新プログラムソースを作成する場合、Ａ地域の現行プログラムソースの保守開発によるプログラム修正変更分を把握してから、Ｂ地域用の新プログラムソースの追いつき作業に取り掛かることができる。結果的に、その追いつき作業の作業量を低減させ、追いつき作業の工期短縮や工数削減を達成することができる。
【００６７】
（ｂ）：本実施形態では、ステップＢ３（図２）は、ステップＡ２の一部であるとし、追いつき作業（ステップＢ４）に先行して行われるものとして説明した。しかし、ステップＢ３を、ステップＡ２の一部とせず、ステップＡ２の後段の作業とし、追いつき作業（ステップＢ４）の前段の作業として取り扱ってもよい。この場合、新プログラムソースＰ３は、ステップＡ２の作業の結果物となり、ステップＢ３の作業の結果物とはならない。また、この場合、ステップＢ３は、コンバージョン開発用サーバ５が、ステップＡ２にて作成された新プログラムソースＰ３に、現行システム保守用ＰＣ２から取得した基準外一覧３０を反映させる作業となる。ステップＢ３は、ステップＡ２と並行実施されるように取り扱うことができる。また、ステップＢ３とステップＢ４を合わせた作業を追いつき作業として取り扱うこともできる。
【００６８】
また、本実施形態で説明した種々の技術を適宜組み合わせた技術を実現することもできる。
本実施形態で説明したソフトウェアをハードウェアとして実現することもでき、ハードウェアをソフトウェアとして実現することもできる。
その他、ハードウェア、ソフトウェア、フローチャートなどについて、本発明の趣旨を逸脱しない範囲で適宜変更が可能である。
【符号の説明】
【００６９】
２      現行システム保守用ＰＣ
２ｔ    テストサーバ（テスト装置）
５      コンバージョン開発用サーバ
５ｔ    テストサーバ
Ｐ１    現行プログラムソース（保守前現行プログラムソース）
Ｐ２    保守済現行プログラムソース
Ｐ３    新プログラムソース
Ｐ４    保守済新プログラムソース
Ｐ５    保守後現行プログラムソース
１０    設計基準
１１    許可情報
１２    禁止情報
１３    チェック情報
２０    コードチェックツール
２１    パーサ部
２２    判定部
２３    判定結果
３０    基準外一覧
Ｒ      リバース装置（情報処理装置）
ｒ１    パーサ部（パーサ手段）
ｒ２    設定部（設定手段）
ｒ３    編集部
ｒ４    ツール作成部（ツール作成手段）
【図１】
0006653205.tif 000002
【図２】
0006653205.tif 000003
【図３】
0006653205.tif 000004
【図４】
0006653205.tif 000005
【図５】
0006653205.tif 000006
【図６】
0006653205.tif 000007