JP3997495B2 - ソフトウェア解析装置及びソフトウェア解析方法 - Google Patents
ソフトウェア解析装置及びソフトウェア解析方法 Download PDFInfo
- Publication number
- JP3997495B2 JP3997495B2 JP02435798A JP2435798A JP3997495B2 JP 3997495 B2 JP3997495 B2 JP 3997495B2 JP 02435798 A JP02435798 A JP 02435798A JP 2435798 A JP2435798 A JP 2435798A JP 3997495 B2 JP3997495 B2 JP 3997495B2
- Authority
- JP
- Japan
- Prior art keywords
- program
- program analysis
- information
- analysis information
- graph
- 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.)
- Expired - Fee Related
Links
- 238000004458 analytical method Methods 0.000 claims description 68
- 238000000034 method Methods 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 8
- 230000002452 interceptive effect Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 description 12
- 230000005856 abnormality Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000012423 maintenance Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012916 structural analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Description
【発明の属する技術分野】
本発明は、コンピュータプログラムの内容を理解し易くするために、コンピュータプログラムについて解析を行うソフトウェア解析装置及びソフトウェア解析方法に関連する。
【0002】
【従来の技術】
多数のプログラマが協力して大規模なプログラムを開発する場合や、既にあるプログラムの保守を行おうとする場合、他人が書いたプログラムを理解しなければならないことがある。しかし、他人が書いたプログラムを理解することは、大きな困難を伴う。
【0003】
そこで、プログラムのソースコードを自動的に解析して様々な情報を提供することにより、プログラムの理解を支援する装置が提案されている。その一例としてコールグラフやフローグラフを作成し、プログラムを視覚的に把握できるようにする装置及び方法がある。これについては、例えば、本出願人による特願平9−32415、特願平9−32452などを参照することができる。
【0004】
【発明が解決しようとする課題】
しかしながら、大規模なプログラム、例えば100万ステップを超えるようなプログラムに対して解析を行おうとすると、解析情報のボリュームも非常に大きくなる。このため、解析情報が、通常のワークステーションやパーソナルコンピュータが実装できる最大容量のメモリに入りきらないとか、解析に要する時間が非常に長くかかるという状況が起こる。例えば、解析途中にメモリ容量が不足し、解析情報が入らなくなってしまった場合には、解析はそれ以上先に進めることはできないので、何らかの対応策を講じた上で、最初からプログラムの解析を再度行わなければならず、作業の効率を悪くしていた。
【0005】
本発明は、上記事情に基づいてなされたものであり、コンピュータに実装できるメモリ容量に制限がある場合でも、大規模なプログラムの解析を自動的に行うことを可能とするソフトウェア解析装置及びソフトウェア解析方法を提供することを目的とする。
また、本発明の他の目的は、プログラムの解析を行っている際に何らかの要因で解析が中断された場合等に、中断される間際までに得られた情報を有効に利用することのできるソフトウェア解析装置及びソフトウェア解析方法を提供することである。
【0006】
【課題を解決するための手段】
上記の目的を達成するために、本発明に係るソフトウェア解析装置は、プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成手段と、該プログラム解析情報作成手段によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納手段と、前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析手段と、を有し、前記プログラム解析情報作成手段は、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、前記プログラム解析情報格納手段は、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納することを特徴とする。
【0007】
本発明に係るソフトウェア解析方法は、プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成工程と、該プログラム解析情報作成工程によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納工程と、前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析工程と、を有し、前記プログラム解析情報作成工程では、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、前記プログラム解析情報格納工程では、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納することを特徴とする。
【0008】
本発明に係るコンピュータ読み取り可能な記録媒体は、プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成機能と、該プログラム解析情報作成機能によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納機能と、前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析機能と、を実行させるプログラムであって、前記プログラム解析情報作成機能は、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、
前記プログラム解析情報格納機能は、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納するものであるプログラムを記憶したことを特徴とする。
【0009】
【発明の実施の形態】
以下に図面を参照して、本発明の実施の形態について説明する。図1は、本発明の一実施形態のソフトウェア解析装置(以下「本装置」という)における解析情報作成部について説明するための図、図2は本実施形態のソフトウェア解析装置がデータベースに格納する解析情報の構造を示す図、図3は本実施形態のプログラム解析部について説明するための図である。
【0010】
図1において、ソースファイル10は、所定の言語(例えばC言語)で記述されたプログラムのソースコードが記録されたファイルである。プログラム解析情報作成部11は、コンピュータによるバッチ処理によって、読み込まれたソースファイル10のソースコードについて所定の解析処理を行ってプログラム解析情報を作成し、これらをプログラム解析情報格納部12によりデータベース化して、ハードディスク等の情報記録媒体12aに格納する。本実施形態の場合、プログラム解析情報には、図2に示すように、構文解析木(シンボルテーブルを含む)、コールグラフ、フローグラフ、データフロー情報、プログラム依存グラフ、モジュール入出力情報が含まれる。
【0011】
プログラム解析情報作成部11は、図2に示すように、プログラム解析情報を階層化して作成する。このように階層化するのは、上層のプログラム解析情報を作成するときに、下層のプログラム解析情報を利用することによるものである。このとき、一つの層ごとのひとまとまりのプログラム解析情報の作成が終了した段階で、プログラム解析情報格納部12がこれらをトランザクションとして順次データベースに格納する。
【0012】
例えば、コールグラフやフローグラフを作成するには構文解析木が必要となり、データフロー情報を作成するには構文解析木、コールグラフ及びフローグラフが必要となるので、図2の下層のプログラム解析情報から順番にプログラム解析情報格納部12の情報記録媒体12aに格納してゆく。このように、上層のあるプログラム解析情報を作成する場合に、既に作成され、格納されているている下層のプログラム解析情報を必要とする関係を、ここでは「階層化」と呼んでいる。
【0013】
仮に、トランザクション機能を用いずに、バッチ処理によってすべてのプログラム解析情報を作成し、それから一括して格納するようにすると、特に大規模なプログラムの場合には、プログラム解析情報の大きさがワークステーションやパーソナルコンピュータに搭載できるメモリの容量を超えてしまい、それまでに行った処理が無駄になることがある。
【0014】
これに対して、本装置では、プログラム解析情報作成部11が作成したプログラム解析情報を、プログラム解析情報格納部12が階層ごとに、これらを順次ハードディスク等の情報記録媒体12aにデータベース化して格納するようにしたことによって、コンピュータ上の限られたメモリ容量の制約から開放されるというメリットがある。
【0015】
また、図2のデータ構造の各階層ごとに、それらが作成された段階でトランザクションとしてハードディスク等の情報記録媒体12aに格納することによって、何らかの障害が発生した場合でも、プログラム解析情報のうち、それまでに格納された部分は安全に保護される。例えば構文解析からプログラム依存グラフの作成まで数日程度を要する大規模なプログラムの解析を行おうとした場合に、途中で何らかの障害が発生してコンピュータがダウンし、メインメモリ上に展開されていたデータが破壊されたとしても、少なくとも既にデータベースに格納された部分については、安全に保護され、次に作業を再開するときは、既にデータベースに格納されているプログラム解析情報については、改めて解析処理を行う必要はなく、それ以降の解析処理から再開すればよいので、重複した作業を回避することができる。
【0016】
なお、本実施形態では、データベースとしては、オブジェクト指向データベースソフトウェアを利用し、プログラム解析情報は、オブジェクト指向言語、例えばC++などを用いて作成する。このようなデータベースとするのは、プログラム解析情報は複雑なものなので、リレーショナルデータベースを用いたのでは格納が困難なためである。また、作成されたプログラム解析情報を、作成された構造のまま格納することができるので、便利である。
【0017】
バッチ解析部13は、プログラム解析情報格納部12によって情報記録媒体12aに格納された情報を用いて、バッチ処理で解析することができる解析処理を行い、その結果をバッチ解析結果ファイル14に格納する。このバッチ処理中は、オペレータからの指示などは特に必要なく、本装置が自動的に解析を行う。
バッチ解析結果ファイル14には、例えばプログラムの規模に関連するメトリクス(metrics)情報や冗長度情報、保守用文書情報などが含まれる。「メトリクス情報」とは、ソフトウェアの数値化指標に関する情報であり、本装置では、量的複雑さを表すメトリクスと、質的複雑さを表すメトリクスを計測し、その情報を作成する。量的複雑さのメトリクスとしては、プログラムの物理的な記述量を計測するサイズ・メトリクスと、制御構造の複雑さを計測するサイクロマティック数の二種類を計測し、質的複雑さのメトリクスとしては、モジュールの内容そのものを表す凝集度と結合度を計測する。「冗長度情報」とは、単一の手続きについて、出力に影響しない冗長な文に関する情報である。冗長な文は出力に影響しないので、ソースコードから削除しても外部に対する出力に変化はない。冗長度情報に従って、このような冗長な文を確認して対応策をとっておくことによって、意図しない動作の発生等を防止することができる。「保守用文書情報」とは、プログラムを保守する際に用いるドキュメント類で、定義されている手続きや型、変数名などの一覧や、それぞれの手続き等がどこに関連したものであるかを記載したものであり、例えば、他人が作成したプログラムを理解するときに使われる。「保守用文書情報」を取得しておくことで、ハイパーテキスト方式で情報提供することができ、紙ベースのドキュメントと比べると、格段に便利になる。
【0018】
冗長度情報、メトリクス情報及び保守用文書情報などは、バッチ解析処理の結果生成されるが、バッチ解析処理の結果生成されるものは、これらに限られず、必要に応じて種々のバッチ解析処理を行い、その結果、それぞれのバッチ解析処理に対応した種々の情報を生成するよう、バッチ解析部13を設計することが可能である。
【0019】
図2において、「シンボルテーブル」とは、変数の情報の表である。例えば、同じ「a」という文字を使っている場合でも、それらが同じ変数を指す場合と、異なる変数を指す場合がある。例えば、異なる二つの関数の中で、その変数が大域変数であれば、同じものであるし、それぞれの関数においてローカルに定義された変数であれば、別々の変数となる。したがって、同じ文字で記述された変数が複数あったときに、それらが同じものなのか異なるものなのかは、直ちには識別できない。このようなシンボルに関する情報を管理するのがシンボルテーブルであり、このテーブルを参照することによって、同じシンボルで表されたものが同じものか異なるものかを知ることができる。
【0020】
図2において、「コールグラフ」とは、手続き(C言語では「関数」)の間の呼び出し関係を示した情報である。このコールグラフに基づいて、図3のプログラム解析部201 がこれをノードとエッジを用いてグラフィック表示させた場合、グラフィック表示されたグラフでは、ノードが手続きを表し、エッジ(矢印)が手続き間の関係を表す。なお、コールグラフをグラフィック表示させると、手続き間の呼び出し関係が視覚的に把握できるだけでなく、プログラムの構造化の程度や内容の理解や、望ましくない手続き呼び出しの検出が容易になる。
【0021】
図2において、「フローグラフ」とは、ある一つの手続き内の制御フローに関する情報である。フローグラフに基づいて、プログラム解析部202 がこれを、ノードとエッジを用いてグラフィック表示させると、ノードは基本ブロック(連続した文の列からなり、制御が先頭の文に移された後途中で停止したり分岐したりせず、最後の文で制御が離れるものをいう)を表し、エッジは基本ブロック間の制御のフローを表す。
【0022】
フローグラフについても、プログラム解析部202 によって、その情報をグラフィック表示させると、その手続き内の制御フローが視覚的に把握できるだけでなく、プログラム中のある場所(一つの文か、または一つの変数)に影響を与える部分もしくは与えられる部分の解析や、望ましくない制御フローの検出を可能にする。例えば、ある場所が制御依存する部分はその場所から入口ノードに向かってフローグラフを辿ることで検出される。また、制御が到達することのないデッドコードは、入口ノード以外のノードであって、流入するエッジのないノードとして表現される。
【0023】
図2において、「データフロー情報」とは、例えばある場所で定義された変数がどこで使用されるかといったことに関するデータの流れを解析した結果の情報である。プログラム解析部による対話処理でデータフロー異常検査を行うときは、図2に階層的に示したプログラム解析情報のうち、構文解析木、コールグラフ、フローグラフ、そしてデータフロー情報までが必要となる。データフロー異常とは、データに対する不当なイベントの組み合わせである。すべてのデータは、定義した上で使用し、最後に未定義にするという一連の順序を守って使用しなければならないが、このような順序を守らない不当な組み合わせは、データフロー異常となる。
【0024】
データフロー異常が存在しても、ソースコードをコンパイルすることは可能である。しかし、実際にコンパイルしたプログラムを実行させているときに、異常なパスを通るとデータフロー異常が顕在化することがある。したがって、このような異常は、事前にソースコードの段階で除去しておくのが望ましい。データフロー異常の検出については、本出願人による特許出願、特願平9−32415及び特願平9−32452を参照することができる。なお、ここでは、データフロー異常検査を対話処理で行う場合について説明したが、データフロー異常検査は、バッチ処理で行うこともできる。
【0025】
図2において、「プログラム依存グラフ」とは、制御の依存関係と、データの依存関係をグラフで表現したものである。プログラム依存グラフが作成されると、プログラムの影響解析を実行することができる。影響解析とは、プログラム中のある場所(一つの文か、または一つの変数)を変更すると、それがどこまで影響を与えるか、あるいは影響を与えないかを求める解析である。
【0026】
次に、図3を参照して、プログラム解析部について説明する。同図には、プログラム解析部201 ,・・・,20i が示されている。プログラム解析部201 等は、プログラム解析情報格納部12によってハードディスク装置等にデータベース化して格納されているプログラム解析情報に基づいて、種々のプログラム解析を実行する部分である。各プログラム解析部201 ,・・・,20i は解析する種類に対応して設けられている。プログラム解析部201 等は、プログラム解析情報格納部12から必要なプログラム解析情報を取り出してきて、所定の解析処理を行い、その解析結果211 等をコンピュータ画面上にGUI(Graphical User Interface)221 等により表示させる。オペレータは、この結果を見て、何らかの指示が必要な場合には、GUI221 等を介してプログラム解析部201 等へ指示を送り、プログラム解析部201 等に再度処理を行わせ、その結果を表示させる。このような処理を繰り返しながら、プログラム解析を行ってゆく。このように、オペレータがGUI221 等を介してコンピュータに指示し、それに対してコンピュータが処理を行うような操作を対話処理と呼ぶ。
【0027】
本実施形態では、プログラム解析部201 は、コンピュータ画面にコールグラフをグラフィック表示させる解析処理を行う。これにより、コールグラフの内容を実際に視覚的に把握できるように、プログラム内の関数の呼出し関係の理解が容易となる。この場合、プログラム解析部201 は、プログラム解析情報として、構文解析木及びコールグラフをプログラム解析情報格納部12から読み出して来る。また、プログラム解析部202 は、コンピュータ画面にフローグラフをグラフィック表示させる解析処理を行う。これにより、フローグラフの内容を実際に視覚的に把握できるように、ある関数の内部における変数の流れの理解が容易となる。この場合、プログラム解析部202 は、プログラム解析情報として、構文解析木及びフローグラフをプログラム解析情報格納部12から読み出して来る。
【0028】
プログラム解析部が実行する解析処理の他の例して、影響範囲解析がある。これは、プログラム解析情報格納部12によりデータベースからプログラム解析情報として、構文解析木、コールグラフ、フローグラフ、プログラム依存グラフ、モジュール入出力情報を読み出して、プログラムのソースコードのある行が、他のどの行まで影響を及ぼしているかを解析する。具体的には、プログラムのソースコードを表示し、そこである行を指定して、その行がソースコードのどこに影響しているかを、例えば色を変えて表示する。そして、その影響されている行が更にどの行に影響しているか、ということを順次調べる、ということを行う。こういう対話的な処理を繰り返すことによって、オペレータは、例えば他人が作成したプログラムの構造を利用しやすくなる。
【0029】
更に、プログラム解析部が行う別の例としては、構造解析、データフロー異常解析などがある。
図3において、GUI23は、バッチ解析結果ファイル13の内容を、オペレータが見ることができるように表示させるためのものである。また、GUI連動部24は、GUI221 ,・・・,22i 及び23のうちので任意の数のGUIをコンピュータ画面に表示させ、例えばあるGUI画面に表示されたソースプログラムのある行を指定すると、他のGUI画面に表示されたフローグラフの対応する部分が色違いで表示されるというように、複数のGUI画面を関連付けて表示するための部分である。これを用いることによって、プログラム内容の理解がより容易となる。
【0030】
本装置では、プログラム解析情報作成部11において、どの解析情報までを作成するかを、オペレータが任意に指定できるようにしてもよい。このようにすると、例えば、コールグラフを表示するだけという場合には、それより上位の解析情報は必要ないので、その旨を指定しておくことにより、バッチ処理による解析処理がより高速化する。
【0031】
次に、本発明の記録媒体について説明する。本発明のソフトウェア解析装置は、プログラムを読み込んだコンピュータが、そのプログラムに従って動作することによって実現される。したがって、このようプログラムを記録した記録媒体、例えばフロッピーディスク、CD−ROM、光磁気ディスク、磁気テープ、半導体記憶装置などをコンピュータに装着し、当該プログラムを読み込ませることによって、コンピュータ上で本発明を実施することが可能となる。
【0032】
尚、本発明は、上記実施形態に限定されるものではなく、その要旨の範囲内で種々の変更が可能である。
【0033】
【発明の効果】
以上説明したように、本発明によれば、プログラム解析情報作成手段によって作成されたプログラム解析情報を複数に分割し、それぞれを順次所定のデータ記録媒体に格納するので、大規模なプログラムに対してプログラム解析情報を得ようとした場合に、コンピュータに実装できるメモリ容量に制限があっても、大規模なプログラムのプログラム解析情報を安全に得ることができる。
【図面の簡単な説明】
【図1】本発明の一実施形態のソフトウェア解析装置のにおける解析情報作成部について説明するためのである。
【図2】本発明の一実施形態のソフトウェア解析装置がデータベースに格納するプログラム解析情報の構造を示した図である。
【図3】本発明の一実施形態のプログラム解析部について説明するための図である。
【符号の説明】
10 ソースファイル
11 プログラム解析情報作成部
12 プログラム解析情報格納部
13 バッチ解析部
14 バッチ解析結果ファイル
201 ,・・・20i プログラム解析部
211 ,・・・21i 解析結果
221 ,・・・22i ,23 GUI
24 GUI連動部
Claims (15)
- プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成手段と、
該プログラム解析情報作成手段によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納手段と、
前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析手段と、
を有し、
前記プログラム解析情報作成手段は、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、
前記プログラム解析情報格納手段は、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納することを特徴とするソフトウェア解析装置。 - 前記プログラム解析手段は、前記データ記録媒体から前記プログラム解析情報を読み出して、所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示し、前記結果に対しオペレータから指示が送られてきたときに再度処理を行い、その結果をGUIにより表示することによって行うオペレータとの間の対話的処理を繰り返すことによりプログラム解析を実行することを特徴とする請求項1記載のソフトウェア解析装置。
- 前記プログラム解析情報には、
前記構文解析木、前記コールグラフ、前記フローグラフの他に、前記ソースコードに基づいて前記ソースコードに用いられているシンボルの意味が記述されたシンボルテーブル、
前記構文解析木、シンボルテーブル、フローグラフ、コールグラフに基づいて作成されるデータフロー情報、前記構文解析木、シンボルテーブル、コールグラフ、フローグラフ、データフロー情報に基づいて作成されるプログラム依存グラフ、
およびモジュール入出力情報、
のうち少なくとも一つが含まれていることを特徴とする請求項1又は2記載のソフトウェア解析装置。 - 前記プログラム解析情報作成手段は、前記構文解析木及びシンボルテーブル、コールグラフ及びフローグラフ、データフロー情報、並びにプログラム依存グラフ及びモジュール入出力情報を、この順序で作成することを特徴とする請求項3記載のソフトウェア解析装置。
- 前記データベースは、オブジェクト指向型のデータベースであることを特徴とする請求項1,2,3又は4記載のソフトウェア解析装置。
- プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成工程と、
該プログラム解析情報作成工程によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納工程と、
前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析工程と、
を有し、
前記プログラム解析情報作成工程では、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、
前記プログラム解析情報格納工程では、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納することを特徴とするソフトウェア解析方法。 - 前記プログラム解析工程は、前記データ記録媒体から前記プログラム解析情報を読み出して、所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示し、前記結果に対しオペレータから指示が送られてきたときに再度処理を行い、その結果をGUIにより表示することによって行うオペレータとの間の対話的処理を繰り返すことによりプログラム解析を実行することを特徴とする請求項6記載のソフトウェア解析方法。
- 前記プログラム解析情報には、
前記構文解析木、前記コールグラフ、前記フローグラフの他に、前記ソースコードに基づいて前記ソースコードに用いられているシンボルの意味が記述されたシンボルテーブル、
前記構文解析木、シンボルテーブル、フローグラフ、コールグラフに基づいて作成されるデータフロー情報、前記構文解析木、シンボルテーブル、コールグラフ、フローグラフ、データフロー情報に基づいて作成されるプログラム依存グラフ、
およびモジュール入出力情報、
のうち少なくとも一つが含まれていることを特徴とする請求項6又は7記載のソフトウェア解析方法。 - 前記プログラム解析情報作成工程は、前記構文解析木及びシンボルテーブル、コールグラフ及びフローグラフ、データフロー情報、並びにプログラム依存グラフ及びモジュール入出力情報を、この順序で作成することを特徴とする請求項8記載のソフトウェア解析方法。
- 前記データベースは、オブジェクト指向型のデータベースであることを特徴とする請求項6,7,8又は9記載のソフトウェア解析方法。
- プログラムのソースコードが記録されたソースファイルからコンピュータプログラムのソースコードを読み込んで、所定のプログラム解析処理を行って自動的に少なくとも、前記ソースコードに基づいて作成される構文解析木、前記構文解析木に基づいて作成されるコールグラフ、前記構文解析木に基づいて作成されるフローグラフを含むプログラム解析情報を階層化して作成するプログラム解析情報作成機能と、
該プログラム解析情報作成機能によって、少なくとも、前記構文解析木、前記コールグラフ、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、少なくとも前記構文解析木、前記コールグラフ、前記フローグラフの解析情報単位ごとにトランザクションとして順次所定のデータ記録媒体に格納するプログラム解析情報格納機能と、
前記データ記録媒体から前記構文解析木を含むプログラム解析情報を読み出して、解析する種類に対応して設けられている所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示するプログラム解析機能と、
を実行させるプログラムであって、
前記プログラム解析情報作成機能は、既に作成され前記データ記録媒体に格納されているプログラム解析情報を用いて上層のプログラム解析情報を作成することによりプログラム解析情報を階層化すると共に、
前記プログラム解析情報格納機能は、少なくとも、前記構文解析木、前記コールグラフ 、前記フローグラフの各々のプログラム解析情報の作成が終了した段階で、前記トランザクションとして下層のプログラム解析情報から順番に階層的にデータベース化して前記データ記録媒体に格納するものであるプログラムを記憶したコンピュータ読み取り可能な記録媒体。 - 前記プログラム解析機能は、前記データ記録媒体から前記プログラム解析情報を読み出して、所定のプログラム解析処理を実行し、コンピュータ画面上にGUIにより前記プログラム解析処理の結果を表示し、前記結果に対しオペレータから指示が送られてきたときに再度処理を行い、その結果をGUIにより表示することによって行うオペレータとの間の対話的処理を繰り返すことによりプログラム解析を実行することを特徴とする請求項11記載のコンピュータ読み取り可能な記録媒体。
- 前記プログラム解析情報には、
前記構文解析木、前記コールグラフ、前記フローグラフの他に、前記ソースコードに基づいて前記ソースコードに用いられているシンボルの意味が記述されたシンボルテーブル、
前記構文解析木、シンボルテーブル、フローグラフ、コールグラフに基づいて作成されるデータフロー情報、前記構文解析木、シンボルテーブル、コールグラフ、フローグラフ、データフロー情報に基づいて作成されるプログラム依存グラフ、
およびモジュール入出力情報、
のうち少なくとも一つが含まれていることを特徴とする請求項11又は12記載のコンピュータ読み取り可能な記録媒体。 - 前記プログラム解析情報作成機能は、前記構文解析木及びシンボルテーブル、コールグラフ及びフローグラフ、データフロー情報、並びにプログラム依存グラフ及びモジュール入出力情報を、この順序で作成することを特徴とする請求項13記載のコンピュータ読み取り可能な記録媒体。
- 前記データベースは、オブジェクト指向型のデータベースであることを特徴とする請求項11,12,13又は14記載のコンピュータ読み取り可能な記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02435798A JP3997495B2 (ja) | 1998-02-05 | 1998-02-05 | ソフトウェア解析装置及びソフトウェア解析方法 |
US09/241,735 US6996516B1 (en) | 1998-02-05 | 1999-02-02 | Apparatus for analyzing software and method of the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP02435798A JP3997495B2 (ja) | 1998-02-05 | 1998-02-05 | ソフトウェア解析装置及びソフトウェア解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11224186A JPH11224186A (ja) | 1999-08-17 |
JP3997495B2 true JP3997495B2 (ja) | 2007-10-24 |
Family
ID=12135954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP02435798A Expired - Fee Related JP3997495B2 (ja) | 1998-02-05 | 1998-02-05 | ソフトウェア解析装置及びソフトウェア解析方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6996516B1 (ja) |
JP (1) | JP3997495B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4254031B2 (ja) * | 2000-08-21 | 2009-04-15 | ソニー株式会社 | 記録装置、携帯端末、管理サーバ、情報処理方法、および記録媒体 |
US20050120331A1 (en) * | 2003-12-02 | 2005-06-02 | International Business Machines Corporation | Hosting environment abstraction agents |
US7506320B2 (en) * | 2004-09-09 | 2009-03-17 | International Business Machines Corporation | Generating sequence diagrams using call trees |
US20090171606A1 (en) * | 2007-12-31 | 2009-07-02 | Takahiro Murata | Semiconductor manufacture performance analysis |
JP5400873B2 (ja) * | 2008-06-05 | 2014-01-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ソフトウェア問題を識別するための方法、システム、およびコンピュータ・プログラム |
JP6502044B2 (ja) * | 2014-09-01 | 2019-04-17 | 日本電気通信システム株式会社 | データ解析装置、データ解析方法、および、プログラム。 |
US10296737B2 (en) * | 2015-12-09 | 2019-05-21 | International Business Machines Corporation | Security enforcement in the presence of dynamic code loading |
KR20210012123A (ko) * | 2019-07-24 | 2021-02-03 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
WO2023142061A1 (zh) * | 2022-01-29 | 2023-08-03 | 西门子股份公司 | 工作流生成方法、装置、系统、介质及程序产品 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06149551A (ja) * | 1992-11-06 | 1994-05-27 | Fujitsu Ltd | プログラム仕様書自動生成方法 |
JP3759630B2 (ja) * | 1993-11-02 | 2006-03-29 | 株式会社野村総合研究所 | スパイラル型オブジェクト指向ソフトウェアの開発支援システム |
JPH07160352A (ja) * | 1993-12-09 | 1995-06-23 | Nec Corp | プログラム実行方式 |
JPH07234783A (ja) * | 1994-02-25 | 1995-09-05 | Hitachi Ltd | ドキュメント自動生成システムにおけるドキュメント情報抽出方式 |
JPH07248915A (ja) * | 1994-03-09 | 1995-09-26 | Fujitsu Ltd | プログラム解析装置 |
JPH08292881A (ja) * | 1995-04-24 | 1996-11-05 | Nec Corp | プログラム影響範囲表示装置 |
JPH0926897A (ja) * | 1995-05-08 | 1997-01-28 | Toshiba Corp | プログラム解析装置及びプログラム解析方法 |
JPH09101884A (ja) * | 1995-10-05 | 1997-04-15 | Nec Corp | リバースエンジニアリング支援システム |
US5963739A (en) * | 1996-04-26 | 1999-10-05 | Peter V. Homeier | Method for verifying the total correctness of a program with mutually recursive procedures |
US5778212A (en) * | 1996-06-03 | 1998-07-07 | Silicon Graphics, Inc. | Interprocedural analysis user interface |
US5892947A (en) * | 1996-07-01 | 1999-04-06 | Sun Microsystems, Inc. | Test support tool system and method |
JP4200534B2 (ja) | 1997-02-17 | 2008-12-24 | 新日鉄ソリューションズ株式会社 | データフロー異常検査装置 |
JP4055197B2 (ja) | 1997-02-17 | 2008-03-05 | 新日鉄ソリューションズ株式会社 | プログラムに含まれる手続きの解析装置 |
US6282701B1 (en) * | 1997-07-31 | 2001-08-28 | Mutek Solutions, Ltd. | System and method for monitoring and analyzing the execution of computer programs |
-
1998
- 1998-02-05 JP JP02435798A patent/JP3997495B2/ja not_active Expired - Fee Related
-
1999
- 1999-02-02 US US09/241,735 patent/US6996516B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH11224186A (ja) | 1999-08-17 |
US6996516B1 (en) | 2006-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6513154B1 (en) | System and method for testing of computer programs in programming effort | |
KR100293902B1 (ko) | 설비의동작을감시하기위한방법및설비의동작을감시및제어하는시스템 | |
US8010946B2 (en) | Apparatus for analysing and organizing artifacts in a software application | |
US8091075B2 (en) | Method and apparatus for breakpoint analysis of computer programming code using unexpected code path conditions | |
US5832270A (en) | System having automatic insertion of hooks into object-oriented software for visualizing execution thereof | |
JP3966518B2 (ja) | プログラム解析装置、その解析方法及びプログラム | |
US6757889B1 (en) | Source program checking device and program and method for same | |
US8732676B1 (en) | System and method for generating unit test based on recorded execution paths | |
WO2010131758A1 (ja) | モデル検証システム、モデル検証方法および記録媒体 | |
JP2001511557A (ja) | 2000年テストケースを生成するためのシステムおよび方法 | |
JP3997495B2 (ja) | ソフトウェア解析装置及びソフトウェア解析方法 | |
White et al. | Test manager: A regression testing tool | |
Vieira et al. | Analyzing dependencies in large component-based systems | |
Liuying et al. | Test selection from UML statecharts | |
Griesmeyer et al. | A reference manual for the event progression analysis code (EVNTRE) | |
CN115080448B (zh) | 一种软件代码不可达路径自动检测的方法和装置 | |
JP4961943B2 (ja) | 開発支援プログラム、開発支援方法および開発支援装置 | |
JP2001100999A (ja) | ルールベースシステム | |
Tonella et al. | Reverse engineering 4.7 million lines of code | |
JPH09146627A (ja) | 故障診断知識ツリー階層化装置 | |
Hart | Experience with logical code analysis in software maintenance | |
JPS6284337A (ja) | 仕様書情報解析方式 | |
JP4200534B2 (ja) | データフロー異常検査装置 | |
JP4663526B2 (ja) | 帳票作成支援装置、帳票作成支援方法、および帳票作成支援プログラム | |
IT9021931A1 (it) | Sistema di prova per sistema esperto |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040913 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060911 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061109 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20061222 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070219 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20070226 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070316 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070514 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070620 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070622 |
|
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: 20070713 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070726 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100817 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110817 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110817 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120817 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120817 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130817 Year of fee payment: 6 |
|
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 |
|
LAPS | Cancellation because of no payment of annual fees |