(57)【要約】      （修正有）【課題】データ領域の変遷を容易に把握できるようにする技術を提供する。【解決手段】データ変遷可視化装置１０の処理部１２は、解析対象となる対象プログラムのソースコードを取得し、ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を表示部１５に表示させる。【選択図】図１
2019200561.tif 000002
【特許請求の範囲】
【請求項１】
対象プログラムの処理に伴うデータ領域の変遷を可視化するデータ変遷可視化装置であって、
前記対象プログラムの処理を解析する処理部と、
前記処理部による解析結果を示す画面を表示する表示部と、を有し、
前記処理部は、
前記対象プログラムのソースコードを取得し、
前記ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、
前記データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、
前記描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を前記表示部に表示させるように構成されている、
データ変遷可視化装置。
【請求項２】
前記処理部は、前記データ領域についてバイト毎に所定図形のノードで表現し、各ノードを、該ノードに係るデータ領域に関連する処理行の順に上から下に向かって並ぶように配置した前記データ変遷画面を表示させるように構成されている、
請求項１に記載のデータ変遷可視化装置。
【請求項３】
前記処理部は、各ノードを、該ノードに係るデータ領域のアドレスの順に左から右に向かって並び、かつ、アドレスが同一となるデータ領域に係るノードが上下方向に並ぶように配置した前記データ変遷画面を表示させるように構成されている、
請求項２に記載のデータ変遷可視化装置。
【請求項４】
前記データ領域には、前記対象プログラムで使用される変数が格納され、
前記処理部は、前記変数を格納するデータ領域に係る複数のノードを所定図形でグループにまとめ、前記変数を格納するデータ領域の変遷を前記グループ間を結ぶ矢印で表現した前記データ変遷画面を表示させるように構成されている、
請求項３に記載のデータ変遷可視化装置。
【請求項５】
前記処理部は、前記ノードに係るデータ領域に関連する処理行を示す情報を該ノードの横に並ぶように配置した前記データ変遷画面を表示させるように構成されている、
請求項２〜４のいずれか一項に記載のデータ変遷可視化装置。
【請求項６】
前記処理部は、前記データ領域の状態について不定値、動的値または静的値に区分し、前記ノードについて前記状態毎に異なる態様で表現した前記データ変遷画面を表示させるように構成されている、
請求項２〜５のいずれか一項に記載のデータ変遷可視化装置。
【請求項７】
ユーザが操作を入力する入力部をさらに有し、
前記処理部は、前記データ変遷画面におけるノードを選択する操作が前記入力部に入力されると、前記選択されたノードを含むグループから矢印を逆方向に辿れる部分を識別可能に表現した前記データ変遷画面を表示させる、
請求項４に記載のデータ変遷可視化装置。
【請求項８】
対象プログラムの処理に伴うデータ領域の変遷を可視化するためのデータ変遷可視化方法であって、
前記対象プログラムのソースコードを取得し、
前記ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、
前記データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、
前記描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を表示部に表示させる、
ことをコンピュータが実行するデータ変遷可視化方法。
【請求項９】
対象プログラムの処理に伴うデータ領域の変遷を可視化するためのデータ変遷可視化プログラムであって、
前記対象プログラムのソースコードを取得し、
前記ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、
前記データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、
前記描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を表示部に表示させる、
ことをコンピュータに実行させるためのデータ変遷可視化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、対象プログラムの処理に伴うデータ領域の変遷を可視化する技術に関する。
【背景技術】
【０００２】
従来型設計の大規模なコンピュータシステム（レガシーシステム）を新規のコンピュータシステムにリプレース（置き換え）する需要がある。このようなリプレースにおいて、実装言語をＣＯＢＯＬ等の従来型の言語（レガシー言語）から、Ｊａｖａ（登録商標）などのモダン言語に移行することが求められることが多い。
【０００３】
レガシー言語とモダン言語との間には、例えば、バイト操作のような低レベルの処理などに差異がある。そのため、実装言語をレガシー言語からモダン言語へ移行するときに、上記差異を原因とした不具合が生じることがある。そして、このような不具合は、バイナリエディタを用いて変数などが格納されるデータ領域の状態を確認しながらデバッグを行う必要があるため、多くの工数がかかる。
【０００４】
このようなデバッグに応用可能な技術が特許文献１に開示されている。特許文献１は、ソフトウェアの構成や処理概要に関する情報を変数依存関係の観点からユーザに提供する技術に関するものである。特許文献１には以下のように記載されている。構文解析手段は、ソースコードを解析して構文情報を出力する。変数依存関係解析手段は、制御フロー導出手段、代入依存関係導出手段、データ依存関係導出手段、制御依存関係導出手段、変数依存関係導出手段からなる。制御フロー導出手段は、前記構文情報から制御フローを出力する。代入依存関係導出手段、データ依存関係導出手段、制御依存関係導出手段は、前記制御フローから記述位置で区別される２変数間の代入依存関係、データ依存関係、制御依存関係を出力する。変数依存関係導出手段は、前記代入依存関係と前記データ依存関係と前記制御依存関係とから複数ステートメント間に渡る変数依存関係を出力する。変数依存関係表示手段は、前記変数依存関係をグラフとして表示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１５６７８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されている技術は、ソースコードを基に変数単位で変数同士の依存関係を求め、求めた変数同士の依存関係をグラフで表示するものである。そのため、変数の状態の変遷を把握することはできるが、変数が格納されるデータ領域の変遷を把握することには利用できない。
【０００７】
本発明の目的は、データ領域の変遷を容易に把握できるようにする技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るデータ変遷可視化装置は、対象プログラムの処理に伴うデータ領域の変遷を可視化するデータ変遷可視化装置であって、前記対象プログラムの処理を解析する処理部と、前記処理部による解析結果を示す画面を表示する表示部と、を有し、前記処理部は、前記対象プログラムのソースコードを取得し、前記ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、前記データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、前記描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を前記表示部に表示させるように構成されている。
【発明の効果】
【０００９】
本発明によれば、対象プログラムのソースコードの処理行に関連するデータ領域の変遷をバイト単位で示すデータ変遷画面を表示するので、データ領域の変遷を容易に把握できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態に係るデータ変遷可視化装置のハードウェア構成の一例を示す図である。
【図２】図１に示したデータ変遷可視化装置のソフトウェア構成の一例を示す図である。
【図３】対象プログラムのソースコードの一例を示す図である。
【図４】変数及びデータ領域対応テーブルの一例を示す図である。
【図５】処理行及び変数対応テーブルの一例を示す図である。
【図６】領域状態及び色対応テーブルの一例を示す図である。
【図７】ノード情報テーブルの一例を示す図である。
【図８】グループ情報テーブルの一例を示す図である。
【図９】エッジ情報テーブルの一例を示す図である。
【図１０】変数描画情報テーブルの一例を示す図である。
【図１１】処理行描画情報テーブルの一例を示す図である。
【図１２】図１のデータ変遷可視化装置の処理部におけるデータ変遷可視化処理の一例を示すフローチャートである。
【図１３】描画情報作成プログラムの詳細処理（その１）を示すフローチャートである。
【図１４】描画情報作成プログラムの詳細処理（その２）を示すフローチャートである。
【図１５】データ変遷画面の一例を示す図である。
【図１６】データ変遷画面の他の一例を示す図である。
【発明を実施するための形態】
【００１１】
本発明の一実施形態に係るデータ変遷可視化装置について図面を参照して説明する。
【００１２】
本実施形態に係るデータ変遷可視化装置は、解析対象となる対象プログラムを仮想コンピュータで実行した場合の当該対象プログラムで使用される変数を格納するデータ領域の変遷を可視化することにより、対象プログラムの解析を支援する。仮想コンピュータ上のデータ領域は、１バイト毎にアドレスが割り当てられている。
【００１３】
図１は、本実施形態に係るデータ変遷可視化装置のハードウェア構成の一例を示す図である。
【００１４】
図１に示すようにデータ変遷可視化装置１０は、例えば、パーソナルコンピュータやサーバコンピュータなどの周知のコンピュータで構成されている。データ変遷可視化装置１０は、処理部１２と、記憶部１３と、入力部１４と、表示部１５と、を備える。
【００１５】
処理部１２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で構成されたプロセッサと、プロセッサの作業領域として用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）と、を有している。処理部１２は、記憶部１３に記録された各種プログラムをプロセッサが実行することで各種情報処理を行う。本実施形態において、処理部１２は、対象プログラムの処理を解析する。
【００１６】
記憶部１３は、例えば、ハードディスク装置で構成されており、データ変遷可視化装置１０に関するプログラム及びデータを含む各種情報を不揮発的に記憶する。本実施形態において、記憶部１３は、対象プログラムのソースコードを記憶する。
【００１７】
入力部１４は、例えば、キーボード及びマウスで構成されており、データ変遷可視化装置１０に関する操作をユーザが入力するインタフェースである。
【００１８】
表示部１５は、例えば、ディスプレイ装置で構成されており、データ変遷可視化装置１０に関する情報を出力するインタフェースである。表示部１５は、処理部１２による解析結果を示す画面を表示する。
【００１９】
図２は、図１に示したデータ変遷可視化装置のソフトウェア構成の一例を示す図である。
【００２０】
図２に示すように、データ変遷可視化装置１０は、ソースコード入力プログラム１０１と、ソースコード解析プログラム１０２と、描画情報作成プログラム１０６と、ユーザ操作入力プログラム１１５と、データ変遷画面描画プログラム１１６と、データ変遷画面表示プログラム１１７と、を有している。これらプログラム１０１、１０２、１０６、１１５、１１６、１１７は、データ変遷可視化プログラムであって、記憶部１３に記憶されており、処理部１２のプロセッサによって実行される。
【００２１】
また、データ変遷可視化装置１０は、データ領域情報格納部１０３と、描画設定情報格納部１０７と、描画情報格納部１０９と、を有している。データ領域情報格納部１０３には、変数及びデータ領域対応テーブル１０４と、処理行及び変数対応テーブル１０５と、が格納されている。これらテーブル１０４、１０５は、ソースコードの処理行毎に該処理行に関連するデータ領域を示すデータ領域情報である。描画設定情報格納部１０７には、描画設定情報である領域状態及び色対応テーブル１０８が格納されている。描画情報格納部１０９には、ノード情報テーブル１１０と、グループ情報テーブル１１１と、エッジ情報テーブル１１２と、変数描画情報テーブル１１３と、処理行描画情報テーブル１１４と、が格納されている。これらテーブル１１０〜１１４は、データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報である。これら格納部１０３、１０７、１０９は、処理部１２のＲＡＭ上に設けられている。
【００２２】
ソースコード入力プログラム１０１は、対象プログラムのソースコードを、記憶部１３から読み出すことにより取得する。図３に対象プログラムのソースコードの一例を示す。なお、データ変遷可視化装置１０をネットワークに接続して、ソースコード入力プログラム１０１が、ネットワークを通じてクラウド上に存在する対象プログラムのソースコードを取得するように構成されていてもよい。
【００２３】
ソースコード解析プログラム１０２は、ソースコード入力プログラム１０１が読み出した対象プログラムのソースコードを解析し、変数及びデータ領域対応テーブル１０４と、処理行及び変数対応テーブル１０５と、を生成して、データ領域情報格納部１０３に格納する。すなわち、ソースコード解析プログラム１０２は、ソースコードの処理行の処理に関連するデータ領域を示すデータ領域情報を生成する。
【００２４】
変数及びデータ領域対応テーブル１０４は、図４に一例を示すように、変数情報として、変数名Ｔ１０１と、開始アドレスＴ１０２と、終了アドレスＴ１０３と、を対応づけて格納している。変数名Ｔ１０１は、対象プログラムで使用される（すなわちソースコードに含まれる）変数の名前を格納する。開始アドレスＴ１０２および終了アドレスＴ１０３は、変数名Ｔ１０１に示される変数が格納されるデータ領域の開始アドレスおよび終了アドレスを格納する。図４に示す例では、変数Ｄが格納されるデータ領域のアドレスが０〜７（８バイトサイズ）であり、変数Ａが格納されるデータ領域のアドレスが０〜３（４バイトサイズ）である。他の変数についても同様である。
【００２５】
処理行及び変数対応テーブル１０５は、図５に一例を示すように、処理行情報として、処理行ＩＤＴ２０１と、処理行テキストＴ２０２と、参照変数Ｔ２０３と、更新変数Ｔ２０４と、関係変数Ｔ２０５と、を対応づけて格納している。処理行ＩＤＴ２０１は、ソースコードの処理行を一意に示す数値を格納する。処理行テキストＴ２０２は、ソースコードの処理行を示すテキスト情報を格納する。参照変数Ｔ２０３は、処理行の処理において参照される変数名を格納する。更新変数Ｔ２０４は、処理行の処理において更新される変数名を格納する。関係変数Ｔ２０５は、処理行の処理において条件として用いられるなどの処理に関係する変数名を格納する。処理行及び変数対応テーブル１０５に格納された処理行情報は、ソースコードの処理行の並び順に上から下に並べられている。参照変数Ｔ２０３、更新変数Ｔ２０４及び関係変数Ｔ２０５は、これらに対応する変数が処理行テキストＴ２０２に含まれる場合のみ格納される。図５に示す例において、例えば、処理行ＩＤＴ２０１＝「０」で特定される処理行には、「初期状態」を示す処理行テキストＴ２０２が対応づけられている。処理行ＩＤＴ２０１＝「１」で特定される処理行は、「００２９００  ＭＯＶＥ  １  ＴＯ  Ａ．」となる処理行テキストＴ２０２と、変数名「Ａ」となる更新変数Ｔ２０４とが対応づけられている。他の処理行ＩＤＴ２０１についても同様である。
【００２６】
描画情報作成プログラム１０６は、データ領域情報格納部１０３に格納された変数及びデータ領域対応テーブル１０４並びに処理行及び変数対応テーブル１０５と、描画設定情報格納部１０７に格納された領域状態及び色対応テーブル１０８と、に基づいて、描画情報を作成し、描画情報格納部１０９に格納する。すなわち、描画情報作成プログラム１０６は、データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成する。
【００２７】
領域状態及び色対応テーブル１０８は、図６に一例を示すように、領域状態情報として、領域状態Ｔ３０１と、色Ｔ３０２とを対応づけて格納している。領域状態Ｔ３０１は、変数を格納するデータ領域の状態（種別）を示す情報として、初期状態からデータ領域の更新がないことを示す「不定値」と、他の変数が格納されたことを示す「動的値」と、直値が格納されたことを示す「静的値」と、を格納する。色Ｔ３０２は、領域状態Ｔ３０１に格納された状態に対応する色を格納し、「不定値」、「動的値」及び「静的値」に対応して、「灰」、「オレンジ」及び「青」を格納する。なお、データ領域の状態を、ノードの色ではなく、ノードの形状などで示すようにしてもよい。
【００２８】
ノード情報テーブル１１０は、図７に一例を示すように、ノード情報として、ノードＩＤＴ４０１と、対応アドレスＴ４０２と、対応処理行ＩＤＴ４０３と、中心座標Ｔ４０４と、大きさＴ４０５と、形状Ｔ４０６と、色Ｔ４０７と、表示フラグＴ４０８と、を対応づけて格納している。ここで、「ノード」とは、データ領域の各バイトを表現する所定図形であり、本実施形態においては、円形（丸）の図形である。ノードには、データ領域のアドレスの小さい方から順に番号を示す数字（１〜ｎ）振られており、この数字を円形の図形で囲んでいる。ノードＩＤＴ４０１は、ノードを一意に示す数値を格納する。対応アドレスＴ４０２は、データ領域におけるノードに対応するアドレスを格納する。対応処理行ＩＤＴ４０３は、ノードに対応する処理行を特定する処理行ＩＤを格納する。中心座標Ｔ４０４は、図１５に一例を示すデータ変遷画面Ｇにおけるノードの中心座標を格納する。大きさＴ４０５は、ノードの大きさ（径）を示す。形状Ｔ４０６は、ノードの形状を示す。本実施形態では、各ノードを円形としているが、これ以外にも、四角形や三角形、星形などその形状は任意である。色Ｔ４０７は、ノードの色を格納する。色Ｔ４０７は、領域状態及び色対応テーブル１０８の色Ｔ３０２に対応しており、ノードに対応するデータ領域の状態を示す色を格納する。表示フラグＴ４０８は、データ変遷画面Ｇにおけるノードの表示・非表示を示す情報（フラグ）を格納する。
【００２９】
グループ情報テーブル１１１は、図８に一例を示すように、グループ情報として、グループＩＤＴ５０１と、グループ種別Ｔ５０２と、開始ノードＩＤＴ５０３と、終了ノードＩＤＴ５０４と、線スタイルＴ５０５と、色Ｔ５０６と、表示フラグＴ５０７と、を対応づけて格納している。ここで「グループ」とは、処理行の処理に関連する変数が格納されるデータ領域に対応する複数のノードをまとめたものである。グループＩＤＴ５０１は、グループを一意に示す数値を格納する。グループ種別Ｔ５０２は、処理行の処理との関係を示す情報を格納する。具体的には、グループ種別Ｔ５０２は、処理行の処理において参照される場合は「参照」を示す情報を格納し、処理行の処理において更新される場合は「更新」を格納し、処理行の処理において条件として用いられる場合は「関係」を格納する。開始ノードＩＤＴ５０３は、グループの先頭のノード（最も小さいアドレスのノード）を特定するノードＩＤを格納する。終了ノードＩＤＴ５０４は、グループの末尾のノード（最も大きいアドレスのノード）を特定するノードＩＤを格納する。線スタイルＴ５０５は、グループを示す図形の線のスタイルを示す情報を格納する。本実施形態において、グループを示す図形は、上向きカッコ及び下向きカッコである。線スタイルＴ５０５は、「実線」および「破線」を格納する。色Ｔ５０６は、グループの図形の色を格納する。表示フラグＴ５０７は、データ変遷画面Ｇにおけるグループを示す図形の表示・非表示を示す情報（フラグ）を格納する。
【００３０】
エッジ情報テーブル１１２は、図９に一例を示すように、エッジ情報として、エッジＩＤＴ６０１と、始端グループＩＤＴ６０２と、終端グループＩＤＴ６０３と、太さＴ６０４と、線スタイルＴ６０５と、色Ｔ６０６と、表示フラグＴ６０７と、を対応づけて格納している。ここで「エッジ」とは、グループとグループとを接続する矢印であり、矢印の向きによりグループ（すなわちデータ領域）の変遷方向（時系列方向）を表現している。エッジＩＤＴ６０１は、エッジを一意に示す数値を格納する。始端グループＩＤＴ６０２は、エッジの始端となるグループを特定するグループＩＤを格納する。終端グループＩＤＴ６０３は、エッジの終端となるグループを特定するグループＩＤを格納する。太さＴ６０４は、エッジの太さを示す情報を格納する。色Ｔ６０６は、エッジの色を格納する。表示フラグＴ６０７は、データ変遷画面Ｇにおけるエッジの表示・非表示を示す情報（フラグ）を格納する。
【００３１】
変数描画情報テーブル１１３は、図１０に一例を示すように、変数描画情報として、変数ＩＤＴ７０１と、変数名Ｔ７０２と、左上座標Ｔ７０３と、右下座標Ｔ７０４と、表示フラグＴ７０５と、を対応づけて格納している。変数ＩＤＴ７０１は、対象プログラムで使用される（すなわちソースコードに含まれる）変数を一意に示す数値を格納する。変数名Ｔ７０２は、変数の名前を格納する。左上座標Ｔ７０３は、データ変遷画面Ｇにおける変数ラベル（符号Ｌ１０１〜Ｌ１０４で示す）の左上座標を格納する。ここで「変数ラベル」とはノードに対応する変数を矩形で囲った図形である。右下座標Ｔ７０４は、データ変遷画面Ｇにおける変数ラベルの右下座標を格納する。表示フラグＴ７０５は、データ変遷画面Ｇにおける変数ラベルの表示・非表示を示す情報（フラグ）を格納する。
【００３２】
処理行描画情報テーブル１１４は、図１１に一例を示すように、処理行描画情報として、処理行ＩＤＴ８０１と、処理行内容Ｔ８０２と、中心座標Ｔ８０３と、色Ｔ８０４と、表示フラグＴ８０５と、を対応づけて格納している。処理行ＩＤＴ８０１は、処理行を特定する処理行ＩＤを格納する。処理行内容Ｔ８０２は、処理行ＩＤに対応する処理行テキストＴ２０２を格納する。中心座標Ｔ８０３は、データ変遷画面Ｇにおける処理行ラベル（符号Ｌ２０１〜Ｌ２０７で示す）の中心座標を格納する。ここで「処理行ラベル」とは、ソースコードの処理行の内容（処理行テキスト）を矩形で囲った図形である。処理行ラベルは、処理行に対応するノードの左横に並べて配置される。色Ｔ８０４は、処理行ラベルの色を格納する。表示フラグＴ６０７は、データ変遷画面Ｇにおける処理行ラベルの表示・非表示を示す情報（フラグ）を格納する。
【００３３】
ユーザ操作入力プログラム１１５は、入力部１４に入力されたユーザ操作を受け付ける。
【００３４】
データ変遷画面描画プログラム１１６は、描画情報格納部１０９に格納されている描画情報およびユーザ操作入力プログラム１１５が受け付けたユーザ操作に基づいて、データ変遷画面Ｇに係る画面情報を生成（描画）する。
【００３５】
データ変遷画面表示プログラム１１７は、データ変遷画面描画プログラム１１６が描画した画面情報（すなわち、描画情報）に基づいて、表示部１５にデータ領域の変遷をバイト単位で示すデータ変遷画面Ｇを表示させる。
【００３６】
次に、処理部１２における本発明に係る処理の一例について、図１２〜図１４のフローチャートを参照して説明する。なお、図１２のフローチャートにおいては、プログラムを主体とした動作として示している。
【００３７】
図１２に示すように、処理部１２は、ソースコード入力プログラム１０１を実行することにより、記憶部１３に記憶されている対象プログラムを取得する（Ｓ１０１）。処理部１２は、ソースコード解析プログラム１０２を実行することにより、取得したソースコードを解析して、データ領域情報（変数及びデータ領域対応テーブル１０４、処理行及び変数対応テーブル１０５）を生成して、データ領域情報格納部１０３に格納する（Ｓ１０２）。
【００３８】
次に、処理部１２は、描画情報生成プログラムを実行することにより、データ領域情報及び描画設定情報（領域状態及び色対応テーブル１０８）に基づいて、描画情報（ノード情報テーブル１１０、グループ情報テーブル１１１、エッジ情報テーブル１１２、変数描画情報テーブル１１３、処理行描画情報テーブル１１４）を生成して、描画情報格納部１０９に格納する（Ｓ１０３）。
【００３９】
描画情報生成プログラムの処理（Ｓ１０３）について、図１３に詳細を示す。
【００４０】
処理部１２は、描画情報生成プログラムを実行すると、初期状態におけるデータ領域をバイト毎に表すノード情報を作成してノード情報テーブル１１０に格納する（Ｓ２０１）。処理部１２は、変数及びデータ領域対応テーブル１０４に基づいて、変数描画情報を生成して、変数描画情報テーブル１１３に格納する（Ｓ２０２）。そして、ソースコードの各処理行について次の解析処理を順に行う（Ｓ２０３〜Ｓ２０７）。処理部１２は、処理行及び変数対応テーブル１０５に基づいて、解析対象の処理行の処理行描画情報を生成して、処理行描画情報テーブル１１４に格納する（Ｓ２０４）。処理部１２は、変数及びデータ領域対応テーブル１０４並びに処理行及び変数対応テーブル１０５に基づいて、解析対象の処理行についてのノード情報を生成し、ノード情報テーブル１１０に格納する（Ｓ２０５）。処理部１２は、処理行及び変数対応テーブル１０５に基づいて、グループ情報およびエッジ情報を生成し、グループ情報テーブル１１１およびエッジ情報テーブル１１２に格納する（Ｓ２０６）。
【００４１】
グループ情報およびエッジ情報を生成する処理（Ｓ２０６）について、図１４に詳細を示す。
【００４２】
処理部１２は、変数及びデータ領域対応テーブル１０４と処理行及び変数対応テーブル１０５とに基づいて、解析対象の処理行が参照、更新、関係する変数を格納するデータ領域をグループとしてまとめ（グルーピングし）、グループ情報を生成してグループ情報テーブル１１１に追加する（Ｓ３０１）。処理部１２は、解析対象の処理行が参照または関係するグループを始端とし、更新するグループを終端としたエッジ情報を生成し、エッジ情報テーブル１１２に追加する（Ｓ３０２）。そして、処理部１２は、エッジの始端となるグループに「不定値」のノード（ノード情報の色Ｔ４０７が「灰」）が含まれるか判定する（Ｓ３０３）。「不定値」のノードが含まれるときには（Ｓ３０３でＹｅｓ）、エッジの終端となるグループに含まれるノードの色を「不定値」の色（「灰」）とする（Ｓ３０５）。または、「不定値」のノードが含まれないときには（Ｓ３０３でＮｏ）、エッジの始端となるグループに「動的値」のノード（ノード情報の色Ｔ４０７が「オレンジ」）が含まれるか判定する（Ｓ３０４）。「動的値」のノードが含まれるときには（Ｓ３０４でＹｅｓ）、エッジの終端となるグループに含まれるノードの色を「動的値」の色（「オレンジ」）とする（Ｓ３０６）。「動的値」のノードが含まれないときには（Ｓ３０４でＮｏ）、エッジの終端となるグループに含まれるノードの色を「静的値」の色（「青」）とする（Ｓ３０７）。
【００４３】
描画情報生成プログラムの処理（Ｓ１０３、Ｓ２０１〜Ｓ２０７、Ｓ３０１〜Ｓ３０７）を終了すると、処理部１２は、ユーザ操作入力プログラム１１５を実行することにより、ユーザによって入力部へ入力されたユーザ操作があれば、それを受け付ける（Ｓ１０４）。処理部１２は、データ変遷画面描画プログラム１１６を実行することにより、描画情報およびユーザ操作に基づいて、データ変遷画面Ｇを示す情報を生成（描画）する。そして、処理部１２は、データ変遷画面表示プログラム１１７を実行することにより、表示部１５にデータ変遷画面Ｇを表示させる（Ｓ１０６）
【００４４】
データ変遷画面Ｇの一例について、図１５を参照して説明する。
【００４５】
データ変遷画面Ｇは、処理部１２による対象プログラムの解析結果であって、表示部１５に表示される。データ変遷画面Ｇの位置は、座標（Ｘ，Ｙ）で表され、左上座標を（０，０）として、右方向に向かうにしたがってＸが増加し、下方向に向かうにしたがってＹが増加する。
【００４６】
データ変遷画面Ｇにおいて、数字を円形で囲んだ図形は、データ領域にバイト単位で対応するノードである。円形内の数字は、データ領域のアドレスの小さい方から大きい方に自然数が昇順に振られたものである。図１５において、黒のノードは「不定値」を表す「灰」色、網掛けのノードは「動的値」を表す「オレンジ」色、白のノードは「静的値」を表す「青」色を示している。すなわち、各ノードに対応するデータ領域の状態について不定値、動的値または静的値に区分し、各ノードについて状態毎に異なる色（態様）で表現している。各ノードは、データ領域の状態についてバイト毎に表現している。各ノードは、該ノードに係るデータ領域に関連する処理行の順に上から下に向かって並ぶように配置されている。
【００４７】
データ変遷画面Ｇにおいて、各ノードは、データ領域のアドレスの小さい方から順に左から右に向かって並べられている。各ノードは、アドレスが同一となるデータ領域に係るノード（すなわち円形内の数字が同じノード）が上下方向に並ぶ（左右方向の位置が揃う）ように配置されている。
【００４８】
左右方向に並ぶ複数のノードは、対応する変数毎にグループとして上向きカッコ又は下向きカッコでまとめられている。各グループは、それらの左側に並べて配置された処理行ラベルＬ２０１〜Ｌ２０７に示される処理行の処理にて参照、更新又は関係する変数に対応する。各グループは、それに含むノードに係るデータ領域に関連する処理行を示す処理行ラベルＬ２０１〜Ｌ２０７が左側に並ぶように配置されている。また、変数ラベルＬ１０１〜Ｌ１０４は、当該変数ラベルＬ１０１〜Ｌ１０４に係る変数を格納するデータ領域に対応するノードと上下方向に並ぶように配置されている。例えば、変数Ａの変数ラベルは、ノードの数字０〜３と上下方向に並ぶ（左右方向の位置が揃う）。変数Ｄの変数ラベルは、ノードの数字０〜７と上下方向に並ぶ（左右方向の位置が揃う）。
【００４９】
データ変遷画面Ｇにおいて、変数を格納するデータ領域に対応する複数のノードは、上向きカッコまたは下向きカッコでグループとしてまとめられている。また、グループを矢印のエッジで接続することにより、エッジの始端側から終端側へのデータ領域の変遷を表現している。
【００５０】
処理部１２は、ユーザにより入力部１４にいずれかのノードを選択する操作が入力されると（図１２のＳ１０４）、選択されたノードを含むグループおよび当該グループを終端とするエッジから順次さかのぼって辿れるエッジ、グループおよび当該グループに含まれるノードについて、ノード情報の表示フラグＴ４０８、グループ情報の表示フラグＴ５０７およびエッジ情報の表示フラグＴ６０７を「表示」とし、これら以外のエッジ、グループおよびノードについて、「非表示」とする。そして、再度描画情報を生成して（Ｓ１０５）、データ変遷画面Ｇを表示する（Ｓ１０６）。このようにすることで、ユーザが選択したグループ及び該グループを終端とするエッジから順にさかのぼって辿れるグループ（ノード）及びエッジのみ表示することができる。例えば、図１５に示すデータ変遷画面Ｇにおいて、処理行ラベルＬ２０６に対応するグループに含まれるノード（例：番号６のノード）を選択するユーザ操作が入力されると、図１６に示すように、選択したノードを含むグループおよびこのグループを終端とするエッジから順次さかのぼって辿れるエッジ、グループおよび当該グループに含まれるノードのみ表示し、他のエッジ、グループ、ノードを消去したデータ変遷画面を表示する。これにより、選択したノードに関連する情報のみデータ変遷画面Ｇに表示できるので、対象プログラムの解析をより効率よく行うことができる。
【００５１】
以上より、本実施形態のデータ変遷可視化装置１０は、処理部１２が、対象プログラムのソースコードを取得し、ソースコードの処理行毎に該処理行の処理に関連するデータ領域を示すデータ領域情報を生成し、データ領域情報が示すデータ領域をバイト単位で可視化するための描画情報を生成し、描画情報に基づいて、データ領域の変遷をバイト単位で示すデータ変遷画面を表示部１５に表示させる。このようにしたことから、対象プログラムのソースコードの処理行に関連するデータ領域の変遷をバイト単位で示すデータ変遷画面Ｇを表示するので、データ領域の変遷を容易に把握できる。
【００５２】
また、処理部１２が、データ領域についてバイト毎に円形のノードで表現し、各ノードを、該ノードに係るデータ領域に関連する処理行の順に上から下に向かって並ぶように配置したデータ変遷画面Ｇを表示させる。このようにすることで、ソースコードの処理行と同様に各処理行に関連するノードが上から下に向かって並ぶので、データ領域の変遷をノードの配置から直感的に把握できる。
【００５３】
また、処理部１２が、各ノードを、該ノードに係るデータ領域のアドレスの順に左から右に向かって並び、かつ、アドレスが同一となるデータ領域に係るノードが上下方向に並ぶように配置したデータ変遷画面Ｇを表示させる。このようにすることで、データの一般的表示と同様に各バイトに対応したノードが左から右へ配列され、同じアドレスのノードが縦に並んで配置されるので、データ領域の変遷をノードの配置から直感的に把握できる。
【００５４】
また、データ領域には、対象プログラムで使用される変数が格納される。そして、処理部１２が、変数を格納するデータ領域に係る複数のノードを上向きカッコまたは下向きカッコでグループにまとめ、変数を格納するデータ領域の変遷をグループ間を結ぶ矢印のエッジで表現したデータ変遷画面Ｇを表示させる。このようにすることで、変数をノードのグループで表現し、各処理行の処理に対する変数の関与を矢印で表現するので、ユーザは容易に処理行の処理を辿ることができる。
【００５５】
また、処理部１２が、ノードに係るデータ領域に関連する処理行を示す処理行ラベルを該ノードの横に並ぶように配置したデータ変遷画面Ｇを表示させる。このようにすることで、バイト単位のデータ領域の変遷を示すノードと併せて、例えば、各処理行の行番号および／または処理内容などの処理行を示す処理行ラベルを表示するので、ユーザは容易に処理行の処理とそれに伴うデータ領域の変遷を辿ることができる。
【００５６】
また、処理部１２が、データ領域の状態について不定値、動的値または静的値に区分し、ノードについて状態毎に異なる色で表現したデータ変遷画面Ｇを表示させる。このようにすることで、バイト単位でデータ領域の変遷を示すノードを状態に応じて色分け表示するので、ユーザは容易にデータ領域の状態を含むデータの変遷を辿ることができる。
【００５７】
また、ユーザが操作を入力する入力部１４を有している。そして、処理部１２が、データ変遷画面Ｇにおけるノードを選択する操作が入力部１４に入力されると、選択されたノードを含むグループから矢印を逆方向に辿れる部分を識別可能に表現したデータ変遷画面Ｇを表示させる。このようにすることで、ユーザが選択したノードを含むグループ及び当該グループに至るまでのグループ及びエッジを識別可能に表示するので、ユーザは、例えば、異常値を示したデータ領域に対応するノードを選択し、データ領域に関与した部分を遡って解析を行うことができる。
【００５８】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５９】
１０…データ変遷可視化装置、１２…処理部、１３…記憶部、１４…入力部、１５…表示部、１０１…ソースコード入力プログラム、１０２…ソースコード解析プログラム、１０３…データ領域情報格納部、１０４…変数及びデータ領域対応テーブル、Ｔ１０１…変数名、Ｔ１０２…開始アドレス、Ｔ１０３…終了アドレス、１０５…処理行及び変数対応テーブル、Ｔ２０１…処理行ＩＤ、Ｔ２０２…処理行テキスト、Ｔ２０３…参照変数、Ｔ２０４…更新変数、Ｔ２０５…関係変数、１０６…描画情報作成プログラム、１０７…描画設定情報格納部、１０８…領域状態及び色対応テーブル、Ｔ３０１…領域状態、Ｔ３０２…色、１０９…描画情報格納部、１１０…ノード情報テーブル、Ｔ４０１…ノードＩＤ、Ｔ４０２…対応アドレス、Ｔ４０３…対応処理行ＩＤ、Ｔ４０４…中心座標、Ｔ４０５…大きさ、Ｔ４０６…形状、Ｔ４０７…色、Ｔ４０８…表示フラグ、１１１…グループ情報テーブル、Ｔ５０１…グループＩＤ、Ｔ５０２…グループ種別、Ｔ５０３…開始ノードＩＤ、Ｔ５０４…終了ノードＩＤ、Ｔ５０５…線スタイル、Ｔ５０６…色、Ｔ５０７…表示フラグ、１１２…エッジ情報テーブル、Ｔ６０１…エッジＩＤ、Ｔ６０２…始端グループＩＤ、Ｔ６０３…終端グループＩＤ、Ｔ６０４…太さ、Ｔ６０５…線スタイル、Ｔ６０６…色、Ｔ６０７…表示フラグ、１１３…変数描画情報テーブル、Ｔ７０１…変数ＩＤ、Ｔ７０２…変数名、Ｔ７０３…左上座標、Ｔ７０４…右下座標、Ｔ７０５…表示フラグ、１１４…処理行描画情報テーブル、Ｔ８０１…処理行ＩＤ、Ｔ８０２…処理行内容、Ｔ８０３…中心座標、Ｔ８０４…色、Ｔ８０５…表示フラグ、１１５…ユーザ操作入力プログラム、１１６…データ変遷画面描画プログラム、１１７…データ変遷画面表示プログラム、Ｌ１０１〜Ｌ１０４…変数ラベル、Ｌ２０１〜Ｌ２０７…処理行ラベル
【図１】
2019200561.tif 000003
【図２】
2019200561.tif 000004
【図３】
2019200561.tif 000005
【図４】
2019200561.tif 000006
【図５】
2019200561.tif 000007
【図６】
2019200561.tif 000008
【図７】
2019200561.tif 000009
【図８】
2019200561.tif 000010
【図９】
2019200561.tif 000011
【図１０】
2019200561.tif 000012
【図１１】
2019200561.tif 000013
【図１２】
2019200561.tif 000014
【図１３】
2019200561.tif 000015
【図１４】
2019200561.tif 000016
【図１５】
2019200561.tif 000017
【図１６】
2019200561.tif 000018