説明

プログラム改造支援方法およびプログラム改造支援装置

【課題】新たな仕様書を装置上で作成しなくてもよいプログラム改造支援方法およびプログラム改造支援装置を提供することを目的とする。
【解決手段】プログラムの改造を支援するプログラム改造支援装置1であって、改造予定箇所に関する情報である改造予定データ800と、改造前ソースコード101と、に基づいて、予定されている改造が行われた場合における予測構造データ900を生成する改造予定再現部12と、改造後ソースコード102に基づく改造場所特定データ1100を生成する改造場所特定部21と、予測構造データ900と、改造場所特定データ1100と、を比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部50に表示させる改造内容検証部22と、を有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム改造支援方法およびプログラム改造支援装置の技術に関する。
【背景技術】
【0002】
一般的なソフトウェア開発では、あるプログラムのソースコードに対して、変更・修正など改造の要求があった場合、まず、設計段階で、どのような改造を行うかをプログラミング担当者が調査、検討し、改造方法を仕様書にまとめる。
次の実装段階で、プログラミング担当者が、この仕様書を基に実装方針を決定し、実装方針を基にソースコードに対して改造を行う。
最後のレビュー段階で、レビュー担当者がソースコードに対して行われた改造について妥当性の検証を行う。
【0003】
このとき、プログラミング担当者が仕様書の記載内容に沿って正しく実装方針を決定しても、改造漏れや誤った場所への改造など、実装方針と異なる改造を行う可能性がある。つまり、仕様書の内容とは異なる改造を行う可能性がある。さらに、レビュー段階においても、改造場所が広範囲にわたっている場合、レビュー担当者が前記の誤った改造を見落とす可能性もある。
そこで、ソースコードに対して行われた改造について妥当性を検査する仕組みが必要とされている。
【0004】
例えば、特許文献1には、ソースコードとプログラム仕様書との整合性を詳細にかつ機械的に検査できるプログラム仕様整合検査装置が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平8−30448号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に記載の装置では、ソースコードと、検査の基となる仕様書とを関連付けるために、装置上で仕様書を作成する必要がある。このため、改造場所の特定や改造内容の検証において、装置上で作成した仕様書が新たに必要となる。
また、特許文献1に記載の装置では、実際のコーディングと同じレベルの詳細な記述のある仕様書が必要になる。このため、仕様書作成時に詳細なコーディングの内容が確定していない場合は利用できないという問題がある。
【0007】
そこで、本発明は、新たな仕様書を装置上で作成しなくてもよいプログラム改造支援方法およびプログラム改造支援装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
前記課題を解決するため、本発明は、プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、前記プログラム改造支援装置が、改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成し、改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成し、前記予測データと、前記改造後データを比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させることを特徴とする。
その他の解決手段については、実施形態中で適宜説明する。
【発明の効果】
【0009】
本発明によれば、新たな仕様書を装置上で作成しなくてもよいプログラム改造支援方法およびプログラム改造支援装置を提供することができる。
【図面の簡単な説明】
【0010】
【図1】本実施形態に係るプログラム改造支援装置の構成例を示す図である。
【図2】本実施形態に係るプログラム改造支援処理における全体処理の手順を示すフローチャートである。
【図3】本実施形態に係るソースコード例と、構造データ例を示す図である。
【図4】構造解析部における構造解析処理の手順を示すフローチャートである。
【図5】中間語命令への変換の一例を示す図である(C言語の例)。
【図6】本実施形態に係る改造場所入力画面の例を示す図である。
【図7】本実施形態に係る改造情報入力画面の例を示す図である。
【図8】本実施形態に係る改造予定データの例を示す図である。
【図9】本実施形態に係る予測構造データの例を示す図である。
【図10】本実施形態に係る改造場所特定処理の手順を示すフローチャートである。
【図11】改造内容の判定方法の例を説明するための図である。
【図12】改造場所特定処理結果の例を示す図である。
【図13】本実施形態に係る改造内容検証処理の手順を示すフローチャートである。
【図14】改造内容検証処理における判定パターンの例を示す例である。
【図15】改造内容検証部によって表示部に表示される検証結果表示画面の例を示す図である。
【発明を実施するための形態】
【0011】
次に、本発明を実施するための形態(「実施形態」という)について、適宜図面を参照しながら詳細に説明する。
【0012】
[装置構成]
図1は本実施形態に係るプログラム改造支援装置の構成例を示す図である。
プログラム改造支援装置1は、改造予定登録処理部10、構造解析部30、改造内容検証処理部20、入力部40、表示部50、を有する。
入力部40は、キーボードや、マウスなどの入力装置である。
表示部50は、ディスプレイなどの表示装置である。
構造解析部30は、一般的なコンパイラの機能の一部によって実現されるものであり、ソースコードを解析して後記する構造データを出力する。
【0013】
改造予定登録処理部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、構造データについては後記して説明する。
【0014】
改造予定再現部12は、改造予定登録部11が生成した改造予定データ800と、改造前構造データ104に基づいて、予定されている改造が行われたときの構造データを予測した情報である予測構造データ900を生成する。
【0015】
改造内容検証処理部20は、改造後ソースコード102において、予定に従った改造がなされているか否かを検証するものであり、改造場所特定部(改造後データ生成部)21と、改造内容検証部22とを有する。
改造場所特定部21は、改造後ソースコード102から構造解析部30が解析した結果である改造前構造データ104と、改造後構造データ105とから、実際にどこが改造されたのかを特定し、その情報を改造場所特定データ(改造後データ)1100として出力する。
改造内容検証部22は、改造場所特定データ1100と、予測構造データ900とを基に、予定に従って改造が行われているか否かを検証し、その結果である検証結果データ106を表示部50に表示させる。
なお、図1において表示部50は検証結果データ106のみを表示しているようにみえるが、改造入力データ103や、予測構造データ900なども適宜表示する。
【0016】
なお、改造予定登録処理部10、改造内容検証処理部20、構造解析部30、および各部11,12,21,22は、ROM(Read Only Memory)や、HDD(Hard Disk Drive)に格納されたプログラムが、RAM(Random Access Memory)に展開され、CPU(Central Processing Unit)によって実行されることによって具現化する。
【0017】
[全体処理]
図2は、本実施形態に係るプログラム改造支援処理における全体処理の手順を示すフローチャートである(適宜、図1参照)。
まず、プログラミング担当者などのユーザが端末などを使用して改造前ソースコード101を入手する(S1)。なお、ステップS1およびステップS3aは、ユーザによる処理であるため、破線四角で処理を示してある。
次に、ユーザは作成した改造前ソースコード101をプログラム改造支援装置1に入力し、プログラム改造支援装置1の構造解析部30が改造前ソースコード101の構造解析処理を行い(S2)、改造前構造データ104を出力する。構造解析処理については、図3〜図5を参照して後記する。
なお、過去に他の誰かが作成したソースコードを改造前ソースコード101としてもよいし、自分で昔に作成したソースコードを改造前ソースコード101としてもよい。また、ステップS1と、ステップS2では、処理を行うユーザが異なっていてもよい。
そして、ユーザが端末などを使用して改造後ソースコード102を作成する(S3a)。
次に、ユーザは作成した改造後ソースコード102をプログラム改造支援装置1に入力し、プログラム改造支援装置1の構造解析部30が改造後ソースコード102の構造解析処理を行い(S4a)、改造後構造データ105を出力する。構造解析処理については、図3〜図5を参照して後記する。
【0018】
一方、ユーザが改造を行う予定の箇所や、改造内容などをプログラム改造支援装置1に入力することによって改造予定登録処理が行われ(S3b)、プログラム改造支援装置1の改造予定再現部12は、改造予定登録処理の結果、生成される改造予定データ800を基に、予定される改造が行われた結果、生成予測される構造データである予測構造データ900を生成する改造予定再現処理を行う(S4b)。
改造予定登録処理については図6〜図8を参照して後記し、改造予定再現処理については図9を参照して後記する。
なお、ステップS3a〜S4aと、ステップS3b〜S4bはどちらが先に行われてもよいし、並列に作業が行われてもよい。
【0019】
そして、プログラム改造支援装置1の改造場所特定部21は改造前構造データ104と、改造後構造データ105とを比較することによって、実際に改造が行われた箇所を特定する改造場所特定処理を行う(S5)。改造場所特定処理は図10および図12を参照して後記する。
続いて、プログラム改造支援装置1の改造内容検証部22は実際に行われた改造が、予定に従った改造であったか否かを検証する改造内容検証処理を行う(S6)。
改造内容検証処理は図13〜図15を参照して後記する。
【0020】
[構造解析処理]
次に、図3〜図5を参照して、本実施形態に関する構造解析処理(図2のステップS2,4a)の説明を、適宜図1を参照しつつ行う。なお、前記したように構造解析処理は一般的なコンパイラを使用して行うことを想定しているが、専用のプログラムを用意してもよい。以降、ソースコード上の命令を適宜「命令」と記載することとする。
【0021】
(ソースコード例および構造データ例)
図3は、本実施形態に係るソースコード例と、構造データ例を示す図であり、図3(a)がソースコード例、図3(b)が図3(a)のソースコード例に対応する構造データ例、図3(c)が中間語命令の例を示している。なお、ソースコードとしては、C言語を想定しているが、他のプログラミング言語でも適用可能である。また、ここで示すソースコードとは、改造前ソースコード101、改造後ソースコード102の両方を指している。
この構造データは、図4で後記する構造解析処理の結果、生成されるものである。
【0022】
図3(a)に示すように、(C言語で記述された)ソースコード301には、1つ以上の関数303が含まれている。関数303とは、一連の命令を1つにまとめたものであり、他のプログラム言語ではプロシージャ、または手続きなどと呼ばれている。
ソースコード301では、関数303が1つの関数である。また、関数303には、代入演算304、比較演算305、分岐命令306、四則演算307などの命令が含まれている。
【0023】
これに対し、図3(b)に示す構造データ302は、ソースコードのファイル名308と、1つ以上の関数情報309で構成されている(図3(b)の例では1つ)。関数情報309とはソースコードに含まれる関数303に関する情報を1つにまとめたもので、関数303に対して関数情報309が1つ生成される。
【0024】
関数情報309は1つ以上の基本ブロック310,311,313で構成されている。基本ブロック310,311,313とは、ソースコード301におけるプログラム処理の流れにおいて、処理の流れが分岐しない一連の命令の集合である。ソースコード301における代入演算304から分岐命令306までが、構造データ302の基本ブロック310に対応している。また、ソースコード301における四則演算307および代入演算322が、基本ブロック311に対応している。さらに、ソースコード301における代入演算312が、の基本ブロック313に対応している。
【0025】
さらに、基本ブロックは、1つ以上の中間語命令314と基本ブロックの識別子315、この基本ブロックの直前および直後に処理が行われる基本ブロックの識別子316などから構成されている。
中間語命令とは、ソースコード301に含まれる命令を、構造データ302上で表現するための命令であり、一般的にはコンパイルによって出力される。
【0026】
図3(c)に示すように、中間語命令には、ソースコード上の命令の種類をあらわす名前317、ソースコード上の命令が使用する変数または値318、ソースコード上の命令の位置319で構成する。ちなみに、図3(c)は、図3(a)の命令304「a=0;」に対応する中間語命令314であり、基本ブロック310の中間語命令314でもある。中間語命令314は、「10行2列目」の「a」という変数に「0」をコピーすることを示している。
また、C言語では、ソースコード301の四則演算307のように、加算の処理と、その結果を代入するという複数の処理が同時に記述されている場合がある。このように、複数の処理が同時に記載されている場合、中間語命令は、加算の処理を表す中間語命令320と代入の処理を表す中間語命令321のように、処理ごとに中間語命令を分離して表現する。
【0027】
(構造解析処理のフローチャート)
図4は、構造解析部における構造解析処理の手順を示すフローチャートである。なお、構造解析部30は、既存のコンパイラの機能の一部をなすものであり、図4の処理も既存のコンパイラに備えられている処理であるため、その処理内容の説明は簡潔なものとする。また、構造解析処理は、改造前ソースコード101および改造後ソースコード102のそれぞれに対して行われる処理である。なお、図4の処理において、ソースコードとは、改造前ソースコード101か、あるいは改造後ソースコード102であることを示すものとする。
【0028】
まず、構造解析部30はソースコードに記述されている文字列に対して、字句解析を行う(S101)。ここで、構造解析部30は、ソースコードにおける文字列をプログラム言語で定義しているキーワードや、識別子、演算子、変数や関数の名前など、プログラム言語の最小構成要素であるトークンという単位に分割する。トークンの分割は、ソースコードがC言語であれば、例えばセミコロンなどを単位として分割する。
次に、構造解析部30は、ステップS101の字句解析で生成したトークンの列に対して、構文解析を行う(S102)。ここで、構造解析部30はソースコードのプログラム言語の文法に則り、トークンの列がどのような計算式を構成しているか、また、1つの関数の範囲はどこまでか、など、トークンの列の構造について解析を行う。また、このとき、トークンの列がプログラム言語の文法に則っているか否かの検証を行う。具体的には、例えば、C言語であれば、最初の中括弧から、この中括弧に対応する中括弧までを1つの関数として認識するなどの解析を行う。
【0029】
そして、構造解析部30は、ステップS102の構文解析の結果を元に、意味解析を行う(S103)。ここで、構造解析部30は、関数や変数がどのような名称を使用しているか、変数がどのような型を持つか、分岐命令がどの点まで分岐しているかなどについて解析を行う。また、このときも、構造解析部30は関数や変数がプログラム言語の文法に則っているか否かの検証を行う。
続いて、構造解析部30は、ステップS103の意味解析の結果を元に、ソースコードにおける関数の開始点と終了点を取得し、関数情報生成を行う(S104)。ここで、構造解析部30は、関数情報として、関数名のみを関数情報に登録し、この関数における以降の処理で基本ブロックや中間語命令を追加する。
【0030】
次に、構造解析部30は、ソースコードにおける関数の内部を検証し、ソースコードに含まれている命令や処理を、対応する中間語命令へ変換する中間後命令変換を行う(S105)。
そして、構造解析部30は、ステップS105で抽出した中間語命令を検証し、基本ブロックの生成が必要か否かの判定を行う(S106)。基本ブロックの生成が必要な場合とは、例えば、ステップS105で変換された中間語命令が、関数の先頭に位置する場合とか、分岐命令の後に続いている場合などである。
ステップS106の結果、基本ブロックの生成が必要な場合(S106→Yes)、構造解析部30は、図3で説明した基本ブロックの定義に従って基本ブロックを生成し(S107)、ステップS109へ処理を進める。
【0031】
ステップ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は構造解析処理を終了する。
【0032】
構造解析部30が、図4の処理を改造前ソースコード101および改造後ソースコード102のそれぞれについて行うことにより、プログラム改造支援装置1は改造前構造データ104および改造後構造データ105のそれぞれを生成する。
【0033】
(中間語命令への変換例)
図5は中間語命令への変換の一例を示す図である(C言語の例)。図5において、左側の欄がソースコードにおける命令であり、右側の欄が対応する中間語命令を示している。
例えば、符号501に示すような代入命令の場合、対応する中間語命令は符号502のようになる。
また、符号503に示すような計算結果をある変数に代入する加算命令の場合、対応する中間語命令は、符号504のような加算を示す中間語命令と、符号505のような変数への代入を示す中間語命令の2つに分割される。
符号506に示すような分岐命令の場合、対応する中間語命令は、符号507のような条件を判定する処理を示す中間語命令と、符号508のような条件にしたがって分岐する処理を示す中間語命令の2つに分割される。
符号509のような条件に従って同じ処理を繰り返し実施するループ命令の場合、対応する中間語命令は、符号510のような条件判定処理の中間語命令と、符号511のような条件に従って分岐する処理の中間語命令と、符号512のようなループ内の処理の終端から、ループの開始まで戻るための分岐命令を示す中間語命令の3つに分割されることになる。
【0034】
以上、図3〜図5で説明したように構造解析部30は、ソースコードを中間語命令の形に変換した構造データを生成することによって、ユーザごとに異なるコーディング方法の差異を吸収し、正規化できる。なお、コーディングとは(プログラミング言語の文法に則って)プログラムを記述することである。
また、このようにすることで、コメントなど、プログラムの処理に直接関連のない部分の除去もできる。従って、ソースコードを中間語命令の形に変換することによって、これ以降の処理で、より正確に、改造前ソースコード101と改造後ソースコード102の検証が行えるようになる。
構造解析部30は、図4のステップS105における中間語命令変換処理(図2のステップS3b)において、図5のような変換規則に従ってソースコードの命令を中間語命令へと変換する。
【0035】
[改造予定登録処理]
次に、図6〜図8を参照して、本実施形態に係る改造予定登録処理の説明を、適宜図1を参照しつつ行う。
(改造場所入力画面)
図6は、本実施形態に係る改造場所入力画面の例を示す図である。
改造場所入力画面600は、ソースコード表示エリア601と、フローチャート表示エリア602とを有している。
ソースコード表示エリア601には、改造前ソースコード101が表示されており、フローチャート表示エリア602にはソースコード表示エリア601に表示されているソースコードに対応するフローチャートが表示されている。なお、フローチャート表示エリア602に表示されているフローチャートは、プログラム改造支援装置1によって自動的に生成されるものであるが周知の技術であるのでフローチャート生成処理の説明は省略する。また、フローチャート表示エリア602は省略可能である。
【0036】
ユーザはマウス操作などによる入力部40の操作によって、改造前ソースコード101に対して改造が行われる場所の入力を行う。例えば、命令603を書き換える場合、ユーザは命令603の行を選択する。また、命令603および命令604を書き換える場合、ユーザは命令603と命令604の行を選択する。また、命令603と命令604の間に新たに命令を加える場合、ユーザは命令603と命令604の間をクリックするなどの操作を行う。
なお、このときユーザによる入力を受け付ける画面は、ソースコード表示エリア601およびフローチャート表示エリア602のどちらでも可能とする。フローチャート表示エリア602で行う場合は、フローチャートにおける各処理について、ソースコード表示エリア601における処理と同様の処理を行えばよい。
また、ウィンドウの表示は、図6のようなソースコード表示エリア601およびフローチャート表示エリア602を同時に表示する形式に限らず、ソースコード表示エリア601や、フローチャート表示エリア602をそれぞれ、あるいはどちらか一方のみを独立に表示するようにしてもよい。
さらに、実装上必要であれば、その他の情報を表示するウィンドウも表示してもよい。
改造場所入力画面600による入力を受け付けると、改造予定登録処理部10は、図7に示す改造情報入力画面を表示する。
【0037】
(改造情報入力画面)
図7は、本実施形態に係る改造情報入力画面の例を示す図である。
改造情報入力画面700は、ソースコードの改造予定に関する詳細な情報の入力を受け付けるための画面である。
改造情報入力画面700は、改造が行われる場所を表示する改造場所表示エリア701、改造の内容の入力を受け付ける改造内容入力エリア702、改造内容の概要の入力を受け付ける概要入力エリア703、改造の根拠となる仕様書の記述箇所の入力を受け付ける仕様書情報入力エリア704を有する。
なお、図7に示す改造情報入力画面700は表示の一例であり、実装上必要であれば、上記以外の情報の入力を受け付ける領域を表示してもよい。また、各領域の配置場所も、必ずしも改造情報入力画面700と同じである必要はなく、すべての領域を同時に表示する必要もない。
【0038】
改造場所表示エリア701には、図6の改造場所入力画面600で選択された命令の場所に関する情報が表示される。改造場所表示エリア701には、ファイル名およびラインが表示され、このうち、ラインには図6の改造場所入力画面600で選択された命令の、ソースコードにおける行番号が表示される。ファイル名、およびラインは、入力部40を介して変更可能となっている。
図7に示すように、改造内容入力エリア702は、「削除」、「上書」、「追加」などが選択可能となっており、これらの改造内容の選択を受け付けられるようになっている。より詳細な情報を入力する場合、ユーザは概要入力エリア703に詳細な情報を入力する。
概要入力エリア703には、ユーザによって入力部40を介して入力される情報であり、予定されている改造の詳細な情報が入力される。概要入力エリア703は省略可能である。
【0039】
仕様書情報入力エリア704は、ユーザによって入力部40を介して入力される情報であり、この改造に関連する仕様書の参照ページなどの情報である。ここで、「仕様書」とは、改造前ソースコート101作成時の仕様書でもよく、改造内容を記した仕様書(本実施形態では必須としない)でもよい。本実施形態では、改造前ソースコード作成時の仕様書を参照することはあるが、新たな仕様書などを作成する必要はない。
図7の例では、100〜101行目の間に「追加」が行われることを示している。
【0040】
なお、改造場所が1箇所の場合、ユーザは、図6における改造場所の入力と、図7における改造情報の入力を1回ずつ行う。改造場所が複数におよぶ場合、ユーザは、図6における改造場所の入力と、図7における改造情報の入力を改造場所の数分だけ行う。
【0041】
(改造予定データ)
図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の情報である。
【0042】
このように、改造予定データ800に仕様書情報805と概要情報804を含めることによって、改造前ソースコード101における仕様書作成時に詳細なコーディングの内容が確定していない場合でも、後の処理で、改造場所と改造内容の検証ができるようになる。
また、改造予定データ800に、識別子801と仕様書情報805を含めることによって、改造場所と改造内容および関連する仕様書の記述との関連付けが可能になり、後記する検証結果確認時に改造内容と仕様書の記述内容の確認を行うことができるようになる。ここで、前記したように「仕様書」とは、改造前ソースコード作成時の仕様書である。本実施形態では、改造前ソースコード作成時の仕様書を参照することはあるが、新たな仕様書などを作成する必要はない。
【0043】
[改造予定再現処理]
次に、図9を参照して改造予定再現処理(図2のステップS4b)の説明を、適宜図1を参照しつつ行う。改造予定再現処理では、改造予定再現部12が図6〜図8で説明した改造予定登録処理で入力・登録された予定に従って改造前ソースコード101の改造が行われた場合、予測される構造データである予測構造データ900を生成する。
【0044】
図9は、本実施形態に係る予測構造データの例を示す図である。
改造予定再現部12は、改造予定データ800(図8)を基に、予測構造データ900を予測・生成する。このとき、改造予定再現部12は中間語命令と同じ書式で改造内容の情報を埋め込むための中間語命令として、擬似中間語命令901という命令を導入する。つまり、改造予定登録処理に従って行われる改造が確定していないことから、中間語命令を確定することができないため、改造予定再現部12は擬似中間語命令901を使用して予測構造データ900を生成する。
【0045】
擬似中間語命令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に対する改造内容の検証ができるようになる。
【0046】
なお、予測構造データ900を生成するための処理は、改造予定再現部12が、図8の改造予定データ800を参照して、改造場所情報802に該当する行と行の間に、改造内容情報803に相当する処理を行うだけであるため、フローチャートを省略する。例えば、改造内容情報803が「insert」であれば、改造予定再現部12は該当箇所に行を空け、そこに接頭語902、擬似中間語命令名称903、擬似処理内容904として識別子801を挿入する。改造内容情報803が「delete」であれば、改造予定再現部12は該当行を削除し、削除した箇所に接頭語902、擬似中間語命令名称903、擬似処理内容904として識別子801を挿入する。
【0047】
[改造場所特定処理]
次に、図10および図12を参照して、改造場所特定処理(図2のステップS5)の説明を、適宜図1を参照しつつ行う。改造場所特定処理では、改造場所特定部21が、改造前構造データ104と、改造後構造データ105とから、実際の改造における改造場所を特定する。
【0048】
(改造場所特定処理のフローチャート)
図10は、本実施形態に係る改造場所特定処理の手順を示すフローチャートである。この処理において、改造場所特定部21は図4の構造解析処理で生成した改造前構造データ104および改造後構造データ105の比較を行い、異なっている箇所を検出すると、検出した異なっている箇所に擬似中間語命令を挿入する処理を行う。
【0049】
まず、改造場所特定部21は改造後ソースコード102の構造を図4の構造解析処理で解析した改造後構造データ105から中間語命令(改造後中間語命令)を1つ取得する(S201)。
次に、改造場所特定部21は、改造前ソースコード101の構造を図4の構造解析処理で解析した改造前構造データ104から中間語命令(改造前中間語命令)を1つ取得する(S202)。
【0050】
続いて、改造場所特定部21は、ステップS201で取得した改造後中間語命令と、ステップS202で取得した改造前中間語命令を比較し、改造後中間語命令と、改造前中間語命令とが同一の中間語命令であるか否かの判定を行う(S203)。
【0051】
ステップS203の結果、改造後中間語命令と、改造前中間語命令とが同一の中間語命令でない場合(S203→No)、改造場所特定部21は、この箇所で改造が行われているものとみなし、改造内容判定を行う(S204)。ステップS204では、処理対象となっている箇所で、どのような改造が行われているかを判定するものであり、改造内容としては「追加」、「削除」、「変更」などがある。
【0052】
このときの判定方法を図11を参照して説明する。
図11(a)のように、現在、処理対象となっている改造前中間語命令が「A2」であり、処理対象となっている改造後中間語命令が「B1」である場合、処理対象となっている改造後中間語命令「B1」の後の改造後中間語命令に、処理対象となっている改造前中間語命令と同じ「A2」があれば、改造場所特定部21は「追加」と判定する。
【0053】
図11(b)のように、処理対象となっている改造前中間語命令が「A2」であり、処理対象となっている改造後中間語命令が「A3」である場合、処理対象となっている改造前中間語命令「A2」の後の改造前中間語命令が、処理対象となっている改造後中間語命令と同じ「A3」であれば、改造場所特定部21は「削除」と判定する。
【0054】
図11(c)のように、処理対象となっている改造前中間語命令が「A2」であり、処理対象となっている改造後中間語命令が「C1」である場合、処理対象となっている改造前中間語命令、改造後中間語命令の前後の中間語命令が、改造後、改造前で一致していれば、改造場所特定部21は「変更」と判定する。
【0055】
次に、改造場所特定部21は、改造場所特定データ1100に擬似中間語命令を挿入(マーキング)して(S205)、ステップS207へ処理を進める。ステップS205については、図12を参照して後記する。
【0056】
ステップS203の結果、改造後中間語命令と、改造前中間語命令とが同一の中間語命令である場合(S203→Yes)、改造場所特定部21は、改造が行われているとみなし、この改造後中間語命令を改造場所特定データ1100の末尾に挿入し(S206)、すべての改造後中間語命令および改造前中間語命令(中間語命令)について解析をしたか否かを判定する(S207)。
ステップS207の結果、解析を行っていない中間語命令が存在する場合(S207→No)、改造場所特定部21はステップS201へ処理を戻し、次の改造後中間語命令および改造前中間語命令について解析を行う。
ステップS207の結果、すべての中間語命令について解析を行っている場合(S207→Yes)、改造場所特定部21は改造場所特定データ1100を出力して(S208)、処理を終了する。
【0057】
(改造場所特定処理結果)
図12は、改造場所特定処理結果の例を示す図である。
図12(a)には、上段に構造データ、下段にソースコードを示しており、左列に改造前、中列に改造後、右列に改造場所特定処理結果を示す。
なお、図12(a)における改造場所特定処理結果が図1における改造場所特定データ1100となる。
図12(a)から、改造前ソースコード101から生成した構造データ(改造前構造データ)と、改造後ソースコード102から生成した構造データ(改造後構造データ)を、図10におけるステップS203で比較すると、中間語命令1101が挿入されていることがわかる。これは、改造後ソースコード102において、命令1102が挿入されたことを示している。
改造場所特定部21は、このように改造によって挿入された命令である中間語命令1101を、擬似中間語命令1103で置き換える。
【0058】
実際には、改造場所特定部21は、上から順に改造前構造データ104、改造後構造データ105の中間語命令を比較していき、一致していれば、改造場所特定データ1100に改造後構造データ105の中間語命令を書き足していき、不一致が検出されれば、図11で説明した判定方法に従って改造内容を判定し、その改造内容に該当する擬似中間語命令を改造場所特定データ1100に書き足す。
【0059】
図12(b)に示すように、改造場所特定処理結果における擬似中間語命令1103は、予測構造データ900などで用いられる擬似中間語命令901(図9)と同様、接頭語1111、擬似中間語命令名称1112、擬似処理内容1113を有している。ただし、改造場所特定処理結果における擬似中間語命令1103の擬似処理内容1113は、改造後構造データ105における改造された(挿入された)中間語命令1101そのものが挿入されるところが、予測構造データ900などで用いられる擬似中間語命令901と異なる。
【0060】
以上、図10から図12までで述べた改造場所特定処理によって、改造後における改造場所を擬似中間語命令で置き換えることによって、改造後構造データ105における改造場所が明らかになる。
【0061】
[改造内容検証処理]
次に、図13〜図15を参照して、改造内容検証処理(図2のステップS5)の説明を、適宜図1を参照しつつ行う。改造内容検証処理では、改造内容検証部22が、図10の処理で生成された改造場所特定データ1100と、図9で説明した改造予定再現処理で生成された予測構造データ900とを比較することによって、予定に従って改造が行われているか否かを判定し、その判定結果を表示部50に表示する。
【0062】
(改造内容検証処理のフローチャート)
図13は、本実施形態に係る改造内容検証処理の手順を示すフローチャートである。
まず、改造内容検証部22は、改造場所特定データ1100から基本ブロック(改造後基本ブロック)を取得する(S301)。
次に、改造内容検証部22は、改造予定再現部12によって改造内容を再現した予測構造データ900から、ステップS301で取得した改造後基本ブロックと類似する基本ブロックである類似基本ブロックを検索し(S302)、類似基本ブロックが検出されたか否かを判定する(S303)。類似基本ブロックの検出基準としては、基本ブロック内において、一致する中間語命令がの数が一定数以上あり、かつ、改造場所特定データ1100および予測構造データ900上で、処理対象となっている基本ブロックの前の基本ブロック同士、または後の基本ブロック同士でも、一致する中間語命令の数が一定数以上あることなどである。
【0063】
ステップS303の結果、類似基本ブロックが検出されなかった場合(S303→No)、改造内容検証部22は、ステップS301で取得した基本ブロックは予定外の改造であるとみなし、「NG」を検証結果データ106に登録し(S304)、ステップS309へ処理を進める。このとき、検証結果データ106には、「NG」の情報とともに該当する基本ブロックの識別子315(図3)が登録される。
【0064】
ステップ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の行番号である。
【0065】
ステップ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の行番号である。
【0066】
ステップS307の結果、一致の場合(S307→Yes)、改造内容検証部22は「OK」を検証結果データ106に登録する(S308)。このとき、改造内容検証部22は、該当する中間語命令の行番号を「OK」の情報とともに検証結果データ106に登録する。なお、ここで、登録される行番号は改造後構造データ105の行番号である。
【0067】
そして、改造内容検証部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)、改造内容検証処理を終了する。
【0068】
(改造内容検証判定パターン)
図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)。
【0069】
「パターンC」は、改造場所特定データ1100の中間語命令が擬似中間語命令であり、予測構造データ900の中間語命令は擬似中間語命令ではない(中間語命令)パターンであり、当然内容は不一致となるパターンである。この「パターンC」は、改造を行う必要がない場所に、不要な改造が行われたことを示しており、改造内容検証部22は「NG」を検証結果データ106に登録する(ステップS304)。
「パターンD」は、改造場所特定データ1100および予測構造データ900の中間語命令がともに擬似中間語命令であり、かつ、その内容が一致するパターンである(ステップS306→Yes;ステップS307→Yes)。この「パターンD」は、改造が必要な場所に、適切な改造が行われたことを示しており、改造内容検証部22は「OK」を検証結果データ106に登録する(ステップS308)。
【0070】
「パターン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)。
【0071】
(検証結果表示画面)
図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を表示する。
【0072】
このうち、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に示すパターン毎にメッセージを予め用意しておくことによって表示される情報である。
【0073】
改造後ソースコード表示エリア1401には、改造場所が正常(「OK」)な場合と異常(「NG」)な場合を区別してハイライト表示し、さらに、検証結果表示エリア1402の各項目と関連付けを行う。このような関連付けは、改造内容検証部22が、検証結果データ106に登録されている行番号を参照することによって行われる。
図15の例では、ハイライト表示箇所1421と、OKエリア1403とを直線1412で結び,ハイライト表示箇所1422と、NGエリア1404とを直線1413で結ぶことで、改造後ソースコード102における改造場所とレポート内容を関連付けている。
【0074】
なお、図15は表示の一例であり、実装上必要であれば他の情報を表示する領域を追加してもよい。また、すべての領域を同時に表示する必要もなく、例えば、ユーザのクリック入力などで、表示するエリアを選択可能にしてもよい。また、改造場所を示す方法もハイライト表示に限定しない。
【0075】
このように、予定されている改造の内容や、場所と、実際に改造が行われた内容や、場所で整合性が取れていない場合に、整合性が取れていない場所を明示することで、改造後ソースコード102の修正、または、改造入力データ103の再入力をユーザに促すことができる。
【0076】
図10から図15までで述べた改造内容検証部22の処理によって、新たな仕様書を必要とせずに、改造後ソースコード102に対する改造内容の検証ができるようになる。また、改造前ソースコード作成のときの仕様書作成において詳細なコーディングの内容が確定していない場合でも、改造場所と改造内容の検証ができるようになる。
【0077】
(まとめ)
以上、本実施形態によって、新たな仕様書を必要とせずに、改造後ソースコード102に対する改造内容の検証ができるようになり、改造前ソースコード作成のときの仕様書作成において詳細なコーディングの内容が確定していない場合でも、改造場所と改造内容の検証ができるようになる。
この結果、プログラミング段階の誤った改造をレビュー段階で検出でき、かつ、レビュー段階におけるレビュー漏れを防ぐことができるようになる。
【0078】
なお、本発明は実施形態に記載した例に限定されるものではなく、様々な変形例が含まれる。例えば、本実施形態では、本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。
【0079】
また、本実施形態で述べた中間語命令の名称および書式は一例であり、実装に応じて、名称および書式の変更、または情報の追加を行ってもよい。
また、本実施形態の各構成、機能、処理部、処理手段などは、それらの一部または全部を、例えば集積回路で設計するなどによりハードウェアで実現してもよい。また、上記の各構成、機能などは、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイルなどの情報は、メモリや、ハードディスク、SSD(Solid State Drive)などの記録装置、または、IC(Integrated Circuit)カード、SD(Secure Digital)カード、DVD(Digital Versatile Disc)などの記録媒体に記憶させることができる。
【符号の説明】
【0080】
1 プログラム改造支援装置
10 改造予定登録処理部
11 改造予定登録部
12 改造予定再現部(改造後データ生成部)
20 改造内容検証処理部
21 改造場所特定部
22 改造内容検証部
30 構造解析部
40 入力部
50 表示部
101 改造前ソースコード
102 改造後ソースコード
103 改造入力データ
104 改造前構造データ
105 改造後構造データ
106 検証結果データ
800 改造予定データ
900 予測構造データ(予測データ)
1100 改造場所特定データ(改造後データ)

【特許請求の範囲】
【請求項1】
プログラムの改造を支援するプログラム改造支援装置のプログラム改造支援方法であって、
前記プログラム改造支援装置が、
改造予定箇所に関する情報である改造予定データに基づいて、予定されている改造が行われる箇所に関する情報を有している予測データを生成し、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成し、
前記予測データと、前記改造後データと、を比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させる
ことを特徴とするプログラム改造支援方法。
【請求項2】
前記改造後データは、コンパイラの機能によって出力される中間語命令を用いて生成されており、
前記予測データも、前記中間語命令を用いて生成されている
ことを特徴とする請求項1に記載のプログラム改造支援方法。
【請求項3】
前記プログラム改造支援装置は、
前記改造前ソースコードにおける命令を、前記中間語命令に変換した改造前構造データを生成し、
入力部を介して、入力された前記改造予定データと、前記改造前構造データとに基づいて、前記予測データを生成する
ことを特徴とする請求項2に記載のプログラム改造支援方法。
【請求項4】
前記入力部を介して、前記予定されている改造に関する仕様書の情報が入力され、
前記入力された仕様書に関する情報が、前記改造予定データに反映され、
前記改造予定データに関する情報が、前記予測データにひも付けられ、
前記プログラム改造支援装置は、
前記不一致箇所が検出された場合、前記予測データを基に、前記不一致箇所に関する前記改造予定データの仕様書に関する情報を表示部に表示させる
ことを特徴とする請求項1から請求項3のいずれか一項に記載のプログラム改造支援方法。
【請求項5】
前記プログラム改造支援装置は、
前記改造前ソースコードにおける命令を、前記中間語命令に変換した改造前構造データを生成し、
前記改造後ソースコードにおける命令を、前記中間語命令に変換した改造後構造データを生成し、
前記改造前構造データと、前記改造後構造データと、を比較し、不一致が検出された箇所をマーキングし、
前記マーキング情報を前記改造後データに格納し、
前記予測データと、前記改造後データにおけるマーキング情報と、を比較することによって、前記不一致箇所の検出を行う
ことを特徴とする請求項1から請求項4のいずれか一項に記載のプログラム改造支援方法。
【請求項6】
プログラムの改造を支援するプログラム改造支援装置であって、
改造予定箇所に関する情報である改造予定データと、改造前の前記プログラムのソースコードである改造前ソースコードと、に基づいて、予定されている改造が行われた場合における予測データを生成する改造予定再現部と、
改造後の前記プログラムのソースコードである改造後ソースコードに基づく改造後データを生成する改造後データ生成部と、
前記予測データと、前記改造後データと、を比較し、不一致箇所が検出された場合、不一致箇所が検出された旨を表示部に表示させる改造内容検証部と、
を有することを特徴とするプログラム改造支援装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−141916(P2012−141916A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2011−962(P2011−962)
【出願日】平成23年1月6日(2011.1.6)
【出願人】(000153443)株式会社日立情報制御ソリューションズ (359)
【Fターム(参考)】