JPH0793144A - プログラム解析装置 - Google Patents

プログラム解析装置

Info

Publication number
JPH0793144A
JPH0793144A JP5233513A JP23351393A JPH0793144A JP H0793144 A JPH0793144 A JP H0793144A JP 5233513 A JP5233513 A JP 5233513A JP 23351393 A JP23351393 A JP 23351393A JP H0793144 A JPH0793144 A JP H0793144A
Authority
JP
Japan
Prior art keywords
program
processing
error
error processing
data
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
Application number
JP5233513A
Other languages
English (en)
Inventor
Sanpachi Uehara
三八 上原
Takao Okubo
隆夫 大久保
Toshiaki Yoshino
利明 吉野
Hiroko Nakayama
裕子 中山
Hiroyuki Yoshida
裕之 吉田
Tatsuo Kondo
竜生 近藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5233513A priority Critical patent/JPH0793144A/ja
Publication of JPH0793144A publication Critical patent/JPH0793144A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 本発明はプログラム解析装置に関し、入力プ
ログラムを処理のまとまりに分類し、データベース化
し、かつエラー処理の分類、データの設定状況の整理を
行い、さらにプログラムを理解するために有効な情報を
抽出することを目的とする。 【構成】 プログラム解析装置を構成する各構成要素の
動作制御を行う主制御手段1と、入力プログラムの構文
解析を行い構文木を生成する構文解析手段2と、構文木
から条件文に基づき制御フローを生成する制御フロー計
算・管理手段3と、構文木から代入文に基づきデータフ
ローを生成するデータフロー計算・管理手段4と、入力
プログラムを管理するプログラム管理手段5と、入力プ
ログラムのエラー処理、編集、等を行う解析処理手段6
とで構成される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はプログラム解析装置に関
する。プログラムの開発及び保守に際して、プログラム
を理解したり再利用する作業が必要である。例えば、プ
ログラムの保守に必要な工数の大半はプログラムの内容
を理解することに費やされている。また、プログラムの
開発において、類似プログラムの再利用が頻繁に行われ
ているが、その際にも類似プログラムの内容を理解し、
処理内容毎に分類する必要がある。
【0002】一方、数多くのアプリケーションプログラ
ムが開発される中で、既存のプログラムの変更や異なる
プロセスへの移行等を容易にするために、既存のプログ
ラムから抽象度の高い情報を抽出することが要求され
る。このためのプログラム解析技術として、モジュール
の呼び出し関係、プログラムの制御構造、データフォロ
ー、データ構造の生成方法や、仕様書生成方法が提案さ
れているが、これらの技術はデータの設定個所、データ
同士の依存関係などを解析するものなので、処理やデー
タの意味までは分からない。
【0003】本発明の第1は、プログラムを入力し、制
御フローとデータフローを基にしてこれを編集し、外部
モジュールの呼び出し、エラー及びエラーチェック等の
処理のまとまりに分類し、それぞれの内容をドキュメン
ト化若しくはデータベース化する手段を備えたプログラ
ム解析装置に関する。本発明の第2は、プログラムを入
力して仕様書を生成する際に、正常時の処理とエラー時
の処理を識別し、識別したエラー処理は更にその内容に
よって分類し、それぞれに処理概要として表題を与え、
さらに、プログラム中のデータの設定を、データ定義に
基づく階層的なレコード形式の表で記述する手段を備え
たプログラム解析装置に関する。
【0004】本発明の第3は、プログラム中を解析して
データのデフォルト値を検出し、得られたデフォルト値
情報を元のプログラムと関連付けて表示して有効な情報
を抽出する手段を備えたプログラム解析装置に関する。
【0005】
【従来の技術】図1は一般な制御フローとデータフロー
の作成手順の説明図である。まず、段階(1)に例示す
るようなプログラムを入力すると、段階(2)に示すよ
うな構文木を作成する。図示のように、代入文、条件文
等で木構造に構成される。次に、段階(3)に示すよう
に、制御部分について構文木の条件文に基づき制御フロ
ーを作成し、段階(4)に示すようにデータ部分につい
て、データフローを作成する。なお、制御フローの構成
要素であるブロックと、プログラムの構成要素であるス
テートメントや式とは対応づけられており、相互に参照
することができる。
【0006】上述の制御フローとデータフローの計算に
際して、図2で示す構成の制御フロー計算・管理手段3
及びデータフロー計算・管理手段4、等を使用して、プ
ログラム上のある個所で代入されたデータがどこで参照
するされるかを計算することができる。そして、この技
術はプログラミング言語を対象とするコンパイラ等で使
用されている。
【0007】一方、従来、生成される仕様書は主にプロ
グラムの構造に依存した構成になっているものが多く、
処理内容を認識して分類しているものは見られない。さ
らに、従来のデータフローの解析方法は、プログラム内
のデータのチェック、分解、結合、変換などを解析する
ものであり、データの特定の処理のみを抽出することは
できない。
【0008】
【発明が解決しようとする課題】一般に、プログラムは
複雑な多くの処理を伴う。例えば、あるデータ構造の値
を設定するために、中間変数を用いたり、処理を条件文
で分岐させたりする。ところで、従来技術では、プログ
ラムの各部分が何の処理を行うためのものか、といった
目的を自動的に分類することは出来なかった。例えば、
プログラム中のあるデータへの設定(代入)が、エラー
処理の一環なのか、外部モジュール呼び出しのためのパ
ラメータ設定の一環なのか区別できなかった。
【0009】また、生成仕様書を利用可能にするために
は、個々の命令の解釈だけでなく、プログラム全体を処
理別にまとまった単位に分割し、各個所において何のた
めの処理が行われているのか明示する必要がある。ま
た、従来のデータフローの解析方法は、データの特定の
処理のみを抽出することはできないので、プログラムの
処理の意味が理解出来ず、操作員が経験から推測しなが
らプログラムを読まなければならないという問題を生じ
ていた。例えば、デフォルト値の検出についても、プロ
グラムの代入文とその前後の処理の意味を考慮して分類
/検出しなければならないという問題があった。
【0010】本発明の第1の目的は、上述の問題に鑑
み、プログラムを入力すると、入力プログラムを、制御
フローとデータフローを基にして編集し、外部モジュー
ルの呼び出し、エラー及びエラーチェック等の処理のま
とまりに分類し、それぞれの内容をドキュメント化若し
くはデータベース化する手段を備え、プログラム解析を
行うことにある。
【0011】本発明の第2の目的は、プログラムから設
計仕様書を生成する過程において、エラー処理の分類、
データの設定状況の整理を行うことにある。本発明の第
3の目的はプログラム中の未入力チェックのパターンを
用いてデフォルト値に検出を行うことにより、プログラ
ムを理解するために有効な情報を抽出することにある。
【0012】
【課題を解決するための手段及び作用】図2は本発明の
基本構成図である。第1の発明の解析処理手段の動作
は、以下のようになる。 予めエラー時の必須処理の一部を登録しておくことに
より、入力されたプログラムからその中で行われている
エラー処理全体を認識し、 予めエラー時の必須処理の一部を登録しておくことに
より、入力されたプログラムの中で行われているエラー
判定(チェック)の処理部分を認識し、 入力されたプログラムから、レコード(データ)の構
造に従って、編集(代入)結果を整理し、 入力されたプログラムから、外部モジュールの呼び出
しに伴う処理部分を認識し、 上記〜の処理結果を基に、その内容をプログラム
説明のためのドキュメントとして作成し、 上記〜の処理結果を基に、その内容をデータベー
スに格納する。
【0013】さらに、第2の発明の仕様書生成では、以
下の動作を行う。 (1) エラー時の必須処理を基に、プログラムにおけるエ
ラー処理を自動的に認識し、(2) エラー処理内の分岐、
及びエラー処理に分岐してくる個所によって、エラー処
理を共通処理し、個別処理に分類し、(3) エラー処理に
分岐する条件を利用し、エラー処理に標題を与え、(4)
上記(2) により分類された処理に従って、エラー処理に
標題を与え、(5) プログラムの返り値又はフラグを使用
して、エラー処理に標題を与え、(6) エラー処理が呼び
出すルーチンの種類に従って、エラー処理に標題を与
え、(7) エラー処理中で出力するエラーメッセージの内
容に基づいて、エラー処理に標題を与え、(8) プログラ
ム中の任意の状態における、ある構造化データに対する
値の設定状態について、データの階層的なレコードの表
形式で表示し、(9) 上記(8) の方式において、データに
対する設定がない場合、設定の無いデータに対応する欄
は省略する形式で表示し、(10)上記(8) の方式におい
て、データが初期化されている場合、該当データに対応
する欄に初期化である旨を表示する。
【0014】さらに、第3の発明のプログラム解析で
は、 a)プログラム中から入力変数初期化のパターンから、
未入力チェック部分を解析し、デフォルト値を検出し、 b)その際に、デフォルト値をグローバルなものと、ト
ランザクション固有なものとに分類し、 c)抽出されたデフォルト値情報と元のプログラムを関
連づけて表示する。
【0015】
【実施例】図3は本発明の一実施例構成図である。図2
構成の解析処理手段は、図示のように、エラー処理認識
手段61、編集処理整理手段62、外部モジュール認識
手段63、ドキュメント生成手段64、認識結果データ
ベース管理手段65により構成される。これらの手段の
動作例は後述する図4〜図8において詳述する。
【0016】本発明の構成では以下の情報を使用し処理
を行う。 制御フロー及びデータフローを用意する。 エラー時の必須処理とは、後述するように、例えば、
リターンコードに「0」を以外を代入する、といったこ
とである。本発明では、制御フローに基づいて、エラー
時の必須処理部分との正常処理部分との分岐点を求める
ことにより、エラー処理のプログラム部分、及びエラー
のチェック条件を求める。
【0017】ここで、データ構造とは、データに関す
る意味を表現している。その構造に基づいてプログラム
中のデータ設定(代入)処理を整理する。 外部モジュールへパラメータとして渡されるデータ名
と、それからのリターンコードのデータ名、それぞれパ
ラメータ設定部分、リターンコードに基づく処理部分の
認識に用いる。
【0018】図4はエラー処理部における制御フローの
一例である。基本的には、エラー必須処理を予め登録し
ておき、この必須処理の認識を手掛かりとする。ここ
で、必須処理とは、一般に、「リターンコードを「0」
以外の値に設定する」等である。リターンコードは、
外部手続きのパラメータの一部又はグローバルデータ
(COBOLやC言語)、或いは関数値(C言語やP
ASCAL)である。の場合には個別に名前を登録す
る(一般には命名規約で限定されたものとなる)。本図
の内容は、エラー必須処理を基にエラー処理部分、例え
ば、エラーメッセージの設定や適性な値を設定しておく
等、及びエラー処理を行うべきかを判別する部分を認識
していくものである。以下に各ブロックを説明する。
【0019】ブロック1では、まず制御フローを作成
し、プログラム出口を見つける。ブロック2では、登録
されている「エラー必須処理」を行っている個所を全て
見つける。ブロック3では、それぞれのエラー必須処理
について、どのプログラム出口へ到達するか制御フロー
を辿る。これにより、プログラム出口を正常出口と、エ
ラー出口に分類する。
【0020】ブロック4では、以下を各エラー出口につ
いて行う(繰返し処理)。即ち、 出口ブロックを“pass”情報に加える。例えば、
ブロック8。 以下を“pass”の先頭要素へ行くブロック毎に行
う(繰返し処理)。例えば、ブロック6及び7。まず、
そのブロックから正常出口へ行けるかチェックし、行け
なければ“pass”の先頭に加える。この際、異なる
“pass”になる場合は“pass”をコピーする。
同時に、もしリターンコードが設定されていれば、その
内容を“pass”に関連づけて記録しておく。例え
ば、ブロック6及び8でリターンコードが「1」。そし
て、正常出口に行けば、エラー出口に行く場合の条件を
記録する。例えば、ブロック5,6,8で条件A≦1。
【0021】本例では、ブロック3が正常処理との分岐
ブロックになる。上記の手順によると、以下の情報が認
識できる。即ち、 リターンコード1→ブロック5,6,8→チェック条件
A≦1,B>1。 リターンコード2→ブロック5,6,8→チェック条件
A≦1,B≦1。 即ち、ブロック5,6,7,8がエラー処理部分であ
る、と認識することができる。
【0022】図5は編集処理整理手段の動作説明図であ
る。例示の入力されたプログラムからレコード(デー
タ)の構造の定義に従って、編集(代入)結果を整理す
る。まず、プログラム中の全ての代入文を構造体(レコ
ード)に対応づける。同じデータ或いは共通部分を持つ
データへの代入は、実行順で最も後のものを記録する。
また条件を伴っている場合(例えば、IF文の中)は、
その条件も記録する。結果的に以下の表となる。
【0023】
【表1】
【0024】図6は外部モジュール認識手段における動
作説明図である。入力されたプログラムから外部モジュ
ールの呼び出しに伴う処理部分を認識する。具体的に
は、以下を全てのCALL文について行う。選択した
CALL文に到達する代入文の中から、該当する(登録
されている)パラメータへの設定文を見つけ、選択し
たCALL文から到達する代入文の中から、該当する
(登録されている)リターンコードの判定処理とその内
部処理を見つける(例えば、IF文)。この方式による
と、パラメータの設定については、データ名、値、条
件、及びプログラム個所、の形式で情報が整理できる。
一方、リターンコードに基づく復帰処理については、リ
ターンコードの値、処理内容、プログラム個所の形式で
情報が整理できる。
【0025】図7はドキュメント生成手段の説明図であ
る。エラー処理認識、編集処理整理、外部モジュール認
識、等の処理結果を基に、その内容をプログラム説明の
ためのドキュメントを作成する。具体的には、認識した
情報をプログラムの行で分類し、以下をプログラムの先
頭行より繰り返して説明する。即ち、、行に対応した
認識情報があれば、その内容を出力するプログラムの範
囲を行番号で出力し、そして、プログラムの行を出力
する。図示のように、*領域Aへの設定処理(17─1
8)、*エラーチェック処理(20─21)、*エラー
処理(40─41)である。
【0026】図8はデータベース管理手段の格納形態の
説明図である。エラー処理認識、編集処理整理、外部モ
ジュール認識、等の処理結果を基に、その内容をデータ
ベースに格納し、利用する。具体的には、認識した情報
をプログラム毎及びその下のカテゴリ毎に分類し格納す
る。これらを、またそれぞれのカテゴリ別及びモジュー
ル別に検索できるようにする。さらにプログラムの行番
号によっても格納しておく。
【0027】図9〜11は前述の図4のエラー処理をさ
らに補足するための説明図である。これらの図はエラー
処理のパターン例を示している。制御フローの面から見
て、プログラムにおけるエラー処理のパターンは通常3
通りに分かれる。図9は第1のパターンであり、プログ
ラム中、ある条件によってエラー処理に分岐し、処理を
行った後はそのままプログラムを抜ける。即ち、図示の
ように正常時のプログラム出口と、異常時のプログラム
出口を別々に持つ場合である。
【0028】図10は第2のパターンであり、条件分岐
によってエラー処理を行うが、エラー処理後は正常時と
共通の処理を行う場合である。図11は第3のパターン
であり、上記の第2のパターンよりも一般的なパターン
であり、必要に応じて条件分岐してエラー処理を行う場
合である。エラー処理を認識する方法として、第1にエ
ラー時の必須処理を処理中に含有するか否かの判定を用
いる。その方法には以下の2通りの方法、即ち、第1の
方法は前述したエラー必須処理を利用する方法であり、
第2の方法は返り値(フラグ)の条件判定を利用する方
法である。
【0029】第1の方法のエラー時の必須処理とは、エ
ラー時に必ず実行される処理であり、これらの処理は予
め登録しておく。エラー必須処理の例として、プログラ
ムの返り値への異常値の設定、エラールーチンの呼び出
し、エラーメッセージの出力若しくは出力呼び出し、等
である。図12はエラー処理ブロックの範囲の説明図で
あり、図13は第1の方法のフローチャートである。図
12において、エラー必須処理をブロック0とすると、
ブロック0から必然的に到達可能なブロックの範囲を点
線で示す。ブロック1はブロック0に必然的に到達可能
であるが、ブロック2はブロック0に必然的に到達可能
でない。
【0030】図13にステップで示すように、概略のス
テップは、(1) 先ず、制御フローを作成し、(2) 次に、
登録されている「エラー必須処理」を行っている個所を
全て見つけ、(3) 個々のエラー必須処理について以下の
ステップを繰返し処理する。即ち、(3) において、エラ
ー必須処理を含むブロックを「エラー処理」と認識し、
エラー必須処理を含むブロックを起点とし、起点からフ
ローの正方向、逆方向それぞれについて1つずつブロッ
クを辿る。(3) の詳細は図示のフローチャートのとおり
である。
【0031】第2の方法は返り値(フラグ)の条件判定
を利用するものであり、図14は第2の方法のフローチ
ャートである。この方法は前述の第3のパターンに対応
しており、図11に示すように、異常発生時に返り値
(又はフラグ)を異常値に設定しておいて正常時と同じ
処理を行い、後で返り値への設定値を条件にエラー処理
に分岐する場合である。図14に示すように、(1) 先
ず、前述の第1の方法により、エラー必須処理を利用し
たエラー処理の認識を行い、(2) 次に、プログラム中の
全ての条件分岐の判定条件から、返り値を判定している
ブロックを探索し、(3) そして、返り値を判定条件に持
つ全てのブロックについて、返り値が異常値を示した場
合に分岐先の最初のブロックをエラー必須処理ブロック
と仮定し、前述の第1の方法の段階(3) を行う。
【0032】図15はエラー処理の分類の第1のパター
ンの説明図であり、図16はエラー処理の分類の第2の
パターンの説明図である。図15はエラー処理が共通及
び個別処理に分割されるパターンとして、エラー処理内
で分岐する場合であり、図16はエラー処理の外から分
岐する場合である。図17は共通処理と個別処理の分岐
の説明図である。図15及び図16を参照しつつ以下に
説明する。(1) 正常処理からエラー処理に分岐した先の
最初のブロック(エラー処理の開始ブロック)となる各
ブロックを起点として以下の処理を行う。先ず、パスの
重さを1とし、起点ブロックに登録する(11)。次に、エ
ラー処理が終了するまで、ブロックを後方に1つづつ進
み以下を行い(12)、ブロックが前方から合流してくる場
合は以下の処理を行い(121) 、合流するパスの重さを合
計した値を、現パスの重さとする(1211)。次に、現パス
の重さをブロックに登録する(122) 。ブロックが後方に
分岐する場合には以下を行う(123) 。現在のパスの重さ
を分岐数で割った値を分岐する各パスを与える(1231)。
さらに、各エラー処理について以下の処理を行う(2) 。
エラー処理中、パスの重さの最大値を持つブロック群を
共通処理とし(21)、最大値以外の重さを持つブロックは
個別処理と認識する(22)。
【0033】図18はエラー処理に標題を与える処理の
フローチャートである。エラー処理に分岐する条件分岐
が、特定の変数の判定を行っている場合、その分岐によ
って行うエラー処理は、その変数が異常である場合のエ
ラー処理ということになる。従って、標題は「(該当変
数)エラー処理」と与えることができる。例えば、プロ
グラム呼び出しのパラメータの場合、標題は「パラメー
タエラー処理」となり、プログラム呼び出しの返り値の
場合、「返り値エラー処理」となる。図18において、
条件分岐の判定がある変数の値判定である場合には、起
点ブロックの重さが探索ブロックの重さより小さくなる
まで、後方を探索し、ブロックに「(エラー名)エラー
処理」の標題を与える。
【0034】なお、図17において、認識できた共通処
理及び個別処理の分類に従い、共通処理の部分に「共通
処理」の標題を与える。また、プログラムの返り値は、
異常値でも複数の値をとる場合がある。これはエラーで
も複数のエラー状態があることを示す。そこで、その返
り値が意味するエラー状態を用いて「(エラー状態)エ
ラー処理」と標題を与える。返り値に対応するエラー状
態が登録されていれば良いが、登録されていない場合は
返り値自体をエラー状態として用いる。
【0035】また、エラー処理の種類により呼び出すエ
ラー処理ルーチンが異なる場合がある。このとき、エラ
ー処理ルーチンに対応するエラー処理名を標題として与
える。さらに、エラー処理が出力するエラーメッセージ
は、そのエラーの状態を通知するものである。従って、
その内容、又は予め登録された対応するエラー状態、を
標題として与える。
【0036】図19はCOBOLプログラムのデータ定
義の一例であり、図20は設定情報の作成手順フローチ
ャートである。データの設定状況を把握するためには、
データフローを利用する。データフローには現在の各デ
ータが持つ値が設定情報として格納される。プログラム
上でそのデータ領域に対する設定があった場合、設定内
容に従って設定情報が更新される。
【0037】本発明では階層的な構造のデータを対象に
しているので、あるデータへの設定はその上位項目、下
位項目、さらにその領域の定義している(共有してい
る)データにも影響を及ぼす。本発明ではデータ定義を
解析し、あるデータに対して領域を共有するデータとそ
の位置関係のリスト情報を与える。図19において、例
えば、A12 に対して領域を共有するデータの情報は以下
のようになる。
【0038】((A 8 10) (A1 8 10) (A12 0 10) (A121 0
4) (A122 4 4) ( A123 8 2) 上記の括弧中の最初の要素はデータ名である。2番目の
要素はA12 に対する位置関係( オフセット) を表す。こ
のように、任意の時点におけるデータの設定情報を格納
するデータフローを作成しておくことにより、その時点
のデータ設定情報の表示を階層的な表形式で表示するこ
とができる。図20はデータフローの作成手順を示す。
図示のように、基本的にはプログラムをフロー上で繰返
し追跡することにある。そして、データへの設定がある
場合には、設定されているデータの設定値の更新する。
【0039】図21は表示手順のフローチャートであ
る。図示のように、最上位データを起点として、該当デ
ータ名を表示し、該当データが下位データを持つならば
下位でに移動し、持たない時は該当データの設定値を抽
出し、設定値欄に表示し、該当データが同じ層にデータ
を持つ時は同じ層の次のデータに移動する。図22はプ
ログラムの手続き部の一部であり、図23は図22の手
続き終了時を表すデータの設定表の表示例である。
【0040】図24は省略表示の一例である。データを
階層的なレコードの表形式で表示する方式において、設
定状況を表示する時に、その時点まででデータに設定が
ない場合、そのデータの項目名の表示を省略する。但
し、完全に省略するとデータ領域がないように誤解され
るので、データ領域が存在することを表すため当該部分
は空白を挿入する。図19のデータ定義において、プロ
グラムのある時点で設定状況を表示する際に、A12 領域
に対して設定がないとすると、この時は、図24のよう
に表示する。
【0041】図25は初期化表示の一例である。省略形
式で表示する形式において、設定状況を表示する時、デ
ータの初期値が設定されている場合に、該当データの欄
は「初期化」と表示する。あるデータの配下項目に全て
の初期値が設定されている場合に、まとめて該当データ
に対して初期化表示を行う。初期値はプログラムを実装
するシステムに依存するが、通常は、0や空白等であ
る。これらは予め初期値として登録しておく。
【0042】図26は第3の発明の原理説明図である。
図中、1は解析対象となるプログラム、2はデフォルト
値を解析する対象の変数、3はプログラムで使用さてい
る未入力変数のチェックパターンをそれぞれ格納する記
憶装置である。4はデフォルト値検出部であり、3の入
力チェックパターンに基づき1のプログラムを解析し、
2のデフォルト値とデフォルト値が現れるトランザクシ
ョン名を得る。5は記憶装置であり、2の変数名、デフ
ォルト値が現れたトランザクション名、デフォルト値、
適用された未入力チェックパターン、対応するプログラ
ム個所等を格納する。5のデフォルト値をもとにグロー
バルなデフォルト値とトランザクション固有のデフォル
ト値を分類し、変数毎のデフォルト値を得る。
【0043】7は変数、デフォルト値、デフォルト値が
用いられたトランザクション名、デフォルト値がグロー
バルか否かの情報を格納する。8のデフォルト値表示部
では、5のデフォルト値情報1、6のデフォルト値情報
2、元のプログラムからデフォルト値と検出されたプロ
グラム個所をリンクして表示する。図27はデフォルト
値検出のフローチャートである。本発明では、先ず、解
析すべきプログラムと変数、プログラムで使用される入
力チェックパターンを受け取り、プログラム解析して変
数のデフォルト値と適用した入力チェックパターン、プ
ログラム内の対応個所を得る。具体的には、入力された
変数について未入力チェックパターンを満たす部分をプ
ログラム中から探し(1) 、未入力チェック部分がある時
は(2) 、パターンから変数にクリア値を代入している初
期化処理文を見つける(3) 。さらにパターンから、変数
がクリア値かどうかをチェックしている未入力条件分岐
文を見つけ(4) 、未入力条件分岐文において変数がクリ
ア値の場合の分岐先が、エラー処理か否か判定し(5) 、
エラー処理の場合は、未入力エラーが現れたトランザク
ション名等をデフォルト値情報1とする(6) 。一方、エ
ラー処理でない場合は、デフォルト値を求め(7) 、デフ
ォルト値等をデフォルト値情報1とする(8) 。
【0044】図28はデフォルト値分析のフローチャー
トである。デフォルト値をトランザクション固有のもの
とシステム全体で普遍なものに分け、トランザクション
固有なものにはトランザクション毎のデフォルト値を得
る。普遍的なものには、未入力エラーとなっているトラ
ンザクションがないかを調べ、無い場合にはグローバル
なデフォルト値を得る。未入力エラーとなっているトラ
ンザクションがある場合は、グローバルなデフォルト値
とそれが適用されているトランザクション名を得る。
【0045】具体的には、先ず、同じ変数について全て
のデフォルト値情報を調べ(1) 、デフォルト値が全て同
じか否か判定し(2) 、同じ場合にはデフォルト値等をデ
フォルト値情報2とし(3) 、さらに、全てにデフォルト
値が用いられているか判定する(4) 。一方、デフォルト
値が全て同じでない時はトランザクションごとのデフォ
ルト値等をデフォルト値情報2とし(5) 、全てにデフォ
ルト値が用いられていない場合にはデフォルト値情報2
にデフォルト値が適用されているトランザクション名を
追加する(6) 。
【0046】図29はデフォルト値表示のフローチャー
トである。検出されたデフォルト値情報を元のプログラ
ムと関係づけて表示するようにしている。従って、プロ
グラムで使われている入力チェックのパターンが分かっ
ている場合には、デフォルト値の検出と分析が可能とな
るため、プログラムを理解するために有効な情報を抽出
することが可能となる。
【0047】具体的には、先ず、変数、トランザクショ
ン、元のプログラムを対応づけて表示し(1) 、表示終了
か否か判定し(2) 、表示終了でなければ、別の変数、ト
ランザクション、またはプログラム中の未入力パターン
適用個所を指定したか否か判定し(3) 、指定した場合に
は対応する変数、トランザクション、プログラムを表示
する(4) 。
【図面の簡単な説明】
【図1】一般な制御フローとデータフローの作成手順の
説明図である。
【図2】本発明の基本構成図である。
【図3】本発明の一実施例構成図である。
【図4】本発明のエラー処理部における制御フローの一
例である。
【図5】本発明の編集処理整理手段の動作説明図であ
る。
【図6】本発明の外部モジュール認識手段における動作
説明図である。
【図7】本発明のドキュメント生成手段の説明図であ
る。
【図8】本発明のデータベース管理手段の格納形態の説
明図である。
【図9】エラー処理の第1のパターンである。
【図10】エラー処理のの第2のパターンである。
【図11】エラー処理の第3のパターンである。
【図12】エラー処理ブロックの範囲の説明図である。
【図13】第1の方法のフローチャートである。
【図14】第2の方法のフローチャートである。
【図15】エラー処理の分類の第1のパターンの説明図
である。
【図16】エラー処理の分類の第2のパターンの説明図
である。
【図17】共通処理と個別処理の分岐の説明図である。
【図18】エラー処理に標題を与える処理のフローチャ
ートである。
【図19】COBOLプログラムのデータ定義の一例で
ある。
【図20】本発明の設定情報の作成手順フローチャート
である。
【図21】表示手順のフローチャートである。
【図22】プログラムの手続き部の一例である。
【図23】図22の手続き終了時を表すデータの設定表
の表示例である。
【図24】省略表示の一例である。
【図25】初期化表示の一例である。
【図26】第3の発明の原理説明図である。
【図27】本発明のデフォルト値検出のフローチャート
である。
【図28】デフォルト値分析のフローチャートである。
【図29】デフォルト値表示のフローチャートである。
【符号の説明】
1…主制御手段 2…構文解析手段 3…制御フロー計算・管理手段 4…データフロー計算・管理手段 5…プログラム管理手段 6…解析処理手段 61…エラー処理認識手段 62…編集処理手段 63…外部モジュール認識手段 64…ドキュメント生成手段 65…認識結果データベース管理手段
───────────────────────────────────────────────────── フロントページの続き (72)発明者 中山 裕子 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 吉田 裕之 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (72)発明者 近藤 竜生 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内

Claims (18)

    【特許請求の範囲】
  1. 【請求項1】 プログラム解析装置を構成する各構成要
    素の動作制御を行う主制御手段(1)と、 入力プログラムの構文解析を行い構文木を生成する構文
    解析手段(2)と、 前記構文木から条件文に基づき制御フローを生成する制
    御フロー計算・管理手段(3)と、 前記構文木から代入文に基づきデータフローを生成する
    データフロー計算・管理手段(4)と、 前記入力プログラムを管理するプログラム管理手段
    (5)と、 前記入力プログラムのエラー処理、編集、等を行う解析
    処理手段(6)とを備え、 前記解析処理手段は、前記入力プログラムを、制御フロ
    ーとデータフローに基づく編集処理、外部モジュールの
    呼び出し処理、エラー処理及びエラーチェック処理のま
    とまりに分類し、分類されたそれぞれの内容をドキュメ
    ント化若しくはデータベース化することを特徴とするプ
    ログラム解析装置。
  2. 【請求項2】 前記解析処理手段(6)は、エラー処理
    認識手段(61)、編集処理整理手段(62)、外部モジュール
    認識手段(63)、ドキュメント生成手段(64)、認識結果デ
    ータベース管理手段(65)を具備する請求項1に記載のプ
    ログラム解析装置。
  3. 【請求項3】 前記エラー処理認識手段(61)は、予めエ
    ラー処理時の必須処理の一部を登録しておくことによ
    り、入力プログラムからその中で行われているエラー処
    理の全体を自動的に認識し、かつエラー判定の処理部分
    を認識するようになっている請求項2に記載のプログラ
    ム解析装置。
  4. 【請求項4】 前記編集処理整理手段(62)は、入力プロ
    グラムからデータの構造に従って、編集若しくは代入結
    果を整理するようになっている請求項2に記載のプログ
    ラム解析装置。
  5. 【請求項5】 前記外部モジュール認識手段(63)は、入
    力プログラムから外部モジュールの呼び出しに伴う処理
    部分を認識するようになっている請求項2に記載のプロ
    グラム解析装置。
  6. 【請求項6】 前記ドキュメント生成手段(64)は、前記
    各処理結果を基に、その内容をプログラム説明のための
    ドキュメントとして生成するようになっている請求項1
    乃至5に記載のプログラム解析装置。
  7. 【請求項7】 前記エラー処理認識手段(61)は、エラー
    処理内の分岐、及びエラー処理に分岐している個所によ
    って、エラー処理を共通処理及び個別処理に分類するよ
    うになっている請求項2に記載のプログラム解析装置。
  8. 【請求項8】 前記エラー処理認識手段(61)は、エラー
    処理に分岐する条件を利用してエラー処理に標題を与え
    るようになっている請求項2に記載のプログラム解析装
    置。
  9. 【請求項9】 前記エラー処理認識手段(61)は、前記共
    通処理及び個別処理に従ってエラー処理に標題を与える
    ようになっている請求項7に記載のプログラム解析装
    置。
  10. 【請求項10】 前記エラー処理認識手段(61)は、プロ
    グラムの返り値又はフラグを利用してエラー処理に標題
    を与えるようになっている請求項2に記載のプログラム
    解析装置。
  11. 【請求項11】 前記エラー処理認識手段(61)は、エラ
    ー処理が呼び出すルーチンの種類に従って、エラー処理
    に標題を与えるようになっている請求項2に記載のプロ
    グラム解析装置。
  12. 【請求項12】 前記エラー処理認識手段(61)は、エラ
    ー処理中でエラーメッセージの内容に基づいて、エラー
    処理に標題を与えるようになっている請求項2に記載の
    プログラム解析装置。
  13. 【請求項13】 前記ドキュメント生成手段(64)は、プ
    ログラム中の任意の状態における、ある構造化データに
    対する値の設定状態について、データの階層的なレコー
    ドの表形式で表示するようになっている請求項2に記載
    のプログラム解析装置。
  14. 【請求項14】 前記ドキュメント生成手段(64)は、デ
    ータに対する設定がない場合に、設定のないデータに対
    応する欄は省略形式で表示するようになっている請求項
    13に記載のプログラム解析装置。
  15. 【請求項15】 前記ドキュメント生成手段(64)は、デ
    ータが初期化されている場合に、該当データに対応する
    欄に初期化である旨を表示するようになっている請求項
    13に記載のプログラム解析装置。
  16. 【請求項16】 前記エラー処理認識手段(61)は、入力
    プログラム中の入力変数初期化のパターンから、未入力
    チェック部分を解析し、デフォルト値を検出するように
    なっている請求項2に記載のプログラム解析装置。
  17. 【請求項17】 前記エラー処理認識手段(61)は、前記
    デフォルト値をグローバルなものと、トランザクション
    固有なものとに分類するようになっている請求項16に
    記載のプログラム解析装置。
  18. 【請求項18】 前記エラー処理認識手段(61)は、抽出
    されたデフォルト値情報と元のプログラムを関連づけて
    表示するようになっている請求項16に記載のプログラ
    ム解析装置。
JP5233513A 1993-09-20 1993-09-20 プログラム解析装置 Withdrawn JPH0793144A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5233513A JPH0793144A (ja) 1993-09-20 1993-09-20 プログラム解析装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5233513A JPH0793144A (ja) 1993-09-20 1993-09-20 プログラム解析装置

Publications (1)

Publication Number Publication Date
JPH0793144A true JPH0793144A (ja) 1995-04-07

Family

ID=16956210

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5233513A Withdrawn JPH0793144A (ja) 1993-09-20 1993-09-20 プログラム解析装置

Country Status (1)

Country Link
JP (1) JPH0793144A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050722A (ja) * 2001-08-03 2003-02-21 Sony Corp プログラム解析システムとプログラム解析方法
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
CN100461132C (zh) * 2007-03-02 2009-02-11 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003050722A (ja) * 2001-08-03 2003-02-21 Sony Corp プログラム解析システムとプログラム解析方法
JP2004145381A (ja) * 2002-10-21 2004-05-20 Hitachi Ltd ソースプログラムの静的解析装置
CN100461132C (zh) * 2007-03-02 2009-02-11 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法

Similar Documents

Publication Publication Date Title
JPH08190587A (ja) 業務プロセスのシミュレーションシステム
US9880834B2 (en) Source program analysis system, source program analysis method, and recording medium on which program is recorded
US20030115025A1 (en) Method and apparatus for wrapping existing procedure oriented program into component based system
JPH0683598A (ja) ジョブフロー仕様書自動作成方法
US8572551B2 (en) Difference log production for model merging
JPH0540616A (ja) プログラム仕様生成方法
JP5405684B1 (ja) ソースプログラムのプログラミング言語変換装置
JPH0793144A (ja) プログラム解析装置
JP2007122207A (ja) プログラム分析プログラム、プログラム分析装置、プログラム分析方法
JPH11224186A (ja) ソフトウェア解析装置及びソフトウェア解析方法
JP2000040085A (ja) 日本語形態素解析処理の後処理方法および装置
AU760395B2 (en) Program reproducing method and device, and medium on which program for program reproduction recording
US5551036A (en) Method and system for generating operation specification object information
JP2000207246A (ja) デバッグ支援装置及び方法並びにデバッグ支援用ソフトウェアを記録した記録媒体
JPH0926897A (ja) プログラム解析装置及びプログラム解析方法
JPH09288580A (ja) ソースプログラムの最適化装置および最適化方法
JPH0830448A (ja) プログラム仕様整合検査装置
CN117608556A (zh) 一种数据处理方法、装置、设备及介质
JPH09101879A (ja) プログラム解析装置
JP2000089945A (ja) 統合型ソフトウエア開発支援システム
JP2000112747A (ja) プログラム資産における非実行文の等価性検証装置
JPH06214777A (ja) プログラム開発方法及び装置
JPH05298082A (ja) プログラム編集装置及びその方法
JP2002222099A (ja) プログラム開発支援装置、記録媒体、及びプログラム
JP2002073373A (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: 20001128