JPH06332684A - プログラム修正支援装置 - Google Patents

プログラム修正支援装置

Info

Publication number
JPH06332684A
JPH06332684A JP5121405A JP12140593A JPH06332684A JP H06332684 A JPH06332684 A JP H06332684A JP 5121405 A JP5121405 A JP 5121405A JP 12140593 A JP12140593 A JP 12140593A JP H06332684 A JPH06332684 A JP H06332684A
Authority
JP
Japan
Prior art keywords
variable
program
module
reference relation
name
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.)
Pending
Application number
JP5121405A
Other languages
English (en)
Inventor
Toshiyuki Tanaka
敏幸 田中
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP5121405A priority Critical patent/JPH06332684A/ja
Publication of JPH06332684A publication Critical patent/JPH06332684A/ja
Pending legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 大域変数の修正による影響箇所を1箇所もも
れることなく修正することを支援できるプログラム修正
支援装置を提供する。 【構成】 変数参照関係抽出手段5は、プログラム記憶
装置からプログラムを読みだし、どのモジュールがどの
大域変数を参照しているか、どのモジュールがどの変数
に代入を行なっているかを抽出し、その結果を変数参照
関係記憶部7に記憶する。次に、プログラム修正手段8
は、プログラムの修正を行なう場合、現在修正している
プログラムのモジュールを判定し、そのモジュールが代
入している大域変数名を表示するとともに、その変数を
参照しているモジュールの名前を表示する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、計算機のプログラムの
保守・更新時において、プログラマに対してプログラム
の修正支援装置に関し、特に、修正を行なったモジュー
ルに関係する部分を、そこで使われている変数の参照関
係を用いて見つけだし、修正したモジュールに関連する
モジュールの名前を全て提示することによって、修正洩
れをなくすプログラム修正支援装置に関する。
【0002】
【従来の技術】計算機のプログラムの保守・更新時にお
いて、モジュールを修正する場合、その修正が、他のモ
ジュールにまで影響を及ぼすことがある。影響を受ける
部分については、全て修正を施す必要があるが、1箇所
ももれることなく修正することは一般的にいって非常な
困難を伴う。
【0003】従来の方式では、特にモジュール間の呼び
だし関係を用いて、修正したモジュールが、どのモジュ
ールから呼び出されているか、どのモジュールを呼び出
すかを調査しておき、呼びだし関係によって修正の影響
範囲を絞っていた。
【0004】例えばUNIXオペレーティングシステム
に附属するツールである、cxrefや、cflow
は、モジュール間の呼びだし関係である、クロスリファ
レンスや、呼びだしフローを作成する。
【0005】このような方式を利用したものとしては、
特開平4−253223号公報に記載されたものがあ
る。これは、ソースプログラムを編集するエディタにお
いて、関数の参照部の削除に同期して、定義部を自動的
に削除するように構成されたものであり、不要となった
関数の削除処理の効率化、確実化を図ることを可能とす
るものである。
【0006】
【発明が解決しようとする課題】従来の技術では、モジ
ュールの呼びだし関係のみに着目しており、各々のモジ
ュールで使用されている変数については着目していなか
った。
【0007】しかしながら、実際のプログラムの修正を
行なった場合、大域変数にどのような値を設定するかを
修正する場合がある。同じ大域変数を参照しているモジ
ュールが、互いに直接的な呼びだし関係にあるとは限ら
ず、従来のクロスリファンレンスや、フローを用いた方
式では探索できなかった。このため、特定のモジュール
を修正した場合に、それに関連するモジュールの修正も
れが発生する場合があった。
【0008】本発明は、大域変数の修正による影響箇所
を1箇所ももれることなく修正することを支援できるプ
ログラム修正支援装置を提供することを目的とする。
【0009】
【課題を解決するための手段】本発明のプログラム修正
支援装置は、大域変数に対して代入を行なっているモジ
ュールの修正をした場合にプログラムの修正を支援する
プログラム修正支援装置であって、大域変数への参照を
行っているモジュール、または、大域変数に対して代入
を行なっているモジュールの名前を抽出する変数参照関
係抽出手段と、前記抽出された変数参照関係を記憶する
変数参照関係記憶部と、前記変数参照関係記憶部の情報
に基づいて、モジュールの修正に応答し、該モジュール
にて代入されている大域変数が、参照されている他のモ
ジュールの名前を表示するプログラム編集手段とを具備
することを特徴とする。
【0010】
【作用】変数参照関係抽出手段は、大域変数への参照、
または、代入されているモジュールの名前を抽出し、大
域変数名とともに変数参照関係記憶部に記憶する。
【0011】次に、プログラム編集手段は、プログラム
を修正した場合に、どのモジュールが修正されたかを判
断し、変数代入関係記憶部内の当該モジュールが代入し
ている変数名を探しだし、その変数を参照している他の
モジュールをプログラム編集手段の画面に表示する。
【0012】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0013】図1は本発明の一実施の構成図である。本
装置は、編集対象となるプログラム及びデータを記憶す
るプログラム記憶装置としてのハードディスク1、及び
フロッピーディスク2と、キー入力を行うキーボード3
と、プログラム及びデータを表示する表示装置4と、編
集対象としているプログラム上での変数参照関係を抽出
するための変数参照関係抽出手段5、プログラムの編
集、支援を行うためのプログラム編集手段6とからな
る。変数参照関係抽出手段5及びプログラム編集手段6
は、具体的には、CPUによって実現される。
【0014】本装置を用いてプログラム修正を行なう場
合は、あらかじめプログラムをハードディスク1やフロ
ッピーディスク2などのプログラム記憶装置に記憶させ
ておく。
【0015】変数参照関係抽出手段5は、プログラム記
憶装置からプログラムを読みだし、どのモジュールがど
の大域変数を参照しているか、どのモジュールがどの変
数に代入を行なっているかを抽出し、その結果を変数参
照関係記憶部7に記憶する。
【0016】次に、プログラム修正手段8は、プログラ
ムの修正を行なう場合、現在修正しているプログラムの
モジュールを判定し、そのモジュールが代入している大
域変数名を表示するとともに、その変数を参照している
モジュールの名前を表示する。
【0017】本発明は、さまざまなプログラム言語に対
して使用できるが、ここでは、C言語を用いて説明を行
なう。
【0018】変数参照関係抽出手段5では、個々のプロ
グラムの内容をスキャンして、各々のモジュール毎に参
照している大域変数を取り出す。
【0019】変数参照関係は図2に示すフローチャート
により生成される。
【0020】まず、ステップS1において、対象となる
プログラムから、各々の言語に応じて、1文を取り出
す。C言語の場合においては、セミコロンで区切られた
り{,}で区切られている。
【0021】次に、ステップS2において、1文につい
て解析を行なって、どのような種類の文かを判定する。
ここでは、変数定義かどうかの判定を行なう。変数定義
の場合は、次のステップS3に進み、変数定義でない場
合には、ステップS4に進む。
【0022】ステップS3では変数定義の場合の処理を
行う。C言語では、定義さえた変数はすべて大域変数と
なるので、これを大域変数リストに記憶しておく。処理
が終わったらステップS1に戻る。
【0023】ステップS4では、関数定義かどうかを判
定する。判定基準は言語によって異なるが、C言語の場
合では、型名と、{ が来るかどうかによって判定でき
る。関数定義の場合はステップS5に進み、関数定義で
ない場合は、ステップS15に進む。
【0024】まず、関数定義と判定された場合を説明す
る。
【0025】関数定義と判定されると、ステップS5
で、その関数名を作業領域に記憶しておく。
【0026】次に、ステップS6において、1文を読み
込む。
【0027】次に、ステップS7において、変数の定義
かどうか判定する。変数の定義の場合はステップS8に
進み、変数の定義でない場合はステップS9に進む。
【0028】ステップS8では、変数をローカル変数と
して登録しておき、ステップS6に戻る。
【0029】ステップS9では、代入文かどうかを判定
する。代入文の場合はステップS10に進み、代入文で
ない場合は、ステップS12に進む。
【0030】ステップS10では、左辺に使われている
変数名をとりだし、先に登録してある大域変数のリスト
にその変数があれば、その関数で代入している変数とし
て登録しておく。
【0031】次に、ステップS11において、左辺の変
数を参照する変数として登録し、ステップS6に戻る。
【0032】ステップS12では、その他の文かどうか
を判定する。その他の文の場合はステップS13に進
み、その他の文でない場合は、ステップS14に進む。
【0033】ステップS13では、その他の文で、参照
されている変数のうち、先に登録されている大域変数の
リストにあるものを、この関数で参照される変数として
登録しておく。登録が終了したら、ステップS6に戻
る。
【0034】ステップS14では、関数の定義の終わり
かどうかを判定する。終わりの場合は、ステップS1に
戻る。終わりでない場合は、ステップS6に戻る。
【0035】一方、ステップS4で関数定義ではないと
判定された場合は、ステップS15で、その他の文であ
るかどうかを判定する。その他の文でない場合はステッ
プS16に進み、その他の文である場合はステップS1
に戻る。
【0036】ステップS16では、ファイルの終わりか
どうかを判定する。ファイルの終わりの場合はステップ
S17に進み、ファイルの終わりでない場合は、ステッ
プS1に戻る。
【0037】ステップS17では、登録されたリストを
変数参照関係記憶部7に書き出し、一連の処理を終了す
る。
【0038】次に、変数参照関係抽出手段5の処理内容
を具体例を用いて説明する。
【0039】たとえば、図5に示すプログラムfile
1.cを解析する場合、最初の2行は大域変数の定義と
なる。次に関数main()の中では、iについての宣
言が行なわれているが、これは、局所変数の定義であ
る。その後、maptbl,reftblに対して代入
が行なわれている。次に、sub1()では、mapt
blに対してのみ代入が行なわれている。同様にsub
2()では、reftblのみに代入が行なわれる。更
に、図6に示すプログラムfile2.cを処理して、
全処理が終了したとき、変数参照関係記憶部には表1に
示すテーブルができ上がる。
【0040】
【表1】
【0041】次に、プログラム編集手段6の処理内容を
図4に示すフローチャートを用いて説明する。本実施例
で使用するプログラム編集手段は、通常用いられている
プログラム編集手段に対して、本フローチャートでの処
理を付加したものである。
【0042】まず、ステップS41において、カーソル
位置が関数内にあるかどうかを判定する。関数内にある
場合は、ステップ42に進み、関数内にない場合は、プ
ログラムを終了する。
【0043】ステップS42では、関数名を取り出す。
【0044】次に、ステップS43において、変数参照
関係記憶部7からその関数において代入している変数名
を取り出す。
【0045】次に、ステップS44において、変数名を
変数表示領域に表示する。
【0046】次に、ステップS45において、変数が複
数あるかどうかを判定する。複数ある場合にはステップ
S46に進み、単数の場合にはステップS47に進む。
【0047】ステップS46では、最初の変数を取り出
す。
【0048】ステップS47では、その変数を参照して
いる関数名を変数参照関係記憶部7から取り出す。
【0049】次に、ステップS48において、参照して
いる関数を関数表示領域に表示し、一連の処理を終了す
る。
【0050】次に、プログラム編集手段6の具体的な処
理例を示す。図3は前述した図5のプログラムfile
1.c内の関数mainでプログラム編集手段6を実行
した時の表示画面を示す。
【0051】編集画面左上の変数表示領域にその関数で
代入を行なっている変数名を、右上の関数表示領域にそ
の変数を参照している関数名を表示している。
【0052】従来の手法では、特定のモジュールを修正
した場合に、それに関連するモジュールの修正もれが発
生する場合があったが、修正を行なったモジュールが代
入を行なっている変数を参照しているモジュールを表示
することにより、プログラム修正時における修正もれを
なくすことができる。
【0053】修正したモジュールに関連するモジュール
名が表示されるので、使用者は修正忘れをなくすことが
できる。これにより修正もれをなくすことができる。
【0054】
【発明の効果】以上説明したように本発明のプログラム
修正支援装置は、大域変数への参照、または、代入され
ているモジュールの名前を抽出する変数参照関係抽出手
段と、前記抽出された変数参照関係を記憶する変数参照
関係記憶部と、前記変数参照関係記憶部の情報に基づい
て、大域変数の参照を行なっているモジュールの名前を
表示するプログラム編集手段を具備しているので、大域
変数に関連した修正もれをなくすことができる。
【0055】修正したモジュールに関連するモジュール
名が表示されるので、使用者は修正忘れをなくすことが
できる。これにより修正もれをなくすことができる。
【図面の簡単な説明】
【図1】本発明の実施例に関する構成図である。
【図2】変数関係抽出手段のフローチャートである。
【図3】プログラム編集手段により表示される画面の例
である。
【図4】プログラム編集手段のフローチャートである。
【図5】実施例の処理を説明するためのプログラム例で
ある。
【図6】実施例の処理を説明するためのプログラム例で
ある。
【符号の説明】
1、2 プログラム記憶装置 3 キーボード 4 表示装置 5 変数参照関係抽出手段 6 プログラム編集手段 7 変数参照関係記憶部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 大域変数に代入を行っているモジュール
    の修正をした場合に、該モジュールを含むプログラムの
    修正を支援するプログラム修正支援装置であって、大域
    変数への参照を行っているモジュール、または、大域変
    数に代入を行っているモジュールの名前を抽出する変数
    参照関係抽出手段と、前記抽出された変数参照関係を記
    憶する変数参照関係記憶部と、前記変数参照関係記憶部
    の情報に基づいて、モジュールの修正に応答し、該モジ
    ュールにて代入を行っている大域変数が、参照されてい
    る他のモジュールの名前を表示するプログラム編集手段
    とを具備することを特徴とするプログラム修正支援装
    置。
JP5121405A 1993-05-24 1993-05-24 プログラム修正支援装置 Pending JPH06332684A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5121405A JPH06332684A (ja) 1993-05-24 1993-05-24 プログラム修正支援装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5121405A JPH06332684A (ja) 1993-05-24 1993-05-24 プログラム修正支援装置

Publications (1)

Publication Number Publication Date
JPH06332684A true JPH06332684A (ja) 1994-12-02

Family

ID=14810366

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5121405A Pending JPH06332684A (ja) 1993-05-24 1993-05-24 プログラム修正支援装置

Country Status (1)

Country Link
JP (1) JPH06332684A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156802A (ja) * 2012-01-30 2013-08-15 Mitsubishi Electric Corp モジュール依存関係抽出装置、モジュール依存関係抽出方法、及び、プログラム
US9069892B2 (en) 2013-05-10 2015-06-30 International Business Machines Corporation Reducing false-positive errors in a software change-impact analysis

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013156802A (ja) * 2012-01-30 2013-08-15 Mitsubishi Electric Corp モジュール依存関係抽出装置、モジュール依存関係抽出方法、及び、プログラム
US9069892B2 (en) 2013-05-10 2015-06-30 International Business Machines Corporation Reducing false-positive errors in a software change-impact analysis
US9250890B2 (en) 2013-05-10 2016-02-02 Globalfoundries Inc. Optimizing performance of a computer system in response to a software change

Similar Documents

Publication Publication Date Title
JPH06332684A (ja) プログラム修正支援装置
JP2006285707A (ja) 業務仕様作成支援システム及び方法
JP2993538B2 (ja) 多重プログラム機能を有する数値制御装置
JPS62197826A (ja) システムフロ−仕様生成方式
JP3016109B2 (ja) プログラムドキュメント保守装置
JPH0696266A (ja) 文字認識結果の訂正支援方式
JPH0567090A (ja) 文書処理方式
JP3419483B2 (ja) 自然言語処理装置及びその方法
JPH07146787A (ja) 影響プログラムの検索方法
JPH07306863A (ja) ドキュメント・辞書間リンク生成装置
JPH11259460A (ja) 文書処理装置
JPH05257665A (ja) Hcpチャート/ソースプログラム連動編集装置
JPH05341983A (ja) 情報処理システム
JPH0667864A (ja) マニュアル類の自動作成,更新方法
JPH0750480B2 (ja) 文章データ編集装置
JPH01237834A (ja) ロードモジュールの編集表示方式
JPH086782A (ja) プログラムの保守作業自動化支援方法
JPH0887403A (ja) プログラム開発支援装置
JPH08287114A (ja) 図面管理装置
JPH1153411A (ja) 回路図エディタ
JPH02289065A (ja) 文書作成支援システム
JPH0736864A (ja) 文書処理装置及びその方法
JP2000148324A (ja) グラフィックユーザインタフェース作成装置及び作成方法
JPH06214789A (ja) ファジィルール開発支援装置
JP2000339149A (ja) 状態遷移モデル作成方法及び装置