JPH1196041A - データフロー異常検査装置 - Google Patents
データフロー異常検査装置Info
- Publication number
- JPH1196041A JPH1196041A JP9252977A JP25297797A JPH1196041A JP H1196041 A JPH1196041 A JP H1196041A JP 9252977 A JP9252977 A JP 9252977A JP 25297797 A JP25297797 A JP 25297797A JP H1196041 A JPH1196041 A JP H1196041A
- Authority
- JP
- Japan
- Prior art keywords
- data flow
- flow abnormality
- source program
- path
- program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
(57)【要約】
【課題】 プログラマがソースプログラムの修正等を行
うときにデータフロー異常検査の結果の参照がし易くな
り、プログラムの修正作業が容易となるデータフロー異
常検査装置を提供する。 【解決手段】 データフロー異常検査部11によって、
ソースプログラムについてのデータフロー異常検査が行
われ、その結果データフロー異常が見いだされると、異
常パス行表示装置12によって、データフロー異常が起
こっているパスに対応するソースプログラムの行番号が
表示される。異常パス追跡表示部13によりデータフロ
ー異常のあるソースプログラムが表示された画面上で、
「Trace」ボタンをクリックすると、データフロー
異常が起こるパスの先頭行が反転表示され、その後もう
一度「Trace」ボタンをクリックすると、当該パス
の次行が反転表示される。
うときにデータフロー異常検査の結果の参照がし易くな
り、プログラムの修正作業が容易となるデータフロー異
常検査装置を提供する。 【解決手段】 データフロー異常検査部11によって、
ソースプログラムについてのデータフロー異常検査が行
われ、その結果データフロー異常が見いだされると、異
常パス行表示装置12によって、データフロー異常が起
こっているパスに対応するソースプログラムの行番号が
表示される。異常パス追跡表示部13によりデータフロ
ー異常のあるソースプログラムが表示された画面上で、
「Trace」ボタンをクリックすると、データフロー
異常が起こるパスの先頭行が反転表示され、その後もう
一度「Trace」ボタンをクリックすると、当該パス
の次行が反転表示される。
Description
【0001】
【発明の属する技術分野】本発明は、作成したソースプ
ログラムのデバッグ作業等を行う場合に使用されるデー
タフロー異常検査装置に関する。
ログラムのデバッグ作業等を行う場合に使用されるデー
タフロー異常検査装置に関する。
【0002】
【従来の技術】コンピュータプログラムにおける欠陥の
一つに、データフロー異常がある。このような異常を含
むコンピュータプログラムは、ある特定のパスを通ると
きだけ異常として現れる場合があるため、その発見が困
難であり、そのプログラムを含んだ製品を出荷したあと
にデータフロー異常に基づく重大な欠陥が発生すること
もある。データフロー異常に関する基本的な文献とし
て、Lloyd D. Fosdick, Leon J. Osterweil,「 Data Fl
ow Analysis in Software Reliability 」 Computing S
urveys, Vol.8, No.3, Sep. 1976, pp305 - 330 があ
る。
一つに、データフロー異常がある。このような異常を含
むコンピュータプログラムは、ある特定のパスを通ると
きだけ異常として現れる場合があるため、その発見が困
難であり、そのプログラムを含んだ製品を出荷したあと
にデータフロー異常に基づく重大な欠陥が発生すること
もある。データフロー異常に関する基本的な文献とし
て、Lloyd D. Fosdick, Leon J. Osterweil,「 Data Fl
ow Analysis in Software Reliability 」 Computing S
urveys, Vol.8, No.3, Sep. 1976, pp305 - 330 があ
る。
【0003】このようなデータフロー異常を予めソース
コードの段階で検出して、排除するためのデータフロー
異常検査装置が知られている。このデータフロー異常検
査装置は、一般にコンピュータに搭載した専用のソフト
ウェアとして実現される。データフロー異常検査装置
は、検査対象のソースプログラムが入力されると、「デ
ータフロー異常の検出」と「データフロー異常のパスの
探索」という二つの作業を行う。「データフロー異常の
検出」とは、データフロー異常がプログラム上のどこに
発生しているかを探し出す処理であり、「データフロー
異常のパスの探索」とは、データフロー異常がどのよう
なパスを通ったときにそれが発生するのかを知るため
に、ソースプログラムの中のパスを調べる処理である。
このような処理を予め行うことによって、作成されたプ
ログラムの信頼性及び品質を向上させることができる。
コードの段階で検出して、排除するためのデータフロー
異常検査装置が知られている。このデータフロー異常検
査装置は、一般にコンピュータに搭載した専用のソフト
ウェアとして実現される。データフロー異常検査装置
は、検査対象のソースプログラムが入力されると、「デ
ータフロー異常の検出」と「データフロー異常のパスの
探索」という二つの作業を行う。「データフロー異常の
検出」とは、データフロー異常がプログラム上のどこに
発生しているかを探し出す処理であり、「データフロー
異常のパスの探索」とは、データフロー異常がどのよう
なパスを通ったときにそれが発生するのかを知るため
に、ソースプログラムの中のパスを調べる処理である。
このような処理を予め行うことによって、作成されたプ
ログラムの信頼性及び品質を向上させることができる。
【0004】
【発明が解決しようとする課題】ところで、データフロ
ー異常検査装置による検査が行われ、それによってデー
タフロー異常が見い出されると、プログラマは、その結
果に基づいてプログラムの修正等を行う。このとき、プ
ログラマは、ソースプログラムのどの部分にデータフロ
ー異常が起こり、そのデータフロー異常がどのようなパ
スを通ったときに発生するかを認識した上で、プログラ
ムの修正を行わなければならない。したがって、データ
フロー異常検査装置による検査結果を参照し易いか否か
が、ソースプログラムの修正作業の効率に影響を与え
る。
ー異常検査装置による検査が行われ、それによってデー
タフロー異常が見い出されると、プログラマは、その結
果に基づいてプログラムの修正等を行う。このとき、プ
ログラマは、ソースプログラムのどの部分にデータフロ
ー異常が起こり、そのデータフロー異常がどのようなパ
スを通ったときに発生するかを認識した上で、プログラ
ムの修正を行わなければならない。したがって、データ
フロー異常検査装置による検査結果を参照し易いか否か
が、ソースプログラムの修正作業の効率に影響を与え
る。
【0005】しかしながら、従来のデータフロー異常検
査装置は、データフロー異常の検出が行われると、単に
異常箇所を提示するだけであり、プログラマは、その結
果とソースプログラムとを見比べて、それがどのような
パスを通ったときに発生するかを順を追って探っていく
ほかなかった。これは決して容易な作業とは言えず、煩
わしいものであり、また、ミスを招きやすいという問題
があった。
査装置は、データフロー異常の検出が行われると、単に
異常箇所を提示するだけであり、プログラマは、その結
果とソースプログラムとを見比べて、それがどのような
パスを通ったときに発生するかを順を追って探っていく
ほかなかった。これは決して容易な作業とは言えず、煩
わしいものであり、また、ミスを招きやすいという問題
があった。
【0006】本発明は、上記事情に基づいてなされたも
のであり、プログラマがソースプログラムの修正等を行
うときにデータフロー異常検査の結果の参照がし易くな
り、プログラムの修正作業が容易となるデータフロー異
常検査装置を提供することを目的とする。
のであり、プログラマがソースプログラムの修正等を行
うときにデータフロー異常検査の結果の参照がし易くな
り、プログラムの修正作業が容易となるデータフロー異
常検査装置を提供することを目的とする。
【0007】
【課題を解決するための手段】上記の課題を解決するた
めに、本発明のデータフロー異常検査装置は、ソースプ
ログラムを読み込むソースプログラム読み込み手段と、
前記ソースプログラム読み込み手段により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査手段と、前記ソースプログ
ラムを表示した画面上で、前記データフロー異常検査手
段により見いだされたデータフロー異常を起こす前記ソ
ースプログラム上のパスを、プログラムの命令実行順序
に従って、表示するデータフロー異常パス表示手段と、
を具備することを特徴とする。
めに、本発明のデータフロー異常検査装置は、ソースプ
ログラムを読み込むソースプログラム読み込み手段と、
前記ソースプログラム読み込み手段により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査手段と、前記ソースプログ
ラムを表示した画面上で、前記データフロー異常検査手
段により見いだされたデータフロー異常を起こす前記ソ
ースプログラム上のパスを、プログラムの命令実行順序
に従って、表示するデータフロー異常パス表示手段と、
を具備することを特徴とする。
【0008】また、本発明のデータフロー異常検査装置
は、ソースプログラムを読み込むソースプログラム読み
込み手段と、前記ソースプログラム読み込み手段により
読み込んだソースプログラムに対して、データフロー異
常の検査を実行するデータフロー異常検査手段と、前記
データフロー異常検査手段により発見された、データフ
ロー異常を起こす前記ソースプログラムのパスを表示す
るパス表示手段と、前記パス表示手段により表示された
パスについて、前記ソースプログラムを表示した画面上
で、プログラムの命令実行順序に従って、表示するデー
タフロー異常パス表示手段と、を具備することを特徴と
する。
は、ソースプログラムを読み込むソースプログラム読み
込み手段と、前記ソースプログラム読み込み手段により
読み込んだソースプログラムに対して、データフロー異
常の検査を実行するデータフロー異常検査手段と、前記
データフロー異常検査手段により発見された、データフ
ロー異常を起こす前記ソースプログラムのパスを表示す
るパス表示手段と、前記パス表示手段により表示された
パスについて、前記ソースプログラムを表示した画面上
で、プログラムの命令実行順序に従って、表示するデー
タフロー異常パス表示手段と、を具備することを特徴と
する。
【0009】前記データフロー異常パス表示手段は、プ
ログラムの記述順序に従って表示された画面を用いて、
オペレータから所定の指示があるたび毎に、前記命令実
行順序に従って、命令の実行単位で、前記画面上の命令
を一つずつ表示態様を変えて表示することが可能であ
る。また、前記データフロー異常パス表示手段は、所定
の時間間隔で、前記命令実行順序に従って、命令の実行
単位で、一つずつ表示態様を変えて表示することが可能
である。
ログラムの記述順序に従って表示された画面を用いて、
オペレータから所定の指示があるたび毎に、前記命令実
行順序に従って、命令の実行単位で、前記画面上の命令
を一つずつ表示態様を変えて表示することが可能であ
る。また、前記データフロー異常パス表示手段は、所定
の時間間隔で、前記命令実行順序に従って、命令の実行
単位で、一つずつ表示態様を変えて表示することが可能
である。
【0010】本発明によれば、前記ソースプログラムを
表示した画面上で、前記データフロー異常検査手段によ
り見いだされたデータフロー異常を起こす前記ソースプ
ログラム上のパスを、命令実行順序に従って、順次表示
するデータフロー異常パス表示手段が設けられる。これ
により、プログラマは、どのようなパスを通ったときに
データフロー異常が起こるのかを明確に把握することが
できる。
表示した画面上で、前記データフロー異常検査手段によ
り見いだされたデータフロー異常を起こす前記ソースプ
ログラム上のパスを、命令実行順序に従って、順次表示
するデータフロー異常パス表示手段が設けられる。これ
により、プログラマは、どのようなパスを通ったときに
データフロー異常が起こるのかを明確に把握することが
できる。
【0011】
【発明の実施の形態】以下に図面を参照して、本発明の
実施の形態について説明する。まず、データフロー異常
について簡単に説明する。尚、ここでは、C言語で記述
されたソースプログラムに基づいて説明するが、他の言
語の場合も同様に考えることができる。
実施の形態について説明する。まず、データフロー異常
について簡単に説明する。尚、ここでは、C言語で記述
されたソースプログラムに基づいて説明するが、他の言
語の場合も同様に考えることができる。
【0012】一般に、ソースプログラムの中では、デー
タに対して「定義(d)」、「未定義(u)」、「参照
(r)」という三つのイベントが発生しうる。ここで、
「定義(d)」には、データ宣言による明示的な定義、
あるいは、a=bの左辺aに相当する代入式の左辺値と
して現れる定義、ファイルのオープンなどがある。a=
bは、左辺の変数aにbという値を代入するという意味
である。また、データ宣言による明示的な定義とは、例
えば、C言語で、「int a=3;」というように、
整数型の変数aに3を初期値として宣言するものであ
る。「未定義(u)」には、参照不可能になった場合あ
るいは内容が不定になった場合がある。「参照(r)」
には、計算の中で参照される場合と述語の中で参照され
る場合がある。
タに対して「定義(d)」、「未定義(u)」、「参照
(r)」という三つのイベントが発生しうる。ここで、
「定義(d)」には、データ宣言による明示的な定義、
あるいは、a=bの左辺aに相当する代入式の左辺値と
して現れる定義、ファイルのオープンなどがある。a=
bは、左辺の変数aにbという値を代入するという意味
である。また、データ宣言による明示的な定義とは、例
えば、C言語で、「int a=3;」というように、
整数型の変数aに3を初期値として宣言するものであ
る。「未定義(u)」には、参照不可能になった場合あ
るいは内容が不定になった場合がある。「参照(r)」
には、計算の中で参照される場合と述語の中で参照され
る場合がある。
【0013】すべてのデータは、「定義した上で参照
し、最後に未定義にする」という一連のイベント順序に
従って状態が遷移するように使用しなければならない。
あるデータのフロー(状態の変化)がこの規則に従って
いるかどうかを調べるために、そのデータのある時点で
の状態と、これに対するイベントを組み合わせたものに
分解して考えることができる。このデータの状態とイベ
ントの組み合わせを「基本フロー」と称する。
し、最後に未定義にする」という一連のイベント順序に
従って状態が遷移するように使用しなければならない。
あるデータのフロー(状態の変化)がこの規則に従って
いるかどうかを調べるために、そのデータのある時点で
の状態と、これに対するイベントを組み合わせたものに
分解して考えることができる。このデータの状態とイベ
ントの組み合わせを「基本フロー」と称する。
【0014】図1は、データフローを状態遷移図として
示した図である。この図で、各ノードは、プログラムに
よって指定されるデータの状態を示し、Uは未定義の状
態、Dは定義されている状態、Rは参照されている状
態、そしてAはデータフロー異常の状態である。また、
各矢印は、ある状態から別の状態へ遷移するイベントを
示している。尚、「別の状態へ遷移する」といった場合
は、同じ状態に遷移することも含まれている。
示した図である。この図で、各ノードは、プログラムに
よって指定されるデータの状態を示し、Uは未定義の状
態、Dは定義されている状態、Rは参照されている状
態、そしてAはデータフロー異常の状態である。また、
各矢印は、ある状態から別の状態へ遷移するイベントを
示している。尚、「別の状態へ遷移する」といった場合
は、同じ状態に遷移することも含まれている。
【0015】図1に示すように、未定義状態Uにあるデ
ータに対して定義dというイベントが発生すると(これ
を基本フロー「Ud」と書く。以下同様。)、そのデー
タの状態は定義の状態Dとなる。未定義の状態Uにある
データに対して、参照r又は未定義uというイベントが
発生すると(Ur又はUu)、そのデータはデータフロ
ー異常の状態Aとなる。また、参照の状態Rにあるデー
タに対して、未定義uというイベントが発生すると(R
u)、そのデータの状態は未定義の状態Uとなる。参照
の状態Rにあるデータに対して、定義dというイベント
が発生すると(Rd)、そのデータの状態は定義の状態
Dとなる。参照の状態Rに対して、参照rというイベン
トが発生すると(Rr)、そのデータの状態は、参照の
状態Rのままである。定義の状態Dにあるデータに対し
て、参照rというイベントが発生すると(Dr)、その
データの状態は参照の状態Rとなる。定義の状態Dにあ
るデータに対して、定義d又は未定義uというイベント
が発生すると(Dd又はDu)、そのデータはデータフ
ロー異常の状態Aとなる。
ータに対して定義dというイベントが発生すると(これ
を基本フロー「Ud」と書く。以下同様。)、そのデー
タの状態は定義の状態Dとなる。未定義の状態Uにある
データに対して、参照r又は未定義uというイベントが
発生すると(Ur又はUu)、そのデータはデータフロ
ー異常の状態Aとなる。また、参照の状態Rにあるデー
タに対して、未定義uというイベントが発生すると(R
u)、そのデータの状態は未定義の状態Uとなる。参照
の状態Rにあるデータに対して、定義dというイベント
が発生すると(Rd)、そのデータの状態は定義の状態
Dとなる。参照の状態Rに対して、参照rというイベン
トが発生すると(Rr)、そのデータの状態は、参照の
状態Rのままである。定義の状態Dにあるデータに対し
て、参照rというイベントが発生すると(Dr)、その
データの状態は参照の状態Rとなる。定義の状態Dにあ
るデータに対して、定義d又は未定義uというイベント
が発生すると(Dd又はDu)、そのデータはデータフ
ロー異常の状態Aとなる。
【0016】このように、基本フローは、全部で九種類
存在する。尚、データフロー異常の状態Aにあるデータ
に対しては、どのようなイベントが発生してもデータフ
ロー異常のままであるが、かかる状態は基本フローには
含めないこととする。上記の九種類の基本フローの中
で、Dr,Ud,Ru,Rr,Rdの五種類は、正しい
基本フローと考えられる。一方、Ur,Uu,Du,D
dという四種類は、意味論的に考えたときにデータに対
して不当な組み合わせであり、これらをデータフロー異
常という。例えば、「Ur」は、ある文で、変数に値が
定義されない状態(未定義の状態)のまま参照されると
いうデータフロー異常を示している。
存在する。尚、データフロー異常の状態Aにあるデータ
に対しては、どのようなイベントが発生してもデータフ
ロー異常のままであるが、かかる状態は基本フローには
含めないこととする。上記の九種類の基本フローの中
で、Dr,Ud,Ru,Rr,Rdの五種類は、正しい
基本フローと考えられる。一方、Ur,Uu,Du,D
dという四種類は、意味論的に考えたときにデータに対
して不当な組み合わせであり、これらをデータフロー異
常という。例えば、「Ur」は、ある文で、変数に値が
定義されない状態(未定義の状態)のまま参照されると
いうデータフロー異常を示している。
【0017】図2は、データフロー異常が起こる実際の
C言語によるプログラムの一例を示している。尚、図2
では、説明の便宜上、各行の左側に行番号を付してあ
る。図2のプログラムでは、3行目のif文において条
件分岐があり、nが1より大きい場合だけ4行目で変数
iに1というデータがセットされ(すなわち定義さ
れ)、6行目において、1がセットされたこのiがjに
代入(すなわち「参照」)されている。これにより、変
数iは、「定義されている状態(U)」から「参照され
ている状態(R)」に移る。これに対して、3行目で、
nが1と等しいか又は1より小さい場合には、変数iに
は1はセットされないが、6行目で、このデータがセッ
トされていないiがjに代入されることになる。これ
は、上記の「Ur」というデータフロー異常に該当す
る。
C言語によるプログラムの一例を示している。尚、図2
では、説明の便宜上、各行の左側に行番号を付してあ
る。図2のプログラムでは、3行目のif文において条
件分岐があり、nが1より大きい場合だけ4行目で変数
iに1というデータがセットされ(すなわち定義さ
れ)、6行目において、1がセットされたこのiがjに
代入(すなわち「参照」)されている。これにより、変
数iは、「定義されている状態(U)」から「参照され
ている状態(R)」に移る。これに対して、3行目で、
nが1と等しいか又は1より小さい場合には、変数iに
は1はセットされないが、6行目で、このデータがセッ
トされていないiがjに代入されることになる。これ
は、上記の「Ur」というデータフロー異常に該当す
る。
【0018】データフロー異常検査装置を用いてデータ
フロー異常検査を行うと、プログラムに対してデータフ
ロー解析が実行され、まず、プログラムのどの文のどの
変数についてどのような種類の異常があるかが検出され
る。本明細書では、これを「データフロー異常の検出」
という。しかし、これだけだとデータフロー異常が起こ
っている場所が分かるだけである。実際のデバッグ作業
等では、更に、このような異常がどのようなパスを通っ
たときに起こるかが分からなければならない。このた
め、データフロー異常の検査では、プログラムのどのよ
うなパスを通ったときに、そのようなデータフロー異常
が起こるかを併せて調べることが必要となる。本明細書
では、これを「データフロー異常のパスの探索」とい
う。したがって、本実施形態でデータフロー異常の検査
といった場合には、「データフロー異常の検出」と「デ
ータフロー異常のパスの探索」の両方を行う。
フロー異常検査を行うと、プログラムに対してデータフ
ロー解析が実行され、まず、プログラムのどの文のどの
変数についてどのような種類の異常があるかが検出され
る。本明細書では、これを「データフロー異常の検出」
という。しかし、これだけだとデータフロー異常が起こ
っている場所が分かるだけである。実際のデバッグ作業
等では、更に、このような異常がどのようなパスを通っ
たときに起こるかが分からなければならない。このた
め、データフロー異常の検査では、プログラムのどのよ
うなパスを通ったときに、そのようなデータフロー異常
が起こるかを併せて調べることが必要となる。本明細書
では、これを「データフロー異常のパスの探索」とい
う。したがって、本実施形態でデータフロー異常の検査
といった場合には、「データフロー異常の検出」と「デ
ータフロー異常のパスの探索」の両方を行う。
【0019】しかし、このような仕方でデータフロー異
常の検査を行うには、データフロー異常のパスの探索の
際に、プログラム上のパスを一つずつ探さなければなら
ない。例えば、変数に値が定義されないままある文で参
照されるというデータフロー異常が起こった場合、デー
タフロー異常検査装置は、その変数の宣言から、その文
までのすべてのパスを調べて、異常が起こるパスを見つ
け出す。
常の検査を行うには、データフロー異常のパスの探索の
際に、プログラム上のパスを一つずつ探さなければなら
ない。例えば、変数に値が定義されないままある文で参
照されるというデータフロー異常が起こった場合、デー
タフロー異常検査装置は、その変数の宣言から、その文
までのすべてのパスを調べて、異常が起こるパスを見つ
け出す。
【0020】このようにしてデータフロー異常の検査が
なされると、プログラマは、その検査結果に基づいて、
プログラムの修正を行う。このとき、プログラマは、検
査結果を参照しながらプログラムの修正を行うので、検
査結果が参照しやすいか否かによって、プログラム修正
の効率が影響を受ける。そこで、本実施形態のデータフ
ロー異常検査装置は、次のようにしてデータフロー異常
の検査結果を表示する。
なされると、プログラマは、その検査結果に基づいて、
プログラムの修正を行う。このとき、プログラマは、検
査結果を参照しながらプログラムの修正を行うので、検
査結果が参照しやすいか否かによって、プログラム修正
の効率が影響を受ける。そこで、本実施形態のデータフ
ロー異常検査装置は、次のようにしてデータフロー異常
の検査結果を表示する。
【0021】図3は、本実施形態のデータフロー異常検
査装置の機能ブロック図である。同図において、ソース
プログラム入力部10は、エディター等で作成されたソ
ースプログラム1を読み込む。データフロー異常検査検
査部11は、読み込まれたソースプログラム1につい
て、データフロー異常の検査、すなわち「データフロー
異常の検出」と「データフロー異常のパスの探索」を行
う。異常パス行表示部12は、後述の図5に示す画面上
で、データフロー異常が生じるパスに関連する行をすべ
て表示する。異常パス追跡表示部13は、後述の図6に
示す画面により、データフロー異常が起こるパスのすべ
ての行を1行ずつ順番に辿ってゆく。尚、本実施形態の
データフロー異常検査装置は、そのためのプログラムが
記憶された記憶媒体20の内容をコンピュータ21が読
み込むことによって、コンピュータ21上で実行される
コンピュータプログラムとして実現される。
査装置の機能ブロック図である。同図において、ソース
プログラム入力部10は、エディター等で作成されたソ
ースプログラム1を読み込む。データフロー異常検査検
査部11は、読み込まれたソースプログラム1につい
て、データフロー異常の検査、すなわち「データフロー
異常の検出」と「データフロー異常のパスの探索」を行
う。異常パス行表示部12は、後述の図5に示す画面上
で、データフロー異常が生じるパスに関連する行をすべ
て表示する。異常パス追跡表示部13は、後述の図6に
示す画面により、データフロー異常が起こるパスのすべ
ての行を1行ずつ順番に辿ってゆく。尚、本実施形態の
データフロー異常検査装置は、そのためのプログラムが
記憶された記憶媒体20の内容をコンピュータ21が読
み込むことによって、コンピュータ21上で実行される
コンピュータプログラムとして実現される。
【0022】図4は、データフロー異常の検査を行おう
とするC言語で作成されたソースプログラムの一例、図
5は、図4に示すプログラムにおいてデータフロー異常
が起こるパスを行番号で一覧表示した画面を示す図、図
6は、図5に基づいて、実際のソースプログラム上でデ
ータフロー異常が起こるパスを辿るときの様子を示す図
である。
とするC言語で作成されたソースプログラムの一例、図
5は、図4に示すプログラムにおいてデータフロー異常
が起こるパスを行番号で一覧表示した画面を示す図、図
6は、図5に基づいて、実際のソースプログラム上でデ
ータフロー異常が起こるパスを辿るときの様子を示す図
である。
【0023】図4に示したソースプログラムにおいて、
5行目のif文で、「a>0」という条件に合致する場
合は、6行目でiが定義されているので、その後にiが
参照されたとしも、データフロー異常にはならない。こ
れに対して、5行めのif文で「a>0」に合致しない
場合には、11行目のif文に飛び、ここで、「a<−
1」という条件に合致する場合には、13行目のgot
o文で7行目の「label」と名付けられた文に飛ぶ
ことになる。この場合、8行目において変数jにi+a
という値を代入するという命令を実行する。しかし、こ
のような経路を辿ってきたときは、iは定義されないで
実行されることになるので、データフロー異常が生じ
る。
5行目のif文で、「a>0」という条件に合致する場
合は、6行目でiが定義されているので、その後にiが
参照されたとしも、データフロー異常にはならない。こ
れに対して、5行めのif文で「a>0」に合致しない
場合には、11行目のif文に飛び、ここで、「a<−
1」という条件に合致する場合には、13行目のgot
o文で7行目の「label」と名付けられた文に飛ぶ
ことになる。この場合、8行目において変数jにi+a
という値を代入するという命令を実行する。しかし、こ
のような経路を辿ってきたときは、iは定義されないで
実行されることになるので、データフロー異常が生じ
る。
【0024】データフロー異常の検査において、このよ
うなデータフロー異常を起こすパスが発見された場合、
本実施形態のデータフロー異常検査装置では、まず図5
に示すように、データフロー異常となるパス全体の行番
号を表示する。すなわち、図4のソースプログラムの1
行目、3行目、3行目、5行目、11行目、12行目、
13行目、8行目という経路を辿るパスで、データフロ
ー異常が起こっていることを示している。ここで、3行
目が2回出てくるのは、3行目において、2つの変数i
とjを用いるという宣言がなされているからである。
うなデータフロー異常を起こすパスが発見された場合、
本実施形態のデータフロー異常検査装置では、まず図5
に示すように、データフロー異常となるパス全体の行番
号を表示する。すなわち、図4のソースプログラムの1
行目、3行目、3行目、5行目、11行目、12行目、
13行目、8行目という経路を辿るパスで、データフロ
ー異常が起こっていることを示している。ここで、3行
目が2回出てくるのは、3行目において、2つの変数i
とjを用いるという宣言がなされているからである。
【0025】図5に示す例では、データフロー異常を起
こすパスの行番号が1行に収まっているが、データフロ
ー異常を起こすパスが長い場合には、当然、複数行にわ
たって行番号が表示される。また、図4に示すソースプ
ログラムではデータフロー異常が起こるパスが一つしか
ないため、図5では1つのパスの行番号しか表示されな
いが、検査したソースプログラムにおいてデータフロー
異常が起こるパスが複数見いだされた場合には、それぞ
れのパスの行番号が、それぞれのパスを区別できるよう
な態様で、図5の画面上に表示される。
こすパスの行番号が1行に収まっているが、データフロ
ー異常を起こすパスが長い場合には、当然、複数行にわ
たって行番号が表示される。また、図4に示すソースプ
ログラムではデータフロー異常が起こるパスが一つしか
ないため、図5では1つのパスの行番号しか表示されな
いが、検査したソースプログラムにおいてデータフロー
異常が起こるパスが複数見いだされた場合には、それぞ
れのパスの行番号が、それぞれのパスを区別できるよう
な態様で、図5の画面上に表示される。
【0026】図5の場合は、データフロー異常が起こる
パスが一つしかないが、データフロー異常が起こるパス
が複数ある場合には、表示された複数のパスのうちか
ら、希望するパスを一つを選択する。その方法は、画面
上で、希望するパスが表示されている部分をマウスでク
リックして反転表示させ、画面下部の「select」
ボタンをクリックする。かかる操作によって、図6に示
す画面が現れる。
パスが一つしかないが、データフロー異常が起こるパス
が複数ある場合には、表示された複数のパスのうちか
ら、希望するパスを一つを選択する。その方法は、画面
上で、希望するパスが表示されている部分をマウスでク
リックして反転表示させ、画面下部の「select」
ボタンをクリックする。かかる操作によって、図6に示
す画面が現れる。
【0027】図6に示す画面では、検査の対象となった
図4のソースプログラムが、部分的に色分けされて表示
される。この色分けは、データフロー異常が起こるパス
の先頭行である1行目と最終行である8行目が赤で表示
され(図6では梨地で示す)、当該パスの途中の経路で
ある3行目、5行目、11行目、12行目、13行目が
黄色で表示される(図6では下線で示す)。その他の行
は、通常の色で表示される。このような色分け表示を行
うことにより、ソースプログラムのどの部分でデータフ
ローの異常が起こっているかが一目瞭然となる。
図4のソースプログラムが、部分的に色分けされて表示
される。この色分けは、データフロー異常が起こるパス
の先頭行である1行目と最終行である8行目が赤で表示
され(図6では梨地で示す)、当該パスの途中の経路で
ある3行目、5行目、11行目、12行目、13行目が
黄色で表示される(図6では下線で示す)。その他の行
は、通常の色で表示される。このような色分け表示を行
うことにより、ソースプログラムのどの部分でデータフ
ローの異常が起こっているかが一目瞭然となる。
【0028】しかしながら、データフロー異常が起こる
経路を色分け表示しただけだと、その経路をどういう順
番で辿ったときに異常が起こるのかは、すぐには分から
ない。そこで、図6の画面上部の「Trace」ボタン
をクリックすると、データフロー異常が起こるパスの先
頭の行である1行目が反転表示される。そして、もう一
度「Trace」ボタンをクリックすると、次の3行目
が反転表示される。以下同様にして、「Trace」ボ
タンをクリックする度に、図5に表示されたパスの行番
号の順番で、一つずつ反転表示される。3行目の文には
宣言される変数が二つあるので、図5には3行目が2回
現れる。このため、図6の表示画面において、3行目に
ついては2回のクリックについて続けて3行目が反転表
示される。また、13行目のgoto文で、7行目の
「label」に飛んでいるので、このパスの実行順序
は後ろから前へ戻る経路となる。このように行番号の順
番で実行されているのではないということも、「Tra
ce」ボタンを適当な間隔でクリックしてゆくことによ
って、容易に把握できる。
経路を色分け表示しただけだと、その経路をどういう順
番で辿ったときに異常が起こるのかは、すぐには分から
ない。そこで、図6の画面上部の「Trace」ボタン
をクリックすると、データフロー異常が起こるパスの先
頭の行である1行目が反転表示される。そして、もう一
度「Trace」ボタンをクリックすると、次の3行目
が反転表示される。以下同様にして、「Trace」ボ
タンをクリックする度に、図5に表示されたパスの行番
号の順番で、一つずつ反転表示される。3行目の文には
宣言される変数が二つあるので、図5には3行目が2回
現れる。このため、図6の表示画面において、3行目に
ついては2回のクリックについて続けて3行目が反転表
示される。また、13行目のgoto文で、7行目の
「label」に飛んでいるので、このパスの実行順序
は後ろから前へ戻る経路となる。このように行番号の順
番で実行されているのではないということも、「Tra
ce」ボタンを適当な間隔でクリックしてゆくことによ
って、容易に把握できる。
【0029】このように、マウスで一か所をクリックす
るという動作を連続して行うだけで、データフロー異常
が生じるパスの経路を順番に辿ることができるので、プ
ログラマはデータフロー異常の内容を容易に把握でき、
その結果、プログラム中の必要な部分を修正することが
容易となり、プログラミングの作業効率が向上する。か
かる効果は、特に、規模の大きなプログラムにおいて顕
著となる。
るという動作を連続して行うだけで、データフロー異常
が生じるパスの経路を順番に辿ることができるので、プ
ログラマはデータフロー異常の内容を容易に把握でき、
その結果、プログラム中の必要な部分を修正することが
容易となり、プログラミングの作業効率が向上する。か
かる効果は、特に、規模の大きなプログラムにおいて顕
著となる。
【0030】尚、本実施形態では、デフォルトで、図6
の画面上部の「Trace」ボタンをクリックするたび
ごとに1行ずつ反転表示する方法としたが、その他に、
プログラマの選択により、一定の時間間隔をおいて自動
的にデータフロー異常を起こすパスの各行を順番に反転
表示させることも可能である。また、この時間間隔を、
プログラマの意思によって変えることができるようにし
てもよい。
の画面上部の「Trace」ボタンをクリックするたび
ごとに1行ずつ反転表示する方法としたが、その他に、
プログラマの選択により、一定の時間間隔をおいて自動
的にデータフロー異常を起こすパスの各行を順番に反転
表示させることも可能である。また、この時間間隔を、
プログラマの意思によって変えることができるようにし
てもよい。
【0031】上記のデータフロー異常を起こすパスを辿
る動作は、一つ一つの命令を単位として行う。この場
合、一つの命令が複数の行にわたって記述されている場
合があるが、本実施形態では、そのような場合であって
も、当該複数行のうちの先頭行だけを反転表示するよう
にしている。但し、これは一例に過ぎず、その命令に関
連する複数にわたる行全体を反転表示するようにしても
よい。
る動作は、一つ一つの命令を単位として行う。この場
合、一つの命令が複数の行にわたって記述されている場
合があるが、本実施形態では、そのような場合であって
も、当該複数行のうちの先頭行だけを反転表示するよう
にしている。但し、これは一例に過ぎず、その命令に関
連する複数にわたる行全体を反転表示するようにしても
よい。
【0032】また、本実施形態のデータフロー異常検査
装置のプログラムは、例えばソースプログラムの作成に
用いるエディタープログラムに組み込んでおき、必要に
応じてエディターの中から起動できるようにする。これ
により、プログラムの修正作業を、エディターの画面と
データフロー異常検査装置の画面とを簡単な操作で画面
を切り換えながら行うことができる。また、エディター
の中から起動できるようにするメリットとして、現在エ
ディターで表示されているファイルに対して検査がかけ
られるため、新たにファイル名等で指定しなおして検査
ツールを別途起動する必要がなくなることが挙げられ
る。
装置のプログラムは、例えばソースプログラムの作成に
用いるエディタープログラムに組み込んでおき、必要に
応じてエディターの中から起動できるようにする。これ
により、プログラムの修正作業を、エディターの画面と
データフロー異常検査装置の画面とを簡単な操作で画面
を切り換えながら行うことができる。また、エディター
の中から起動できるようにするメリットとして、現在エ
ディターで表示されているファイルに対して検査がかけ
られるため、新たにファイル名等で指定しなおして検査
ツールを別途起動する必要がなくなることが挙げられ
る。
【0033】更に、本実施形態では、ソースプログラム
の記述順序で表示した画面上で、パスの実行順序に従っ
て、反転表示するようにしたが、ソースプログラムその
ものを、パスの実行順序に沿って順番に表示するように
してもよい。本発明のデータフロー異常検査装置は、コ
ンピュータプログラムとして実現できるので、当該コン
ピュータプログラムをフロッピーディスクやCD−RO
M、光磁気ディスクなどの記録媒体に記録し、コンピュ
ータに読み込ませて実行させることで、コンピュータを
データフロー異常検査装置として機能させることができ
る。
の記述順序で表示した画面上で、パスの実行順序に従っ
て、反転表示するようにしたが、ソースプログラムその
ものを、パスの実行順序に沿って順番に表示するように
してもよい。本発明のデータフロー異常検査装置は、コ
ンピュータプログラムとして実現できるので、当該コン
ピュータプログラムをフロッピーディスクやCD−RO
M、光磁気ディスクなどの記録媒体に記録し、コンピュ
ータに読み込ませて実行させることで、コンピュータを
データフロー異常検査装置として機能させることができ
る。
【0034】尚、本発明は、上記の実施形態に限定され
るものてはなく、その要旨の範囲内で種々の変更が可能
である。
るものてはなく、その要旨の範囲内で種々の変更が可能
である。
【0035】
【発明の効果】以上説明したように、本発明によれば、
データフロー異常パス表示手段により、ソースプログラ
ムを表示した画面上で、データフロー異常検査手段によ
り見いだされたデータフロー異常を起こす前記ソースプ
ログラム上のパスを、プログラムの命令実行順序に従っ
て、表示するようにしたことにより、プログラマがソー
スプログラムの修正等を行うときにデータフロー異常検
査の結果の参照がし易くなるため、ソースプログラムの
どういったパスを通ったときにデータフロー異常が起こ
るのかを簡単に把握することができ、その結果、ソース
プログラムのデバッグ等の修正作業が容易となり、プロ
グラム開発の効率を向上させることができるデータフロ
ー異常検査装置を提供することができる。
データフロー異常パス表示手段により、ソースプログラ
ムを表示した画面上で、データフロー異常検査手段によ
り見いだされたデータフロー異常を起こす前記ソースプ
ログラム上のパスを、プログラムの命令実行順序に従っ
て、表示するようにしたことにより、プログラマがソー
スプログラムの修正等を行うときにデータフロー異常検
査の結果の参照がし易くなるため、ソースプログラムの
どういったパスを通ったときにデータフロー異常が起こ
るのかを簡単に把握することができ、その結果、ソース
プログラムのデバッグ等の修正作業が容易となり、プロ
グラム開発の効率を向上させることができるデータフロ
ー異常検査装置を提供することができる。
【図1】ソースプログラムのデータフローを状態遷移図
として示した図である。
として示した図である。
【図2】データフロー異常が起こるC言語で記載された
実際のプログラムの一例を示した図である。
実際のプログラムの一例を示した図である。
【図3】本発明の一実施形態であるデータフロー異常検
査装置のブロック図である。
査装置のブロック図である。
【図4】データフロー異常の検査を行おうとするC言語
で作成されたソースプログラムの一例を示す図である。
で作成されたソースプログラムの一例を示す図である。
【図5】図4に示したプログラムにおいてデータフロー
異常が起こるパスを行番号で一覧表示した画面を示す図
である。
異常が起こるパスを行番号で一覧表示した画面を示す図
である。
【図6】図5に基づいて、実際のソースプログラム上で
データフロー異常が起こるパスを辿るときの画面上の様
子を示す図である。
データフロー異常が起こるパスを辿るときの画面上の様
子を示す図である。
1 ソースプログラム 10 ソースプログラム入力部 11 データフロー異常検査部 12 異常パス行表示部 13 異常パス追跡表示部 20 記録媒体 21 コンピュータ
Claims (6)
- 【請求項1】 ソースプログラムを読み込むソースプロ
グラム読み込み手段と、 前記ソースプログラム読み込み手段により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査手段と、 前記ソースプログラムを表示した画面上で、前記データ
フロー異常検査手段により見いだされたデータフロー異
常を起こす前記ソースプログラム上のパスを、プログラ
ムの命令実行順序に従って、表示するデータフロー異常
パス表示手段と、 を具備することを特徴とするデータフロー異常検査装
置。 - 【請求項2】 ソースプログラムを読み込むソースプロ
グラム読み込み手段と、 前記ソースプログラム読み込み手段により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査手段と、 前記データフロー異常検査手段により発見された、デー
タフロー異常を起こす前記ソースプログラムのパスを表
示するパス表示手段と、 前記パス表示手段により表示されたパスについて、前記
ソースプログラムを表示した画面上で、プログラムの命
令実行順序に従って、表示するデータフロー異常パス表
示手段と、 を具備することを特徴とするデータフロー異常検査装
置。 - 【請求項3】 前記データフロー異常パス表示手段は、
プログラムの記述順序に従って表示された画面を用い
て、オペレータから所定の指示があるたび毎に、前記命
令実行順序に従って、命令の実行単位で、前記画面上の
命令を一つずつ表示態様を変えて表示することを特徴と
する請求項1又は2記載のデータフロー異常検査装置。 - 【請求項4】 前記データフロー異常パス表示手段は、
所定の時間間隔で、前記命令実行順序に従って、命令の
実行単位で、一つずつ表示態様を変えて表示することを
特徴とする請求項1又は2記載のデータフロー異常検査
装置。 - 【請求項5】 コンピュータに、 ソースプログラムを読み込むソースプログラム読み込み
機能と、 前記ソースプログラム読み込み機能により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査機能と、 前記ソースプログラムを表示した画面上で、前記データ
フロー異常検査機能により見いだされたデータフロー異
常を起こす前記ソースプログラム上のパスを、プログラ
ムの命令実行順序に従って、表示するデータフロー異常
パス表示機能と、 を実現させるためのプログラムを記録した機械読み取り
可能な記録媒体。 - 【請求項6】 コンピュータに、 ソースプログラムを読み込むソースプログラム読み込み
機能と、 前記ソースプログラム読み込み機能により読み込んだソ
ースプログラムに対して、データフロー異常の検査を実
行するデータフロー異常検査機能と、 前記データフロー異常検査機能により発見された、デー
タフロー異常を起こす前記ソースプログラムのパスを表
示するパス表示機能と、 前記パス表示機能により表示されたパスについて、前記
ソースプログラムを表示した画面上で、プログラムの命
令実行順序に従って、表示するデータフロー異常パス表
示機能と、 を実現させるプログラムを記録した機械読み取り可能な
記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9252977A JPH1196041A (ja) | 1997-09-18 | 1997-09-18 | データフロー異常検査装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP9252977A JPH1196041A (ja) | 1997-09-18 | 1997-09-18 | データフロー異常検査装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1196041A true JPH1196041A (ja) | 1999-04-09 |
Family
ID=17244795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9252977A Withdrawn JPH1196041A (ja) | 1997-09-18 | 1997-09-18 | データフロー異常検査装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH1196041A (ja) |
-
1997
- 1997-09-18 JP JP9252977A patent/JPH1196041A/ja not_active Withdrawn
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8453106B2 (en) | Graphical user interface for exploring source code execution behavior | |
US8627290B2 (en) | Test case pattern matching | |
US7392507B2 (en) | Modularizing a computer program for testing and debugging | |
JP5775829B2 (ja) | ソフトウェアの構造可視化プログラムおよびシステム | |
US20050204344A1 (en) | Program analysis device, analysis method and program of same | |
US7530056B1 (en) | Method and system for detecting runtime defects in a program by comparing correct and incorrect runs | |
JPH0950389A (ja) | コンピュータシステムを使って実装される装置及び方法 | |
JP2000122886A (ja) | 半導体試験装置のプログラム作成方式 | |
Sousa et al. | FindSmells: flexible composition of bad smell detection strategies | |
Vayadande et al. | Let Us Lint: A Tool for Code Formatting And Code Enhancing | |
US20150331782A1 (en) | Validating correctness of expression evaluation within a debugger | |
US20030177471A1 (en) | System and method for graphically developing a program | |
Morazán et al. | Visual designing and debugging of deterministic finite-state machines in FSM | |
US10762211B2 (en) | Source code diagnostic instrument | |
JPH1196041A (ja) | データフロー異常検査装置 | |
Koutsopoulos et al. | Advancing data race investigation and classification through visualization | |
US20050022170A1 (en) | Visual debugging interface | |
Mündler et al. | Code Agents are State of the Art Software Testers | |
US20140282414A1 (en) | Method and system for debugging of a program | |
JP2008059515A (ja) | プログラム実行過程の表示方法及びシステム並びにプログラム | |
JPH11224211A (ja) | ソフトウェア検査支援装置 | |
US20150199183A1 (en) | Program analysis apparatus and program analysis method | |
JP4200534B2 (ja) | データフロー異常検査装置 | |
JPH0926897A (ja) | プログラム解析装置及びプログラム解析方法 | |
JP3648710B2 (ja) | プログラム解析システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20041207 |