"プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、前記プログラム改造支援装置が、改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成し、改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成し、前記予測データと、前記改造後データと、を比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させることを特徴とするプログラム改造支援方法。前記改造後データは、コンパイラの機能によって出力される中間語命令を用いて生成されており、前記予測データも、前記中間語命令を用いて生成されていることを特徴とする請求項1に記載のプログラム改造支援方法。前記プログラム改造支援装置は、前記改造前ソースコードにおける命令を、前記中間語命令に変換した改造前構造データを生成し、入力部を介して、入力された前記改造予定データと、前記改造前構造データとに基づいて、前記予測データを生成することを特徴とする請求項2に記載のプログラム改造支援方法。前記入力部を介して、前記予定されている改造に関する仕様書の情報が入力され、前記入力された仕様書に関する情報が、前記改造予定データに反映され、前記改造予定データに関する情報が、前記予測データにひも付けられ、前記プログラム改造支援装置は、前記不一致箇所が検出された場合、前記予測データを基に、前記不一致箇所に関する前記改造予定データの仕様書に関する情報を表示部に表示させることを特徴とする請求項1から請求項3のいずれか一項に記載のプログラム改造支援方法。前記プログラム改造支援装置は、前記改造前ソースコードにおける命令を、前記中間語命令に変換した改造前構造データを生成し、前記改造後ソースコードにおける命令を、前記中間語命令に変換した改造後構造データを生成し、前記改造前構造データと、前記改造後構造データと、を比較し、不一致が検出された箇所をマーキングし、前記マーキング情報を前記改造後データに格納し、前記予測データと、前記改造後データにおけるマーキング情報と、を比較することによって、前記不一致箇所の検出を行うことを特徴とする請求項1から請求項4のいずれか一項に記載のプログラム改造支援方法。プログラムの改造を支援するプログラム改造支援装置であって、改造予定箇所に関する情報である改造予定データと、改造前の前記プログラムのソースコードである改造前ソースコードと、に基づいて、予定されている改造が行われた場合における予測データを生成する改造予定再現部と、改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成する改造後データ生成部と、前記予測データと、前記改造後データと、を比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させる改造内容検証部と、を有することを特徴とするプログラム改造支援装置。特許文献1に記載の装置では、ソースコードと、検査の基となる仕様書とを関連付けるために、装置上で仕様書を作成する必要がある。このため、改造場所の特定や改造内容の検証において、装置上で作成した仕様書が新たに必要となる。また、特許文献1に記載の装置では、実際のコーディングと同じレベルの詳細な記述のある仕様書が必要になる。このため、仕様書作成時に詳細なコーディングの内容が確定していない場合は利用できないという問題がある。そこで、本発明は、新たな仕様書を装置上で作成しなくてもよいプログラム改造支援方法およびプログラム改造支援装置を提供することを目的とする。前記課題を解決するため、本発明は、プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、前記プログラム改造支援装置が、改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成し、改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成し、前記予測データと、前記改造後データを比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させることを特徴とする。その他の解決手段については、実施形態中で適宜説明する。本発明によれば、新たな仕様書を装置上で作成しなくてもよいプログラム改造支援方法およびプログラム改造支援装置を提供することができる。次に、本発明を実施するための形態実施形態というについて、適宜図面を参照しながら詳細に説明する。[装置構成]図1は本実施形態に係るプログラム改造支援装置の構成例を示す図である。プログラム改造支援装置1は、改造予定登録処理部10、構造解析部30、改造内容検証処理部20、入力部40、表示部50、を有する。入力部40は、キーボードや、マウスなどの入力装置である。表示部50は、ディスプレイなどの表示装置である。構造解析部30は、一般的なコンパイラの機能の一部によって実現されるものであり、ソースコードを解析して後記する構造データを出力する。改造予定登録処理部10は、ソースコードにおいて改造を行う予定の箇所を改造予定データ800として登録する改造予定登録部11と、さらに改造予定データ800から予定されている改造が行われたときの構造データを予測して、予測構造データ予測データ900を生成する改造予定再現部12とを有している。改造予定登録部11は、ユーザが入力部40を介して入力した改造対象となるプログラムのソースコード改造前ソースコード101、同じくユーザが入力部40を介して入力した、予定されている改造内容に関する情報である改造入力データ103を基に、データとして保存したものが改造予定データ800である。正確には、1改造前構造データ104を基に改造予定登録部11は表示部50に改造場所入力画面600のフローチャート表示エリア602またはソースコード表示エリア601図6を表示する。2ユーザは、改造場所入力画面600のフローチャート表示エリア602またはソースコード表示エリア601を見て、入力部40を介して改造入力データ103を入力する。3改造予定登録部11は改造入力データ103を基とする改造予定データ800を保存する。なお、この手順は、後記して詳細に説明する。なお、本実施形態では図6で後記する改造場所入力画面600のソースコード表示エリア601や、フローチャート表示エリア602を見たユーザが入力部40を介して改造入力データ103を入力しているが、改造入力データ103を得る方法が他にあれば、必ずしも改造前構造データ104を基にソースコード表示エリア601や、フローチャート表示エリア602を表示する必要はない。あるいは、ソースコード表示エリア601のみを表示するようにしてもよい。改造前構造データ104とは、改造前ソースコード101に対し、後記する構造解析処理を行うことで生成される構造データである。改造予定データ800、構造データについては後記して説明する。改造予定再現部12は、改造予定登録部11が生成した改造予定データ800と、改造前構造データ104に基づいて、予定されている改造が行われたときの構造データを予測した情報である予測構造データ900を生成する。改造内容検証処理部20は、改造後ソースコード102において、予定に従った改造がなされているか否かを検証するものであり、改造場所特定部の命令304a=0;に対応する中間語命令314であり、基本ブロック310の中間語命令314でもある。中間語命令314は、10行2列目のaという変数に0をコピーすることを示している。また、C言語では、ソースコード301の四則演算307のように、加算の処理と、その結果を代入するという複数の処理が同時に記述されている場合がある。このように、複数の処理が同時に記載されている場合、中間語命令は、加算の処理を表す中間語命令320と代入の処理を表す中間語命令321のように、処理ごとに中間語命令を分離して表現する。構造解析処理のフローチャート図4は、構造解析部における構造解析処理の手順を示すフローチャートである。なお、構造解析部30は、既存のコンパイラの機能の一部をなすものであり、図4の処理も既存のコンパイラに備えられている処理であるため、その処理内容の説明は簡潔なものとする。また、構造解析処理は、改造前ソースコード101および改造後ソースコード102のそれぞれに対して行われる処理である。なお、図4の処理において、ソースコードとは、改造前ソースコード101か、あるいは改造後ソースコード102であることを示すものとする。まず、構造解析部30はソースコードに記述されている文字列に対して、字句解析を行うS101。ここで、構造解析部30は、ソースコードにおける文字列をプログラム言語で定義しているキーワードや、識別子、演算子、変数や関数の名前など、プログラム言語の最小構成要素であるトークンという単位に分割する。トークンの分割は、ソースコードがC言語であれば、例えばセミコロンなどを単位として分割する。次に、構造解析部30は、ステップS101の字句解析で生成したトークンの列に対して、構文解析を行うS102。ここで、構造解析部30はソースコードのプログラム言語の文法に則り、トークンの列がどのような計算式を構成しているか、また、1つの関数の範囲はどこまでか、など、トークンの列の構造について解析を行う。また、このとき、トークンの列がプログラム言語の文法に則っているか否かの検証を行う。具体的には、例えば、C言語であれば、最初の中括弧から、この中括弧に対応する中括弧までを1つの関数として認識するなどの解析を行う。そして、構造解析部30は、ステップS102の構文解析の結果を元に、意味解析を行うS103。ここで、構造解析部30は、関数や変数がどのような名称を使用しているか、変数がどのような型を持つか、分岐命令がどの点まで分岐しているかなどについて解析を行う。また、このときも、構造解析部30は関数や変数がプログラム言語の文法に則っているか否かの検証を行う。続いて、構造解析部30は、ステップS103の意味解析の結果を元に、ソースコードにおける関数の開始点と終了点を取得し、関数情報生成を行うS104。ここで、構造解析部30は、関数情報として、関数名のみを関数情報に登録し、この関数における以降の処理で基本ブロックや中間語命令を追加する。次に、構造解析部30は、ソースコードにおける関数の内部を検証し、ソースコードに含まれている命令や処理を、対応する中間語命令へ変換する中間後命令変換を行うS105。そして、構造解析部30は、ステップS105で抽出した中間語命令を検証し、基本ブロックの生成が必要か否かの判定を行うS106。基本ブロックの生成が必要な場合とは、例えば、ステップS105で変換された中間語命令が、関数の先頭に位置する場合とか、分岐命令の後に続いている場合などである。ステップS106の結果、基本ブロックの生成が必要な場合S106→Yes、構造解析部30は、図3で説明した基本ブロックの定義に従って基本ブロックを生成しS107、ステップS109へ処理を進める。ステップS106の結果、基本ブロックの生成が不要な場合S106→No、構造解析部30は、中間語命令変換で生成した中間語命令を、処理対象となっている基本ブロックの末尾に挿入するS108。そして、構造解析部30は、処理対象となっている関数内におけるすべての命令を解析したか否かを判定するS109。ステップS109の結果、処理対象となっている関数内において、解析されていない命令が存在する場合S109→No、構造解析部30はステップS103へ処理を戻し、次の命令について解析を行う。ステップS109の結果、処理対象となっている関数内におけるすべての命令を解析している場合S109→Yes、構造解析部30は、ソースコードにおけるすべての関数について解析を終了したか否かを判定するS110。ステップS110の結果、ソースコードにおいて、解析されていない関数が存在する場合S110→No、構造解析部30はステップS103へ処理を戻し、次の関数について解析を行う。ステップS110の結果、すべての関数について解析を終了している場合S110→Yes、構造解析部30は構造解析処理を終了する。構造解析部30が、図4の処理を改造前ソースコード101および改造後ソースコード102のそれぞれについて行うことにより、プログラム改造支援装置1は改造前構造データ104および改造後構造データ105のそれぞれを生成する。中間語命令への変換例図5は中間語命令への変換の一例を示す図であるC言語の例。図5において、左側の欄がソースコードにおける命令であり、右側の欄が対応する中間語命令を示している。例えば、符号501に示すような代入命令の場合、対応する中間語命令は符号502のようになる。また、符号503に示すような計算結果をある変数に代入する加算命令の場合、対応する中間語命令は、符号504のような加算を示す中間語命令と、符号505のような変数への代入を示す中間語命令の2つに分割される。符号506に示すような分岐命令の場合、対応する中間語命令は、符号507のような条件を判定する処理を示す中間語命令と、符号508のような条件にしたがって分岐する処理を示す中間語命令の2つに分割される。符号509のような条件に従って同じ処理を繰り返し実施するループ命令の場合、対応する中間語命令は、符号510のような条件判定処理の中間語命令と、符号511のような条件に従って分岐する処理の中間語命令と、符号512のようなループ内の処理の終端から、ループの開始まで戻るための分岐命令を示す中間語命令の3つに分割されることになる。以上、図3~図5で説明したように構造解析部30は、ソースコードを中間語命令の形に変換した構造データを生成することによって、ユーザごとに異なるコーディング方法の差異を吸収し、正規化できる。なお、コーディングとはプログラミング言語の文法に則ってプログラムを記述することである。また、このようにすることで、コメントなど、プログラムの処理に直接関連のない部分の除去もできる。従って、ソースコードを中間語命令の形に変換することによって、これ以降の処理で、より正確に、改造前ソースコード101と改造後ソースコード102の検証が行えるようになる。構造解析部30は、図4のステップS105における中間語命令変換処理図2のステップS3bにおいて、図5のような変換規則に従ってソースコードの命令を中間語命令へと変換する。[改造予定登録処理]次に、図6~図8を参照して、本実施形態に係る改造予定登録処理の説明を、適宜図1を参照しつつ行う。改造場所入力画面図6は、本実施形態に係る改造場所入力画面の例を示す図である。改造場所入力画面600は、ソースコード表示エリア601と、フローチャート表示エリア602とを有している。ソースコード表示エリア601には、改造前ソースコード101が表示されており、フローチャート表示エリア602にはソースコード表示エリア601に表示されているソースコードに対応するフローチャートが表示されている。なお、フローチャート表示エリア602に表示されているフローチャートは、プログラム改造支援装置1によって自動的に生成されるものであるが周知の技術であるのでフローチャート生成処理の説明は省略する。また、フローチャート表示エリア602は省略可能である。ユーザはマウス操作などによる入力部40の操作によって、改造前ソースコード101に対して改造が行われる場所の入力を行う。例えば、命令603を書き換える場合、ユーザは命令603の行を選択する。また、命令603および命令604を書き換える場合、ユーザは命令603と命令604の行を選択する。また、命令603と命令604の間に新たに命令を加える場合、ユーザは命令603と命令604の間をクリックするなどの操作を行う。なお、このときユーザによる入力を受け付ける画面は、ソースコード表示エリア601およびフローチャート表示エリア602のどちらでも可能とする。フローチャート表示エリア602で行う場合は、フローチャートにおける各処理について、ソースコード表示エリア601における処理と同様の処理を行えばよい。また、ウィンドウの表示は、図6のようなソースコード表示エリア601およびフローチャート表示エリア602を同時に表示する形式に限らず、ソースコード表示エリア601や、フローチャート表示エリア602をそれぞれ、あるいはどちらか一方のみを独立に表示するようにしてもよい。さらに、実装上必要であれば、その他の情報を表示するウィンドウも表示してもよい。改造場所入力画面600による入力を受け付けると、改造予定登録処理部10は、図7に示す改造情報入力画面を表示する。改造情報入力画面図7は、本実施形態に係る改造情報入力画面の例を示す図である。改造情報入力画面700は、ソースコードの改造予定に関する詳細な情報の入力を受け付けるための画面である。改造情報入力画面700は、改造が行われる場所を表示する改造場所表示エリア701、改造の内容の入力を受け付ける改造内容入力エリア702、改造内容の概要の入力を受け付ける概要入力エリア703、改造の根拠となる仕様書の記述箇所の入力を受け付ける仕様書情報入力エリア704を有する。なお、図7に示す改造情報入力画面700は表示の一例であり、実装上必要であれば、上記以外の情報の入力を受け付ける領域を表示してもよい。また、各領域の配置場所も、必ずしも改造情報入力画面700と同じである必要はなく、すべての領域を同時に表示する必要もない。改造場所表示エリア701には、図6の改造場所入力画面600で選択された命令の場所に関する情報が表示される。改造場所表示エリア701には、ファイル名およびラインが表示され、このうち、ラインには図6の改造場所入力画面600で選択された命令の、ソースコードにおける行番号が表示される。ファイル名、およびラインは、入力部40を介して変更可能となっている。図7に示すように、改造内容入力エリア702は、削除、上書、追加などが選択可能となっており、これらの改造内容の選択を受け付けられるようになっている。より詳細な情報を入力する場合、ユーザは概要入力エリア703に詳細な情報を入力する。概要入力エリア703には、ユーザによって入力部40を介して入力される情報であり、予定されている改造の詳細な情報が入力される。概要入力エリア703は省略可能である。仕様書情報入力エリア704は、ユーザによって入力部40を介して入力される情報であり、この改造に関連する仕様書の参照ページなどの情報である。ここで、仕様書とは、改造前ソースコート101作成時の仕様書でもよく、改造内容を記した仕様書本実施形態では必須としないでもよい。本実施形態では、改造前ソースコード作成時の仕様書を参照することはあるが、新たな仕様書などを作成する必要はない。図7の例では、100~101行目の間に追加が行われることを示している。なお、改造場所が1箇所の場合、ユーザは、図6における改造場所の入力と、図7における改造情報の入力を1回ずつ行う。改造場所が複数におよぶ場合、ユーザは、図6における改造場所の入力と、図7における改造情報の入力を改造場所の数分だけ行う。改造予定データ図8は、本実施形態に係る改造予定データの例を示す図である。改造予定データ800は、図7の改造情報入力画面700において受け付けた情報改造入力データ103を基に改造予定登録部11が生成するデータであり、その内容は改造情報入力画面700で受け付けた情報である。改造予定データ800は、改造場所と改造入力データ103を関連付けるための識別子801、改造場所の情報である改造場所情報802、処理の追加や削除などを示す改造内容情報803、改造内容の概要情報804、改造の根拠となる仕様書の記述箇所の情報である仕様書情報805である。このうち、識別子801は改造予定登録部11によって付与されるものである。改造場所情報802は図7の改造情報入力画面700における改造場所表示エリア701の情報であり、改造内容情報803は図7の改造内容入力エリア702の情報であり、概要情報804は図7の概要入力エリア703の情報であり、仕様書情報805は仕様書情報入力エリア704の情報である。このように、改造予定データ800に仕様書情報805と概要情報804を含めることによって、改造前ソースコード101における仕様書作成時に詳細なコーディングの内容が確定していない場合でも、後の処理で、改造場所と改造内容の検証ができるようになる。また、改造予定データ800に、識別子801と仕様書情報805を含めることによって、改造場所と改造内容および関連する仕様書の記述との関連付けが可能になり、後記する検証結果確認時に改造内容と仕様書の記述内容の確認を行うことができるようになる。ここで、前記したように仕様書とは、改造前ソースコード作成時の仕様書である。本実施形態では、改造前ソースコード作成時の仕様書を参照することはあるが、新たな仕様書などを作成する必要はない。[改造予定再現処理]次に、図9を参照して改造予定再現処理図2のステップS4bの説明を、適宜図1を参照しつつ行う。改造予定再現処理では、改造予定再現部12が図6~図8で説明した改造予定登録処理で入力登録された予定に従って改造前ソースコード101の改造が行われた場合、予測される構造データである予測構造データ900を生成する。図9は、本実施形態に係る予測構造データの例を示す図である。改造予定再現部12は、改造予定データ800図8を基に、予測構造データ900を予測生成する。このとき、改造予定再現部12は中間語命令と同じ書式で改造内容の情報を埋め込むための中間語命令として、擬似中間語命令901という命令を導入する。つまり、改造予定登録処理に従って行われる改造が確定していないことから、中間語命令を確定することができないため、改造予定再現部12は擬似中間語命令901を使用して予測構造データ900を生成する。擬似中間語命令901は、擬似中間語命令であることを示す接頭語902、擬似中間語命令名称903、擬似処理内容904を有している。接頭語902は擬似中間語命令であることを示すものであり、改造予定再現部12によって付与される。擬似中間語命令名称903は、図8における改造内容情報803と対応する。つまり、図7の改造内容入力エリア702で追加が選択されていれば、図9の例のようにinsertとなり、削除が選択されていればdeleteとなる。擬似中間語命令名称903によって、擬似中間語命令901が挿入された場所に、どのような改造が行われる予定であるかを表現することができる。擬似処理内容904は、改造予定データ800との関連付けのため、図8の識別子801が挿入される。このように、擬似処理内容904に識別子801を使用することによって、擬似中間語命令901が挿入された場所と、改造予定データ800における仕様書の情報仕様書情報805とを関連付けることができる。以上、図9で示したように、改造予定再現処理で擬似中間語命令を挿入することで、後記する処理で、新たな仕様書を必要とせずに改造後ソースコード102に対する改造内容の検証ができるようになる。なお、予測構造データ900を生成するための処理は、改造予定再現部12が、図8の改造予定データ800を参照して、改造場所情報802に該当する行と行の間に、改造内容情報803に相当する処理を行うだけであるため、フローチャートを省略する。例えば、改造内容情報803がinsertであれば、改造予定再現部12は該当箇所に行を空け、そこに接頭語902、擬似中間語命令名称903、擬似処理内容904として識別子801を挿入する。改造内容情報803がdeleteであれば、改造予定再現部12は該当行を削除し、削除した箇所に接頭語902、擬似中間語命令名称903、擬似処理内容904として識別子801を挿入する。[改造場所特定処理]次に、図10および図12を参照して、改造場所特定処理図2のステップS5の説明を、適宜図1を参照しつつ行う。改造場所特定処理では、改造場所特定部21が、改造前構造データ104と、改造後構造データ105とから、実際の改造における改造場所を特定する。改造場所特定処理のフローチャート図10は、本実施形態に係る改造場所特定処理の手順を示すフローチャートである。この処理において、改造場所特定部21は図4の構造解析処理で生成した改造前構造データ104および改造後構造データ105の比較を行い、異なっている箇所を検出すると、検出した異なっている箇所に擬似中間語命令を挿入する処理を行う。まず、改造場所特定部21は改造後ソースコード102の構造を図4の構造解析処理で解析した改造後構造データ105から中間語命令改造後中間語命令を1つ取得するS201。次に、改造場所特定部21は、改造前ソースコード101の構造を図4の構造解析処理で解析した改造前構造データ104から中間語命令改造前中間語命令を1つ取得するS202。続いて、改造場所特定部21は、ステップS201で取得した改造後中間語命令と、ステップS202で取得した改造前中間語命令を比較し、改造後中間語命令と、改造前中間語命令とが同一の中間語命令であるか否かの判定を行うS203。ステップS203の結果、改造後中間語命令と、改造前中間語命令とが同一の中間語命令でない場合S203→No、改造場所特定部21は、この箇所で改造が行われているものとみなし、改造内容判定を行うS204。ステップS204では、処理対象となっている箇所で、どのような改造が行われているかを判定するものであり、改造内容としては追加、削除、変更などがある。このときの判定方法を図11を参照して説明する。図11aのように、現在、処理対象となっている改造前中間語命令がA2であり、処理対象となっている改造後中間語命令がB1である場合、処理対象となっている改造後中間語命令B1の後の改造後中間語命令に、処理対象となっている改造前中間語命令と同じA2があれば、改造場所特定部21は追加と判定する。図11bのように、処理対象となっている改造前中間語命令がA2であり、処理対象となっている改造後中間語命令がA3である場合、処理対象となっている改造前中間語命令A2の後の改造前中間語命令が、処理対象となっている改造後中間語命令と同じA3であれば、改造場所特定部21は削除と判定する。図11cのように、処理対象となっている改造前中間語命令がA2であり、処理対象となっている改造後中間語命令がC1である場合、処理対象となっている改造前中間語命令、改造後中間語命令の前後の中間語命令が、改造後、改造前で一致していれば、改造場所特定部21は変更と判定する。次に、改造場所特定部21は、改造場所特定データ1100に擬似中間語命令を挿入マーキングしてS205、ステップS207へ処理を進める。ステップS205については、図12を参照して後記する。ステップS203の結果、改造後中間語命令と、改造前中間語命令とが同一の中間語命令である場合S203→Yes、改造場所特定部21は、改造が行われているとみなし、この改造後中間語命令を改造場所特定データ1100の末尾に挿入しS206、すべての改造後中間語命令および改造前中間語命令中間語命令について解析をしたか否かを判定するS207。ステップS207の結果、解析を行っていない中間語命令が存在する場合S207→No、改造場所特定部21はステップS201へ処理を戻し、次の改造後中間語命令および改造前中間語命令について解析を行う。ステップS207の結果、すべての中間語命令について解析を行っている場合S207→Yes、改造場所特定部21は改造場所特定データ1100を出力してS208、処理を終了する。改造場所特定処理結果図12は、改造場所特定処理結果の例を示す図である。図12aには、上段に構造データ、下段にソースコードを示しており、左列に改造前、中列に改造後、右列に改造場所特定処理結果を示す。なお、図12aにおける改造場所特定処理結果が図1における改造場所特定データ1100となる。図12aから、改造前ソースコード101から生成した構造データ改造前構造データと、改造後ソースコード102から生成した構造データ改造後構造データを、図10におけるステップS203で比較すると、中間語命令1101が挿入されていることがわかる。これは、改造後ソースコード102において、命令1102が挿入されたことを示している。改造場所特定部21は、このように改造によって挿入された命令である中間語命令1101を、擬似中間語命令1103で置き換える。実際には、改造場所特定部21は、上から順に改造前構造データ104、改造後構造データ105の中間語命令を比較していき、一致していれば、改造場所特定データ1100に改造後構造データ105の中間語命令を書き足していき、不一致が検出されれば、図11で説明した判定方法に従って改造内容を判定し、その改造内容に該当する擬似中間語命令を改造場所特定データ1100に書き足す。図12bに示すように、改造場所特定処理結果における擬似中間語命令1103は、予測構造データ900などで用いられる擬似中間語命令901図9と同様、接頭語1111、擬似中間語命令名称1112、擬似処理内容1113を有している。ただし、改造場所特定処理結果における擬似中間語命令1103の擬似処理内容1113は、改造後構造データ105における改造された挿入された中間語命令1101そのものが挿入されるところが、予測構造データ900などで用いられる擬似中間語命令901と異なる。以上、図10から図12までで述べた改造場所特定処理によって、改造後における改造場所を擬似中間語命令で置き換えることによって、改造後構造データ105における改造場所が明らかになる。[改造内容検証処理]次に、図13~図15を参照して、改造内容検証処理図2のステップS5の説明を、適宜図1を参照しつつ行う。改造内容検証処理では、改造内容検証部22が、図10の処理で生成された改造場所特定データ1100と、図9で説明した改造予定再現処理で生成された予測構造データ900とを比較することによって、予定に従って改造が行われているか否かを判定し、その判定結果を表示部50に表示する。改造内容検証処理のフローチャート図13は、本実施形態に係る改造内容検証処理の手順を示すフローチャートである。まず、改造内容検証部22は、改造場所特定データ1100から基本ブロック改造後基本ブロックを取得するS301。次に、改造内容検証部22は、改造予定再現部12によって改造内容を再現した予測構造データ900から、ステップS301で取得した改造後基本ブロックと類似する基本ブロックである類似基本ブロックを検索しS302、類似基本ブロックが検出されたか否かを判定するS303。類似基本ブロックの検出基準としては、基本ブロック内において、一致する中間語命令がの数が一定数以上あり、かつ、改造場所特定データ1100および予測構造データ900上で、処理対象となっている基本ブロックの前の基本ブロック同士、または後の基本ブロック同士でも、一致する中間語命令の数が一定数以上あることなどである。ステップS303の結果、類似基本ブロックが検出されなかった場合S303→No、改造内容検証部22は、ステップS301で取得した基本ブロックは予定外の改造であるとみなし、NGを検証結果データ106に登録しS304、ステップS309へ処理を進める。このとき、検証結果データ106には、NGの情報とともに該当する基本ブロックの識別子315図3が登録される。ステップS303の結果、類似基本ブロックが検出された場合S303→Yes、改造内容検証部22は、ステップS301で取得した改造後基本ブロックと、検出された類似基本ブロックに含まれている中間語命令の比較を行うS305。そして、改造内容検証部22は、ステップS201で取得された改造後基本ブロックと、類似基本ブロックにおいて、中間語命令の形式が一致しているか否かを判定するS306。なお、ここでの中間語命令とは擬似中間語命令を含んでおり、その形式とは、擬似中間語命令であるか否かに関するものである。ステップS306の結果、不一致である場合S306→No、改造内容検証部22はNGを検証結果データ106に登録しS304、ステップS309へ処理を進める。なお、このとき、改造内容検証部22は、類似基本ブロック側が擬似中間語命令であれば、予測構造データ900の擬似処理内容904図9の識別子と、不一致が検出された中間語命令の行番号をNGの情報とともに検証結果データ106に登録する。類似基本ブロック側が擬似中間語命令でなければ、不一致が検出された中間語命令の行番号をNGの情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。ステップS306の結果、一致である場合S306→Yes、改造内容検証部22は、その内容が一致しているか否かを判定するS307。ここで、内容とはinsertや、deleteなどである。例えば、双方insertであれば、改造内容検証部22は一致と判定し、insertとdeleteであったりすれば、改造内容検証部22は不一致と判定する。ステップS307の結果、不一致の場合S307→No、改造内容検証部22はステップS304へ処理を進め、NGを検証結果データ106に登録するS304。ここで、改造内容検証部22は、類似基本ブロック側が擬似中間語命令であれば、予測構造データ900の擬似処理内容904図9の識別子と、不一致が検出された中間語命令の行番号をNGの情報とともに検証結果データ106に登録する。類似基本ブロック側が擬似中間語命令でなければ、不一致が検出された中間語命令の行番号をNGの情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。ステップS307の結果、一致の場合S307→Yes、改造内容検証部22はOKを検証結果データ106に登録するS308。このとき、改造内容検証部22は、該当する中間語命令の行番号をOKの情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。そして、改造内容検証部22は、処理対象となっている基本ブロック改造後基本ブロック、類似基本ブロック内のすべての中間語命令を解析したか否かを判定するS309。ステップS309の結果、解析していない中間語命令が存在する場合S309→No、改造内容検証部22はステップS305へ処理を戻し、次の中間語命令の解析を行う。ステップS309の結果、すべての中間語命令を解析している場合S309→Yes、改造内容検証部22は改造場所特定データ1100におけるすべての基本ブロックを解析したか否かを判定するS310。ステップS310の結果、改造場所特定データ1100において、解析していない基本ブロックが存在する場合S310→No、改造内容検証部22はステップS301へ処理を戻し、次の基本ブロックの解析を行う。ステップS310の結果、改造場所特定データ1100におけるすべての基本ブロックを解析している場合S310→Yes、改造内容検証部22は、検証結果データ106を出力しS311、改造内容検証処理を終了する。改造内容検証判定パターン図14は、図13のステップS305で使用される判定パターンの例を示す例である。なお、この説明にけるステップ番号は図13のステップ番号である。図14において、改造場所特定データ1100の中間語命令が擬似中間語命令である場合は、改造後ソースコード102において改造が行われた場所であることを示しており、擬似中間語命令でない場合は改造後ソースコード102において改造が行われていないことを示している。また、予測構造データ900の中間語命令が擬似中間語命令である場合は、改造が行われる予定の場所であることを示しており、擬似中間語命令でない場合は改造が行われる予定でないことを示している。パターンAでは、改造場所特定データ1100の中間語命令および予測構造データ900の中間語命令がともに擬似中間語命令ではなく中間語命令、その内容も一致しているパターンであるステップS306→Yes;ステップS307→Yes。このパターンAは、改造予定以外の場所であり、かつ改造が行われていないことを示しており、改造内容検証部22はOKを検証結果データ106に登録するステップS308。パターンBは、改造場所特定データ1100の中間語命令が擬似中間語命令ではなく中間語命令、予測構造データ900の中間語命令が擬似中間語命令であるパターンである。この場合、当然内容は不一致となる。このパターンBでは、改造が必要な場所に対して、必要な改造が行われていないことを示しており、改造内容検証部22はNGを検証結果データ106に登録するステップS304。パターンCは、改造場所特定データ1100の中間語命令が擬似中間語命令であり、予測構造データ900の中間語命令は擬似中間語命令ではない中間語命令パターンであり、当然内容は不一致となるパターンである。このパターンCは、改造を行う必要がない場所に、不要な改造が行われたことを示しており、改造内容検証部22はNGを検証結果データ106に登録するステップS304。パターンDは、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令であり、かつ、その内容が一致するパターンであるステップS306→Yes;ステップS307→Yes。このパターンDは、改造が必要な場所に、適切な改造が行われたことを示しており、改造内容検証部22はOKを検証結果データ106に登録するステップS308。パターンEは、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令であるが、その内容が不一致であるパターンであるステップS306→Yes;ステップS307→No。このパターンEは、予定されている箇所に改造が行われているのだが、その内容が異なっていることを示しており、改造内容検証部22はNGを検証結果データ106に登録するステップS304。パターンFは、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令ではないが中間語命令、その内容が一致しないパターンであるステップS306→Yes;ステップS307→No。このパターンFは、改造対象となっている改造前ソースコード101とは異なるソースコードを改造して、改造後ソースコード102として登録した疑いがあることを示しており、改造内容検証部22はNGを検証結果データ106に登録するステップS304。検証結果表示画面図15は、改造内容検証部によって表示部に表示される検証結果表示画面の例を示す図である。検証結果表示画面1400は、改造後ソースコード表示エリア1401、検証結果表示エリア1402を有している。検証結果表示エリア1402には、改造予定にしたがって正しく改造が行われた場合に表示されるエリアであるOKエリア1403、改造予定と異なる改造が行われた場合に表示されるエリアであるNGエリア1404を有している。OKエリア1403には、改造予定を識別するID表示エリア1405、判定結果表示エリア1406、改造の根拠となる仕様書の記載場所を表示する仕様書情報表示エリア1407、レビューを促すメッセージ表示エリア1408を有している。NGエリア1404には、OKエリア1403と同様に改造予定を識別するID表示エリア1408、判定結果表示エリア1409、改造の根拠となる仕様書の記載場所を表示する仕様書情報表示エリア1410、異常判定の内容を示す判定内容表示エリア1411を表示する。このうち、ID表示エリア1405,1408に表示される内容は、検証結果データ106に登録されている識別子である。なお、予測構造データ900が擬似中間語命令でない箇所で不一致が検出された場合、ID表示エリア1405,1408は空欄となる。また、仕様書情報表示エリア1407,1410の内容は図8に示す改造予定データ800の仕様書情報805である。これらのデータは、改造内容検証部22が、検証結果データ106における識別子をキーとして、改造予定データ800を検索することによって取得される情報である。なお、仕様書情報805に表示されている仕様書は、改造前ソースコード作成時に作成された仕様書である。また、判定結果表示エリア1406,1409は、図13のステップS306における結果を検証結果データ106内に保持することによって表示される情報である。メッセージ表示エリア1408、判定内容表示エリア1411は、例えば、図14に示すパターン毎にメッセージを予め用意しておくことによって表示される情報である。改造後ソースコード表示エリア1401には、改造場所が正常OKな場合と異常NGな場合を区別してハイライト表示し、さらに、検証結果表示エリア1402の各項目と関連付けを行う。このような関連付けは、改造内容検証部22が、検証結果データ106に登録されている行番号を参照することによって行われる。図15の例では、ハイライト表示箇所1421と、OKエリア1403とを直線1412で結び,ハイライト表示箇所1422と、NGエリア1404とを直線1413で結ぶことで、改造後ソースコード102における改造場所とレポート内容を関連付けている。なお、図15は表示の一例であり、実装上必要であれば他の情報を表示する領域を追加してもよい。また、すべての領域を同時に表示する必要もなく、例えば、ユーザのクリック入力などで、表示するエリアを選択可能にしてもよい。また、改造場所を示す方法もハイライト表示に限定しない。このように、予定されている改造の内容や、場所と、実際に改造が行われた内容や、場所で整合性が取れていない場合に、整合性が取れていない場所を明示することで、改造後ソースコード102の修正、または、改造入力データ103の再入力をユーザに促すことができる。図10から図15までで述べた改造内容検証部22の処理によって、新たな仕様書を必要とせずに、改造後ソースコード102に対する改造内容の検証ができるようになる。また、改造前ソースコード作成のときの仕様書作成において詳細なコーディングの内容が確定していない場合でも、改造場所と改造内容の検証ができるようになる。まとめ以上、本実施形態によって、新たな仕様書を必要とせずに、改造後ソースコード102に対する改造内容の検証ができるようになり、改造前ソースコード作成のときの仕様書作成において詳細なコーディングの内容が確定していない場合でも、改造場所と改造内容の検証ができるようになる。この結果、プログラミング段階の誤った改造をレビュー段階で検出でき、かつ、レビュー段階におけるレビュー漏れを防ぐことができるようになる。なお、本発明は実施形態に記載した例に限定されるものではなく、様々な変形例が含まれる。例えば、本実施形態では、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、本実施形態で述べた中間語命令の名称および書式は一例であり、実装に応じて、名称および書式の変更、または情報の追加を行ってもよい。また、本実施形態の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSDSolidStateDriveなどの記録装置、または、ICIntegratedCircuitカード、SDSecureDigitalカード、DVDDigitalVersatileDiscなどの記録媒体に記憶させることができる。"