(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2023-06-13
(45)【発行日】2023-06-21
(54)【発明の名称】ソースコードに従いコンピュータが実行しているデータ処理の様相を網羅的に可視化するためのプログラム、システム、及び、方法
(51)【国際特許分類】
G06F 11/36 20060101AFI20230614BHJP
G06F 8/75 20180101ALI20230614BHJP
【FI】
G06F11/36 164
G06F8/75
(21)【出願番号】P 2023076347
(22)【出願日】2023-05-02
【審査請求日】2023-05-10
【早期審査対象出願】
(73)【特許権者】
【識別番号】523166511
【氏名又は名称】関 敏夫
(74)【代理人】
【識別番号】110000752
【氏名又は名称】弁理士法人朝日特許事務所
(72)【発明者】
【氏名】関 敏夫
【審査官】今城 朋彬
(56)【参考文献】
【文献】米国特許第11494295(US,B1)
【文献】特開2017-4282(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F11/36
G06F 8/75
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
コンパイル済みのプログラムのソースコードを構成する複数の行の各々に行番号である第1行番号を付与する処理と、
前記ソースコードに含まれる複数の行の各々に関し、当該行が単一の構文である場合は当該構文の種別である構文種別を特定し、当該行が複数の構文である場合は当該複数の構文を複数の単一の構文に分解した後、当該複数の単一の構文の各々の種別である構文種別を特定する処理と、
前記ソースコードに含まれる複数の行の各々に関し、当該行の次に実行される行の行番号である第2行番号を特定する処理と、
前記ソースコードに含まれる複数の構文のうち前記構文種別を特定する処理において特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が真である場合に実行される行の行番号である第3行番号と、当該条件文が示す条件が偽である場合に実行される行の行番号である第4行番号と、当該条件文の行と対となる終了行の行番号である第5行番号と、当該終了行の次の行の行番号である第6行番号とを特定する処理と、
前記構文種別を特定する処理において特定された構文種別が変数の生成を伴う命令文である行を特定し、特定した行の各々に関し、当該行の命令文により生成される変数を主語として特定するとともに、当該主語の領域を宣言している行の行番号と、当該主語の生成を命じる行の行番号とを成分とする第1座標を特定する処理と、
前記構文種別を特定する処理において特定された構文種別が実行順序を指定する命令文である行を特定し、特定した行の各々に関し、当該行の行番号を成分とする第2座標を特定する処理と、
前記主語を特定する処理において特定された主語の各々に関し、当該主語の生成に用いられる主語である変数主語を特定する処理と、
前記ソースコードと、前記第1行番号乃至前記第6行番号と、前記第1座標と、前記第2座標と、特定した主語と当該主語の生成に用いられる変数主語の対応関係とを示すデータとを、可視化プログラムに入力されるデータとして生成する処理と
を実行させるためのプログラム。
【請求項2】
前記可視化プログラムを実行中の前記コンピュータに、
前記可視化プログラムに入力されるデータを用いて前記ソースコードの実行経路とデータの参照関係とを表す図を表示装置に表示させる処理
を実行させるための請求項1に記載のプログラム。
【請求項3】
前記コンピュータに、
前記可視化プログラムに入力されるデータに基づき、前記ソースコードに含まれる複数の構文の各々に関し、当該構文が、参照先及び参照元のいずれも存在しない構文、参照元は存在するが参照先が存在しない構文、参照先は存在するが参照元が存在しない構文、及び、自らの構文を参照する構文、参照元が実行命令順序に従う参照元のみである構文、のいずれであるかを正統性確認用情報として特定する処理と、
前記ソースコードに含まれる複数の構文の中から、前記構文種別と前記正統性確認用情報との組み合わせに基づき、確認を要する構文を抽出する処理と
を実行させるための請求項1に記載のプログラム。
【請求項4】
前記可視化プログラムを実行中の前記コンピュータに、
前記可視化プログラムに入力されるデータを用いて前記ソースコードの実行経路を表す図であり、前記抽出する処理において抽出された確認を要する構文に応じた部分を他の部分と異なる態様で表す図を表示装置に表示させる処理
を実行させるための請求項3に記載のプログラム。
【請求項5】
前記コンピュータに、
前記主語を特定する処理において特定された主語の各々に関し、当該主語のデータ型を特定する処理を実行させ、
前記可視化プログラムに入力されるデータを生成する処理において、前記データ型を示すデータを含む前記可視化プログラムに入力されるデータを生成させ、
前記可視化プログラムを実行中の前記コンピュータに、
前記可視化プログラムに入力されるデータを用いて前記ソースコードの実行経路とデータの参照関係と前記主語のデータ型とを表す図を表示装置に表示させる処理
を実行させるための請求項1に記載のプログラム。
【請求項6】
プログラムを実行することにより、
コンパイル済みのプログラムのソースコードを構成する複数の行の各々に行番号である第1行番号を付与する処理と、
前記ソースコードに含まれる複数の行の各々に関し、当該行が単一の構文である場合は当該構文の種別である構文種別を特定し、当該行が複数の構文である場合は当該複数の構文を複数の単一の構文に分解した後、当該複数の単一の構文の各々の種別である構文種別を特定する処理と、
前記ソースコードに含まれる複数の行の各々に関し、当該行の次に実行される行の行番号である第2行番号を特定する処理と、
前記ソースコードに含まれる複数の構文のうち前記構文種別を特定する処理において特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が真である場合に実行される行の行番号である第3行番号と、当該条件文が示す条件が偽である場合に実行される行の行番号である第4行番号と、当該条件文の行と対となる終了行の行番号である第5行番号と、当該終了行の次の行の行番号である第6行番号とを特定する処理と、
前記構文種別を特定する処理において特定された構文種別が変数の生成を伴う命令文である行を特定し、特定した行の各々に関し、当該行の命令文により生成される変数を主語として特定するとともに、当該主語の領域を宣言している行の行番号と、当該主語の生成を命じる行の行番号とを成分とする第1座標を特定する処理と、
前記構文種別を特定する処理において特定された構文種別が実行順序を指定する命令文である行を特定し、特定した行の各々に関し、当該行の行番号を成分とする第2座標を特定する処理と、
前記主語を特定する処理において特定された主語の各々に関し、当該主語の生成に用いられる主語である変数主語を特定する処理と、
前記ソースコードと、前記第1行番号乃至前記第6行番号と、前記第1座標と、前記第2座標と、特定した主語と当該主語の生成に用いられる変数主語の対応関係とを示すデータとを、可視化プログラムに入力されるデータとして生成する処理と
を行うシステム。
【請求項7】
コンピュータが、
コンパイル済みのプログラムのソースコードを構成する複数の行の各々に行番号である第1行番号を付与するステップと、
前記ソースコードに含まれる複数の行の各々に関し、当該行が単一の構文である場合は当該構文の種別である構文種別を特定し、当該行が複数の構文である場合は当該複数の構文を複数の単一の構文に分解した後、当該複数の単一の構文の各々の種別である構文種別を特定するステップと、
前記ソースコードに含まれる複数の行の各々に関し、当該行の次に実行される行の行番号である第2行番号を特定するステップと、
前記ソースコードに含まれる複数の構文のうち前記構文種別を特定するステップにおいて特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が真である場合に実行される行の行番号である第3行番号と、当該条件文が示す条件が偽である場合に実行される行の行番号である第4行番号と、当該条件文の行と対となる終了行の行番号である第5行番号と、当該終了行の次の行の行番号である第6行番号とを特定するステップと、
前記構文種別を特定するステップにおいて特定された構文種別が変数の生成を伴う命令文である行を特定し、特定した行の各々に関し、当該行の命令文により生成される変数を主語として特定するとともに、当該主語の領域を宣言している行の行番号と、当該主語の生成を命じる行の行番号とを成分とする第1座標を特定するステップと、
前記構文種別を特定するステップにおいて特定された構文種別が実行順序を指定する命令文である行を特定し、特定した行の各々に関し、当該行の行番号を成分とする第2座標を特定するステップと、
前記主語を特定するステップにおいて特定された主語の各々に関し、当該主語の生成に用いられる主語である変数主語を特定するステップと、
前記ソースコードと、前記第1行番号乃至前記第6行番号と、前記第1座標と、前記第2座標と、特定した主語と当該主語の生成に用いられる変数主語の対応関係とを示すデータとを、可視化プログラムに入力されるデータとして生成するステップと
を備える方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプログラムのソースコードをテストするための技術に関する。
【背景技術】
【0002】
コンピュータプログラム(以下、単に「プログラム」という)に従いコンピュータが意図されたとおりにデータ処理を行うことを確認するためのテストには、大きく、ブラックボックステストとホワイトボックステストがある。
【0003】
ブラックボックステストは、プログラムの内容には注目せず、コンピュータにサンプル値を入力し、想定どおりの値が出力されるかを検証することにより、プログラムの合否を判定するテストである。一方、ホワイトボックステストは、プログラムの内容に注目し、プログラムの構造、ロジック、制御の流れ等が意図されたとおりに記述されているか否かを検証することにより、プログラムの合否を判定するテストである。
【0004】
例えば、ホワイトボックステストに関する技術を開示している特許文献として、特許文献1がある。特許文献1に開示されている試験方法は、本体コードからテスト対象部分と、その依存部分とを抽出し、これらに基づき差分コードを生成するため、ユーザは、差分コードのみでホワイトボックステストを行うことができる、とされている。また、特許文献1に開示されている試験方法は、テスト結果及びテスト対象部分のコピーのハッシュ値を記憶し、当該ハッシュ値に基づき本体コードとの同一性を担保するため、ユーザは、本体コードの内容でテストが行われたこと、及び本体コードのテストの検証網羅度を確認することができる、とされている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
ホワイトボックステストは、プログラムの内容を網羅的に確認するテストであるため、プログラムに記述誤りが残りにくいが、プログラムの構造が複雑になる程、検証者の負担が増大する。その結果、例えば、プログラムを構成するモジュール単位であればホワイトボックステストは可能であっても、多数のモジュールが用いられたシステム全体に関しホワイトボックステストを行うことは、その負担が検証者の能力を超え、実質的に不可能な場合が多い。また、ブラックボックステストは、入力データと出力データに至る処理に関して正常に稼働することを目的としているが、プログラムが生成するデータ項目自体の属性及び生成される過程の確認はプログラムの実行任せになっており、仕様通りにプログラウが作成されているか否かの確認を行うことは難しい場合が多い。
【0007】
上記を鑑み、本発明は、プログラムのテストにおける検証者の負担を軽減する技術を提供する。
【課題を解決するための手段】
【0008】
本発明は、コンピュータに、コンピュータに、コンパイル済みのプログラムのソースコードを構成する複数の行の各々に行番号である第1行番号を付与する処理と、前記ソースコードに含まれる複数の行の各々に関し、当該行が単一の構文である場合は当該構文の種別である構文種別を特定し、当該行が複数の構文である場合は当該複数の構文を複数の単一の構文に分解した後、当該複数の単一の構文の各々の種別である構文種別を特定する処理と、前記ソースコードに含まれる複数の行の各々に関し、当該行の次に実行される行の行番号である第2行番号を特定する処理と、前記ソースコードに含まれる複数の構文のうち前記構文種別を特定する処理において特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が真である場合に実行される行の行番号である第3行番号と、当該条件文が示す条件が偽である場合に実行される行の行番号である第4行番号と、当該条件文の行と対となる終了行の行番号である第5行番号と、当該終了行の次の行の行番号である第6行番号とを特定する処理と、前記構文種別を特定する処理において特定された構文種別が変数の生成を伴う命令文である行を特定し、特定した行の各々に関し、当該行の命令文により生成される変数を主語として特定するとともに、当該主語の領域を宣言している行の行番号と、当該主語の生成を命じる行の行番号とを成分とする第1座標を特定する処理と、前記構文種別を特定する処理において特定された構文種別が実行順序を指定する命令文である行を特定し、特定した行の各々に関し、当該行の行番号を成分とする第2座標を特定する処理と、前記主語を特定する処理において特定された主語の各々に関し、当該主語の生成に用いられる主語である変数主語を特定する処理と、前記ソースコードと、前記第1行番号乃至前記第6行番号と、前記第1座標と、前記第2座標と、特定した主語と当該主語の生成に用いられる変数主語の対応関係とを示すデータとを、可視化プログラムに入力されるデータとして生成する処理とを実行させるためのプログラムを提供する。
【発明の効果】
【0009】
本発明に係るプログラムに従いコンピュータが生成するデータによれば、汎用的な可視化プログラムを実行中のコンピュータが当該データを用いて、ソースコードの実行経路とデータの参照関係とを表す図を描くことができる。そして、プログラムの検証者は、その図を見ることによって、ソースコードに含まれる記述ミスを容易に発見できる。また、本発明の一実施態様によれば、プログラムの検証者は、生成される属性を含むデータ項目を見ることによって、データ生成処理の正統性も確認ができる。その結果、本発明によれば、プログラムのテストにおける検証者の負担が軽減される。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態にかかるプログラムを実行するコンピュータの構成を示した図。
【
図2】本発明の一実施形態にかかるデータ処理装置の機能構成を示した図。
【
図3】本発明の一実施形態にかかるデータ処理装置の取得部が取得するソースコードの一部を例示した図。
【
図4】本発明の一実施形態にかかるデータ処理装置の行番号付与部により第1行番号(SX)が付与されたソースコードの一部を例示した図。
【
図5】本発明の一実施形態にかかるデータ処理装置の構文種別特定部により、複数の構文である行が複数の単一の構文に分解され、各構文の構文種別が特定されて、特定された構文種別が各行に対応付けられたソースコードの一部を例示した図。
【
図6】本発明の一実施形態にかかるデータ処理装置のデータ型特定部により特定された、主語のデータ型が、当該主語の行に対応付けられたソースコードの一部を例示した図。
【
図7】本発明の一実施形態にかかるデータ処理装置の行番号特定部により特定された第2行番号~第6行番号(SY、SZ1~SZ4)が各行に対応付けられたソースコードの一部を例示した図。
【
図8】本発明の一実施形態にかかるデータ処理装置の主語特定部により特定された主語と、第1座標([SX1,SX2])と、第2座標([ ,SX2]又は[SX2,SX2])が各行に対応付けられたソースコードの一部を例示した図。
【
図9】本発明の一実施形態にかかるデータ処理装置の変数主語特定部により特定された、主語に応じた変数主語が、当該主語の行に対応付けられたソースコードの一部を例示した図。
【
図10】本発明の一実施形態にかかるデータ処理装置が生成する可視化用データを用いて表示装置により表示される実行様相図の一部を例示したもの。
【
図11】本発明の一変形例にかかるデータ処理装置の機能構成を示した図。
【
図12】本発明の一変形例にかかるデータ処理装置の正統性確認用情報特定部により特定された正統性確認用情報を、ソースコードに含まれる複数の構文の各々に対応付けて示した図の例。
【発明を実施するための形態】
【0011】
[実施形態]
以下に、本発明の一実施形態にかかるプログラムPと、プログラムPに従いコンピュータが行う処理を説明する。
【0012】
図1は、プログラムPを実行するコンピュータ10の構成を示した図である。コンピュータ10は、一般的な端末装置用のコンピュータである。コンピュータ10は、プログラムに従い各種データ処理を行うプロセッサ101と、プログラムを含む各種データを記憶するメモリ102と、外部の装置との間で通信ネットワークを介したデータ通信を行う通信インタフェース103と、外部の装置との間で通信ネットワークを介さないデータの入出力を行う入出力インタフェース104を備える。
【0013】
入出力インタフェース104には、液晶ディスプレイ等の表示装置20と、キーボード、マウス等の入力装置30が接続されている。なお、コンピュータ10が表示装置20と入力装置30の一方又は両方を内蔵していてもよい。また、コンピュータ10が、内蔵するメモリ102に加えて、通信インタフェース103又は入出力インタフェース104を介して接続された外部の記憶装置にデータの一部を記憶してもよい。また、タッチスクリーンのように、表示装置20と入力装置30が一つの装置として構成されてもよい。
【0014】
メモリ102には、プログラムPに加えて、可視化プログラムQが記憶されている。可視化プログラムQは、いわゆるグラフ化ツールと呼ばれる汎用プログラムである。コンピュータ10は、可視化プログラムQに従うデータ処理を行うことにより、複数のオブジェクトの間の関係を示す図を生成し、表示装置20にその図を表示させる。
【0015】
図2は、コンピュータ10がプログラムP及び可視化プログラムQを実行する際に実現されるデータ処理装置11の機能構成を示した図である。すなわち、コンピュータ10のプロセッサ101が、メモリ102に持続的に記憶されているプログラムP及び可視化プログラムQに従うデータ処理を実行すると、
図2に示される構成部を備えるデータ処理装置11が実現される。以下に、
図2に示されるデータ処理装置11の機能構成を説明する。
【0016】
データ処理装置11は、大きく、可視化用データ生成部111と、可視化部112を備える。可視化用データ生成部111はコンピュータ10がプログラムPを実行することにより実現される。一方、可視化部112はコンピュータ10が可視化プログラムQを実行するにより実現される。
【0017】
可視化用データ生成部111は、記憶部1110、取得部1111、行番号付与部1112、データ型特定部1113、構文種別特定部1114、行番号特定部1115、主語特定部1116、変数主語特定部1117、データ生成部1118、データ出力部1119を備える。
【0018】
記憶部1110は、各種データを記憶する。記憶部1110が記憶するデータには、取得部1111が取得するソースコード、行番号付与部1112乃至データ型特定部1113が生成する中間データ、データ生成部1118が生成する最終データ(可視化用データ)が含まれる。
【0019】
取得部1111は、外部の装置から、コンパイル済みのプログラムRのソースコードSを取得する。
【0020】
図3は、取得部1111が取得するソースコードSの一部を例示した図である。
図3に例示のソースコードSは、COBOLにより記述されているが、ソースコードSの記述に用いられるプログラミング言語はCOBOLに限られない。
【0021】
行番号付与部1112は、取得部1111が取得したソースコードSを構成する複数の行の各々に、行番号である第1行番号(以下、「SX」という)を付与する。
図4は、ソースコードSに対し、行番号付与部1112により付与されたSXの一部を例示した図である。
【0022】
構文種別特定部1114は、ソースコードSに含まれる複数の行の各々に関し、当該行が単一の構文である場合は当該構文の種別である構文種別を特定し、当該行が複数の構文である場合は当該複数の構文を複数の単一の構文に分解した後、当該複数の単一の構文の各々の種別である構文種別を特定する。
【0023】
なお、構文とは、コンピュータが備えるデータ処理の機能(加算、減算、乗算、除算、関数呼び出し等)の1単位に応じた文を意味する。
【0024】
図5は、構文種別特定部1114により、複数の構文である行が複数の単一の構文に分解され、また、各構文の構文種別が特定されて、特定された構文種別が各行に対応付けられたソースコードSの一部を例示した図である。
【0025】
例えば、
図5において、ソースコードSのうちSXが33の行「UNTIL EMPNO = 999.」は、構文種別が「呼出文」の構文と、構文種別が「条件文(真)」の構文と、構文種別が「条件文(偽)」の構文が1つとなった行であるため、それらが異なる行に分解されている。
【0026】
なお、構文種別は、プログラム言語毎に異なる。例えば、COBOLの場合、構文種別は、定置文、定値文、代入文、疑似代入、入力文、疑似入力、出力文、疑似出力、領域文、領域引数、条件文(真)、条件文(偽)、繰返文開始、繰返文終了、関数呼出、ユーザー定義関数呼出、翻訳文、注釈文、制御文、endif、then、else、制御条件、呼出文、セクション終了、セクション開始、制御入力、制御出力、段落、条件入力、段落終了等である。
【0027】
データ型特定部1113は、命令文により生成される変数である主語の各々のデータ型を特定する。
【0028】
図6は、データ型特定部1113により特定されたデータ型が、当該データ型の主語の行に対応付けられたソースコードSの一部を例示した図である。なお、
図6の例では、データ型の欄にはCOBOLにおいてデータ型を表現する文字列であるPICTURE文字列(PIC)が記載されている。例えば、
図6のリストのSX欄が21の行のデータ型「X(3)」は、英数字3桁のデータ型を意味する。従って、ソースコードSがCOBOL以外のプログラミング言語で記載されている場合、データ型にはそのプログラミング言語に応じた表現形式のデータ型が記載される。
【0029】
行番号特定部1115は、取得部1111が取得したソースコードSに含まれる複数の行の各々に関し、当該行の次に実行される行の行番号である第2行番号(以下、「SY」という)を特定し、特定したそれらの行番号をソースコードSの各行に対応付ける。
【0030】
また、行番号特定部1115は、SYの特定に加え、以下の第3行番号乃至第6行番号を特定し、特定したそれらの行番号をソースコードSの各行に対応付ける。
【0031】
第3行番号(以下、「SZ1」という):構文種別特定部1114により特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が真である場合に実行される行の行番号。
【0032】
第4行番号(以下、「SZ2」という):構文種別特定部1114により特定された構文種別が条件文である構文の各々に関し、当該条件文が示す条件が偽である場合に実行される行の行番号。
【0033】
第5行番号(以下、「SZ3」という):構文種別特定部1114により特定された構文種別が条件文である構文の各々に関し、当該条件文の行と対となる終了行の行番号。
【0034】
第6行番号(以下、「SZ4」という):構文種別特定部1114により特定された構文種別が条件文である構文の各々に関し、当該条件文の行と対となる終了行の次の行の行番号。
【0035】
図7は、行番号特定部1115により特定されたSYとSZ1~SZ4が各行に対応付けられたソースコードSの一部を例示した図である。
【0036】
主語特定部1116は、構文種別が変数の生成を伴う命令文である行を特定し、特定した行の各々に関し、当該行の命令文により生成される変数を主語として特定するとともに、当該主語の領域を宣言している行の行番号(以下、「SX1」という)と、当該主語の生成を命じる行の行番号(以下、「SX2」という)とを成分とする第1座標([SX1,SX2])を特定する。
【0037】
また、主語特定部1116は、構文種別が実行順序を指定する命令文である行を特定し、特定した行の各々に関し、当該行の行番号である「SX2」を成分とする第2座標([ ,SX2]又は[SX2,SX2])を特定する。
【0038】
図8は、主語特定部1116により特定された主語と、第1座標([SX1,SX2])と、第2座標([ ,SX2]又は[SX2,SX2])が各行に対応付けられたソースコードSの一部を例示した図である。なお、
図8において、主語及び第1座標は「主語(変数)」欄に含まれ、第2座標は「実行順序を決定する命令文」欄に含まれた形で記載されている。
【0039】
変数主語特定部1117は、主語の各々に関し、当該主語の生成に用いられる主語である変数主語(複数ある場合、それらの各々)を特定する。
【0040】
図9は、変数主語特定部1117により特定された、主語に応じた変数主語が、当該主語の行に対応付けられたソースコードSの一部を例示した図である。
【0041】
データ生成部1118は、ソースコードSと、第1行番号(SX)、第2行番号(SY)、第3行番号~第6行番号(SZ1~SZ4)、第1座標([SX1,SX2])、第2座標([ ,SX2]又は[SX2,SX2])、主語と当該主語の生成に用いられる変数主語の対応関係とを示すデータ、及び、主語のデータ型を示すデータを含むデータを、可視化プログラムに入力されるデータ(以下、「可視化用データ」という)として生成する。
【0042】
データ出力部1119は、データ生成部1118が生成した可視化用データを、可視化部112に出力する。
【0043】
可視化部112は、可視化用データ生成部111から出力される可視化用データを用いて、ソースコードSの実行経路とデータの参照関係とを表す図(以下、「実行様相
図G」という)を生成し、生成した実行様相
図Gを表示装置20に出力し、表示装置20に実行様相
図Gを表示させる。
【0044】
図10は、表示装置20により表示される実行様相
図Gの一部を例示したものである。実行様相
図Gは、ソースコードSに含まれる複数の構文の各々に応じた表示体(
図10の例では長方形の表示体)と、それらの構文に応じた命令文の実行順序を示す矢印と、それらの構文の間でデータの参照が行われる場合、それらのデータの参照元の構文の表示体から参照先の構文の表示体へと向かう矢印を含む。なお、構文に応じた表示体には、その構文の行の内容が表示される。また、主語に応じた表示体には、当該主語のデータ型(
図11においては、「PIC:○○」の○○部分)が表示される。なお、「PIC」とは、既述のように、COBOLにおけるデータ型を表現する文字列(PICTURE文字列)を意味する。従って、ソースコードSがCOBOL以外のプログラミング言語により記述されている場合、PICに代えて、そのプログラミング言語に応じたデータ型が実行様相
図Gに表示される。
【0045】
プログラムRのテストを行う検証者は、実行様相
図Gを見て、プログラムRのソースコードSの実行様相、すなわち、ソースコードSに従い、コンピュータが実行する命令文の順序と、それらの構文間で引き渡されるデータの参照関係を容易に把握することができる。従って、検証者は、実行様相
図Gに示されるソースコードSの実行様相が、プログラムRの仕様に従っているか否かを容易に判定できる。また、実行様相
図Gには、主語のデータ型も表示される。その結果、検証者によるプログラムRのテストの作業における負担が軽減される。
【0046】
[変形例]
上述した実施形態は本発明の一実施形態であって、本発明の技術的思想の範囲内において様々に変形され得る。以下にそれらの変形の例を示す。なお、以下の変形例の2以上が適宜、組み合わされてもよい。
【0047】
(1)データ処理装置11が、可視化用データに基づいて、ソースコードSに含まれる複数の構文の中から、確認を要する構文を抽出する機能を備えてもよい。
【0048】
図11は、この変形例(以下、「変形例(1)」という)にかかるデータ処理装置11の機能構成を示した図である。変形例(1)にかかるデータ処理装置11は、上述した実施形態にかかるデータ処理装置11が備える可視化用データ生成部111と、可視化部112に加え、要確認構文抽出部113を備える。
【0049】
要確認構文抽出部113は、正統性確認用情報特定部1131と、構文抽出部1132を備える。
【0050】
正統性確認用情報特定部1131は、可視化用データ生成部111のデータ出力部1119から出力される可視化用データを取得し、当該可視化用データに基づき、ソースコードSに含まれる複数の構文の各々に関し、当該構文が、参照先及び参照元のいずれも存在しない構文(以下、「浮島構文」という)、参照元は存在するが参照先が存在しない構文(以下、「出力線なし構文」という)、参照先は存在するが参照元が存在しない構文(以下、「入力線なし構文」という)、参照元が実行命令順序に従う参照元のみである構文(以下、「再帰構文」という)、のいずれであるかを、正統性確認用情報として特定する。
【0051】
図12は、ソースコードSに含まれる複数の構文の各々に関し、正統性確認用情報特定部1131により特定された正統性確認用情報を対応付けて示した図の例である。
【0052】
構文抽出部1132は、ソースコードSに含まれる複数の構文の中から、構文種別と、正統性確認用情報特定部1131により特定された正統性確認用情報との組み合わせに基づき、確認を要する構文を、要確認構文として抽出する。要確認構文としては、例えば、以下のような構文が挙げられる。
【0053】
入力線がない領域文
入力線がない領域引数
入力線がない定置文
入力線がない定値文
入力線がない入力文
入力線がない擬似入力
入力線及び出力線の一方又は両方がない代入文
入力線及び出力線の一方又は両方がない擬似代入
出力線がない出力文
出力線がない擬似出力
【0054】
構文抽出部1132は、抽出した要確認構文を示す要確認構文データを可視化部112に出力する。
【0055】
可視化部112は、要確認構文抽出部113から受け取った要確認構文データに基づき、実行様相
図Gを、確認を要する構文に応じた部分を他の部分と異なる態様で表すように変更し、変更した実行様相
図Gを表示装置20に表示させる。ここで、異なる態様とは、太字表示、点滅表示、異なる色による表示、枠で囲む表示、等のいずれであってもよい。検証者は、実行様相
図Gに他の部分と異なる態様で表されている構文に問題がないかを確認することで、ソースコードSのテストを容易に行うことができる。
【0056】
また、可視化部112が、例えば、要確認構文のリスト(又は、要確認構文を他の構文と異なる態様で表示する構文のリスト)を表示装置20に表示させ、実行様相
図Gのうち、そのリストから検証者により選択された構文に応じた部分を他の部分と異なる態様で表すように変更し、変更した実行様相
図Gを表示装置20に表示させてもよい。
【0057】
(2)本発明は、上述したプログラムPに例示されるプログラム、上述したプログラムPに従い処理を行うデータ処理装置11に例示されるシステム、及び、上述したプログラムPに従いコンピュータが行う方法を提供する。
【符号の説明】
【0058】
10…コンピュータ、11…データ処理装置、20…表示装置、30…入力装置、101…プロセッサ、102…メモリ、103…通信インタフェース、104…入出力インタフェース、111…可視化用データ生成部、112…可視化部、113…要確認構文抽出部、1110…記憶部、1111…取得部、1112…行番号付与部、1113…データ型特定部、1114…構文種別特定部、1115…行番号特定部、1116…主語特定部、1117…変数主語特定部、1118…データ生成部、1119…データ出力部、1131…正統性確認用情報特定部、1132…構文抽出部。
【要約】
【課題】プログラムのテストにおける検証者の負担を軽減する技術を提供する。
【解決手段】可視化用データ生成部111は、コンパイル済みのプログラムのソースコードを取得し、そのソースコードに対し行番号を付与する。続いて、可視化用データ生成部111は、構文種別、次に実行される行の行番号、条件文が示す条件が真である場合に実行される行の行番号、条件文が示す条件が偽である場合に実行される行の行番号、条件文の行と対となる終了行の行番号、条件文の行と対となる終了行の次の行の行番号、命令文により生成される変数(主語)の領域を宣言している行の行番号、当該主語の生成を命じる行の行番号、実行順序を指定する命令文の行番号を特定する。可視化部112は、ソースコードと、可視化用データ生成部111が特定した行番号と、主語と変数主語の対応関係とを示すデータを用いて、ソースコードの実行経路とデータの参照関係とを表す図を生成する。
【選択図】
図2