(57)【要約】【課題】ソフトウエア開発におけるプログラムの分析作業を支援しプログラムの開発効率を向上する。【解決手段】プログラム分析装置１０は、記憶装置１２に記憶しているプログラムを対象として記号実行を行い、プログラムの変更点の入力を受け付け、記号実行の結果に基づき、変更点についてプログラムの変更を行った際のプログラムの影響箇所を特定する。プログラム分析装置１０は、記号実行により得られる実行木の末端ノードである記号実行サマリ、記号実行サマリに基づく決定表、及びソースコードのうちのいずれかに対する変更操作を受け付けることにより変更点を受け付ける。プログラム分析装置１０は、特定したプログラムの影響箇所を、記号実行サマリ、ソースコード、及び決定表のいずれかの態様で可視化する。【選択図】図２
2015133031.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ及び記憶装置を備え、  
前記記憶装置に記憶しているプログラムを対象として記号実行を行う記号実行処理部、
前記プログラムの変更点の入力を受け付ける変更点受付部、及び
前記記号実行の結果に基づき、前記変更点について前記プログラムの変更を行った場合に影響が生じる可能性のある前記プログラムの部分である影響箇所を特定する影響箇所分析部
を備えることを特徴とするプログラム分析装置。
【請求項２】
請求項１に記載のプログラム分析装置であって、
前記影響箇所分析部は、前記プログラムのソースコード、前記記号実行により取得される実行木の末端ノードで構成される記号実行サマリ、及び前記記号実行の過程で取得される、前記ソースコードの処理ブロックごとの処理内容と変数状態とを含む情報であるトレース要素の集合であるトレース情報に基づき、前記影響箇所を特定する
ことを特徴とするプログラム分析装置。
【請求項３】
請求項１又は２に記載のプログラム分析装置であって、
入力装置及び表示装置を備え、
前記変更点受付部は、前記記号実行により得られる実行木の末端ノードである記号実行サマリを前記表示装置に表示し、前記入力装置から前記記号実行サマリに対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析装置。
【請求項４】
請求項１又は２に記載のプログラム分析装置であって、
入力装置及び表示装置を備え、
前記変更点受付部は、前記記号実行により得られる実行木の末端ノードである記号実行サマリに基づく決定表を前記表示装置に表示し、前記入力装置から前記決定表に対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析装置。
【請求項５】
請求項１又は２に記載のプログラム分析装置であって、
入力装置及び表示装置を備え、
前記変更点受付部は、前記ソースコードを前記表示装置に表示し、前記入力装置から前記ソースコードに対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析装置。
【請求項６】
請求項１又は２に記載のプログラム分析装置であって、
表示装置を備え、前記影響箇所を前記記号実行サマリにより示した画面、前記影響箇所を前記ソースコードにより示した画面、及び前記影響箇所を前記記号実行サマリに基づく決定表により示した画面、のうちの少なくともいずれかを表示する
ことを特徴とするプログラム分析装置。
【請求項７】
請求項２に記載のプログラム分析装置であって、
前記影響箇所分析部は、前記変更点に係る変数について代入を行っている前記トレース要素であるトレース要素Ａ、及び前記トレース要素Ａに対応する処理が実行される前に実行される処理に対応するトレース要素のうちその処理内容が分岐又は代入であるトレース要素Ｂのうちの少なくともいずれかを特定し、特定したトレース要素に対応する前記プログラムの部位を前記影響箇所として特定する
ことを特徴とするプログラム分析装置。
【請求項８】
請求項７に記載のプログラム分析装置であって、
前記影響箇所分析部は、前記特定したトレース要素の夫々について、前記トレース情報を構成しているトレース要素のうちその処理ブロックが共通するものを特定し、特定したトレース要素の数に基づき前記変更点についてプログラムを修正した場合の影響度を求める
ことを特徴とするプログラム分析装置。
【請求項９】
請求項８に記載のプログラム分析装置であって、
表示装置を備え、  
前記影響箇所分析部は、前記影響度に応じた順序で前記特定したトレース要素の夫々に対応する前記影響箇所を前記表示装置に表示する
ことを特徴とするプログラム分析装置。
【請求項１０】
プロセッサ及び記憶装置を備えて構成されるプログラム分析装置によるプログラム分析方法であって、  
前記プログラム分析装置が、
前記記憶装置に記憶しているプログラムを対象として記号実行を行うステップ、
前記プログラムの変更点の入力を受け付けるステップ、及び
前記記号実行の結果に基づき、前記変更点について前記プログラムの変更を行った場合に影響が生じる可能性のある前記プログラムの部分である影響箇所を特定するステップ、
を含むことを特徴とするプログラム分析方法。
【請求項１１】
請求項１０に記載のプログラム分析方法であって、
前記プログラム分析装置は、前記プログラムのソースコード、前記記号実行により取得される実行木の末端ノードで構成される記号実行サマリ、及び前記記号実行の過程で取得される、前記ソースコードの処理ブロックごとの処理内容と変数状態とを含む情報であるトレース要素の集合であるトレース情報に基づき、前記影響箇所を特定する
ことを特徴とするプログラム分析方法。
【請求項１２】
請求項１０又は１１に記載のプログラム分析方法であって、
前記プログラム分析装置は入力装置及び表示装置を更に備え、
前記プログラム分析装置は、前記記号実行により得られる実行木の末端ノードである記号実行サマリを前記表示装置に表示し、前記入力装置から前記記号実行サマリに対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析方法。
【請求項１３】
請求項１０又は１１に記載のプログラム分析方法であって、
前記プログラム分析装置は入力装置及び表示装置を更に備え、
前記プログラム分析装置は、前記記号実行により得られる実行木の末端ノードである記号実行サマリに基づく決定表を前記表示装置に表示し、前記入力装置から前記決定表に対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析方法。
【請求項１４】
請求項１０又は１１に記載のプログラム分析方法であって、
前記プログラム分析装置は入力装置及び表示装置を更に備え、
前記プログラム分析装置は、前記ソースコードを前記表示装置に表示し、前記入力装置から前記ソースコードに対する変更操作を受け付けることにより、前記プログラムの変更点の入力を受け付ける
ことを特徴とするプログラム分析方法。
【請求項１５】
請求項１０又は１１に記載のプログラム分析方法であって、
前記プログラム分析装置は表示装置を更に備え、
前記プログラム分析装置が、前記影響箇所を前記記号実行サマリにより示した画面、前記影響箇所を前記ソースコードにより示した画面、及び前記影響箇所を前記記号実行サマリに基づく決定表により示した画面、のうちの少なくともいずれかを表示するステップを更に含む
ことを特徴とするプログラム分析方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム分析装置及びプログラム分析方法に関する。
【背景技術】
【０００２】
特許文献１には「本繰返しシンボリック実行方法は、シンボリック実行を実施するシンボリック実行部に対して、分析対象プログラムに定義されている全ての変数をカバーするようにシンボル化対象の変数を変化させつつ繰り返しシンボリック実行を行わせる第１実行ステップと、分析対象プログラムのコード網羅率（例えばブランチカバレッジやステートメントカバレッジ等）をシンボリック実行部から取得し、実行結果格納部に格納する取得ステップと、実行結果格納部に格納されているコード網羅率が所定の基準を満たすか判断するステップと、コード網羅率が所定の基準を満たすと判断された場合、分析対象プログラムのテストが完了したことを表すデータを出力データ格納部に格納するステップとを含む。」と記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２-６８８６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
昨今のソフトウエアの開発は既存のプログラムの再利用を前提として行われることが少なくない。とくにインフラ系の大規模なシステムにおいては、プロジェクトの多くが、長年に亘り蓄積された既存のプログラムを利用した差分開発や派生開発により行われているといわれている。
【０００５】
ここでこうしたソフトウエア開発においては、開発効率の確保や信頼性確保等の観点から、既存のプログラムを新しい仕様に対応させるための改変に伴うプログラムの影響箇所（影響範囲）を効率よく正確に洗い出すことが重要になる。
【０００６】
しかし影響箇所の洗出しは従来、ソースコードに記述されている変数を全文検索し、ソースコードに含まれている条件分岐から変数の取り得る値を推定するといった人手を中心とした方法で行われており、例えば、再利用されるプログラムの規模が大きく、プログラムに用いられている変数の取り得る値やプログラムに記述されている分岐条件が多岐に亘るような場合には、影響箇所の洗出しに多大な労力を要するとともに、プログラムの信頼性を確保することも難しくなる。
【０００７】
本発明はこのような背景に鑑みてなされたものであり、ソフトウエア開発におけるプログラムの分析作業を支援しプログラムの開発効率を向上することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するための本発明の一つは、プログラム分析装置であって、プロセッサ及び記憶装置を備え、前記記憶装置に記憶しているプログラムを対象として記号実行を行う記号実行処理部、前記プログラムの変更点を受け付ける変更点受付部、及び前記記号実行の結果に基づき、前記変更点について前記プログラムの変更を行った場合に影響が生じる可能性のある前記プログラムの部分である影響箇所を特定する影響箇所分析部を備える。
【発明の効果】
【０００９】
本発明によれば、ソフトウエア開発におけるプログラムの分析作業を支援しプログラムの開発効率を向上することができる。
【図面の簡単な説明】
【００１０】
【図１】記号実行を説明する図である。
【図２】プログラム分析装置１０を用いて構成される情報処理システム１の一例である。
【図３】プログラム分析処理Ｓ３００を説明するフローチャートである。
【図４】ソースコード及び変更点の入力方法の指定画面４００の一例を示す図である。
【図５】変更点入力受付画面（記号実行サマリ）５００の一例を示す図である。
【図６】変更点入力受付画面（決定表）６００の一例を示す図である。
【図７】変更点入力受付画面（ソースコード）７００の一例を示す図である。
【図８】トレース情報２５４の一例を示す図である。
【図９】影響箇所分析処理Ｓ３１５を説明するフローチャートである。
【図１０】分析結果表示画面１０００を示す図である。
【図１１】分析結果表示画面１１００を示す図である。
【図１２】分析結果表示画面１２００を示す図である。
【図１３】分析結果表示画面１３００を示す図である。
【図１４】分析結果表示画面１４００を示す図である。
【図１５】分析結果表示画面１５００を示す図である。
【発明を実施するための形態】
【００１１】
以下、実施形態について図面を参照しつつ説明する。以下の説明において、同一又は類似の部分に同一の符号を付して重複する説明を省略することがある。また「プログラム」のことを「ＰＧ」と略記することがある。
【００１２】
［記号実行］
まず本実施形態の前提となる技術である記号実行について説明する。記号実行とは、プログラムの実行に際し、プログラムに用いられている変数（入力変数、グローバル変数等）に具体的な値を代入しつつプログラムを実行する代わりに変数を記号として用い、プログラムのすべての制御フローに対して、当該制御フローに至るための条件式(以下、パス制約とも称する)と、プログラムの実行過程における変数の状態（以下、変数状態とも称する。）を記号を用いた式によって表現したものとの組み合わせ（以下、ノードとも称する。）を求める技術である。記号実行によれば、プログラムのすべての制御フローを網羅して、変数の入力値と出力値との対応を得ることができる。以下、図１のＣ言語で記述されたソースコードＥ１０１について情報処理装置を用いて記号実行を行う場合を例として説明する。
【００１３】
記号実行において、情報処理装置は、まずソースコードＥ１０１についてコンパイルに際して行うのと同様の字句分析や構文分析を行うことにより、符号Ｅ１０２で示す構造グラフを生成する。尚、同図に示す実線矢印は制御依存性（Control Dependency）を、破線矢印はデータ依存性（Data Dependency）を、点線矢線は制御フロー（Control Flow）を示している。
【００１４】
続いて情報処理装置は、構造グラフＥ１０２に基づき符号Ｅ１２０で示す実行木を生成する。同図に示すように、実行木Ｅ１２０の各ノードは、前述したパス制約（上欄）と変数状態（下欄）との組み合わせで表される。実行木Ｅ１２０の根ノード（ルートノード）は初期状態に対応する。情報処理装置は、プログラムの実行に伴って変数状態が更新される度に実行木Ｅ１２０に新たなノードを追加していく。
【００１５】
実行木Ｅ１２０の生成に際し、情報処理装置は、まずソースコードＥ１０１で用いられている変数に記号変数を割り当てる。例示するソースコードＥ１０１には「ａ」、「ｂ」、「ｃ」という３つの入力変数が存在する。本例では、情報処理装置は、各入力変数に順に「α」、「β」、「γ」を記号変数として割り当てている。
【００１６】
続いて情報処理装置は、構造グラフＥ１０２のノードＥ１０３に基づき、実行木Ｅ１２０に根ノードＥ１１０を生成する。本例では、情報処理装置は、根ノードＥ１１０のパス制約（上欄）Ｅ１１０ａに、「制約無し」（任意の変数状態に対して条件が成立（「真」となる））を示す「ｔｒｕｅ」を設定し、変数状態（下欄）Ｅ１１０ｂに、入力変数「ａ」、「ｂ」、「ｃ」の夫々に記号変数「α」、「β」、「γ」が割り当ていることを示す「ａ＝α，ｂ＝β，ｃ＝γ」を設定している。
【００１７】
続いて情報処理装置は、構造グラフＥ１０２のノードＥ１０４に基づき、実行木Ｅ１２０のノードＥ１１０に子ノードＥ１１１を生成する。同図に示すように、情報処理装置は、子ノードＥ１１１のパス制約（上欄）Ｅ１１１ａに、親ノードＥ１１０のパス制約Ｅ１１０ａと同じ「ｔｒｕｅ」を設定する。また情報処理装置は、構造グラフＥ１０２のノードＥ１０４において変数ａに「０」が代入されているため、子ノードＥ１１１の変数状態 (下欄）Ｅ１１１ｂに「ａ＝０，ｂ＝β，ｃ＝γ」を設定する。
【００１８】
構造グラフＥ１０２において、ノードＥ１０４に後続して実行されるのはノードＥ１０５であるが、ノードＥ１０５では変数状態は更新されないので実行木Ｅ１２０にこれに対応する新たなノードは追加されない。但しノードＥ１０５はｉｆ文による条件分岐であり、構造グラフＥ１０２においてノードＥ１０５にはノードＥ１０６及びノードＥ１０７の２つのノードが後続するので、情報処理装置は、ノードＥ１１１にノードＥ１０６に対応する子ノードＥ１１２とノードＥ１０７に対応する子ノードＥ１１３を生成する。このように記号実行においては取り得る全ての制御フローが網羅されるように、条件分岐に応じた子ノードが実行木に生成される。
【００１９】
ノードＥ１１２のパス制約（上欄）には、親ノードＥ１１１のパス制約（上欄）Ｅ１１１ａとノードＥ１０５の条件式との論理積が設定される。ここでノードＥ１０５における条件式は「ｃ＜０」であり、ノードＥ１１２の親ノードＥ１１１の変数状態は「ａ＝０，ｂ＝β，ｃ＝γ」であり、変数「ｃ」を記号変数で表わすと「γ」となるので条件式は「γ＜０」となる。そこで情報処理装置は、ノードＥ１１２のパス制約（上欄）Ｅ１１２ａに「ｔｒｕｅ」と「γ＜０」との論理積「γ＜０」を設定する。また構造グラフＥ１０２のノードＥ１０６において変数「ｃ」に「０」が代入されているので、情報処理装置は、ノードＥ１１２の変数状態（下欄）Ｅ１１２ｂに「ａ＝０，ｂ＝β，ｃ＝０」を設定する。
【００２０】
ノードＥ１１３のパス制約（上欄）Ｅ１１３ａは、ノードＥ１０５の条件式による判定結果が偽となる場合に対応している。このため、情報処理装置は、ノードＥ１１３のパス制約（上欄）Ｅ１１３ａに親ノードＥ１１１のパス制約（上欄）である「ｔｒｕｅ」と条件式の否定「！（γ＜０）」との論理積「！（γ＜０）」を設定する（記号「！」は否定を表す。）。また構造グラフＥ１０２のノードＥ１０７で変数「ａ」に変数「ｃ」の値が代入され、また親ノードＥ１１１で変数「ｃ」の変数状態が記号変数「γ」となっているので、情報処理装置は、ノードＥ１１３の変数状態（下欄）Ｅ１１３ｂに「ａ＝γ，ｂ＝β，ｃ＝γ」を設定する。
【００２１】
構造グラフＥ１０２においてノードＥ１０６に後続するのはノードＥ１０８である。ノードＥ１０８はｉｆ文による条件分岐であるので、情報処理装置は、実行木Ｅ１２０のＥ１１２にノードＥ１０８の条件式の判定結果の真偽に対応する２つの子ノードＥ１１４及び子ノードＥ１１５を生成する。
【００２２】
構造グラフＥ１０２のノードＥ１０８の条件式は（ｂ＜０）である。また子ノードＥ１１４及び子ノードＥ１１５の親ノードＥ１１２の変数状態（下欄）Ｅ１１２ｂは「ａ＝０，ｂ＝β，ｃ＝０」であり、変数「ｂ」を記号変数で表わすと「β」となり、条件式は「β＜０」となる。そこで情報処理装置は、ノードＥ１１４のパス制約（上欄）Ｅ１１４ａに「γ＜０」と「β＜０」の論理積である「γ＜０  ＆  β＜０」を、ノードＥ１１５のパス制約（上欄）Ｅ１１５ａに「γ＜０」と「！（β＜０）」の論理積である「γ＜０  ＆  ！（β＜０）」を、夫々設定する。
【００２３】
構造グラフＥ１０２のノードＥ１０９ａでは変数「ａ」に「ａ−ｂ」が代入され、また親ノードＥ１１２の変数状態（下欄）Ｅ１１２ｂから変数「ａ」は「０」、変数「ｂ」は「β」、変数「ｃ」は「０」であり、これらから変数「ａ」は「ａ−ｂ＝０−β＝−β」となる。そこで情報処理装置は、ノードＥ１１４の変数状態（下欄）Ｅ１１４ｂに「ａ＝−β，ｂ＝β，ｃ＝０」を設定する。また構造グラフＥ１０２のノードＥ１０９ｂでは変数「ａ」に「ａ＋ｂ」が代入され、また親ノードＥ１１２の変数状態から変数「ａ」は「０」、変数「ｂ」は「β」であり、これらから変数「ａ」は「ａ＋ｂ＝０＋β＝β」となる。そこで情報処理装置は、ノードＥ１１５の変数状態（下欄）Ｅ１１５ｂに「ａ＝β，ｂ＝β，ｃ＝０」を設定する。
【００２４】
構造グラフＥ１０２において、ノードＥ１０７に後続するのはノードＥ１０８である。ノードＥ１０８はｉｆ文による条件分岐であるため、情報処理装置は、実行木Ｅ１２０のノードＥ１１３に、２つの子ノードＥ１１６及び子ノードＥ１１７を生成する。
【００２５】
ノードＥ１０８の条件式は（ｂ＜０）であり、ノードＥ１１６の親ノードＥ１１３の変数状態（下欄）Ｅ１１３ｂは「ａ＝γ，ｂ＝β，ｃ＝γ」であり、変数「ｂ」を記号変数で表わすと「β」となり、条件式は「β＜０」となる。そこで情報処理装置は、ノードＥ１１６のパス制約（上欄）Ｅ１１６ａに「！（γ＜０）」と「β＜０」の論理積である「！（γ＜０）  ＆  β＜０」を、ノードＥ１１７のパス制約（上欄）Ｅ１１７ａに「！（γ＜０）」と「！（β＜０）」の論理積である「！（γ＜０）  ＆  ！（β＜０）」を、夫々設定する。
【００２６】
構造グラフＥ１０２のノードＥ１０９ａでは変数「ａ」に「ａ−ｂ」が代入され、また親ノードＥ１１３の変数状態（下欄）Ｅ１１３ｂから「ａ＝γ，ｂ＝β，ｃ＝γ」であり、これらから変数「ａ」は「ａ−ｂ＝γ−β」となる。そこで情報処理装置は、ノードＥ１１６の変数状態（下欄）Ｅ１１６ｂに「ａ＝γ−β，ｂ＝β，ｃ＝γ」を設定する。また構造グラフＥ１０２のノードＥ１０９ｂでは変数「ａ」に「ａ＋ｂ」が代入され、また親ノードＥ１１３の変数状態（下欄）Ｅ１１３ｂから変数「ａ＝γ，ｂ＝β，ｃ＝γ」であり、これらから変数「ａ」は「ａ＋ｂ＝γ＋β」となる。そこで情報処理装置は、ノードＥ１１７の変数状態（下欄）Ｅ１１７ｂに「ａ＝γ＋β，ｂ＝β，ｃ＝γ」を設定する。
【００２７】
このように、記号実行は、プログラムが取り得る全ての制御フローを網羅した上で、プログラムの実行前後の変数値の関係を、入力値の条件（パス制約）と、出力変数の状態（変数状態）との組の集合を求めることであるということができる。尚、以下の説明において、記号実行が終了した時点における実行木の末端ノードのことを「記号実行サマリ」と称する。記号変数「α」、「β」、「γ」の任意の組合せは、いずれかの記号実行サマリのパス制約を満たす。記号実行サマリを用いることで、入力となる記号変数の値からプログラムの実行後における各変数の値を知ることができる。例えば、ソースコードＥ１０１の実行前の変数「ａ」、「ｂ」、「ｃ」のいずれの値も「１」である場合、記号変数は「α＝β＝γ＝１」となり、これはノードＥ１１７のパス制約Ｅ１１７ａを満たす。従って、ノードＥ１１７の変数状態（下欄）Ｅ１１７ｂから、ソースコードＥ１０１の実行後の変数の値は「ａ＝γ＋β＝２，ｂ＝β＝１，ｃ＝γ＝１」となることがわかる。
【００２８】
［プログラム分析装置］
続いて一実施形態として示すプログラム分析装置１０について説明する。プログラム分析装置１０は、ユーザからプログラムの改変に伴う変更点の入力を受け付け、プログラムについて記号実行を行うことにより、受け付けた変更点についてプログラムの影響箇所を可視化する。
【００２９】
図２にプログラム分析装置１０を用いて構成される情報処理システム１の一例を示している。プログラム分析装置１０は、情報処理装置（コンピュータ）であって、プロセッサ１１、記憶装置１２、入力装置１３、表示装置１４、及び通信装置１５を備える。これらはバス等の通信手段を介して通信可能に接続されている。
【００３０】
プロセッサ１１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）を用いて構成される。プロセッサ１１が記憶装置１２に格納されているプログラムを読み出して実行することにより、プログラム分析装置１０の様々な機能が実現される。
【００３１】
記憶装置１２は、プログラムやデータを記憶する装置であり、例えば、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＮＶＲＡＭ（Non Volatile RAM）、ハードディスクドライブ、ＳＳＤ（Solid State Drive）、光学式記憶装置である。
【００３２】
入力装置１３は、ユーザから情報や指示の入力を受け付けるユーザインタフェースであり、例えば、キーボード、マウス、タッチパネルである。表示装置１４は、ユーザに情報を提供するユーザインタフェースであり、例えば、液晶モニタ、ＬＣＤ（Liquid Crystal Display）である。通信装置１５は、通信ネットワーク５を介して外部装置２と通信する通信インタフェースであり、例えば、ＮＩＣ（Network Interface Card）である。
【００３３】
同図に示すように、記憶装置１２は、記号実行処理ＰＧ２１１、変更点受付ＰＧ２２１、ソースコード影響箇所分析ＰＧ２３１、記号実行サマリ影響箇所分析ＰＧ２３２、ソースコード影響箇所出力ＰＧ２４１、及び記号実行サマリ影響箇所出力ＰＧ２４２を記憶する。以下の説明において、これら各プログラムによって実現される機能のことを、順に、記号実行処理部、変更点受付部、ソースコード影響箇所分析部、記号実行サマリ影響箇所分析部、ソースコード影響箇所出力部、及び記号実行サマリ影響箇所出力部と称する。同図に示すように、記憶装置１２は、改変の対象となるプログラムのソースコード２５１、記号実行サマリ２５２、決定表２５３、トレース情報２５４、及び分析結果２５５を記憶する。
【００３４】
記号実行処理部は、改変の対象となるプログラムについて記号実行を行い、記号実行サマリ２５２、決定表２５３、及びトレース情報２５４を生成する。このうち記号実行サマリ２５２は、前述した記号実行サマリに相当し、記号実行が終了した時点における実行木の末端ノードで構成される。
【００３５】
決定表２５３は、記号実行サマリ２５２の真偽に応じて得られる結果を条件式と対応付けて表形式で表したものである。決定表２５３は、例えば、記号実行サマリ２５２に基づきＳＡＴソルバ（SATisfiability problem solver）を用いて生成される。
【００３６】
トレース情報２５４は、記号実行の実行時における、ソースコード２５１の処理単位（以下、「処理ブロック」とも称する。）ごとの変数値の遷移を示した情報である。トレース情報２５４は、記号実行を行うことにより得られる記号実行サマリ２５２に対応して生成される。トレース情報２５４の詳細については後述する。
【００３７】
ソースコード２５１は、様々な方法でプログラム分析装置１０に取り込まれて記憶装置１２に格納される。例えば、ソースコードは、ソフトウエアの開発者等が開発中のプログラムの分析に際して外部装置２（例えば、ソフトウエアの開発者がソフトウエアの開発に使用している端末）から通信ネットワーク５を介してプログラム分析装置１０に格納する。また例えば、ソースコード２５１は、入力装置１３を介してプログラム分析装置１０に提供される。
【００３８】
ソースコード２５１は、ソースコード２５１ごとに付与される識別子（例えばソースコードのパス名やファイル名。以下、ソースコードＩＤとも称する。）に対応づけて記憶装置１２に格納される。記号実行の対象となるソースコード２５１は、ソースコード２５１の全体（例えば、コンパイルが可能な単位）であってもよいし、ソースコード２５１の一部（例えば、ソースコード２５１に記述されている特定の関数）であってもよい。
【００３９】
変更点受付部は、ユーザから入力装置１３又は通信装置１５を介してプログラムの変更点の入力を受け付ける。ユーザは変更点の入力方法として「記号実行サマリ」、「ソースコード」、及び「決定表」のうちのいずれかを選択することができる。
【００４０】
ソースコード影響箇所分析部は、記号実行処理部による記号実行の結果に基づき、変更点受付部が受け付けた変更点についてプログラムの変更を行った場合に影響が生じるソースコード２５１の部位（以下、ソースコード影響箇所とも称する。）を特定する。プログラム分析装置１０は、特定したソースコード影響箇所を分析結果２５５として記憶装置１２に格納する。
【００４１】
記号実行サマリ影響箇所分析部は、記号実行処理部による記号実行の実行結果に基づき、変更点受付部が受け付けた変更点についてプログラムの変更を行った場合に影響が生じる可能性のある記号実行サマリ２５２の部位（以下、記号実行サマリ影響箇所とも称する。）を特定する。プログラム分析装置１０は、特定した記号実行サマリ影響箇所を分析結果２５５として記憶装置１２に格納する。
【００４２】
ソースコード影響箇所出力部は、ソースコード影響箇所分析部が特定したソースコード影響箇所を表示装置１４に表示する。
【００４３】
記号実行サマリ影響箇所出力部は、記号実行サマリ影響箇所分析部が特定した記号実行サマリ影響箇所を表示装置１４に表示する。
【００４４】
続いて図３に示すフローチャートとともに改変の対象となるプログラムの分析に際しプログラム分析装置１０が行う処理（以下、プログラム分析処理Ｓ３００とも称する。）について説明する。
【００４５】
同図に示すように、まずプログラム分析装置１０は、例えば図４に示す画面（以下、ソースコード及び変更点の入力方法の指定画面４００とも称する。）を表示装置１４に表示して、改変の対象となるプログラムのソースコード２５１のソースコードＩＤ並びに変更点の入力方法の指定を入力装置１３又は通信ネットワーク５を介してユーザから受け付ける（Ｓ３１１，Ｓ３１２）。
【００４６】
続いてプログラム分析装置１０は、Ｓ３１１にて受け付けたソースコード２５１について記号実行を行い、記号実行サマリ２５２、トレース情報２５４、及び決定表２５３を生成する（Ｓ３１４）。
【００４７】
続いてプログラム分析装置１０は、Ｓ３１２にて指定された変更点の入力方法により変更点の入力を受け付ける（Ｓ３１４）。
【００４８】
図５に、変更点の入力方法として「記号実行サマリ」が選択された場合（図４において記号実行サマリ４２１が選択された場合）にプログラム分析装置１０が表示装置１４に表示する、変更点の入力を受け付ける画面（以下、変更点入力受付画面（記号実行サマリ）５００とも称する。）の一例を示す。ユーザは、同図における「変更後」の記号実行サマリの内容（パス制約（上欄）、変数状態（下欄））を修正（追加、変更、削除等）することにより変更点を入力することができる。この例では、プログラム分析装置１０は、パス制約（上欄）が「！（γ＜０）  ＆  β＜０」である記号実行サマリの変数状態（下欄）を「ａ＝γ−β」から「ａ＝−β」とする変更点の入力（同図において強調表示している部分）を記号実行サマリに対する修正により受け付けている。
【００４９】
図６に、変更点の入力方法として「決定表」が選択された場合（図４において決定表４２２が選択された場合）にプログラム分析装置１０が表示装置１４に表示する、変更点の入力を受け付ける画面（以下、変更点入力受付画面（決定表）６００とも称する。）の一例を示す。ユーザは同図における「変更後」の決定表の内容を修正（追加、変更、削除等）することにより変更点を入力する。この例では、プログラム分析装置１０は、パス制約（上欄）が「！（γ＜０）  ＆  β＜０」である記号実行サマリの変数状態（下欄）を「ａ＝γ−β」から「ａ＝−β」とする変更に相当する変更点の入力（同図において強調表示されている部分）を決定表に対する修正により受け付けている。
【００５０】
図７に、変更点の入力方法として「ソースコード」が選択された場合（図４においてソースコード４２３が選択された場合）にプログラム分析装置１０が表示装置１４に表示する、変更点の入力を受け付ける画面（以下、変更点入力受付画面（ソースコード）７００とも称する。）の一例を示す。ユーザは同図における「変更後」のソースコードの内容を修正（追加、変更、削除等）することにより変更点を入力する。この例では、プログラム分析装置１０は、変更前のソースコード「ａ＝ｃ；」をコメントアウトして「／＊ａ＝ｃ；＊／」とする変更の入力（同図において強調表示されている部分）をソースコードに対する修正により受け付けている。
【００５１】
続いてプログラム分析装置１０は、ソースコード２５１と、生成した記号実行サマリ２５２及びトレース情報２５４とに基づき、Ｓ３１３で受け付けた変更点について、前述したソースコード影響箇所や記号実行サマリ影響箇所を特定する（Ｓ３１５）。尚、必ずしもソースコード影響箇所及び記号実行サマリ影響箇所の双方を特定する必要はなく、いずれか一方のみを特定するようにしてもよい。当該処理の詳細については後述する。
【００５２】
次にプログラム分析装置１０は、表示装置１４に分析結果（ソースコード影響箇所、記号実行サマリ影響箇所等）を表示する（Ｓ３１６）。以上でプログラム分析処理Ｓ３００は終了する。
【００５３】
［トレース情報］
Ｓ３１３においてプログラム分析装置１０が生成するトレース情報２５４について説明する。プログラム分析装置１０は、記号実行の過程で得られる情報に基づきトレース情報２５４を生成する。
【００５４】
図８にトレース情報２５４の一例を示している。同図に示すソースコード２５１は、図１に示したソースコードＥ１０１と同じものである。符号Ｅ１１４〜Ｅ１１７は、図１に示した実行木の末端ノード、即ち記号実行サマリである。そして同図に符号３１４０〜３１７０で示すテーブル群がソースコード２５１に基づくトレース情報２５４である。
【００５５】
同図において、トレース情報３１４０は、記号実行サマリＥ１１４に対応するトレース情報２５４であり、トレース情報３１５０は、記号実行サマリＥ１１５に対応するトレース情報２５４であり、トレース情報３１６０は、記号実行サマリＥ１１６に対応するトレース情報２５４であり、トレース情報３１７０は、記号実行サマリＥ１１７に対応するトレース情報２５４である。
【００５６】
同図に示すように、トレース情報３１４０〜３１７０は、夫々、ソースコード２５１の各処理ブロックに対応する要素（以下、「トレース要素」とも称する。）で構成されている。各トレース要素は、処理ブロックごとに固有に付与される番号であるブロック番号３１４１、その処理ブロックの処理内容３１４２（本例では処理内容として「代入」と「分岐」がある。）、及びその処理ブロックにおける処理後の変数値３１４３、の各項目を有する。尚、プログラム分析装置１０は、各トレース要素に各トレース要素の識別子である「インデックス」を付与することによりトレース要素を識別する。
【００５７】
同図において、例えば、トレース要素３２００は、ソースコード２５１のブロック番号「３０１０」の処理ブロックに対応し、処理内容３１４１として「代入」を、変数値として「ａ＝α，ｂ＝β，ｃ＝γ」を有する。また例えば、トレース要素３２４０は、ソースコード２５１のブロック番号「３０６０」の処理ブロックに対応し、処理内容３１４１として「分岐」を、変数値として「ａ＝０，ｂ＝β，ｃ＝０」を有する。
【００５８】
［影響箇所分析処理］
図９は図３のプログラム分析処理Ｓ３００における影響箇所分析処理Ｓ３１５を説明するフローチャートである。以下、同図とともに影響箇所分析処理Ｓ３１５について詳述する。
【００５９】
プログラム分析装置１０は、まず図３のＳ３１４で受け付けた変更点について、図３のＳ３１３で生成したトレース情報２５４の中から変更点に関係するトレース要素を特定し、特定したトレース要素のインデックスを記憶する（Ｓ９１１）。上記変更点に関係するトレース要素には、例えば、その処理内容が変更点として指定された変数についての「代入」であるトレース要素Ａ、トレース要素Ａに対応する処理が実行される前に実行される処理に対応するトレース要素のうちその処理内容が「分岐」又は「代入」であるトレース要素Ｂがある。
【００６０】
次にプログラム分析装置１０は、図３のＳ３１３で生成した全てのトレース情報２５４を対象として、Ｓ９１１で記憶したインデックスごとに、そのトレース要素のブロック番号と同じブロック番号のトレース要素を検索し（Ｓ９１２）、検索したトレース要素の数に基づき、図３のＳ３１４で受け付けた変更点についてプログラムを変更した場合の影響度（影響数）を求める（Ｓ９１３）。そしてプログラム分析装置１０は、求めた影響度の順（例えば影響度が小さい順）に、記憶しているインデックスをソートする（Ｓ９１４）。尚、影響度は変更点についてプログラムを変更した際のプログラムの影響範囲の大小を示す指標となる。
【００６１】
図３の影響箇所分析処理Ｓ３１５及び分析結果の表示処理Ｓ３１６について具体的に説明する。尚、以下の説明において、ソースコード２５１、記号実行サマリ２５２、及びトレース情報２５４は、いずれも図８に示した内容であるものとする。また図３のＳ３１２においてプログラムの変更点の入力方法として「記号実行サマリ」が指定されたものとし、図３のＳ３１４において、プログラムの変更点として、図５に示すようにパス制約「！（γ＜ ０） ＆ β＜０」に対応する変数状態「ａ＝γ−β」を「ａ＝−β」とする入力を受け付けているものとする。
【００６２】
まずプログラム分析装置１０は、図３のＳ３１４で受け付けた変更点について、図３のＳ３１３で生成したトレース情報２５４から、変更点に関係するトレース要素を特定し、特定したトレース要素のインデックスを記憶する（Ｓ９１１）。
【００６３】
ここでは、プログラム分析装置１０は、変更点に対応するトレース要素として、まずその処理内容が変更点として指定された変数「ａ」についての「代入」である、トレース情報３１６０のインデックスが「３３５０」のトレース要素（前述したトレース要素Ａに相当）を特定し、当該トレース要素のインデックス「３３５０」を記憶する。
【００６４】
またプログラム分析装置１０は、特定したトレース要素Ａの上位のトレース要素のうちその処理内容が「分岐」である、インデックスが「３３４０」のトレース要素（前述したトレース要素Ｂに相当）を特定し、そのインデックス「３３４０」を記憶する。
【００６５】
またプログラム分析装置１０は、特定したトレース要素Ａの上位のトレース要素のうちその処理内容が「代入」である、インデックスが「３３３０」のトレース要素（前述したトレース要素Ｂに相当）を特定し、そのインデックス「３３３０」を記憶する。
【００６６】
またプログラム分析装置１０は、特定したトレース要素Ａの上位のトレース要素のうちその処理内容が「分岐」である、インデックスが「３３２０」のトレース要素（前述したトレース要素Ｂに相当）を特定し、そのインデックス「３３２０」を記憶する。
【００６７】
続いてプログラム分析装置１０は、全てのトレース情報３１４０〜３１７０を対象として、Ｓ９１１で記憶したインデックスごとに、記憶したインデックスのトレース要素のブロック番号と同じブロック番号のトレース要素を検索し（Ｓ９１２）、その結果検索されたトレース要素の数に基づき、記憶したインデックスごとに影響度を求める（Ｓ９１３）。
【００６８】
まずインデックスが「３３５０」のトレース要素のブロック番号である「３０７０」と同じブロック番号のトレース要素は、トレース情報３１４０及びトレース情報３１６０の２つのトレース情報２５４に含まれているので、プログラム分析装置１０は、インデックス「３３５０」について影響度を「２」とする。
【００６９】
またインデックスが「３３４０」のトレース要素の処理内容３１４２は「分岐」であるので、プログラム分析装置１０は、そのブロック番号「３０６０」のトレース要素を含む各トレース情報について、ブロック番号「３０６０」のトレース要素よりも下位のトレース要素（当該トレース要素及び当該トレース要素に対応する処理が実行された後に実行される処理に対応するトレース要素）の数の合計を影響度に加算する。即ちトレース情報３１４０について「２」、トレース情報３１５０について「２」、トレース情報３１６０について「２」、トレース情報３１７０について「２」とし、プログラム分析装置１０はこれらを積算してインデックスが「３３４０」について影響度を「２＋２＋２＋２＝８」とする。
【００７０】
またインデックスが「３３３０」のトレース要素の処理内容３１４２「代入」であり、同じブロック番号「３０５０」のトレース要素は、トレース情報３１６０及びトレース情報３１７０の２つに含まれているので、プログラム分析装置１０は、インデックス「３３３０」について影響度を「２」とする。
【００７１】
またインデックスが「３３２０」のトレース要素の処理内容３１４２は「分岐」であるので、プログラム分析装置１０は、そのブロック番号「３０３０」のトレース要素を含む各トレース情報について、ブロック番号「３０３０」のトレース要素よりも下位のトレース要素の数の合計を影響度に加算する。即ちプログラム分析装置１０は、トレース情報３１４０について「４」、トレース情報３１５０について「４」、トレース情報３１６０について「４」、トレース情報３１７０について「４」とし、これらを積算してインデックスが「３３２０」について影響度を「４＋４＋４＋４＝１６」とする。
【００７２】
そしてプログラム分析装置１０は、以上のようにして求めた各インデックスの影響度を比較し、記憶しているインデックスを影響度の順にソートする（Ｓ９１４）。本例では、プログラム分析装置１０は、影響度の小さい順、即ち「３３５０」、「３３３０」、「３３４０」、「３３２０」の順にインデックスをソートしている。
【００７３】
［分析結果表示画面］
図１０〜図１３に、図３のＳ３１６においてプログラム分析装置１０が分析結果として表示装置１４に表示する画面例（以下、夫々、分析結果表示画面１０００〜１３００とも称する。）を示す。ユーザは分析結果表示画面１０００〜１３００に設けられている候補選択欄５０１０を操作することで、図１０〜図１３の画面間で表示を切り換えることができる。候補選択欄５０１０の「候補１」〜「候補４」の並び順は図９のＳ９１４におけるソートの結果に対応している。
【００７４】
図１０は、候補選択欄５０１０にて「候補１」が選択された場合に表示される画面（分析結果表示画面１０００）であり、インデックスが「３３５０」のトレース要素に対応する画面である。また図１１は、「候補２」が選択された場合に表示される画面（分析結果表示画面１１００）であり、インデックスが「３３３０」のトレース要素に対応する画面である。また図１２は、「候補３」が選択された場合に表示される画面（分析結果表示画面１２００）であり、インデックスが「３３４０」のトレース要素に対応する画面である。また図１３は、「候補４」が選択された場合に表示される画面（分析結果表示画面１３００）であり、インデックスが「３３２０」のトレース要素に対応する画面である。
【００７５】
分析結果表示画面１０００〜１３００の夫々の表示欄５０２０には、図９のＳ９１１で記憶した各インデックス「３３５０」、「３３３０」、「３３４０」、「３３２０」によって特定されるソースコード影響箇所が強調表示される。また分析結果表示画面１０００〜１３００の表示欄５０３０には、上記各インデックスから特定される記号実行サマリ影響箇所が強調表示される。
【００７６】
例えば、インデックス「３３５０」のブロック要素のブロック番号は、図８に示すように「３０７０」であるので、図１０に示す分析結果表示画面１０００では、ブロック番号「３０７０」に対応する、ソースコードの「ａ＝ａ−ｂ；」の部分がソースコード影響箇所として太字で強調表示されている。またブロック番号「３０７０」のブロック要素は、図８に示すようにトレース情報３１４０，３１６０に含まれているので、分析結果表示画面１０００では、これらに対応する記号実行サマリＥ１１４，Ｅ１１６が記号実行サマリ影響箇所として太枠線で強調表示されている。
【００７７】
また例えば、インデックス「３３３０」のブロック要素のブロック番号は、図８に示すように「３０５０」であるので、図１１に示す分析結果表示画面１１００では、ブロック番号「３０５０」に対応する、ソースコードの「ａ＝ｃ；」の部分がソースコード影響箇所として太字で強調表示されている。またブロック番号「３０５０」のブロック要素は、図８に示すようにトレース情報３１６０，３１７０に含まれているので、分析結果表示画面１１００では、これらに対応する記号実行サマリＥ１１６，Ｅ１１７が記号実行サマリ影響箇所として太枠線で強調表示されている。
【００７８】
また例えば、インデックス「３３４０」のブロック要素のブロック番号は、図８に示すように「３０６０」であるので、図１２に示す分析結果表示画面１２００では、ブロック番号「３０６０」に対応する、ソースコードの「if (b < 0) {」，「} else {」，「}」の部分がソースコード影響箇所として太字で強調表示されている。またブロック番号「３０６０」のブロック要素は、図８に示すようにトレース情報３１４０〜３１７０に含まれているので、分析結果表示画面１２００では、これらに対応する記号実行サマリＥ１１４〜Ｅ１１７が記号実行サマリ影響箇所として太枠線で強調表示されている。
【００７９】
また例えば、インデックス「３３２０」のブロック要素のブロック番号は、図８に示すように「３０３０」であるので、図１３に示す分析結果表示画面１３００では、ブロック番号「３０３０」に対応する、ソースコードの「if (c < 0) {」，「else {」，「}」の部分がソースコード影響箇所として太字で強調表示されている。またブロック番号「３０３０」のブロック要素は、図８に示すようにトレース情報３１４０〜３１７０に含まれているので、分析結果表示画面１３００では、これらに対応する記号実行サマリＥ１１４〜Ｅ１１７が記号実行サマリ影響箇所として太枠線で強調表示されている。
【００８０】
尚、分析結果の表示の態様は以上に示したものに限られず、例えば、強調表示の方法は、網掛、下線、斜体字、フォントの変更、文字色の変更等、他の方法であってもよい。また図１０〜図１３では、変更点、ソースコードの影響箇所、及び記号実行サマリの影響箇所を一つの画面に表示しているが、表示の態様はこれに限定される、個別にもしくは他の組み合わせで表示してもよい。
【００８１】
以上では、図４に示したソースコード及び変更点の入力方法の指定画面４００において、変更点の入力方法として記号実行サマリ４２１が指定された場合について例示したが、変更点の入力方法として決定表４２２が指定された場合、プログラム分析装置１０は、例えば、図１４に示すような分析結果表示画面１４００を表示する。また変更点の入力方法としてソースコード４２３が指定された場合、プログラム分析装置１０は、例えば、図１５に示すような分析結果表示画面１５００を表示装置１４に表示する。尚、分析結果表示画面１５００に更に決定表の影響箇所を表示するようにしてもよい。
【００８２】
以上に説明したように、本実施形態のプログラム分析装置１０は、入力されたプログラムの変更点に対して迅速かつ適切にプログラムの影響箇所を自動的に特定して表示（可視化）するので、例えば、ユーザは既存のプログラムを新しい仕様に対応させるための改変に伴うプログラムの影響箇所（影響範囲）を効率よく正確に洗い出すことができる。このため、ソフトウエアの開発効率及びソフトウエアの信頼性を向上することができる。
【００８３】
またプログラム分析装置１０は、ソースコード、記号実行により得られる記号実行サマリやトレース情報に基づき、プログラムの影響箇所を特定するので、効率よく影響箇所を特定することができる。とくにプログラム分析装置１０は、変更点に係る変数について「代入」を行っているトレース要素であるトレース要素や、当該トレース要素に対応する処理が実行される前に実行される処理に対応するトレース要素のうちその処理内容が「分岐」又は「代入」であるトレース要素等を特定してプログラムの影響箇所を特定するので、影響箇所を正確に特定することができる。
【００８４】
またプログラム分析装置１０は、記号実行サマリ、決定表、及びソースコードのいずれかに対する変更操作を受け付けることによりプログラムの変更点の入力を受け付けるので、ユーザに変更点を入力するための多様なユーザインタフェースを提供することができる。そのため、ユーザは多様な視点からプログラムの仕様を検討することができ、バグ等の不具合の混入を防いでプログラムの信頼性を確保することができる。
【００８５】
またプログラム分析装置１０は、特定したトレース要素の夫々について、トレース情報を構成しているトレース要素のうち処理ブロックが共通するものを特定し、特定したトレース要素の数に基づき変更点についてプログラムを修正した場合の影響度を求め、影響度に応じた順序で特定したトレース要素の夫々に対応する影響箇所を表示するので、ユーザは変更のバリエーションの夫々の影響度を考慮しつつ、プログラムの変更方法として適切なものを選択することができる。
【００８６】
尚、本発明は上記した実施例に限定されるものではなく、他の様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００８７】
例えば、プログラムに用いられている変数の「代入」に関する変更点をユーザから受け付けた場合、プログラム分析装置１０がプログラムの影響箇所を特定するとともに変更後のプログラム（例えばソースコード）を自動生成するようにしてもよい。
【００８８】
また上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウエアで実現してもよい。また上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウエアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【００８９】
また制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００９０】
Ｅ１０１  ソースコード、  Ｅ１０２  構造グラフ、  Ｅ１１４〜Ｅ１１７  記号実行サマリ、  Ｅ１２０  実行木、  １０  プログラム分析装置、  １２  記憶装置、  １３  入力装置、  １４  表示装置、  ２１１  記号実行処理ＰＧ、  ２２１  変更点受付ＰＧ、  ２３１  ソースコード影響箇所分析ＰＧ、  ２３２  記号実行サマリ影響箇所分析ＰＧ、  ２４１  ソースコード影響箇所出力ＰＧ、  ２４２  記号実行サマリ影響箇所出力ＰＧ、  ２５１  ソースコード、  ２５２  記号実行サマリ、  ２５３  決定表、  ２５４  トレース情報、  ３１４０〜３１７０  トレース情報、  ３０１０〜３０８０  ブロック番号、  ３１４１  ブロック番号、  ３１４２  処理内容、  ３１４３  変数値、  ２５５  分析結果、  ４００  ソースコード及び変更点の入力方法の指定画面、  ５００  変更点入力受付画面（記号実行サマリ）、  ６００  変更点入力受付画面（決定表）、  ７００  変更点入力受付画面（ソースコード）、  １０００〜１５００  分析結果表示画面、Ｓ３００  プログラム分析処理、  Ｓ９００  影響箇所分析処理
【図２】
2015133031.tif 000003
【図３】
2015133031.tif 000004
【図４】
2015133031.tif 000005
【図５】
2015133031.tif 000006
【図６】
2015133031.tif 000007
【図７】
2015133031.tif 000008
【図８】
2015133031.tif 000009
【図９】
2015133031.tif 000010
【図１０】
2015133031.tif 000011
【図１１】
2015133031.tif 000012
【図１２】
2015133031.tif 000013
【図１３】
2015133031.tif 000014
【図１４】
2015133031.tif 000015
【図１５】
2015133031.tif 000016
【図１】
2015133031.tif 000017