JP2002082802A - 影響解析装置および方法、記録媒体、プログラム - Google Patents

影響解析装置および方法、記録媒体、プログラム

Info

Publication number
JP2002082802A
JP2002082802A JP2001194829A JP2001194829A JP2002082802A JP 2002082802 A JP2002082802 A JP 2002082802A JP 2001194829 A JP2001194829 A JP 2001194829A JP 2001194829 A JP2001194829 A JP 2001194829A JP 2002082802 A JP2002082802 A JP 2002082802A
Authority
JP
Japan
Prior art keywords
variable
information
table information
analysis
source code
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.)
Granted
Application number
JP2001194829A
Other languages
English (en)
Other versions
JP4782315B2 (ja
Inventor
Hiroaki Kimura
博昭 木村
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.)
NS Solutions Corp
Original Assignee
NS Solutions 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 NS Solutions Corp filed Critical NS Solutions Corp
Priority to JP2001194829A priority Critical patent/JP4782315B2/ja
Publication of JP2002082802A publication Critical patent/JP2002082802A/ja
Application granted granted Critical
Publication of JP4782315B2 publication Critical patent/JP4782315B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 与えられたソースコード群の中でユーザがリ
ンク単位を意識しなくても影響範囲の解析を行うことが
できるようにする。 【解決手段】 解析対象となるソースコード1-1〜1-n
のそれぞれに対応する変数情報3-1〜3-nを用いて、代
入または参照された変数とその存在場所との対応関係を
表す複数のテーブル情報6-1〜6-3を生成するテーブル
情報生成部5と、その複数のテーブル情報6-1〜6-3
用いて変数の影響範囲を求める解析部7とを設け、各変
数情報3-1〜3-nの全体を対象としてテーブル情報6-1
〜6-3を求め、そのテーブル情報6-1〜6-3を用いて、
変数の代入および参照関係を辿ることによって影響解析
を行うようにすることにより、複数のソースコード1-1
〜1 -nのうちどの組み合わせでリンク単位を構成するか
を意識することなく、関係のあるソースコード間で所望
の変数の影響範囲を解析できるようにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は影響解析装置および
方法、更にはこれらをソフトウェアの機能で実現するた
めのプログラム、および上記プログラムを格納した記録
媒体に関し、特に、一般的なプログラム言語で記述され
たソースコードを解析する際に利用される影響解析装置
および方法に用いて好適なものである。
【0002】
【従来の技術】従来、例えば既存のソフトウェア資産を
利用してより良いコンピュータシステムを構築すること
が一般的に行われている。この場合、既に構築されてい
る既存のソースコード(ソースプログラム)をデバッグ
して保守したり、あるいはソースコードが無いときには
リバース・エンジニリアリングを行ったりしている。こ
のプログラムの保守やリバース・エンジニリアリングで
は、プログラム中のある変数およびその変数に関係する
部分については修正せず、これら以外の部分だけを修正
したいという場合もある。
【0003】ところが、プログラムの内容によっては、
その変数がプログラムの他の部分に影響を与えている場
合がある。したがって、ある変数に対して修正を加える
ときに、その影響がそのプログラムのどの部分まで及ぶ
のかを調べることなく無闇に行うと、予測し得ないエラ
ー等が発生して、そのプログラムが正常に動作しなくな
ってしまうことがある。
【0004】したがって、ソースコードの解析・修正作
業においては、変数の影響がどの範囲まで及び、どの部
分には及ばないかを解析することが、プログラムを開発
する上において極めて重要となる。そこで本出願人は、
このような解析を行うための装置として、例えば特願平
10−24355号に記載の変数影響解析装置を提案し
た。この装置は、プログラム中での影響範囲を解析する
ものである。
【0005】
【発明が解決しようとする課題】ところで、1つのプロ
グラムは、例えば機能単位毎に分割した個々のモジュー
ルに対応する複数のソースコードを夫々コンパイルし、
それらをリンクすることによって作成されることが多
い。以下では、このように1つの実行プログラムを作る
に当たってリンクするために必要なソースコード群の単
位を「リンク単位」と呼ぶ。さらに、複数のリンク単位
の実行プログラムが連携して1つのコンピュータシステ
ムを構築している場合も多い。
【0006】通常、プログラムを保守する際にはソース
コードやそのリンク単位等をユーザが理解しており、こ
れをもとに保守作業を行うことが多い。しかしながら、
これらの情報をユーザが必ず理解しているとは限らな
い。従来の変数影響解析装置では、ユーザがこれらリン
ク単位等の情報を理解していることを前提に作られてい
るため、ユーザはリンク単位を意識しておく必要があ
り、リンク単位が不明である場合には解析できなかっ
た。
【0007】また、別の課題として、リンク単位となっ
ている複数のソースファイルに渡って影響解析を行う場
合、例えば対象となるソースファイル自体が数千、数万
ファイルになることがある。その場合、従来の変数影響
解析装置では全ての影響解析を行っていたために解析結
果を得るためには非常に時間がかかり、実質的には使い
物にならなかった。さらに、従来の変数影響解析装置で
は、影響解析できる範囲は1つのリンク単位内に限られ
ており、複数のリンク単位が連携して構築されるような
システムに関しては解析できないという課題があった。
【0008】本発明は、このような問題を解決するため
に成されたものであり、与えられたソースコード群の中
でユーザがリンク単位を意識しなくても影響範囲の解析
を行うことができるようにすることを目的とする。ま
た、本発明は、解析対象となるソースファイルが多くな
った場合にも高速に影響解析を行うことができるように
することを目的とする。さらに、本発明は、1つのリン
ク単位を越えて影響範囲の解析を行うことができるよう
にすることも目的としている。
【0009】
【課題を解決するための手段】本発明の影響解析装置
は、解析の対象となる少なくとも1つ以上のソースコー
ド毎に生成された、変数のデータ依存関係に関する少な
くとも1つ以上の変数情報を対象として、代入または参
照が行われた変数とその存在場所との対応関係を表す複
数のテーブル情報を生成するテーブル生成手段と、上記
テーブル生成手段により生成された複数のテーブル情報
を用いて、変数の代入および参照関係を辿ることによっ
て変数の影響範囲を求める解析手段とを備える。
【0010】ここで、上記テーブル生成手段は、例え
ば、それぞれのソースコード毎に生成された各変数情報
を対象として、変数とその代入が行われた文との対応関
係を表す第1のテーブル情報、変数とその参照が行われ
た文との対応関係を表す第2のテーブル情報、文とそこ
で代入が行われた変数との対応関係を表す第3のテーブ
ル情報を生成する。
【0011】本発明の他の態様では、上記テーブル生成
手段は、それぞれのソースコード中に含まれる同じ名前
の変数を全て同じ変数であるとして上記複数のテーブル
情報を生成する。また、本発明のその他の態様では、上
記テーブル生成手段は、それぞれのソースコード中に含
まれる変数がどこかで代入された場合に、その変数の全
ての参照がその代入に依存しているものとして上記複数
のテーブル情報を生成する。
【0012】本発明のその他の態様では、上記解析の対
象となる少なくとも1つ以上のソースコードを読み込
み、それぞれのソースコード毎に上記変数情報を生成す
る変数情報生成手段と、上記変数情報生成手段により生
成された各変数情報を保存する記憶手段とを備え、上記
テーブル生成手段および解析手段は、上記変数情報生成
手段によりあらかじめ生成されて上記記憶手段に保存さ
れている各変数情報を用いて、上記複数のテーブル情報
の生成およびそれらを用いた影響解析を実行する。
【0013】また、本発明の影響解析方法は、解析の対
象となる少なくとも1つ以上のソースコード毎に生成さ
れた、変数のデータ依存関係に関する少なくとも1つ以
上の変数情報を対象として、代入または参照が行われた
変数とその存在場所との対応関係を表す複数のテーブル
情報を生成するテーブル生成ステップと、上記生成され
た複数のテーブル情報を用いて、変数の代入および参照
関係を辿ることによって変数の影響範囲を求める解析ス
テップとを有する。
【0014】また、本発明のコンピュータ読み取り可能
な記録媒体は、解析の対象となる少なくとも1つ以上の
ソースコード毎に生成された、変数のデータ依存関係に
関する少なくとも1つ以上の変数情報を対象として、代
入または参照が行われた変数とその存在場所との対応関
係を表す複数のテーブル情報を生成するテーブル生成手
段と、上記テーブル生成手段により生成された複数のテ
ーブル情報を用いて、変数の代入および参照関係を辿る
ことによって変数の影響範囲を求める解析手段としてコ
ンピュータを機能させるためのプログラムを記録する。
【0015】また、本発明のプログラムは、解析の対象
となる少なくとも1つ以上のソースコード毎に生成され
た、変数のデータ依存関係に関する少なくとも1つ以上
の変数情報を対象として、代入または参照が行われた変
数とその存在場所との対応関係を表す複数のテーブル情
報を生成するテーブル生成手段と、上記テーブル生成手
段により生成された複数のテーブル情報を用いて、変数
の代入および参照関係を辿ることによって変数の影響範
囲を求める解析手段としてコンピュータを機能させる。
【0016】
【発明の実施の形態】以下、本発明の一実施形態を図面
に基づいて説明する。図1は、本実施形態による影響解
析装置の主要な機能構成を示すブロック図である。
【0017】図1において、1-1〜1-nは影響範囲解析
の対象となるn個のソースコードであり、これらの中の
何れかの組み合わせによってリンク単位が構成される。
また、これらn個のソースコード1-1〜1-nの中に複数
のリンク単位が含まれていても良い。解析の対象として
与えられるこれらn個のソースコード1-1〜1-nは、そ
の中の何れの組み合わせによってリンク単位が構成され
ているのかが不明であっても良い。
【0018】2は変数情報生成部であり、解析の対象と
なる上記n個のソースコード1-1〜1-nを読み込み、そ
れぞれのソースコード毎に構文解析して、変数の代入・
参照関係を表す変数情報3-1〜3-nをそれぞれ生成す
る。すなわち、例えば第1のソースコード1-1から第1
の変数情報3-1を生成し、第nのソースコード1-nから
第nの変数情報3-nを生成する。生成した変数情報3-1
〜3-nは、各ソースコード毎に1つのファイルに入れて
それぞれ記憶部4に保存する。
【0019】5はテーブル情報生成部であり、上記変数
情報生成部2によりそれぞれのソースコード毎に生成さ
れて記憶部4に保存された各変数情報3-1〜3-nを対象
として、代入または参照が行われた変数とその存在場所
との対応関係を表す複数のテーブル情報を生成する。こ
こでは、例えば変数とその代入が行われた文との対応関
係を表す第1のテーブル情報6-1と、変数とその参照が
行われた文との対応関係を表す第2のテーブル情報6-2
と、文とそこで代入が行われた変数との対応関係を表す
第3のテーブル情報6-3とを生成する。
【0020】7は解析部であり、上記テーブル情報生成
部5により生成された3つのテーブル情報6-1〜6-3
用いて、変数の代入および参照関係を辿ることによって
所望の変数の影響範囲を解析する。例えば、第1のテー
ブル情報6-1を起点として、以降第2のテーブル情報6
-2と第3のテーブル情報6-3とを交互にアクセスして変
数の代入および参照の関係を辿ることにより、当該変数
の影響範囲を求める。そして、その解析結果をリスト8
として出力する。
【0021】以下に、上記のように構成した影響解析装
置の動作を、具体例を挙げながら説明する。なお、ここ
では説明の簡単のため、変数の影響解析の対象とするソ
ースコードが2つの場合について説明する。図2は、そ
の2つのソースコード1-1,1-2およびこれから生成さ
れる変数情報3-1,3-2の一部構成例を示す図である。
【0022】図2において、第1のソースコード1-1
は、1行目において変数Aに"1"が代入され、2行目に
おいて変数Bが参照されてその値が変数Xに代入され、
3行目において変数Aが参照されてその値が変数Bに代
入されている。また、4行目においては2つの変数B,
Yが参照され、6行目においては変数Bが参照されてそ
の値が変数Cに代入されている。一方、第2のソースコ
ード1-2では、1行目において変数Aに"0"が代入さ
れ、2行目において変数Dが参照されてその値が変数X
に代入され、3行目において2つの変数B,Xが参照さ
れている。
【0023】変数情報生成部2は、このような2個のソ
ースコード1-1,1-2を読み込み、それぞれのソースコ
ード中に含まれる各変数の代入・参照関係を解析して、
変数の代入・参照関係に関する変数情報3-1,3-2をそ
れぞれのソースコード毎に生成する。例えば、第1のソ
ースコード1-1に関しては、変数Aは1行目で代入され
るとともに3行目で参照され、変数Bは2,4,6行目
で参照されるとともに3行目で代入され、変数Cは6行
目で代入され、変数Xは2行目で代入され、変数Yは4
行目で参照されているという変数情報を生成する。第2
のソースコード1-2に関しても同様である。
【0024】このようにして生成された変数情報3-1
-2は、それぞれ別個のファイルとして記憶部4に保存
される。テーブル情報生成部5は、記憶部4に保存され
た各変数情報3-1,3-2を用いて、上述の3つのテーブ
ル情報6-1〜6-3を生成する。図3は、上記図2に示し
た2つのソースコード1-1,1-2を解析対象とした場合
に生成される3つのテーブル情報6-1〜6-3を示す図で
ある。
【0025】図3において、第1のテーブル情報6
-1は、変数とその代入が行われた文との対応関係を表す
ものである。この第1のテーブル情報6-1に含まれる各
変数A,B,C,Xは、解析対象とする全ソースコード
-1,1-2の中で代入が行われている全ての変数であ
る。また、それらに対応する文は、その変数の代入が行
われているソースコード中の場所を示すものである。例
えば変数Aは、第1のソースコード1-1の1行目(1−
1で表記)と、第2のソースコード1-2の1行目(2−
1で表記)とで代入が行われている。
【0026】また、第2のテーブル情報6-2は、変数と
その参照が行われた文との対応関係を表すものである。
この第2のテーブル情報6-2に含まれる各変数A,B,
D,X,Yは、解析対象とする全ソースコード1-1,1
-2の中で参照が行われている全ての変数である。また、
それらに対応する文は、その変数の参照が行われている
ソースコード中の場所を示すものである。例えば変数A
は、第1のソースコード1-1の3行目(1−3で表記)
で参照が行われている。
【0027】また、第3のテーブル情報6-3は、文とそ
こで代入が行われた変数との対応関係を表すものであ
る。この第3のテーブル情報6-3に含まれる各文1−
1,1−2,1−3,1−6,2−1,2−2は、解析
対象とする全ソースコード1-1,1-2の中で代入が行わ
れている全ての場所を表すものであり、それらの場所で
代入されている変数が夫々対応して示されている。例え
ば第1のソースコード1-1の1行目では、変数Aの代入
が行われている。
【0028】なお、この図3の例では、変数の代入や参
照が行われた文を1−1,1−2…などで表記している
が、1つの文が複数行に渡って記述されることもあるの
で、これらの表記は単純な行番号を示すものではない。
実際には、各テーブル情報6 -1〜6-3中の文を表す部分
に対して、各ソースコード1-1,1-2の各文ごとにユニ
ークな文IDを与え、この文IDとそれが存在するソー
スコード中の場所との関係を表すもう1つのテーブル情
報を備えている。
【0029】解析部7は、テーブル情報生成部5により
生成された図3に示した3つのテーブル情報6-1〜6-3
を用いて、例えば対象変数リスト9にリストアップされ
ているユーザにより指定された所望の変数の代入および
参照関係を辿ることによって影響範囲を解析し、その解
析結果をリスト8として出力する。
【0030】例えば、変数Aの影響範囲を解析したい場
合は、まず第1のテーブル情報6-1を見て、その変数A
が各ソースコード1-1,1-2の中のどの場所で代入され
ているかを調べる。ここでは、第1のソースコード1-1
の1行目と、第2のソースコード1-2の1行目において
変数Aの代入が行われていることが分かる。この時点
で、その検出した代入場所を解析結果リスト8に登録す
る。
【0031】次に、第2のテーブル情報6-2を見て、指
定された変数Aが各ソースコード1 -1,1-2の中のどの
場所で参照されているかを調べる。ここでは、第1のソ
ースコード1-1の3行目において変数Aの参照が行われ
ていることが分かる。この時点で、その検出した参照場
所を解析結果リスト8に追加する。次に、第3のテーブ
ル情報6-3を見て、上記第2のテーブル情報6-2に記述
されている場所で参照された変数Aがどの変数に代入さ
れているかを調べる。ここでは、第1のソースコード1
-1の3行目において参照された変数Aが変数Bに代入さ
れていることが分かる。
【0032】この場合、変数Aの値は変数Bに代入され
てさらに他の部分に影響を及ぼすことになるので、次に
変数Bの影響範囲も調べる必要がある。そこで、第2の
テーブル情報6-2を再び見て、その変数Bが各ソースコ
ード1-1,1-2の中のどの場所で参照されているかを調
べる。ここでは、第1のソースコード1-1の2,4,6
行目と、第2のソースコード1-2の3行目において変数
Bの参照が行われていることが分かる。この時点で、そ
れらの検出した参照場所を解析結果リスト8に追加す
る。
【0033】さらに、第3のテーブル情報6-3を見て、
上記第2のテーブル情報6-2に記述されている場所で参
照された変数Bがそれぞれどの変数に代入されているか
を調べる。ここでは、第1のソースコード1-1の2行目
において参照された変数Bが変数Xに代入されるととも
に、第1のソースコード1-1の6行目において参照され
た変数Bが変数Cに代入されていることが分かる。な
お、第1のソースコード1-1の4行目において参照され
た変数Bと、第2のソースコード1-2の3行目において
参照された変数Bは何れの変数にも代入されていないの
で、これらについてはここで処理が終了する。
【0034】ここで変数Bの値が代入されている新たな
変数X,Cについては、更にその影響範囲を調べるため
に、再び第2のテーブル情報6-2を見て、その変数X,
Cが各ソースコード1-1,1-2の中のどの場所で参照さ
れているかを調べる。ここでは、第2のソースコード1
-2の3行目において変数Xの参照が行われていることが
分かる。ただし、この参照場所は解析結果リスト8に既
に登録されているので、解析結果リスト8への追加は行
わない。
【0035】さらに、第3のテーブル情報6-3を見て、
上記第2のテーブル情報6-2に記述されている場所で参
照された変数Xがどの変数に代入されているかを調べ
る。ここでは、変数Xは何れの変数にも代入されていな
いので、ここで全ての解析処理が終了する。以上のよう
に、第1のテーブル情報6-1を起点として、以降第2の
テーブル情報6-2と第3のテーブル情報6-3とを交互に
アクセスして変数の代入および参照関係を辿ることによ
り、変数Aの影響範囲を求めることができる。このとき
得られた変数Aの影響範囲の解析結果リスト8を示す
と、図4のようになる。
【0036】なお、今の例では生じていないが、第3の
テーブル情報6-3から第2のテーブル情報6-2に戻る際
に既に解析済の変数が指定された場合には、その変数に
ついて続けて解析しても以前と同じ結果が得られるだけ
なので、そこで解析処理を終了する。そのために、どの
変数について解析を行ったかの履歴情報を保持するよう
にして、常にこの履歴情報を更新および参考にしながら
上述のような処理を実行する。
【0037】以上の説明から分かるように、本実施形態
の影響解析装置では、それぞれのソースコード1-1,1
-2中に含まれる同じ名前の変数は、全て同じ変数である
ものとしている。これは、複数のソースコード間に渡っ
て影響範囲の解析を行う変数は、殆どの場合が大域変数
(グローバル変数)であり、全てのソースコードで名前
を統一して使われているため、同じ名前の変数を同一視
しても問題がないからである。
【0038】また、本実施形態の影響解析装置では、そ
れぞれのソースコード1-1,1-2中に含まれる変数がど
こかの場所で代入されたら、その変数の全ての参照はそ
の代入に依存しているものと考えている。つまり、プロ
グラムの制御フローは全く無視している。例えば、第1
のソースコード1-1において制御フローも考慮して変数
Aの影響範囲を解析すると2行目は影響範囲に入らない
が、本実施形態のように制御フローを無視した場合には
この2行目も影響範囲に入る(図4において1−2も影
響範囲のリストとして登録されている)。
【0039】図5および図6は、本実施形態による影響
解析方法の処理手順を示すフローチャートである。この
うち図5は、図1の記憶部4に保存されている変数情報
-1〜3-nから3つのテーブル情報6-1〜6-3を生成す
るテーブル情報生成部5の処理、すなわち、解析部7に
よる影響解析の前処理の手順を示す。
【0040】図5において、まずステップS1で、ユー
ザがテーブル情報生成部5に対して影響解析を行う対象
のソースコード群を指定する。ここでは、特にリンク単
位を意識することなく、任意のソースコードを指定する
ことが可能である。また、与えられた全てのソースコー
ド1-1〜1-nを指定することも可能である。次に、ステ
ップS2でテーブル情報生成部5は、上記指定されたソ
ースコード群の各々に対応する変数情報をそれぞれ記憶
部4から読み込む。
【0041】すなわち、複数のソースコード1-1〜1-n
の各々に対応する変数情報3-1〜3 -nがあらかじめ変数
情報生成部2により生成されて記憶部4に保存されてい
るので、その中から指定されたソースコード群に対応す
る変数情報を読み込む。そして、ステップS3で、その
読み込んだ変数情報の全体を対象として、上述した第1
〜第3のテーブル情報6-1〜6-3を生成する。
【0042】図6は、上記テーブル情報生成部5により
生成された3つのテーブル情報6-1〜6-3を用いて変数
の影響解析を行う解析部7の処理手順を示す。なお、こ
の図6のフローチャートに入る前に、別途ユーザがどの
変数に対して影響解析を行いたいかという指定をしてお
き、対象変数リスト9にその変数がリスト化されている
ものとする。図6において、まずステップS11で、ユ
ーザから影響解析を行いたい変数の指定があったか否か
を判断する(図3の例では、変数Aを指定している)。
変数の指定があった場合は、ステップS12で第1のテ
ーブル情報6-1を見て、ステップS13で上記指定され
た変数が第1のテーブル情報6-1内に存在するか否かを
判断する。
【0043】ここで、指定された変数が第1のテーブル
情報6-1内に有る場合は、ステップS14に進み、その
変数に対応して第1のテーブル情報6-1内に記述されて
いる代入が行われた文(図3の例では、1−1、2−1
の2つの代入文)を解析結果リスト8に登録する。次
に、ステップS15で第2のテーブル情報6-2を見て、
ステップS16で上記指定された変数が第2のテーブル
情報6-2内に存在するか否かを判断する。
【0044】ここで、指定された変数が第2のテーブル
情報6-2内に有る場合は、ステップS17に進み、その
変数に対応して第2のテーブル情報6-2内に記述されて
いる参照が行われた文(図3の例では、1−3の参照
文)を解析結果リスト8に追加する。さらに、ステップ
S18で第3のテーブル情報6-3を見て、ステップS1
9で上記第2のテーブル情報6-2内に記述されている参
照文が第3のテーブル情報6-3内に存在するか否かを判
断する。
【0045】ここで、上記第2のテーブル情報6-2内に
記述されている参照文が第3のテーブル情報6-3内に有
る場合は、ステップS20に進み、最初に指定された変
数(図3の例では変数A)を上記参照文に対応して記述
されている代入が行われた変数(図3の例では変数B)
に置き換える。このように、以降の影響解析処理で対象
とする変数名を変更した後、ステップS15に戻り、再
び第2のテーブル情報6-2を見て以下同様の処理を繰り
返し行う。
【0046】なお、上記ステップS19で、上記第2の
テーブル情報6-2内に記述されている参照文が第3のテ
ーブル情報6-3内に複数有る場合、ステップS20で
は、以降の処理で対象とする変数を複数設定する。そし
て、以降のステップS15〜S19の処理では、設定さ
れた複数の変数のそれぞれに対して同様の処理を実行す
る。このとき、ステップS16およびステップS19で
は、該当するものが1つでも有れば、その該当するもの
に関してYesの分岐に従って処理を進める。
【0047】また、上記ステップS13,S16,S1
9の何れかにおいて、第1のテーブル情報6-1および第
2のテーブル情報6-2内に指定された変数が存在しない
場合や、上記第2のテーブル情報6-2内に記述されてい
る参照文が第3のテーブル情報6-3内に存在しない場合
には、影響解析の処理を終了する。このようにして影響
解析の処理を終了したときに解析結果リスト8に記述さ
れている内容が、求めたい変数の影響範囲を表している
ことになる。
【0048】以上詳しく説明したように、本実施形態で
は、まず解析対象となるそれぞれのソースコード毎に変
数の代入・参照関係に関する変数情報を夫々生成する。
次に、それぞれのソースコード中に含まれる同じ名前の
変数は全て同じものであるとし、かつ、ソースコード中
の制御フローを無視するという条件の下で、複数の変数
情報をもとに3つのテーブル情報を生成する。そして、
これらのテーブル情報を用いて変数の代入および参照関
係を辿ることによって影響範囲を求めるようにしてい
る。
【0049】これにより、与えられた複数のソースコー
ド1-1〜1-nの中でどの組み合わせでリンク単位を構成
するかを特定できなくても、例えばそれらをまとめて解
析処理を行えば、その中である変数の影響する範囲を解
析することができる。また、異なるソースコードに含ま
れる変数でも同じ名前の変数は同じものであるとして解
析しているので、従来の変数影響解析装置の解析で制限
されていたリンク単位を越えて影響範囲の解析を行うこ
ともできる。
【0050】また、上述のように制御フローを無視する
という条件を課すことにより、影響解析を厳密に行うこ
とはできないが、各ソースコード1-1〜1-n中の各文に
現れる変数の代入、参照情報を求めれば良くなるので、
構文解析する単位はソースコード毎に行えば良くなり、
ある程度良好な解析結果を現実に実行可能な時間内に得
ることができる。
【0051】さらに、本実施形態では、上記変数情報生
成部2により生成された変数情報3 -1〜3-nを保存する
記憶部4を備え、各変数情報3-1〜3-nを変数情報生成
部2によりあらかじめ生成して記憶部4に保存しておく
ようにしている。したがって、上述した変数の影響解析
処理を一連に行うのではなく、所望の変数の影響解析を
行いたいときにテーブル情報6-1〜6-3の生成から始め
れば良く、影響解析の処理を更に高速化することができ
る。
【0052】この場合、最初の段階では、全てのソース
コード1-1〜1-nについて各変数情報3-1〜3-nを求め
て記憶部4に保存することになるが、その後は、変更が
加えられたソースコードについてのみ対応する変数情報
を生成し、その部分だけ記憶部4の内容を更新すれば良
い。なお、この変数情報3-1〜3-nを求める処理自体
は、通常の構文解析手法を用いて行うことが可能であ
る。
【0053】なお、上記実施形態では、解析部7で影響
解析を行う際に、第1のテーブル情報6-1からスタート
してその後第2のテーブル情報6-2と第3のテーブル情
報6 -3とを繰り返し見ていき、該当する変数や文が存在
しなくなった時点で解析処理を終了していたが、第2の
テーブル情報6-2と第3のテーブル情報6-3の繰り返し
処理の回数があらかじめ定めた回数に達したときに解析
処理を終了するようにしても良い。
【0054】また、上記実施形態では、影響解析を行う
所望の変数を1つだけ指定する例について説明したが、
複数の変数を指定しても良い。この場合、指定された複
数の変数の影響範囲を1つ1つ順に解析していき、各変
数の解析結果を個別のリストとして出力するようにして
も良いし、各変数の解析結果を1つのリストに合わせて
出力するようにしても良い。1つのリストに合わせて出
力する場合、各変数の解析結果のうち重複するものにつ
いては排除するようにしても良い。
【0055】また、上記実施形態では、ある変数単体の
影響解析を行う場合について説明したが、色々な型の変
数をいくつか集めて構成した構造体に対しても本発明を
適用することが可能である。この場合は、例えば、図6
のステップS11で影響解析を行う所望の変数が指定さ
れたときに、その変数が構造体の一部であるかどうかを
まず判断し、構造体の一部であれば、その構造体を構成
する他の変数も影響解析を行う対象の中に含める。以降
は、その構造体を構成する複数の変数に対してステップ
S12〜S20の処理をそれぞれ実行すれば良い。
【0056】(本発明の他の実施形態)以上に説明した
本実施形態の影響解析装置は、コンピュータのCPUあ
るいはMPU、RAM、ROMなどで構成されるもので
あり、RAMやROMに記憶されたプログラムが動作す
ることによって実現でき、上記プログラムは本発明の実
施形態に含まれる。また、コンピュータが上記機能を果
たすように動作させるプログラムを、例えばCD−RO
Mのような記録媒体に記録し、コンピュータに読み込ま
せることによって実現できるものであり、上記プログラ
ムを記録した記録媒体は本発明の実施形態に含まれる。
上記プログラムを記録する記録媒体としては、CD−R
OM以外に、フレキシブルディスク、ハードディスク、
磁気テープ、光磁気ディスク、不揮発性メモリカード等
を用いることができる。
【0057】また、コンピュータが供給されたプログラ
ムを実行することにより上述の実施形態の機能が実現さ
れるだけでなく、そのプログラムがコンピュータにおい
て稼働しているOS(オペレーティングシステム)ある
いは他のアプリケーションソフト等と共同して上述の実
施形態の機能が実現される場合や、供給されたプログラ
ムの処理の全てあるいは一部がコンピュータの機能拡張
ボードや機能拡張ユニットにより行われて上述の実施形
態の機能が実現される場合も、かかるプログラムは本発
明の実施形態に含まれる。
【0058】
【発明の効果】本発明は上述したように、解析の対象と
なる少なくとも1つ以上のソースコードのそれぞれに対
応する各変数情報を用いて、代入または参照が行われた
変数とその存在場所との対応関係を表す複数のテーブル
情報を生成し、その複数のテーブル情報を用いて、変数
の代入および参照関係を辿ることによって変数の影響範
囲を求めるようにしたので、与えられた複数のソースコ
ードの中でどの組み合わせでリンク単位を構成するかを
意識することなく、その中で関係のあるソースコード間
で所望の変数の影響範囲を解析することができる。
【0059】また、それぞれのソースコード中に含まれ
る同じ名前の変数は全て同じ変数であるとして解析を行
っているので、リンク単位を越えて影響範囲の解析を行
うこともできる。さらに、それぞれのソースコード中に
含まれる変数の全ての参照がその変数の代入に依存して
いるものとして解析を行っているので、各ソースコード
中の各文に現れる変数の代入、参照情報を求めれば良く
なり、短い時間で解析処理を実行することができる。
【0060】さらに、本発明の他の特徴によれば、それ
ぞれのソースコードに対応する変数情報を保存する記憶
手段を備え、上記変数情報をあらかじめ生成して保存し
ておくようにしたので、所望の変数の影響解析を行いた
いときには、保存されている変数情報を用いてテーブル
情報の生成から始めれば良くなり、影響解析の処理にか
かる時間を更に短縮化することができる。
【図面の簡単な説明】
【図1】本実施形態による影響解析装置の主要な機能構
成を示すブロック図である。
【図2】ソースコードの一部構成例を示す図である。
【図3】図2に示した2つのソースコードを解析対象と
した場合に生成される3つのテーブル情報と影響解析の
流れを示す図である。
【図4】変数Aの影響範囲の解析結果リストを示す図で
ある。
【図5】本実施形態による影響解析方法の処理手順を示
すフローチャートである。
【図6】本実施形態による影響解析方法の処理手順を示
すフローチャートである。
【符号の説明】
-1〜1-n ソースコード 2 変数情報生成部 3-1〜3-n 変数情報 4 記憶部 5 テーブル情報生成部 6-1〜6-3 テーブル情報 7 解析部 8 解析結果リスト

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 ソースコード中に含まれる変数が他の部
    分に与える影響を解析する影響解析装置であって、 解析の対象となる少なくとも1つ以上のソースコード毎
    に生成された、変数のデータ依存関係に関する少なくと
    も1つ以上の変数情報を対象として、代入または参照が
    行われた変数とその存在場所との対応関係を表す複数の
    テーブル情報を生成するテーブル生成手段と、 上記テーブル生成手段により生成された複数のテーブル
    情報を用いて、変数の代入および参照関係を辿ることに
    よって変数の影響範囲を求める解析手段とを備えたこと
    を特徴とする影響解析装置。
  2. 【請求項2】 上記テーブル生成手段は、それぞれのソ
    ースコード毎に生成された各変数情報を対象として、変
    数とその代入が行われた文との対応関係を表す第1のテ
    ーブル情報、変数とその参照が行われた文との対応関係
    を表す第2のテーブル情報、文とそこで代入が行われた
    変数との対応関係を表す第3のテーブル情報を生成する
    ことを特徴とする請求項1に記載の影響解析装置。
  3. 【請求項3】 上記テーブル生成手段は、それぞれのソ
    ースコード中に含まれる同じ名前の変数を全て同じ変数
    であるとして上記複数のテーブル情報を生成することを
    特徴とする請求項1または2に記載の影響解析装置。
  4. 【請求項4】 上記テーブル生成手段は、それぞれのソ
    ースコード中に含まれる変数がどこかで代入された場合
    に、その変数の全ての参照がその代入に依存しているも
    のとして上記複数のテーブル情報を生成することを特徴
    とする請求項1〜3の何れか1項に記載の影響解析装
    置。
  5. 【請求項5】 上記解析の対象となる少なくとも1つ以
    上のソースコードを読み込み、それぞれのソースコード
    毎に上記変数情報を生成する変数情報生成手段と、 上記変数情報生成手段により生成された各変数情報を保
    存する記憶手段とを備え、 上記テーブル生成手段および解析手段は、上記変数情報
    生成手段によりあらかじめ生成されて上記記憶手段に保
    存されている各変数情報を用いて、上記複数のテーブル
    情報の生成およびそれらを用いた影響解析を実行するこ
    とを特徴とする請求項1〜4の何れか1項に記載の影響
    解析装置。
  6. 【請求項6】 ソースコード中に含まれる変数が他の部
    分に与える影響を解析する影響解析方法であって、 解析の対象となる少なくとも1つ以上のソースコード毎
    に生成された、変数のデータ依存関係に関する少なくと
    も1つ以上の変数情報を対象として、代入または参照が
    行われた変数とその存在場所との対応関係を表す複数の
    テーブル情報を生成するテーブル生成ステップと、 上記生成された複数のテーブル情報を用いて、変数の代
    入および参照関係を辿ることによって変数の影響範囲を
    求める解析ステップとを有することを特徴とする影響解
    析方法。
  7. 【請求項7】 上記テーブル生成ステップでは、それぞ
    れのソースコード毎に生成された各変数情報を対象とし
    て、変数とその代入が行われた文との対応関係を表す第
    1のテーブル情報、変数とその参照が行われた文との対
    応関係を表す第2のテーブル情報、文とそこで代入が行
    われた変数との対応関係を表す第3のテーブル情報を生
    成することを特徴とする請求項6に記載の影響解析方
    法。
  8. 【請求項8】 上記解析ステップでは、上記第1のテー
    ブル情報を起点として、以降上記第2のテーブル情報と
    上記第3のテーブル情報とを交互にアクセスして上記変
    数の代入および参照関係を辿ることによって上記変数の
    影響範囲を求めることを特徴とする請求項7に記載の影
    響解析方法。
  9. 【請求項9】 解析の対象となる少なくとも1つ以上の
    ソースコード毎に生成された、変数のデータ依存関係に
    関する少なくとも1つ以上の変数情報を対象として、代
    入または参照が行われた変数とその存在場所との対応関
    係を表す複数のテーブル情報を生成するテーブル生成手
    段と、 上記テーブル生成手段により生成された複数のテーブル
    情報を用いて、変数の代入および参照関係を辿ることに
    よって変数の影響範囲を求める解析手段としてコンピュ
    ータを機能させるためのプログラムを記録したことを特
    徴とするコンピュータ読み取り可能な記録媒体。
  10. 【請求項10】 解析の対象となる少なくとも1つ以上
    のソースコード毎に生成された、変数のデータ依存関係
    に関する少なくとも1つ以上の変数情報を対象として、
    代入または参照が行われた変数とその存在場所との対応
    関係を表す複数のテーブル情報を生成するテーブル生成
    手段と、 上記テーブル生成手段により生成された複数のテーブル
    情報を用いて、変数の代入および参照関係を辿ることに
    よって変数の影響範囲を求める解析手段としてコンピュ
    ータを機能させるためのプログラム。
JP2001194829A 2000-06-27 2001-06-27 影響解析装置および方法、記録媒体、プログラム Expired - Lifetime JP4782315B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001194829A JP4782315B2 (ja) 2000-06-27 2001-06-27 影響解析装置および方法、記録媒体、プログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2000193313 2000-06-27
JP2000193313 2000-06-27
JP2000-193313 2000-06-27
JP2001194829A JP4782315B2 (ja) 2000-06-27 2001-06-27 影響解析装置および方法、記録媒体、プログラム

Publications (2)

Publication Number Publication Date
JP2002082802A true JP2002082802A (ja) 2002-03-22
JP4782315B2 JP4782315B2 (ja) 2011-09-28

Family

ID=26594796

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001194829A Expired - Lifetime JP4782315B2 (ja) 2000-06-27 2001-06-27 影響解析装置および方法、記録媒体、プログラム

Country Status (1)

Country Link
JP (1) JP4782315B2 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039949A (ja) * 2008-08-07 2010-02-18 Fujitsu Ltd 分散開発管理プログラム
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2015149017A (ja) * 2014-02-07 2015-08-20 富士通株式会社 管理プログラム、管理方法、及び管理システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104989A (ja) * 1993-09-30 1995-04-21 Fujitsu Ltd データ項目定義標準化装置
JPH11327879A (ja) * 1998-05-15 1999-11-30 Fujitsu Ltd 変数検索装置及び方法並びに変数検索プログラムを記録したコンピュータ読取り可能な記録媒体
JP2001142688A (ja) * 1999-11-16 2001-05-25 Fujitsu Ltd プログラム分析装置及び記録媒体

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104989A (ja) * 1993-09-30 1995-04-21 Fujitsu Ltd データ項目定義標準化装置
JPH11327879A (ja) * 1998-05-15 1999-11-30 Fujitsu Ltd 変数検索装置及び方法並びに変数検索プログラムを記録したコンピュータ読取り可能な記録媒体
JP2001142688A (ja) * 1999-11-16 2001-05-25 Fujitsu Ltd プログラム分析装置及び記録媒体

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039949A (ja) * 2008-08-07 2010-02-18 Fujitsu Ltd 分散開発管理プログラム
JP2013156786A (ja) * 2012-01-30 2013-08-15 Hitachi Automotive Systems Ltd ソフトウェアの構造可視化プログラムおよびシステム
JP2015149017A (ja) * 2014-02-07 2015-08-20 富士通株式会社 管理プログラム、管理方法、及び管理システム

Also Published As

Publication number Publication date
JP4782315B2 (ja) 2011-09-28

Similar Documents

Publication Publication Date Title
US7353505B2 (en) Tracing the execution path of a computer program
US20120143893A1 (en) Pattern Matching Framework for Log Analysis
US20070150870A1 (en) Method and apparatus for context oriented computer program tracing and visualization
US8286141B2 (en) Instruction-trace generation program, instruction-trace generating device, and instruction-trace generating method
Schuster et al. Conformance checking for trace fragments using infix and postfix alignments
US6546526B2 (en) Active trace debugging for hardware description languages
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
JP4782315B2 (ja) 影響解析装置および方法、記録媒体、プログラム
CN109032946B (zh) 一种测试方法和装置、计算机可读存储介质
KR100640243B1 (ko) 이동통신 단말기의 응용프로그램 실행속도 향상장치 및방법
JP2017041196A (ja) スタブ化対象判定装置、方法、及びプログラム
JP7380851B2 (ja) テストスクリプト生成装置、テストスクリプト生成方法及びプログラム
Küsters et al. Revisiting the Alpha Algorithm To Enable Real-Life Process Discovery Applications
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质
US6950970B2 (en) Operation report creation system, operation report creation method, and operation report creation program
CN114356783A (zh) 单元测试代码自动生成方法、装置、存储介质及设备
GB2397905A (en) Method for automatically generating and ordering test scripts
Vasiliev et al. Integration of Business Process Definition, Analysis and Execution Tools Based on Block-structured Approach
Fernández-Ropero et al. Repairing business process models as retrieved from source code
US7152227B1 (en) Automated assessment of programming language coverage by one or more test programs
CN111209204B (zh) 一种基于JSON的web自动化测试方法及其系统和装置
CN116016270B (zh) 一种交换机测试管理方法、装置、电子设备和存储介质
CN118170690B (zh) 一种基于待定元组的组合测试多故障定位方法
JP2008262473A (ja) 設備保全管理システム
CN118132388B (zh) 一种程序执行路径确定方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080509

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110308

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110329

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110527

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110614

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110707

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140715

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4782315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term