(57)【要約】【課題】第１原本プログラムに対して所定の機能を組み込んだ第１修正プログラムを、第２原本プログラムに対応する第２修正プログラムに容易かつ適切に移植できるようにする。【解決手段】移植支援装置１０において、ＣＰＵ１１は、第１原本プログラムと、第１修正プログラムとのソースコードの差分コードを検出し、差分コードの変数を特定する処理と、第１原本プログラムのソースコードから差分コードの変数の値に影響を及ぼすコードのみを抽出し、第１修正プログラムのソースコードの変数に関する第１ロジックを特定する処理と、第２原本プログラムのソースコードにおいて差分コードを埋め込んだソースコード候補を作成し、差分コードの変数の値に影響を及ぼすコードのみを抽出し、ソースコード候補における変数に関する第２ロジックを特定する処理と、第１ロジックと、第２ロジックとが一致するか否かを判定する処理と、を実行するように構成されている。【選択図】図１
2018109860.tif 000002
【特許請求の範囲】
【請求項１】
第１原本プログラムに対して所定の機能を追加した第１修正プログラムを、前記第１原本プログラムを変更した第２原本プログラムに対して前記所定の機能を追加した第２修正プログラムへ移植する支援を行う移植支援装置であって、
前記第１原本プログラムと、前記第２原本プログラムと、前記第１修正プログラムとのそれぞれのソースコードを記憶する記憶装置と、プロセッサとを備え、
前記プロセッサは、
前記第１原本プログラムと、第１修正プログラムとのソースコードの所定の範囲における差分コードを検出し、前記差分コードにおいて使用されている変数を特定する処理と、
前記第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲から前記差分コードの前記変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲における前記変数に関する第１ロジックを特定する処理と、
前記第２原本プログラムのソースコードの所定の範囲において差分コードを埋め込んだ第２修正プログラムのソースコード候補を一種類以上作成し、前記ソースコード候補から前記差分コードの変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、前記ソースコード候補における前記変数に関する第２ロジックを特定する処理と、
前記第１ロジックと、前記第２ロジックとが一致するか否かを判定する処理と、を実行するように構成されている
移植支援装置。
【請求項２】
前記プロセッサは、
前記第２原本プログラムのソースコードの前記変数が登場したコード以降の異なる位置に差分コードを埋め込むことにより、第２修正プログラムのソースコード候補を複数種類作成し、各ソースコード候補を対象に前記第２ロジックを特定する
請求項１に記載の移植支援装置。
【請求項３】
前記プロセッサは、
前記第１ロジックと、前記第２ロジックとが一致するか否かの判定結果を所定の表示装置に出力する
請求項１又は請求項２に記載の移植支援装置。
【請求項４】
前記プロセッサは、
前記第１修正プログラムの所定範囲のコードと、前記第２修正プログラムの前記ソースコード候補と、第１ロジックと、第２ロジックと、をさらに前記表示装置に出力する
請求項３に記載の移植支援装置。
【請求項５】
前記プロセッサは、
前記ソースコード候補の編集を受け付け、編集後のコードを前記ソースコード候補として前記表示装置に出力し、
前記ソースコード候補における前記変数に関する第２ロジックを特定し、
前記第１ロジックと、前記第２ロジックとが一致するか否かを判定し、判定結果を前記表示装置に出力する
請求項４に記載の移植支援装置。
【請求項６】
前記プロセッサは、
前記表示装置に出力した前記ソースコード候補を前記第２修正プログラムのソースコードとして登録させるか否かの指示をユーザから受け付け、登録させるとの指示を受け付けた場合には、前記ソースコード候補を前記第２修正プログラムのソースコードとして格納する
請求項４又は請求項５に記載の移植支援装置。
【請求項７】
前記プロセッサは、
前記表示装置前記ソースコード候補に関するコメントの入力を受け付け、
前記ソースコード候補を前記第２修正プログラムのソースコードとして登録する場合に、前記受け付けたコメントを、前記ソースコードに関連付けて前記記憶装置に格納する
請求項６に記載の移植支援装置。
【請求項８】
前記プロセッサは、前記第１ロジックと、前記第２ロジックとが一致する場合に、前記ソースコード候補を、第２修正プログラムの前記所定の範囲におけるソースコードとして、前記記録装置に格納する
請求項１に記載の移植支援装置。
【請求項９】
第１原本プログラムに対して所定の機能を追加した第１修正プログラムを、前記第１原本プログラムを変更した第２原本プログラムに対して前記所定の機能を追加した第２修正プログラムへ移植する支援を行う移植支援装置による移植支援方法であって、
前記移植支援装置は、前記第１原本プログラムと、前記第２原本プログラムと、前記第１修正プログラムとのそれぞれのソースコードを記憶しており、
前記移植支援装置は、
第１原本プログラムと、第１修正プログラムとのソースコードの所定の範囲における差分コードを検出し、前記差分コードにおいて使用されている変数を特定する処理と、
前記第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲から前記差分コードの前記変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲における前記変数に関する第１ロジックを特定する処理と、
前記第２原本プログラムのソースコードの所定の範囲において差分コードを埋め込んだ第２修正プログラムのソースコード候補を一種類以上作成し、前記ソースコード候補から前記差分コードの変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、前記ソースコード候補における前記変数に関する第２ロジックを特定する処理と、
前記第１ロジックと、前記第２ロジックとが一致するか否かを判定する処理と、
を実行する移植支援方法。
【請求項１０】
前記移植支援装置は、
前記第２原本プログラムのソースコードの前記変数が登場したコード以降の異なる位置に差分コードを埋め込むことにより、第２修正プログラムのソースコード候補を複数種類作成し、各ソースコード候補を対象に前記第２ロジックを特定する
請求項９に記載の移植支援方法。
【請求項１１】
前記移植支援装置は、
前記第１ロジックと、前記第２ロジックとが一致するか否かの判定結果を所定の表示装置に出力する
請求項９又は請求項１０に記載の移植支援方法。
【請求項１２】
第１原本プログラムに対して所定の機能を追加した第１修正プログラムを、前記第１原本プログラムを変更した第２原本プログラムに対して前記所定の機能を追加した第２修正プログラムへ移植する支援を行う移植支援装置を構成するコンピュータに実行させるための移植支援プログラムであって、
前記コンピュータには、前記第１原本プログラムと、前記第２原本プログラムと、前記第１修正プログラムとのそれぞれのソースコードとが記憶されており、
前記コンピュータに、
第１原本プログラムと、第１修正プログラムとのソースコードの所定の範囲における差分コードを検出し、前記差分コードにおいて使用されている変数を特定する機能と、
前記第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲から前記差分コードの前記変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、第１原本プログラム又は第１版修正プログラムのソースコードの所定の範囲における前記変数に関する第１ロジックを特定する機能と、
前記第２原本プログラムのソースコードの所定の範囲において差分コードを埋め込んだ第２修正プログラムのソースコード候補を一種類以上作成し、前記ソースコード候補から前記差分コードの変数の値に影響を及ぼすコードを抽出し、抽出した前記コードに基づいて、前記ソースコード候補における前記変数に関する第２ロジックを特定する機能と、
前記第１ロジックと、前記第２ロジックとが一致するか否かを判定する機能と、を実現させるための移植支援プログラム。
【請求項１３】
前記コンピュータに、
前記第２原本プログラムのソースコードの前記変数が登場したコード以降の異なる位置に差分コードを埋め込むことにより、第２修正プログラムのソースコード候補を複数種類作成し、各ソースコード候補を対象に前記第２ロジックを特定する機能を、さらに実現させるための請求項１２に記載の移植支援プログラム。
【請求項１４】
前記コンピュータに、
前記第１ロジックと、前記第２ロジックとが一致するか否かの判定結果を所定の表示装置に出力する機能を、
さらに実現させるための請求項１２又は請求項１３に記載の移植支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１原本プログラムに対して所定の機能を組み込んだ第１修正プログラムを、第１原本プログラムを変更した第２原本プログラムに対応する第２修正プログラムに移植するための支援を行う技術に関する。
【背景技術】
【０００２】
従来、ソフトウエア開発においては、オープンソースソフトウエア（ＯＳＳ）のソースコードに対して、コードを追加等することにより、所望する機能を新たに組み込んだソフトウエア（修正プログラム）を作成することが行われている。
【０００３】
例えば、ＯＳＳは、それ自体の不具合の修正や、更なる機能の追加等を行うために、バージョンアップされることがある。
【０００４】
ここで、ＯＳＳ自体がバージョンアップされた場合においては、修正プログラムにおいても、新たなバージョン（版）のＯＳＳに追加された機能等を実現できるようにすることが要請される。このため、修正プログラムを、新たなバージョンのＯＳＳに対応するように移植することが必要となる。
【０００５】
例えば、アプリケーションプログラムの移植に関する技術としては、レガシープラットホームから新しいプラットホームへアプリケーションを移植するにあたって、アプリケーションから予め設定してある特徴的な処理パターンを検出して、その検出結果を出力する技術が知られている（特許文献１参照。）
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１４６２８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に開示された技術によると、アプリケーションのソースコードにおける特徴的な処理パターンの箇所を検出することができる。しかしながら、アプリケーションのソースコードを変更等することに関しては、何ら支援が行われておらず、開発者への負荷が大きいという問題がある。
【０００８】
本発明は、上記事情に鑑みなされたものであり、その目的は、第１原本プログラムに対して所定の機能を組み込んだ第１修正プログラムを、第１原本プログラムを変更した第２原本プログラムに対応する第２修正プログラムに容易かつ適切に移植できるように支援する技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、第１の観点に係る移植支援装置は、第１原本プログラムに対して所定の機能を追加した第１修正プログラムを、第１原本プログラムを変更した第２原本プログラムに対して所定の機能を追加した第２修正プログラムへ移植する支援を行う移植支援装置であって、第１原本プログラムと、第２原本プログラムと、第１修正プログラムとのそれぞれのソースコードを記憶する記憶装置と、プロセッサとを備える。
【００１０】
移植支援装置のプロセッサは、第１原本プログラムと、第１修正プログラムとのソースコードの所定の範囲における差分コードを検出し、差分コードにおいて使用されている変数を特定する処理と、第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲から差分コードの変数の値に影響を及ぼすコードを抽出し、抽出したコードに基づいて、第１原本プログラム又は第１修正プログラムのソースコードの所定の範囲における変数に関する第１ロジックを特定する処理と、第２原本プログラムのソースコードの所定の範囲において差分コードを埋め込んだ第２修正プログラムのソースコード候補を一種類以上作成し、ソースコード候補から差分コードの変数の値に影響を及ぼすコードを抽出し、抽出したコードに基づいて、ソースコード候補における変数に関する第２ロジックを特定する処理と、第１ロジックと、第２ロジックとが一致するか否かを判定する処理と、を実行する。
【発明の効果】
【００１１】
本発明によれば、第１原本プログラムに対して所定の機能を組み込んだ第１修正プログラムのソースコードを、第２原本プログラムに対応するように容易かつ適切に移植できるようになる。
【図面の簡単な説明】
【００１２】
【図１】図１は、一実施形態に係る移植支援装置の全体構成図である。
【図２】図２は、一実施形態に係る移植支援装置の機能構成図である。
【図３】図３は、一実施形態に係る原本ソースコードデータベースの構成図である。
【図４】図４は、一実施形態に係る移植前の修正ソースコードデータベースの構成図である。
【図５】図５は、一実施形態に係る移植後の修正ソースコードデータベースの構成図である。
【図６】図６は、一実施形態に係る移植支援処理のフローチャートである。
【図７】図７Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのソースファイルの一例を示す図である。図７Ｂは、一実施形態に係る修正ソースコード（Ｖ１．０）の処理Ａのソースファイルの一例を示す図である。図７Ｃは、一実施形態に係る原本ソースコード（Ｖ１．０）と、修正ソースコード（Ｖ１．０）との処理Ａの差分コードを示す図である。
【図８】図８は、一実施形態に係る移植管理テーブルにおける処理Ａのソースファイルに関するエントリを示す図である。
【図９】図９Ａは、一実施形態に係る原本ソースコード（Ｖ２．０）の処理Ａのソースファイルの一例を示す図である。図９Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａの仮版ソースファイルの一例を示す図である。
【図１０】図１０Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのソースファイルのロジック解析範囲の抽出結果を示す図である。図１０Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａの仮版ソースファイルのロジック解析範囲の抽出結果を示す図である。
【図１１】図１１Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのロジックを示す図である。図１１Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａの仮版ソースファイルのロジックを示す図である。
【図１２】図１２は、一実施形態に係る処理Ａに関する結果確認時のＧＵＩ表示画面を示す図である。
【図１３】図１３Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルの一例を示す図である。図１３Ｂは、一実施形態に係る修正ソースコード（Ｖ１．０）の処理Ｂのソースファイルの一例を示す図である。図１３Ｃは、一実施形態に係る原本ソースコード（Ｖ１．０）と、修正ソースコード（Ｖ１．０）との処理Ｂの差分コードを示す図である。
【図１４】図１４は、一実施形態に係る移植管理テーブルの処理Ｂのソースファイルに関するエントリを示す図である。
【図１５】図１５Ａは、一実施形態に係る原本ソースコード（Ｖ２．０）の処理Ｂのソースファイルの一例を示す図である。図１５Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルの一例を示す図である。
【図１６】図１６Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルのロジック解析範囲の抽出結果を示す図である。図１６Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルのロジック解析範囲の抽出結果を示す図である。
【図１７】図１７Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのロジックを示す図である。図１７Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルのロジックを示す図である。
【図１８】図１８は、一実施形態に係る処理Ｂに関する結果確認時のＧＵＩ表示画面を示す図である。
【発明を実施するための形態】
【００１３】
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１４】
図１は、一実施形態に係る移植支援装置の全体構成図である。
【００１５】
移植支援装置１０は、例えば、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）で構成されており、プロセッサの一例であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、主記憶装置１２と、補助記憶装置１３と、入力装置１４と、表示装置１５と、各部１１〜１５との間を通信可能に接続するバス１６と、を備えている。
【００１６】
ＣＰＵ１１は、主記憶装置１２及び／又は補助記憶装置１３に格納されているプログラムに従って各種処理を実行する。
【００１７】
主記憶装置１２は、例えば、ＲＡＭ（ＲＡＮＤＯＭ  ＡＣＣＥＳＳ  ＭＥＭＯＲＹ）で構成されており、ＣＰＵ１１で実行されるプログラムや、必要な情報を記憶する。補助記憶装置１３は、例えば、バードディスクやフラッシュメモリなどで構成されており、ＣＰＵ１１で実行されるプログラムや、ＣＰＵ１１に利用されるデータを記憶する。
【００１８】
入力装置１４は、例えば、マウス、キーボード等の入力装置であり、ユーザによる入力操作を受け付ける。表示装置１５は、例えば、液晶ディスプレイ等の表示装置であり、各種情報を表示する。
【００１９】
図２は、一実施形態に係る移植支援装置の機能構成図である。
【００２０】
移植支援装置１０は、ソース入力部２０と、差分コード特定部２１と、変数リスト特定部２２と、移植ソースコード推定部２３と、ロジック解析範囲抽出部２４と、ロジック解析部２５と、等価性判定部２６と、ＧＵＩ入出力部２７と、ソース更新部２８と、基本ソースコードＤＢ（データベース）３０と、修正ソースコードＤＢ４０と、差分コードデータ５１と、移植管理テーブル５２と、仮版修正ソースコード５３とを備える。ソース入力部２０、差分コード特定部２１、変数リスト特定部２２、移植ソースコード推定部２３、ロジック解析範囲抽出部２４、ロジック解析部２５、等価性判定部２６、ＧＵＩ入出力部２７、及びソース更新部２８は、ＣＰＵ１１が主記憶装置１２に記憶されているプログラムを実行することにより構成される。基本ソースコードＤＢ３０と、修正ソースコードＤＢ４０とは、例えば、補助記憶装置１３に格納されている。差分コードデータ５１と、移植管理テーブル５２と、仮版修正ソースコード５３とは、例えば、例えば、主記憶装置１２に記憶される。
【００２１】
原本ソースコードＤＢ３０は、原本プログラムのソースコード（原本ソースコード）を格納する。本実施形態では、原本ソースコードＤＢ３０は、原本プログラムの複数の版のソースコードを格納している。原本プログラムとしては、例えば、ＯＳＳとして提供されるプログラムであってもよく、プログラムの種類としては、ＯＳ（オペレーティングシステム）、ミドルウェア、又はアプリケーションソフトウェアであってもよい。
【００２２】
修正ソースコードＤＢ４０は、原本プログラムに対して所定の機能の追加を行った修正プログラムのソースコード（修正ソースコード）を格納する。
【００２３】
ソース入力部２０は、原本ソースコードＤＢ３０から、原本プログラムのソースコードのうちの所定の範囲のコードを取得し、差分コード特定部２１に渡す。本実施形態では、ソース入力部２０は、移植元となる版（移行元版）の修正プログラム（移植元版修正プログラム：第１修正プログラム）の基となっている版の原本プログラム（移植元版原本プログラム：第１原本プログラム）に対応するソースコード中のコードを取得する。また、ソース入力部２０は、修正ソースコードＤＢ４０から、移植先となる版（移植先版）の修正プログラム（移植先版修正プログラム：第２修正プログラム）に対する移植元となる版の修正プログラム（移植元版修正プログラム：第１修正プログラム）のソースコードのうちの所定の範囲のコードを取得し、差分コード特定部２１に渡す。
【００２４】
差分コード特定部２１は、ソース入力部２０から取得した、移植元版原本プログラムのソースコードと、移植元版修正プログラムのソースコードとの差分コードを特定し、差分コードを含む差分コードデータ５１を主記憶装置１２に格納する。
【００２５】
変数リスト特定部２２は、差分コードデータ５１から差分コードで使用されている変数を特定し、移植管理テーブル５２にその変数に対応するエントリを登録する。
【００２６】
移植ソースコード推定部２３は、移植先版修正プログラムの基となる原本プログラム（移植先版原本プログラム：第２原本プログラム）のソースコードに基づいて、移植先版修正プログラムのソースコード候補（仮版修正ソースコード）を推定する。
【００２７】
ロジック解析範囲抽出部２４は、移植元版原本プログラムのソースコード（又は、移植元版修正プログラムのソースコード）から、差分コードの変数の値に影響するコードのみをロジック解析範囲（移植元版ロジック解析範囲）として抽出する。なお、本実施形態では、移植元版原本プログラムのソースコードと、移植元版修正プログラムのソースコードとは、差分コードの変数の値に影響するコードは、共通であるので、いずれを対象としてロジック解析範囲（移植元版ロジック解析範囲）を抽出しても同様となる。また、ロジック解析範囲抽出部２４は、仮版修正ソースコードから、差分コードの変数の値に影響するコードのみをロジック解析範囲（移植先版ロジック解析範囲）として抽出する。
【００２８】
ロジック解析部２５は、ロジック解析範囲抽出部２４によって抽出された各ロジック解析範囲に対して、所謂シンボリック実行を行うことにより、各ロジック解析範囲における変数に関するロジックを特定し、特定したロジックを移植管理テーブル５２のエントリに格納する。
【００２９】
等価性判定部２６は、移植元版ロジック解析範囲のロジック（第１ロジック）と、移植先版ロジック解析範囲のロジック（第２ロジック）とが一致しているか否かを判定し、判定結果を移植管理テーブル５２のエントリに格納する。
【００３０】
ＧＵＩ入出力部２７は、移植管理テーブル５２のエントリの内容等に基づいて、ＧＵＩ表示画面６０を作成し、表示装置１５に表示させる。また、ＧＵＩ入出力部２７は、ＧＵＩ表示画面６０に対するユーザの入力装置１４による各種入力を受け付け、入力に応じて各種処理を実行する。
【００３１】
ソース更新部２８は、ＧＵＩ入出力部２７からユーザによるソースコード登録の指示を受け取ると、ＧＵＩ入出力部２７により表示されている移植先版修正プログラムの仮版修正ソースコードを、移植先版修正プログラムのソースコードとして、修正ソースコードＤＢ４０に格納する。
【００３２】
次に、原本ソースコードＤＢ３０について説明する。
【００３３】
図３は、一実施形態に係る原本ソースコードデータベースの構成図である。
【００３４】
原本ソースコードＤＢ３０は、旧版（移植元版）であるＶ１．０の原本プログラムのソースコードを格納するＶ１．０フォルダ３１と、旧版を改良した新版（移植先版）であるＶ２．０の原本プログラムのソースコードを格納するＶ２．０フィルダ３２とを有する。Ｖ１．０フォルダ３１には、Ｖ１．０の原本プログラムの各処理（図３では、処理Ａ、処理Ｂ、処理Ｃ）を実行するソースコードを格納するファイル（ソースファイル）３１ａ，３１ｂ，３１ｃが対応付けられている。Ｖ２．０フォルダ３２には、Ｖ２．０の原本プログラムの各処理（図３では、処理Ａ、処理Ｂ、処理Ｃ）を実行するソースコードを格納するファイル（ソースファイル）３２ａ，３２ｂ，３２ｃが対応付けられている。
【００３５】
次に、修正ソースコードＤＢ４０について説明する。
【００３６】
図４は、一実施形態に係る移植前の修正ソースコードデータベースの構成図であり、図５は、一実施形態に係る移植後の修正ソースコードデータベースの構成図である。
【００３７】
移植前の修正ソースコードＤＢ４０は、図４に示すように、旧版（移植元版）であるＶ１．０の原本プログラムに対して所定の機能を追加した旧版（移植元版）であるＶ１．０の修正プログラムのソースコードを格納するＶ１．０フォルダ４１を有する。この旧版（Ｖ１．０）のソースコードが、修正プログラムの移植元版のソースコードに対応する。Ｖ１．０フォルダ４１には、Ｖ１．０の修正プログラムの各処理（図４では、処理Ａ、処理Ｂ、処理Ｃ）を実行するソースコードを格納するファイル（ソースファイル）４１ａ，４１ｂ，４１ｃが対応付けられている。なお、処理Ａ、処理Ｂ、処理Ｃは、それぞれ原本プログラムの同名の処理に対応している。
【００３８】
移植後の修正ソースコードＤＢ４０には、後述する移植支援処理が実行されると、図５に示すように、修正前の修正ソースコードＤＢ４０に対して、新版（Ｖ２．０）の原本プログラムに対して所定の機能を追加した新版（Ｖ２．０）の修正プログラムのソースコードを格納するＶ２．０フォルダ４２が追加される。この新版（Ｖ２．０）のソースコードが、修正プログラムの移植先版のソースコードに対応する。Ｖ２．０フォルダ４２には、Ｖ１．０の修正プログラムの各処理（図４では、処理Ａ、処理Ｂ、処理Ｃ）に対応するＶ２．０の修正プログラムの各処理を実行するソースコードを格納するファイル（ソースファイル）４２ａ，４２ｂ，４２ｃが対応付けられている。なお、処理Ａ、処理Ｂ、処理Ｃは、それぞれ原本プログラムの同名の処理に対応している。また、Ｖ２．０フォルダ４２には、ソースファイルを登録した際の理由のメモが格納される処理メモファイル（例えば、処理Ｂメモ４２ｄ）が対応付けられることがある。本実施形態では、処理メモファイルの名称中の処理名が、メモの対象となる処理の名称を示している。
【００３９】
次に、移植支援処理について説明する。
【００４０】
図６は、一実施形態に係る移植支援処理のフローチャートである。なお、移植支援処理の説明においては、移植元版原本プログラムのソースコードとして、原本ソースコード（Ｖ１．０）があり、移植先版原本プログラムのソースコードとして、原本ソースコード（Ｖ２．０）があり、原本ソースコード（Ｖ１．０）に対して所定の機能を加えた修正ソースコード（Ｖ１．０）を、原本ソースコード（Ｖ２．０）に対して所定の機能を加えた修正ソースコード（Ｖ２．０）に移植する場合についての事例を、図７〜図１２を適宜用いて説明する。
【００４１】
図７Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのソースファイルの一例を示す図である。図７Ｂは、一実施形態に係る修正ソースコード（Ｖ１．０）の処理Ａのソースファイルの一例を示す図である。図７Ｃは、一実施形態に係る原本ソースコード（Ｖ１．０）と、修正ソースコード（Ｖ１．０）との処理Ａの差分コードを示す図である。図８は、一実施形態に係る移植管理テーブルにおける処理Ａのソースファイルに関するエントリを示す図である。図９Ａは、一実施形態に係る原本ソースコード（Ｖ２．０）の処理Ａのソースファイルの一例を示す図である。図９Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａのソースファイル（仮版）の一例を示す図である。図１０Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのソースファイルのロジック解析範囲の抽出結果を示す図である。図１０Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａの仮版ソースファイルのロジック解析範囲の抽出結果を示す図である。図１１Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ａのロジックを示す図である。図１１Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ａの仮版ソースファイルのロジックを示す図である。図１２は、一実施形態に係る処理Ａに関する結果確認時のＧＵＩ表示画面を示す図である。
【００４２】
移植支援処理は、例えば、入力装置１４を介してのユーザの指示により実行が開始される。この移植支援処理においては、或る版の原本プログラム（第１原本プログラム：移植元版原本プログラム）に対して所定の機能を追加した修正プログラム（第１修正プログラム：移植元版修正プログラム）を、第１原本プログラムを変更した別の版の原本プログラム（第２原本プログラム：移植先版原本プログラム）に対して所定の機能を追加した修正プログラム（第２修正プログラム：移植先版修正プログラム）へ移植するための支援処理である。
【００４３】
移植支援処理が開始されると、ソース入力部２０は移植先版修正プログラムにおいて、ソースコードを未作成の処理があるか否かを判定し（ステップＳ１０）、ソースコードを未作成の処理（未作成処理）がある場合（ステップＳ１０：ＹＥＳ）には、ソース入力部２０は、原本ソースコードＤＢ３０から、移植元版原本プログラムのソースコードのうちの未作成処理に対応するコードを取得し、差分コード特定部２１に渡すとともに、修正ソースコードＤＢ４０から、移植元版修正プログラムのソースコードのうちの未処理作成に対応するコードを取得し、差分コード特定部２１に渡す（ステップＳ１１）。
【００４４】
次いで、差分コード特定部２１は、ソース入力部２０から取得した移植元版原本プログラムの未作成処理に対応するコードと、移植元版修正プログラムのソースコードの未処理作成に対応するコードとの差分コードを特定し、特定した差分コードを含む差分コードデータ５１を主記憶装置１２に格納する（ステップＳ１２）。
【００４５】
例えば、移植元版原本プログラムの未作成処理に対応するコードが、図７Ａに示す原本ソースコード（Ｖ１．０）の処理Ａのソースファイルのコードであり、移植元版修正プログラムの未作成処理に対するコードが、図７Ｂに示す修正ソースコード（Ｖ１．０）の処理Ａのソースファイルのコードである場合には、差分コード特定部２１は、図７Ｃに示すように、差分コードである「ｐｒｉｎｔ  ｙ；」と、差分コードの位置（例えば、直前のコード）を示すコードである「ｚ＝ｘ＋ｙ；」とを特定し、これらを差分コードデータ５１として主記憶装置１２に格納する。なお、差分コードの位置を示すコードについては、差分コードデータ５１中に含めなくてもよい。
【００４６】
ステップＳ１２の実行後、変数リスト特定部２２は、差分コードデータ５１を参照し、差分コードにおいて使用されている変数を特定し、移植管理テーブル５２に変数に対応するエントリを追加し、そのエントリの一部のカラムについて、そのカラムに対応する情報を格納する（ステップＳ１３）。
【００４７】
ここで、移植管理テーブル５２は、図８に示すように、各変数ごとに、エントリを格納する。エントリは、ソースファイル５２ａと、変数５２ｂと、Ｖ１．０のロジック５２ｃと、Ｖ２．０のロジック５２ｄと、ロジックの比較結果５２ｅとのカラムを含んでいる。ソースファイル５２ａは、エントリに対応する変数が格納されているソースファイルの処理名が格納される。変数５２ｂには、エントリに対応する変数が格納される。Ｖ１．０のロジック５２ｃには、修正ソースコード（Ｖ１．０）の処理Ａのソースファイルにおける変数５２ｂの変数に関するロジック（第１ロジック）が格納される。Ｖ２．０のロジック５２ｄには、修正ソースコード（Ｖ２．０）の処理Ａのソースファイルの候補における変数５２ｂの変数に関するロジック（第２ロジック）が格納される。ロジックの比較結果５２ｅには、第１ロジックと、第２ロジックとの比較結果が格納される。例えば、第１ロジックと、第２ロジックとが一致している場合には、「一致」が格納され、一致していない場合には、「不一致」が格納される。
【００４８】
差分コードデータ５１が図７Ｃに示す場合においては、ステップＳ１３では、変数リスト特定部２２は、エントリを作成し、ソースファイル５２ａには、「処理Ａ」を格納し、変数５２ｂに「ｙ」を格納する。
【００４９】
ステップＳ１３の実行後、移植ソースコード推定部２３は、差分コードデータ５１の差分コードを用いて、移植先版修正プログラムの未作成処理に対応するソースファイルにおけるソースコード候補（仮版修正ソースコード）５３を推定する（ステップＳ１４）。より具体的には、移植ソースコード推定部２３は、移植先版原本プログラムの未作成処理に対応するコードに差分コードを埋め込むことにより、仮版修正ソースコードを作成する。ここで、推定ソースコード推定部２３は、移植先版原本プログラムの未作成処理に対応するコードにおける異なる位置に差分コードを埋め込んだ複数（複数種類）の仮版修正ソースコードを作成するようにしてもよい。なお、差分コードを埋め込む位置としては、移植先版原本プログラムの未作成処理に対応するコードにおける、差分コードの変数が登場した以降の位置としてもよい。このようにすると、差分コードの変数が不定値となってしまう不適切な仮版修正ソースコードが作成されないので、後述する仮版修正ソースコードのロジックを解析する処理における処理負荷を低減することができる。
【００５０】
上記事例においては、移植ソースコード推定部２３は、例えば、図９Ｂに示すように、図９Ａの原本ソースコード（Ｖ２．０）の処理Ａのコードの挿入可能な全ての位置に対して、差分コードを埋め込むことにより、図９Ｂに示す複数種類（図９Ｂでは、３つ）の仮版修正ソースコード５３を作成する。
【００５１】
ステップＳ１４の終了後、ロジック解析範囲抽出部２４は、移植元版原本ソースコードから、差分コードの変数の値に影響するコードのみをロジック解析範囲（移植元版ロジック解析範囲）として抽出し、また、推定した複数の仮版修正ソースコードから、差分コードの変数の値に影響するコードのみをロジック解析範囲（移植先版ロジック解析範囲）として抽出する（ステップＳ１５）。このように差分コードの変数の値に影響するコードのみをロジック解析範囲とすることにより、後述するロジック解析の処理負荷を適切に低減することができる。
【００５２】
上記事例においては、ロジック解析範囲抽出部２４は、図１０Ａに示すように、移植元版ロジック解析範囲として、原本ソースコード（Ｖ１．０）の処理Ａのコードから、差分コードの変数「ｙ」の値に影響を及ぼさないコード（例えば、「Ｚ＝Ｘ＋Ｙ」のコード）を取り除いたものとし、図１０Ｂに示すように、移植先版ロジック解析範囲として、図９Ｂに示す各仮版修正ソースコードから、差分コードの変数「ｙ」の値に影響を及ぼさないコード（例えば、差分コード以降のコード）を取り除いたものとする。本実施形態では、図９Ｂの下側２つの仮版修正ソースコードからは、同一の範囲が抽出されるので、移植先版ロジック解析範囲は、図１０Ｂに示す２通りとなる。
【００５３】
ステップＳ１５の終了後、ロジック解析部２５は、ロジック解析範囲抽出部２４によって抽出された移植元版ロジック解析範囲と、それぞれの移植先版ロジック解析範囲とに対して、差分コードの変数に関するロジックを解析し、解析した結果を移植管理テーブル５２に格納する（ステップＳ１６）。
【００５４】
上記事例においては、ロジック解析部２５が図１０Ａに示す移植元版ロジック解析範囲に対してロジックを解析すると、図１１Ａに示すように、ロジックが「Ｙ＝Ｘ２」であると解析され、図１０Ｂに示す移植先版ロジック解析範囲に対してロジックを解析すると、図１１Ｂに示すように、ロジックは、「Ｙ＝？（不定値）」と、「Ｙ＝Ｘ２」との２通りであると解析される。ここで、ロジック解析部２５は、ロジックが不定値となっていないものを移植管理テーブル５２に格納するようにしている。
【００５５】
ステップＳ１６の終了後、等価性判定部２６は、ロジック解析部２５による移植元版ロジック解析範囲に対するロジック（第１ロジック）と、移植先版ロジック解析範囲に対するロジック（第２ロジック）とが一致しているか否かを判定し、その結果を移植管理テーブル５２の対応するエントリに格納する（ステップＳ１７）。
【００５６】
上記事例においては、等価性判定部２６は、原本ソースコード（Ｖ１．０）の処理Ａにおけるロジック（修正ソースコード（Ｖ１．０）の処理Ａにおけるロジックと同じ）と、修正ソースコード（Ｖ２．０）の処理Ａにおけるロジックとは、一致すると判定され、移植管理テーブル５２のその変数に対応するエントリのロジックの比較結果５２ｅには、「一致」が格納される。
【００５７】
ステップＳ１７の終了後、ＧＵＩ入出力部２７は、等価性判定部２６の判定結果を出力するためのＧＵＩ表示画面６０を生成し、表示装置１５に出力する（ステップＳ１８）。
【００５８】
ＧＵＩ表示画面６０は、図１２に示すように、移植元版ソースコード表示領域６１と、移植先版ソースコード表示領域６２と、ロジック比較結果表示領域６３と、ＯＫボタン６４と、ソース編集ボタン６５と、再検証ボタン６６とを含む。
【００５９】
修正元版ソースコード表示領域６１には、移植元版ソースコードのコードが表示される。移植先版ソースコード表示領域６２には、仮版修正ソースコードのうちのロジック比較結果が一致したもの、又は比較結果が一致していないが、ロジックが近いと判断されたものが表示される。ロジック比較結果表示領域６３には、移植元版ソースコードのロジックと、仮版修正ソースコードのロジックと、ロジックの比較結果と、利用しているコードとが表示される。ＯＫボタン６４は、移植先版ソースコード表示領域６２に表示されているソースコードを、移植先版修正ソースコードとして登録させる指示を受け付けるボタンである。ソース編集ボタン６５は、移植先版ソースコード表示領域６２に表示されているソースコードに対するユーザの編集を受け付けるボタンである。再検証ボタン６６は、移植先版ソースコード表示領域６２に表示されているソースコードを対象にしたロジックの再検証を受け付けるボタンである。
【００６０】
上記事例においては、ＧＵＩ入出力部２７は修正ソースコード（Ｖ１．０）の処理Ａにおけるロジックが「Ｙ＝Ｘ２」であり、修正ソースコード（Ｖ２．０）の処理Ａにおけるロジックが「Ｙ＝Ｘ２」であり、それらのロジックが一致しているとの比較結果と、修正ソースコード（Ｖ１．０）の処理Ａにおけるソースコードと、修正ソースコード（Ｖ２．０）の処理Ａにおける仮版修正ソースコードとを含むＧＵＩ表示画面６０を表示装置１５に出力する。
【００６１】
ステップＳ１８の終了後、ＧＵＩ入出力部２７は、ソースコードの登録を受け付けるＯＫボタン６４が押下されたか否かを判定し（ステップＳ１９）、ＯＫボタン６４が押下された場合（ステップＳ１９：ＹＥＳ）には、移植先版ソースコード表示領域６２に表示されているソースコードを移植先版修正ソースコードとして登録させる指示をソース更新部２８に通知し、通知を受けたソース更新部２８は、移植先版ソースコード表示領域６２に表示されているソースコードを移植先版修正ソースコードとして修正ソースコードＤＢ４０に登録し（ステップＳ２０）、処理をステップＳ１０に進める。一方、ＯＫボタン６４が押下されていない場合（ステップＳ１９：ＮＯ）には、ＧＵＩ入出力部２７は、処理をステップＳ２１に進める。
【００６２】
次いで、ＧＵＩ入出力部２７は、ソースコードの編集を受け付けるソース編集ボタン６５が押下されたか否かを判定し（ステップＳ２１）、ソース編集ボタン６５が押下されている場合（ステップＳ２１：ＹＥＳ）には、移植先版ソースコード表示領域６２のソースコードに対する編集入力を受け（ステップＳ２２）、処理をステップＳ２３に進める一方、ソース編集ボタン６５が押下されていない場合（ステップＳ２１：ＮＯ）には、処理をステップＳ２３に進める。
【００６３】
次いで、ＧＵＩ入出力部２７は、移植先版ソースコード表示領域６２のソースコードに対するロジックの再検証を受け付ける再検証ボタン６６が押下されたか否かを判定し（ステップＳ２３）、再検証ボタン６６が押下されている場合（ステップＳ２３：ＹＥＳ）には、移植先版ソースコード表示領域６２のソースコードに対する再検証を実行するために処理をステップＳ１５に進める。なお、ステップＳ１５以降の処理においては、移植先版ソースコード表示領域６２のソースコードに対して、ロジックの再検証を行う。一方、再検証ボタン６６が押下されていない場合（ステップＳ２３：ＮＯ）には、ＧＵＩ入出力部２７は、処理をステップＳ１９に進める。
【００６４】
一方、ステップＳ１０において、ソース入力部２０が、移植先版修正プログラムにおいて、ソースコードを未作成の処理があるか否かを判定し、未作成処理がなくなった場合、すなわち、すべての処理に対するソースコードを作成した場合（ステップＳ１０：ＮＯ）には、ソース入力部２０は、移植支援処理を終了する。
【００６５】
次に、上記移植支援処理において説明した事例において、ステップＳ１０におけるソースコードの未作成処理として、処理Ａの次の処理Ｂが選択された時の具体的な処理について、図１３〜図１８を参照して説明する。
【００６６】
図１３Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルの一例を示す図である。図１３Ｂは、一実施形態に係る修正ソースコード（Ｖ１．０）の処理Ｂのソースファイルの一例を示す図である。図１３Ｃは、一実施形態に係る原本ソースコード（Ｖ１．０）と、修正ソースコード（Ｖ１．０）との処理Ｂの差分コードを示す図である。図１４は、一実施形態に係る移植管理テーブルの処理Ｂのソースファイルに関するエントリを示す図である。図１５Ａは、一実施形態に係る原本ソースコード（Ｖ２．０）の処理Ｂのソースファイルの一例を示す図である。図１５Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルの一例を示す図である。図１６Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルのロジック解析範囲の抽出結果を示す図である。図１６Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルのロジック解析範囲の抽出結果を示す図である。図１７Ａは、一実施形態に係る原本ソースコード（Ｖ１．０）の処理Ｂのロジックを示す図である。図１７Ｂは、一実施形態に係る修正ソースコード（Ｖ２．０）の処理Ｂの仮版ソースファイルのロジックを示す図である。図１８は、一実施形態に係る処理Ｂに関する結果確認時のＧＵＩ表示画面を示す図である。
【００６７】
ステップＳ１１では、ソース入力部２０は、原本ソースコードＤＢ３０から図１３Ａに示す原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルのコードを取得し、差分コード特定部２１に渡すとともに、修正ソースコードＤＢ４０から、図１３Ｂに示す修正ソースコード（Ｖ１．０）の処理Ｂのソースファイルのコードを取得し、差分コード特定部２１に渡す。
【００６８】
ステップＳ１２では、差分コード特定部２１は、図１３Ａに示す原本ソースコード（Ｖ１．０）の処理Ｂのソースファイルのコードと、図１３Ｂに示す修正ソースコード（Ｖ１．０）の処理Ｂのソースファイルのコードとの差分データとして、図１３Ｃに示すように、差分コードである「ｐｒｉｎｔ  ｎ；」と、差分コードの位置（例えば、直前のコード）を示すコードである「ｎ＝ｍ＋１０；」とを特定し、これらを差分コードデータ５１として主記憶装置１２に格納する。
【００６９】
ステップＳ１３では、変数リスト特定部２２は、図１４に示すように、移植管理テーブル５２にエントリを作成し、ソースファイル５２ａには、「処理Ｂ」を格納し、変数５２ｂに「ｎ」を格納する。
【００７０】
ステップＳ１４では、移植ソースコード推定部２３は、例えば、図１５Ｂに示すように、図１５Ａの原本ソースコード（Ｖ２．０）の処理Ｂのコードの挿入可能な全ての位置に対して、差分コードを埋め込んだ、図１５Ｂに示す複数（図１４Ｂでは、３つ）の仮版修正ソースコード５３を作成する。
【００７１】
ステップＳ１５では、ロジック解析範囲抽出部２４は、図１６Ａに示すように、移植元版ロジック解析範囲として、図１３Ａに示す原本ソースコード（Ｖ１．０）の処理Ｂのコードから、差分コードの変数「ｎ」の値に影響を及ぼさないコード（例えば、「ｒｅｔｕｒｎ  ｎ」のコード）を取り除いたものとし、図１６Ｂに示すように、移植先版ロジック解析範囲として、図１５Ｂに示す各仮版修正ソースコードから、差分コードの変数「ｎ」の値に影響を及ぼさないコード（例えば、差分コード以降のコード）を取り除いたものとする。この結果、移植先版ロジック解析範囲は、図１６Ｂに示す３通りとなる。
【００７２】
ステップＳ１６では、ロジック解析部２５が図１６Ａに示す移植元版ロジック解析範囲に対してロジックを解析すると、図１７Ａに示すように、ロジックが「Ｎ＝｜Ｌ｜＋１０」であると解析され、図１６Ｂに示す移植先版ロジック解析範囲に対してロジックを解析すると、図１７Ｂに示すように、ロジックは、「Ｎ＝？（不定値）」と、「Ｎ＝Ｌ＋Ｍ」との２通りであると解析される。ここで、ロジック解析部２５は、ロジックが不定値となっていないもののみを移植管理テーブル５２に格納する。したがって、移植管理テーブル５２の変数ｎに対応するエントリには、図１４に示すように、Ｖ１．０のロジック５２ｃには、「Ｎ＝｜Ｌ｜＋１０」が格納され、Ｖ２．０のロジック５２ｄには、「Ｎ＝Ｌ＋Ｍ」が格納される。
【００７３】
ステップＳ１７では、等価性判定部２６は、原本ソースコード（Ｖ１．０）の処理Ｂにおけるロジック（修正ソースコード（Ｖ１．０）の処理Ｂにおけるロジックと同じ）と、修正ソースコード（Ｖ２．０）の処理Ｂにおけるロジックとは、一致しないと判定され、移植管理テーブル５２のその変数に対応するロジック比較結果５２ｅには、「不一致」が格納される。
【００７４】
ステップＳ１８では、ＧＵＩ入出力部２７は、図１８に示すように、修正ソースコード（Ｖ１．０）の処理Ｂにおけるロジックが「Ｎ＝｜Ｌ｜＋１０」であり、修正ソースコード（Ｖ２．０）の処理Ｂにおけるロジックが「Ｎ＝Ｌ＋Ｍ」であり、それらのロジックが不一致であるとの比較結果と、修正ソースコード（Ｖ１．０）の処理Ｂにおけるソースコードと、修正ソースコード（Ｖ２．０）の処理Ｂにおける仮版修正ソースコードとを含むＧＵＩ表示画面６０を表示装置１５に出力する。比較結果が不一致の場合におけるＧＵＩ表示画面６０には、比較結果が不一致の仮版修正ソースコードを登録する理由を入力する理由入力エリア６７がさらに表示される。理由入力エリア６７に入力された理由のコメントは、ソース更新部２８によって、図５に示すように、修正ソースコードＤＢ４０の移植先修正ソースコードを格納するフォルダ（図５では、Ｖ２．０フォルダ４２）に処理メモファイル（例えば、処理Ｂメモ４２ｄ）として対応付けられる。この処理メモファイルによると、処理に対応するソースファイルを登録した理由を適切に把握することができる。
【００７５】
図１８におけるＧＵＩ表示画面６０によると、ユーザは、ソース編集ボタン６５を押下することにより、移植先版ソースコード表示領域６２のソースコードに対する編集をすることが可能となり、ユーザ自身が適切なソースコードを作成することができる。また、図１８におけるＧＵＩ表示画面６０によると、ユーザは、再検証ボタン６６を押下することにより、移植先版ソースコード表示領域６２においてユーザが編集したソースコードのロジックが、移植元版ソースコードのロジックと一致しているか否かを再検証することができる。
【００７６】
以上説明したように、本実施形態に係る移植支援装置１０によると、移植元版原本プログラムと、移植元版修正プログラムとのソースコードの所定の範囲における差分コードを検出し、差分コードにおいて使用されている変数を特定し、移植元版のプログラム（移植元版修正プログラム又は移植元版修正プログラム）のソースコードの所定の範囲から差分コードの変数の値に影響を及ぼすコードを抽出し、抽出したコードに基づいて、移植元版のプログラムのソースコードの所定の範囲における変数に関する第１ロジックを特定するとともに、移植先版原本プログラムのソースコードの所定の範囲において差分コードを埋め込んだ移植先版修正プログラムの仮版修正ソースコードを一種類以上作成し、仮版修正ソースコードから差分コードの変数の値に影響を及ぼすコードを抽出し、抽出したコードに基づいて、仮版修正ソースコードにおける変数に関する第２ロジックを特定し、第１ロジックと、第２ロジックとが一致するか否かを判定するようにしたので、その判定結果に基づいて、移植先版修正プログラムのソースコードの移植を容易にすることができる。例えば、第１ロジックと、第２ロジックとの判定結果をユーザに対して提示することにより、仮版修正ソースコードの適否をユーザが容易に判定することができる。
【００７７】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
【００７８】
例えば、上記実施形態では、修正プログラムのソースコードの各処理に対応する範囲のそれぞれを一度に処理を行う移植範囲として、各移植範囲についてのソースコードの移植を順次行うことにより、プログラム全体のソースコードの移植を行うようにしていたが、本発明はこれに限られず、別の範囲を移植範囲としてソースコードの移植を行うようにしてもよく、例えば、プログラム全体を一度に処理を行う移植範囲とし、その全体に対して一度の処理でソースコードの移植を行うようにしてもよく、また、修正プログラムの一つの処理について、複数の部分に分解し、その分解した部分を一度に処理を行う移植範囲としてもよい。
【００７９】
また、上記実施形態では、ユーザから仮版修正ソースコードの登録の指示を受け付けた場合に、仮版修正ソースコードを移植先版修正ソースコードとして修正ソースコードＤＢ４０に格納するようにしていたが、本発明はこれに限られず、例えば、移植元版修正ソースコードの差分コードの変数に係るロジックと、仮版修正ソースコードの差分コードの変数に係るロジックとが一致した場合に、ユーザからの指示を受けずに、仮版修正ソースコードを移植先版修正ソースコードとして修正ソースコードＤＢ４０に格納するようにしてもよい。
【００８０】
また、上記実施形態において、ＣＰＵが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【符号の説明】
【００８１】
１０…移植支援装置、１１…ＣＰＵ、１２…主記憶装置、１３…補助記憶装置、１４…入力装置、１５…表示装置、２０…ソース入力部、２１…差分コード特定部、２２…変数リスト特定部、２３…移植ソースコード推定部、２４…ロジック解析範囲抽出部、２５…ロジック解析部、２６…等価性判定部、２７…ＧＵＩ入出力部、２８…ソース更新部、３０…原本ソースコードＤＢ、４０…修正ソースコードＤＢ、６０…ＧＵＩ表示画面
【図１】
2018109860.tif 000003
【図２】
2018109860.tif 000004
【図３】
2018109860.tif 000005
【図４】
2018109860.tif 000006
【図５】
2018109860.tif 000007
【図６】
2018109860.tif 000008
【図７】
2018109860.tif 000009
【図８】
2018109860.tif 000010
【図９】
2018109860.tif 000011
【図１０】
2018109860.tif 000012
【図１１】
2018109860.tif 000013
【図１２】
2018109860.tif 000014
【図１３】
2018109860.tif 000015
【図１４】
2018109860.tif 000016
【図１５】
2018109860.tif 000017
【図１６】
2018109860.tif 000018
【図１７】
2018109860.tif 000019
【図１８】
2018109860.tif 000020