JPH11338692A - プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体 - Google Patents

プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体

Info

Publication number
JPH11338692A
JPH11338692A JP14681598A JP14681598A JPH11338692A JP H11338692 A JPH11338692 A JP H11338692A JP 14681598 A JP14681598 A JP 14681598A JP 14681598 A JP14681598 A JP 14681598A JP H11338692 A JPH11338692 A JP H11338692A
Authority
JP
Japan
Prior art keywords
parallel processing
information
processing unit
class
parallel
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
JP14681598A
Other languages
English (en)
Inventor
Hisashi Miyata
尚志 宮田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP14681598A priority Critical patent/JPH11338692A/ja
Publication of JPH11338692A publication Critical patent/JPH11338692A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

(57)【要約】 【課題】 オブジェクトと並行処理単位を区別し、両者
の関係についても解析結果を図表などの形式で表示す
る。 【解決手段】 第1の抽出部11が、ソースコードの中
で並行処理に関して記述している部分から、どのような
並行処理単位があるかの情報を抽出する。第2の抽出部
12は、システムにどのようなオブジェクトがあるかの
情報、どのオブジェクトがどのオブジェクトのメソッド
を呼び出しているかの情報、及びどのオブジェクトがど
のクラスに対応するかの情報を抽出する。このように抽
出された各情報は、情報格納部13に格納される。出力
部14は、情報格納部13に格納された情報を組み合わ
せて解析することによって、並行処理単位とオブジェク
トに関して、各種出力を行なう。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
システムを静的に解析するプログラム解析装置の改良に
関するもので、より具体的には、オブジェクトと並行処
理単位を区別し、両者の関係についても解析結果を図表
などの形式で表示するようにしたものである。
【0002】
【従来の技術】オブジェクト指向システムとは、オブジ
ェクトを単位として構成されたソフトウェアである。ま
た、オブジェクトとは、データと、このデータに対する
処理手順であるメソッドとを有するソフトウェア上の単
位であり、種類ごとに異なった役割を持つ。このような
オブジェクト指向システムにおいては、オブジェクト間
でメッセージをやり取りすることによって、全体の処理
を実現している。
【0003】このようなオブジェクト指向システムを開
発するためのプログラミング言語はオブジェクト指向言
語と呼ばれ、例えばC++やSmallTalkなどが
知られている。これらのオブジェクト指向言語に対し
て、オブジェクト指向でないC言語のような従来のプロ
グラミング言語は手続き型言語と呼ばれる。
【0004】オブジェクト指向言語では、ソースコード
に含まれる各クラスに基づいて、ソフトウェアの実行時
に、オブジェクトのインスタンスが生成される。ここ
で、クラスとは、ソースコードの部分であって、同じ型
のオブジェクトが持つデータやメソッドを定義するもの
である。また、インスタンスとは、同じ型に属する個々
のオブジェクトである。
【0005】ところで、ソフトウェアの開発では、ソー
スコードを解析することによって各種の情報を提供する
プログラム解析装置が用いられる。オブジェクト指向シ
ステムの開発に用いられるプログラム解析装置として
は、例えば、オブジェクト間の関係をソースコードから
静的に解析し、システム構成図の形で、各オブジェクト
と各クラスとの対応関係を矢印などで結んで表示するも
のが知られている。ここで、静的な解析とは、ソースコ
ードのみに基づいた解析であり、これに対して、プログ
ラムを実行させて実行ログをとり、この実行ログに基づ
いて行なう解析は、動的な解析と呼ぶ。
【0006】また、オブジェクト指向システムの開発に
用いられる従来のプログラム解析装置として、オブジェ
クトを並行処理の単位と考え、オブジェクト間で互いの
メソッドを呼び出す関係を抽出するものも知られてい
る。
【0007】
【発明が解決しようとする課題】ところで、従来のC言
語のような手続き型言語に適用されるプログラム解析装
置のなかには、関数の呼び出しを静的に解析し、関数を
ノード、呼び出し関係を矢印で示した図などの形式で、
解析結果を表示するものがある。また、プログラムを実
行させた結果から、並行処理単位間での情報のやり取り
を、タイミングチャートを用いて表示するものも知られ
ている。
【0008】しかしながら、オブジェクト指向システム
に適用するプログラム解析装置としては、並行処理単位
を前提としてシステムを解析し、結果を表示するものは
知られていない。例えば、オブジェクトを並行処理単位
とみなし、解析結果に基づいて並行処理単位毎に、オブ
ジェクト間のメッセージのやり取りをシーケンス図など
として表示するプログラム解析装置は知られていない。
【0009】また、従来のオブジェクト指向システムで
は、オブジェクトを並行処理単位と考えることができる
が、実際の並行処理単位は、プログラムを実装する環境
に応じて、オブジェクトであったりスレッドであったり
するなど異なっている。ここで、スレッドとは、システ
ム環境においてCPUやOSが実行を制御する処理の単
位である。また、並行処理単位とは、オブジェクトやス
レッドだけでなく、プロセス、タスクの他、複数のオブ
ジェクトに亘るような大きな実行単位まで含む広い概念
である。例えば、一定時間間隔ごとのタイマ割り込みを
用いた並行プログラミングで複数の処理を並行して行な
うような場合、各処理が並行処理単位となる。
【0010】このように並行処理単位とオブジェクトと
は必ずしも一致しないので、開発対象であるオブジェク
ト指向システムを正しく理解するには、並行処理単位と
オブジェクトとを区別し、両者の関係を知る必要があ
る。例えば、いくつかの作業が同時並行的に処理され、
個々の作業ごとに制御用のオブジェクトが生成され、そ
の制御用のオブジェクトがそれぞれいくつかのオブジェ
クトを順次呼び出してその機能を利用する場合を考え
る。このような場合、並行処理単位には、制御用オブジ
ェクトだけではなく呼び出される各オブジェクトも含ま
れるので、制御用オブジェクトだけを観察しても処理の
全体を理解することはできない。
【0011】また、1つのオブジェクトがいくつもの並
行処理単位から呼び出しによって利用される場合は、異
なった作業からの呼び出しが同じオブジェクトに対して
競合するとシステム全体の動作に不具合が生じる。この
ような不具合を排他制御などを用いて回避するために
は、どの並行処理単位が、いつ、どのオブジェクトを利
用するかを理解する必要がある。ここで、排他制御と
は、コンピュータ上において、ある作業がある資源を利
用する際、他の作業からのアクセスをロックすることに
よって当該資源を占有することである。
【0012】しかしながら、従来では、オブジェクトと
並行処理単位の両者について解析した結果を表示した
り、両者間の関係を解析して表示するプログラム解析装
置は知られていなかったため、デバッグなどの作業が困
難であった。
【0013】本発明は、上記のような従来技術の問題点
を解決するために提案されたもので、その目的は、オブ
ジェクトと並行処理単位とを区別し、両者の関係を解析
して表示する技術を提供することである。また、本発明
の他の目的は、並行処理単位が、どのオブジェクトのメ
ソッドを呼び出しているかという関係も容易に理解する
ことができる技術を提供することである。
【0014】
【課題を解決するための手段】上記の目的を達成するた
め、請求項1のプログラム解析装置は、オブジェクト
と、相互に並行動作する並行処理単位と、を用いるオブ
ジェクト指向システムを解析するプログラム解析装置に
おいて、前記オブジェクト指向システムのソースコード
を解析することによって、前記オブジェクトに関する情
報を抽出する手段と、前記ソースコードを解析すること
によって、前記並行処理単位に関する情報を抽出する手
段と、抽出された前記各情報に基づいて、前記オブジェ
クトと前記並行処理単位との関係を出力する手段と、を
備えたことを特徴とする。請求項6の発明は、請求項1
の発明を方法の観点から把握したもので、オブジェクト
と、相互に並行動作する並行処理単位と、を用いるオブ
ジェクト指向システムを解析するプログラム解析方法に
おいて、前記オブジェクト指向システムのソースコード
を解析することによって、前記オブジェクトに関する情
報を抽出するステップと、前記ソースコードを解析する
ことによって、前記並行処理単位に関する情報を抽出す
るステップと、抽出された前記各情報に基づいて、前記
オブジェクトと前記並行処理単位との関係を出力するス
テップと、を含むことを特徴とする。請求項8の発明
は、請求項1の発明を、ソフトウェアを記録した記録媒
体の観点から把握したもので、オブジェクトと、相互に
並行動作する並行処理単位と、を用いるオブジェクト指
向システムのソースコードを、コンピュータを用いて解
析するプログラム解析用ソフトウェアを記録した記録媒
体において、前記ソフトウェアは、コンピュータに、前
記ソースコードを解析することによって、前記オブジェ
クトに関する情報を抽出させ、前記ソースコードを解析
することによって、前記並行処理単位に関する情報を抽
出させ、抽出された前記各情報に基づいて、前記オブジ
ェクトと前記並行処理単位との関係を出力させることを
特徴とする。請求項1,6,8の発明では、オブジェク
ト指向システムのソースコードを静的に解析することに
よって、オブジェクトに関する情報と並行処理単位に関
する情報を抽出し、これら情報に基づいて、各オブジェ
クトと各並行処理単位との関係を図表などの形式でわか
りやすく表示することができる。例えば、1つの並行処
理単位が利用する複数のオブジェクトを図示したり、逆
に、1つのオブジェクトが複数の並行処理単位によって
利用される様子を図示する。これによって、並行処理単
位とオブジェクトとの関係を理解することが容易にな
り、プログラム開発が効率化される。
【0015】請求項2の発明は、請求項1記載のプログ
ラム解析装置において、前記オブジェクト指向システム
のソースコードを解析することによって、前記並行処理
単位がどのオブジェクトのメソッドを呼び出しているか
を表す並行−メソッド情報を抽出する手段を備えたこと
を特徴とする。請求項7の発明は、請求項2記載の発明
を方法の観点から把握したもので、請求項6記載のプロ
グラム解析方法において、前記オブジェクト指向システ
ムのソースコードを解析することによって、前記並行処
理単位がどのオブジェクトのメソッドを呼び出している
かを表す並行−メソッド情報を抽出するステップを含む
ことを特徴とする。請求項2,7の発明では、並行処理
単位がどのオブジェクトのメソッドを呼び出しているか
を表す情報が得られるので、並行処理単位とメソッド呼
び出しとの関係を容易に理解することができる。
【0016】請求項3の発明は、請求項2記載のプログ
ラム解析装置において、抽出された前記並行−メソッド
情報に基づいて、並行処理単位がどのオブジェクトのメ
ソッドを呼び出しているかを2次元平面上に出力する第
1の出力手段を備え、前記第1の出力手段は、前記2次
元平面上において、並行処理単位が呼び出す各メソッド
を第1の軸に沿って並べ、前記各メソッドが属するオブ
ジェクトを第2の軸に沿って並べ、各メソッドと各オブ
ジェクトとを関連づけて図示するように構成されたこと
を特徴とする。請求項3の発明では、2次元平面上にお
いて、並行処理単位ごとに、呼び出されるメソッドとオ
ブジェクトとが、両者間の対応関係に基づいて図示され
るので、並行処理単位によるメソッド呼び出しがどのオ
ブジェクトに対するものかを容易に理解することができ
る。
【0017】請求項4の発明は、請求項1記載のプログ
ラム解析装置において、前記オブジェクト指向システム
のソースコードを解析することによって、前記各並行処
理単位がどのクラスに基づくオブジェクトのメソッドを
呼び出しているかを表す並行−クラス情報を抽出する手
段を備えたことを特徴とする。請求項4の発明では、各
並行処理単位がどのオブジェクトのメソッドを呼び出し
ているかだけでなく、呼び出されているメソッドが、ど
のクラスに基づくオブジェクトに属するかについても情
報が得られる。このため、並行処理単位とクラスとの関
係も理解容易となり、ソースコードのクラスに対して行
なう実際のプログラム修正が容易になる。
【0018】請求項5の発明は、請求項4記載のプログ
ラム解析装置において、抽出された並行−クラス情報に
基づいて、各並行処理単位がどのクラスに基づくオブジ
ェクトのメソッドを呼び出しているかを2次元平面上に
出力する第2の出力手段を備え、前記第2の出力手段
は、前記2次元平面上において、各並行処理単位を第1
の軸に沿って並べ、各並行処理単位が呼び出す各メソッ
ドのオブジェクトに対応する各クラスを第2の軸に沿っ
て並べ、各並行処理単位と各クラスとを関連づけて図示
するように構成されたことを特徴とする。請求項5の発
明では、2次元平面上において、各並行処理単位と、並
行処理単位が呼び出すメソッドのオブジェクトに対応す
るクラスとが、両者間の対応関係に基づいて図示される
ので、並行処理単位が呼び出すメソッドのオブジェクト
が、どのクラスに基づくものであるかを容易に理解する
ことができる。
【0019】
【発明の実施の形態】次に、本発明の実施の形態(以下
「本実施形態」という)について、図面を参照して説明
する。なお、本発明は、周辺機器を持つコンピュータ
を、ソフトウェアで制御することによって実現すること
が一般的と考えられる。この場合、キーボード及びマウ
スなどの入力装置で情報を入力し、CRT表示装置及び
プリンタなどの出力装置で情報を出力できる。また、レ
ジスタ、メモリ、外部記憶装置などの記憶装置は、いろ
いろな形式で、情報を一時的に保持したり永続的に保存
できる。そして、CPUは、前記ソフトウェアにしたが
って、これらの情報に加工及び判断などの処理を加え、
さらに、処理の順序を制御することができる。
【0020】また、コンピュータを制御するソフトウェ
アは、各請求項及び明細書に記述する処理に対応した命
令を組み合わせることによって作成され、作成されたソ
フトウェアは、コンパイラやインタプリタなどの処理系
によって実行されることで、上記のようなハードウェア
資源を活用する。
【0021】但し、本発明を実現するための上記のよう
な態様はいろいろ変更することができ、例えば、本発明
の装置と外部との間で情報を入出力するには、フロッピ
ーディスクなどの着脱可能な記録媒体やネットワーク接
続装置を使用することもできる。さらに、本発明を実現
するソフトウェアを記録したCD−ROMのような記録
媒体は、それ単独でも、本発明の一態様である。また、
本発明の機能の一部をLSIなどの物理的な電子回路で
実現することも可能である。
【0022】以上のように、コンピュータを使用して本
発明を実現する態様はいろいろ変更できるので、以下で
は、本発明の各機能を実現する仮想的回路ブロックを用
いることによって、本発明の実施の形態を説明する。
【0023】〔1.概略〕図1は、本実施形態の概略を
説明する概念図である。すなわち、本実施形態では、オ
ブジェクト指向システムのソースコードがソースコード
格納部10に格納されており、このソースコードに基づ
いて、次のように情報が抽出される。まず、第1の抽出
部11が、ソースコードの中で並行処理に関して記述し
ている部分から、どのような並行処理単位があるかの情
報を抽出する。この第1の抽出部11は、請求項1にい
う「並行処理単位に関する情報を抽出する手段」に相当
する。
【0024】また、第2の抽出部12は、ソースコード
によって表されるオブジェクト指向システムについて、
どのようなオブジェクトがあるかの情報、どのオブジェ
クトに対するメソッド呼び出しがあるかの情報、及びど
のオブジェクトがどのクラスに対応するか、などの情報
を抽出する。この第2の抽出部12は、請求項1にいう
「オブジェクトに関する情報を抽出する手段」に相当す
る。このように抽出された各情報は、情報格納部13に
格納される。
【0025】そして、出力部14が、情報格納部13に
格納された各情報を組み合わせて解析することによっ
て、並行処理単位とオブジェクトとに関して、各種出力
を行なう。例えば、どのような並行処理単位があるかの
情報と、どのオブジェクトに対するメソッド呼び出しが
あるかの情報を組み合わせることによって、どの並行処
理単位がどのオブジェクトのメソッドを呼び出している
かを出力する。さらに、どのオブジェクトがどのクラス
に対応するかの情報も組み合わせることによって、各並
行処理単位が呼び出しているオブジェクトが、どのクラ
スに基づくものかなどを出力する。
【0026】特に、これらの情報を図表の形式で表示す
れば、並行処理単位とオブジェクトとの関係を視覚的に
理解することができ、また、排他制御すべきオブジェク
トを視覚的に理解するなども可能となる。このため、オ
ブジェクト指向システムの開発が効率化され、精度も向
上する。なお、出力部14は、請求項1にいう「出力す
る手段」に相当する。
【0027】〔2.具体的構成〕図2は、本実施形態に
おけるプログラム解析装置(以下「本装置」という)の
具体的構成を示す機能ブロック図である。本装置は、こ
の図に示すように、開発対象となるオブジェクト指向シ
ステムのソースコードを格納するソースコード格納部1
0を有する。また、本装置は、このソースコード格納部
10に格納されたソースコードに対して解析を行なうク
ラス情報解析部20とメソッド呼び出し情報解析部21
と、並行処理単位情報解析部22と、を有する。
【0028】このうち、クラス情報解析部20は、ソー
スコードにどのようなクラスが含まれるかを表すクラス
情報を抽出する部分である。また、メソッド呼び出し情
報解析部21は、どのオブジェクトがどのオブジェクト
のメソッドを呼び出しているかを表すメソッド呼び出し
情報を抽出する部分である。また、平行処理単位情報解
析部22は、どのような並行処理単位があるかを表す並
行処理単位情報を抽出する部分である。
【0029】また、本装置は、クラス情報解析部20に
よって抽出されたクラス情報を格納するクラス情報格納
部30と、メソッド呼び出し情報解析部21によって抽
出されたメソッド呼び出し情報を格納するメソッド呼び
出し情報格納部31と、平行処理単位情報解析部22に
よって抽出された並行処理単位情報を格納する並行処理
単位情報格納部32と、を有する。
【0030】さらに、本装置は、クラス情報格納部30
に格納されたクラス情報、メソッド呼び出し情報格納部
31に格納されたメソッド呼び出し情報、及び並行処理
単位情報格納部32に格納された並行処理単位情報に対
して解析を行なうクラス間依存関係情報解析部40及び
並行−メソッド情報解析部50と、を有する。
【0031】このうち、クラス間依存関係情報解析部4
0は、クラス情報格納部30に格納されたクラス情報及
びメソッド呼び出し情報格納部31に格納されたメソッ
ド呼び出し情報を解析することによって、各メソッド呼
び出しがどのクラスに対応するものかを表すクラス関依
存関係情報を抽出する部分である。また、並行−メソッ
ド情報解析部50は、メソッド呼び出し情報格納部31
に格納されたメソッド呼び出し情報及び並行処理単位情
報格納部32に格納された並行処理単位情報を解析する
ことによって、各並行処理単位に関してどのオブジェク
トのメソッドの呼び出しが行なわれているかを表す並行
−メソッド情報を抽出する部分である。
【0032】また、本装置は、クラス間依存関係情報解
析部40によって抽出されたクラス間依存関係情報を格
納するためのクラス間依存関係情報格納部41と、並行
−メソッド情報解析部50によって抽出された並行−メ
ソッド情報を格納するための並行−メソッド情報格納部
51と、を有する。
【0033】なお、平行処理単位情報解析部22、並行
処理単位情報格納部32及び並行−メソッド情報解析部
50は、図1における第1の抽出部11に相当する。ま
た、クラス情報解析部20、クラス情報格納部30、メ
ソッド呼び出し情報解析部21、メソッド呼び出し情報
格納部31、クラス間依存関係情報解析部40及びクラ
ス間依存関係情報格納部41は、図1における第2の抽
出部12に相当する。また、並行−メソッド情報格納部
51は、図1における情報格納部13に相当する。
【0034】また、本装置は、クラス間依存関係情報格
納部41に格納されたクラス間依存関係情報及び並行−
メソッド情報格納部51に格納された並行−メソッド情
報に対して解析を行なうことによって、各並行処理単位
がどのクラスに対応するオブジェクトのメソッドを呼び
出しているかを表す並行−クラス情報を抽出する並行−
クラス解析部60を有する。
【0035】また、本装置は、解析によって抽出された
各情報を表示する表示部70を有する。この表示部70
は、並行−メソッド情報格納部51に格納された並行−
メソッド情報に基づいて、各並行処理単位がどのオブジ
ェクトのメソッドを呼び出しているかを表示するように
構成されている。また、表示部70は、並行−クラス解
析部60が抽出した並行−クラス情報に基づいて、各並
行処理単位がどのクラスに対応するオブジェクトのメソ
ッドを呼び出しているかを表示するように構成されてい
る。なお、並行−クラス解析部60及び表示部70は、
図1における出力処理部14に相当する。また、表示部
70は、請求項3にいう「第1の出力手段」及び請求項
5にいう「第2の出力手段」に相当する。
【0036】〔3.作用及び効果〕上記のような構成を
有する本装置は、次のような作用を有する。ここで、図
3は、本装置における処理手順を示すフローチャートで
ある。なお、開発対象となっているオブジェクト指向シ
ステムのソースコードは、ソースコード格納部10に格
納することによってあらかじめ本装置に与えておく。図
3に示す手順では、まず、ソースコード格納部10に格
納されたソースコードから、クラス情報解析部20、メ
ソッド呼び出し情報解析部21及び平行処理単位情報解
析部22が、それぞれ次のように情報を抽出する。
【0037】〔3−1.クラス情報の抽出〕まず、クラ
ス情報解析部20が、ソースコード格納部10に格納さ
れたソースコードを解析することによって、クラス情報
を抽出する(ステップ1)。ここで、クラス情報とは、
ソースコード中にどのようなクラスがあるかを表す情報
であり、クラス名、クラスのデータメンバ、メソッド、
クラス間の参照関係などを含む。これらの項目は、ソー
スコード中でクラスやそのデータメンバなどを宣言する
予約語を検出し、検出した予約語に続く宣言内容を収集
することによって抽出することができる。このように抽
出されたクラス情報は、クラス情報格納部30に格納さ
れる。
【0038】〔3−2.メソッド呼び出し情報の抽出〕
次に、メソッド呼び出し情報解析部21が、ソースコー
ド格納部10に格納されたソースコードを解析すること
によって、メソッド呼び出し情報を抽出する(ステップ
2)。ここで、メソッド呼び出し情報とは、ソースコー
ドで表されるオブジェクト指向システムにおいて、どの
オブジェクトがどのオブジェクトのメソッドを呼び出し
ているかを表す情報である。ここで、メソッドとは、デ
ータに対する処理手続きであり、従来の手続き型言語に
おける関数に相当する。また、メソッドは、自分が属す
るオブジェクトのデータに対する操作ばかりでなく、関
数呼び出しのように他のオブジェクトのメソッドを呼び
出すことができる。
【0039】このため、1つのメソッド呼び出しに関す
る情報は、どのオブジェクトが、どのオブジェクトのメ
ソッドを呼び出しているかを表す情報を含む。このよう
な情報を抽出するには、ソースコード中からメソッド呼
び出しの命令文を検出し、命令文ごとに、その命令文を
含んでいるオブジェクトを呼び出す側として記録し、命
令文によって呼び出されるオブジェクトのメソッドを呼
び出される側として記録すればよい。
【0040】また、オブジェクト指向システムを構成す
るオブジェクトの個数は有限個であるから、メソッド呼
び出し情報の抽出は、それら全てのオブジェクトに関し
て実施する。このように抽出されたメソッド呼び出し情
報は、メソッド呼び出し情報格納部31に格納される。
【0041】〔3−3.並行処理単位情報の抽出〕続い
て、平行処理単位情報解析部22が、ソースコード格納
部10に格納されたソースコードを解析することによっ
て、並行処理単位情報を抽出する(ステップ3)。ここ
で、並行処理単位情報とは、解析の対象となっているオ
ブジェクト指向システムにどのような並行処理単位が存
在するかを表す情報である。このような並行処理単位情
報を抽出するには、オブジェクト指向言語によって記述
されたソースコードのうち、並行処理に関する部分か
ら、並行処理単位、その数、並行処理単位を表す関数な
どを抽出すればよい。例えば、並行処理単位を宣言する
予約語が決まっていればそのような予約語を検出すれば
よいし、また、新たなジョブが投入されたときに必ずあ
る種類のオブジェクトが生成される場合は、そのような
生成の命令文を検出してもよい。
【0042】また、並行処理単位は、他の並行処理単位
やオブジェクトとの間で同期を取る必要があるかどうか
や、保護する必要があるかどうかなどに基づいて類型化
しておけば、解析結果の理解に役立つ。このように抽出
された並行処理単位情報は、並行処理単位情報格納部3
2に格納される。
【0043】以上のようにクラス情報格納部30に格納
されたクラス情報、メソッド呼び出し情報格納部31に
格納されたメソッド呼び出し情報、及び並行処理単位情
報格納部32に格納された並行処理単位情報に対して、
クラス間依存関係情報解析部40及びメソッド−並行解
析部50が、それぞれ次のような解析を行う。
【0044】〔3−4.クラス間依存関係情報の抽出〕
まず、クラス間依存関係情報解析部40は、クラス情報
格納部30に格納されたクラス情報及びメソッド呼び出
し情報格納部31に格納されたメソッド呼び出し情報を
解析することによって、クラス間依存関係情報を抽出す
る(ステップ4)。ここで、クラス間依存関係情報と
は、ソースコードを構成する各クラス間に、メソッドの
呼び出しに基づいてどのような依存関係があるかを表す
情報である。すなわち、メソッド呼び出しはオブジェク
トの各インスタンス間で行なわれるが、各インスタンス
とそのインスタンスのひな形となったクラスとの間には
対応関係がある。このため、インスタンス間のメソッド
呼び出しに基づいて、クラス間の関係を考えることがで
きる。このように、インスタンス間のメソッド呼び出し
に基づいて定まるクラス間の関係を依存関係と呼ぶ。
【0045】このようなクラス間依存関係情報を抽出す
るには、例えば、メソッド呼び出し情報格納部31に格
納されたメソッド呼び出し情報を参照することによっ
て、メソッド呼び出しを行なっているオブジェクトのイ
ンスタンス名を調べる。続いて、クラス情報格納部30
に格納されたクラス情報を参照することによって、その
インスタンスの基となったクラス名を特定し、クラス間
の継承関係など詳細な参照関係も解析することによっ
て、メソッド呼び出しとクラスとの関係を特定すればよ
い。このように抽出されたクラス間依存関係情報はクラ
ス間依存関係情報格納部41に格納する。
【0046】そして、クラス間依存関係情報を基にして
ユーザにメソッドを指定してもらえば、OO(Obje
ct Oriented)表記法のシーケンス図を出力
でき、図中の各オブジェクトについてクラスを表示する
こともできる。ここで、OO表記法のシーケンス図と
は、オブジェクト間でいつどのようなメッセージをやり
取りしたかを、時間の流れに沿って表した図であり、通
常、垂直の次元は時間を表し、水平の次元は異なるオブ
ジェクトを表す。
【0047】〔3−5.並行−メソッド情報の抽出〕ま
た、並行−メソッド情報解析部50は、メソッド呼び出
し情報格納部31に格納されたメソッド呼び出し情報及
び並行処理単位情報格納部32に格納された並行処理単
位情報を解析することによって、並行−メソッド情報を
抽出する(ステップ5)。ここで、並行−メソッド情報
とは、どの並行処理単位に関してそれぞれどのメソッド
呼び出しが行なわれているかを表す情報である。例え
ば、並行処理単位ごとに制御用オブジェクトが生成さ
れ、この制御用オブジェクトが他のオブジェクトを順次
呼び出すことによって並行処理単位全体としての動作が
成立する場合を考える。
【0048】このような場合に並行−メソッド情報を抽
出するには、まず、並行処理単位情報格納部32に格納
された並行処理単位情報を参照することによって、並行
処理単位ごとに、何という名称の制御用オブジェクトを
生成しているかを調べる。続いて、メソッド呼び出し情
報格納部31に格納されたメソッド呼び出し情報を参照
することによって、その制御用オブジェクトがどのメソ
ッド呼び出しを行なっているかを特定する。このように
すれば、その並行処理単位と、並行処理単位に関するメ
ソッド呼び出しとの対応関係を抽出して並行−メソッド
情報を得ることができる。
【0049】この並行−メソッド情報には、並行処理単
位から外部へ対するメソッド呼び出しだけでなく、外部
から並行処理単位へのメソッド呼び出しや、並行処理単
位が成立する契機となるメソッド呼び出しなどを含める
こともできる。このように抽出された並行−メソッド情
報は、並行−メソッド情報格納部51に格納する。
【0050】以上のように得られたクラス間依存関係情
報及び並行−メソッド情報を基に、解析結果を表示部7
0に表示する例を次に示す。
【0051】〔3−6.並行処理単位とオブジェクトと
の関係の出力〕まず、表示部70では、並行−メソッド
情報格納部51に格納された並行−メソッド情報に基づ
いて、ある並行処理単位がどのようなオブジェクトのメ
ソッドを呼び出しているかを表示することができる(ス
テップ6)。
【0052】すなわち、1つの並行処理単位に着目すれ
ば、プログラム内での制御は単一の逐次的なフローとな
り、かつ、その並行処理単位内のプログラムステップは
有限である。そのため、個々の並行処理単位ごとに、生
成から消滅までのシーケンス図を記述することができ
る。このことから、並行処理単位ごとに、並行−メソッ
ド情報に基づいて、どのオブジェクトのメソッドを呼び
出しているかをシーケンス図上で経時的に表示する。
【0053】このように、1つの並行処理単位に関する
メソッド呼び出しを2次元平面上に表示するには、平面
の一方の軸に沿って、各メソッド呼び出しをソースコー
ドに現われる順に並べ、メソッド呼び出しによって呼び
出される各オブジェクトは平面の他方の軸に沿って並べ
る。そして、どのメソッド呼び出しがどのオブジェクト
に対するものかを、平面上に線で結ぶなどして表示す
る。
【0054】このように並行処理単位とメソッド呼び出
しに係るオブジェクトとの関係を表示した例を図4に示
す。この例は、並行処理単位T1に関するオブジェクト
の呼び出し関係を表しているもので、縦軸に沿って、並
行処理単位T1が呼び出す有限個のメソッドが記述され
ており、横軸に沿って、メソッド呼び出しの対象となっ
ている有限個のオブジェクトが並んでいる。そして、並
行処理単位T1からの各メソッド呼び出しは、矢印及び
直線を用いて、並行処理単位T1から呼び出し対象とな
るオブジェクトに関連づけて示されている。
【0055】なお、図4は1つの並行処理単位について
メソッド呼び出しを示した例であるが、幾つかの並行処
理単位からアクセスされるオブジェクトについては、互
いのアクセス時に排他制御を実施する必要があること
を、本装置が指摘するようにしてもよい。 〔3−7.並行−クラス情報の抽出〕さらに、並行−ク
ラス情報解析部60によって、クラス間依存関係情報格
納部41に格納されたクラス間依存関係情報及び並行−
メソッド情報格納部51に格納された並行−メソッド情
報を解析することによって、並行−クラス情報を抽出す
る(ステップ7)。ここで、並行−クラス情報とは、各
並行処理単位がどのクラスのオブジェクトを呼び出して
いるかを表す情報である。
【0056】すなわち、並行−クラス解析部60は、ま
ず、並行−メソッド情報格納部51に格納された並行−
メソッド情報を参照することによって、各並行処理単位
がメッセージでどのインスタンスのメソッドを呼び出し
ているかを特定する。続いて、クラス間依存関係情報格
納部41に格納されたクラス間依存関係情報を参照する
ことによって、そのインスタンスがどのクラスに基づく
ものかを特定すれば、並行処理単位ごとに、どのクラス
のオブジェクトを利用しているを表す並行−クラス情報
が得られる。
【0057】なお、本実施形態では、複数の並行処理単
位から参照されているメソッドが操作しているメンバ変
数を検出し、そのようなメンバ変数を持っているクラス
について、並行−メソッド情報の中で所定のフラグをセ
ットしておくものとする。そのような変数は、stat
icで宣言され、同じクラスに基づく全インスタンスに
共有されるクラス変数(静的メンバ)であってもよい
し、また、クラスのある特定のインスタンスだけに用い
られる変数であってもよい。
【0058】〔3−8.並行処理単位とクラスとの関係
の出力〕このように抽出された並行−クラス情報に基づ
いて、表示部70は、各並行処理単位がどのクラスのオ
ブジェクトを用いているかを表示する(ステップ8)。
この表示を2次元平面上で行なうには、一方の軸に沿っ
て各並行処理単位を並べ、他方の軸に沿ってクラスを並
べ、並行処理単位毎に用いているオブジェクトのクラス
を帯などの図形で表示する。
【0059】このような各並行処理単位とクラスとの関
係を表示した例を図5に示す。この例は、解析対象とな
っているオブジェクト指向システムに含まれる全並行処
理単位と、オブジェクト指向システムのソースコードに
含まれる全クラスとの関係を表している。すなわち、縦
軸に沿って、オブジェクト指向システムにおける有限個
の並行処理単位を示しており、横軸に沿って、オブジェ
クト指向システムを構成する有限個のクラスが並んでい
る。そして、並行処理単位毎に一定の太さの帯を表示
し、その並行処理単位が用いている各クラスを太い帯状
のアイコンで表示している。
【0060】また、複数の並行処理単位が同じクラスの
オブジェクトのメソッドを用いている場合は、その部分
について、並行−クラス情報に上記のフラグがセットさ
れているので、該当する並行処理単位とクラスのアイコ
ンを枠で囲むことによって強調表示する。なお、このよ
うな強調表示は特定の色で行なってもよい。これによ
り、並行処理単位とクラスの間の依存関係を視覚的に理
解可能となり、また、ユーザは、排他制御すべきオブジ
ェクトの範囲を視覚的に理解することができる。
【0061】〔3−9.効果〕以上のように、本実施の
形態によれば、オブジェクト指向システムのソースコー
ドを静的に解析することによって、オブジェクトに関す
る情報と並行処理単位に関する情報を抽出し、これら情
報に基づいて、各オブジェクトと各並行処理単位との関
係を図表などの形式でわかりやすく表示することができ
る。これによって、並行処理単位とオブジェクトとの関
係を理解することが容易になり、プログラム開発が効率
化される。
【0062】また、本実施形態では、並行処理単位がど
のオブジェクトのメソッドを呼び出しているかを表す並
行−メソッド情報が得られるので、並行処理単位とメソ
ッド呼び出しとの関係を容易に理解することができる。
また、本実施形態では、2次元平面上において、呼び出
されるメソッドとオブジェクトとが、両者間の対応関係
に基づいて図示されるので、並行処理単位によるメソッ
ド呼び出しがどのオブジェクトに対するものかを容易に
理解することができる。
【0063】また、本実施形態では、各並行処理単位が
どのオブジェクトのメソッドを呼び出しているかだけで
なく、呼び出されているメソッドとクラスとの対応関係
を表す並行−メソッド情報が得られる。このため、並行
処理単位とクラスとの関係も理解容易となり、ソースコ
ードのクラスに対して行なう実際のプログラム修正が容
易になる。また、本実施形態では、2次元平面上におい
て、各並行処理単位と、並行処理単位が呼び出すメソッ
ドのオブジェクトに対応するクラスとが、両者間の対応
関係に基づいて図示されるので、並行処理単位が呼び出
すメソッドのオブジェクトが、どのクラスに基づくもの
であるかを容易に理解することができる。
【0064】〔4.他の実施形態〕なお、本発明は上記
実施形態に限定されるものではなく、次に例示するよう
な他の実施形態も含むものである。例えば、クラス情
報、メソッド呼び出し情報、並行処理単位情報、クラス
間依存関係情報、並行−メソッド情報、並行−クラス情
報などについて、具体的な抽出の手法、詳細な内容や表
現形式などは自由であり、また、これらの情報はソース
コードのうち、ユーザが指定した一部分のみについて抽
出してもよい。また、必ずしも並行−クラス情報まで抽
出して表示する必要はなく、情報を出力する形式も、必
ずしも2次元平面上や図表形式には限定されない。例え
ば、並行処理単位ごとにメソッド呼び出しやクラスを列
挙したリストなどを出力することもできる。
【0065】
【発明の効果】以上のように、本発明によれば、オブジ
ェクトと並行処理単位を区別し、両者の関係についても
解析結果を図表などの形式でわかりやすく表示できるの
で、オブジェクト指向システムの内容理解が容易にな
り、開発作業が効率化・高精度化される。
【図面の簡単な説明】
【図1】本発明の実施形態の概略を示す概念図
【図2】本発明の実施形態の具体的な構成を示す機能ブ
ロック図
【図3】本発明の実施形態における処理手順を示すフロ
ーチャート
【図4】本発明の実施形態において、並行処理単位とオ
ブジェクトとの間で送受信されるメソッド呼び出しの表
示例を示す図
【図5】本発明の実施形態において、全並行処理単位
と、メソッド呼び出しに係る全クラスとの関係の表示例
を示す図
【符号の説明】
10…ソースコード格納部 11…第1の抽出部 12…第2の抽出部 13…情報格納部 14…出力処理部 20…クラス情報解析部 21…メソッド呼び出し情報解析部 22…並行処理単位情報解析部 30…クラス情報格納部 31…メソッド呼び出し情報格納部 32…並行処理単位情報格納部 40…クラス間依存関係情報解析部 41…クラス間依存関係情報格納部 50…並行−メソッド情報解析部 51…並行−メソッド情報格納部 60…並行−クラス情報解析部 70…表示部 T1…並行処理単位

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクトと、相互に並行動作する並
    行処理単位と、を用いるオブジェクト指向システムを解
    析するプログラム解析装置において、 前記オブジェクト指向システムのソースコードを解析す
    ることによって、前記オブジェクトに関する情報を抽出
    する手段と、 前記ソースコードを解析することによって、前記並行処
    理単位に関する情報を抽出する手段と、 抽出された前記各情報に基づいて、前記オブジェクトと
    前記並行処理単位との関係を出力する手段と、 を備えたことを特徴とするプログラム解析装置。
  2. 【請求項2】 前記オブジェクト指向システムのソース
    コードを解析することによって、前記並行処理単位がど
    のオブジェクトのメソッドを呼び出しているかを表す並
    行−メソッド情報を抽出する手段を備えたことを特徴と
    する請求項1記載のプログラム解析装置。
  3. 【請求項3】 抽出された前記並行−メソッド情報に基
    づいて、並行処理単位がどのオブジェクトのメソッドを
    呼び出しているかを2次元平面上に出力する第1の出力
    手段を備え、 前記第1の出力手段は、前記2次元平面上において、 並行処理単位が呼び出す各メソッドを第1の軸に沿って
    並べ、 前記各メソッドが属するオブジェクトを第2の軸に沿っ
    て並べ、 各メソッドと各オブジェクトとを関連づけて図示するよ
    うに構成されたことを特徴とする請求項2記載のプログ
    ラム解析装置。
  4. 【請求項4】 前記オブジェクト指向システムのソース
    コードを解析することによって、前記各並行処理単位が
    どのクラスに基づくオブジェクトのメソッドを呼び出し
    ているかを表す並行−クラス情報を抽出する手段を備え
    たことを特徴とする請求項1記載のプログラム解析装
    置。
  5. 【請求項5】 抽出された並行−クラス情報に基づい
    て、各並行処理単位がどのクラスに基づくオブジェクト
    のメソッドを呼び出しているかを2次元平面上に出力す
    る第2の出力手段を備え、 前記第2の出力手段は、前記2次元平面上において、 各並行処理単位を第1の軸に沿って並べ、 各並行処理単位が呼び出す各メソッドのオブジェクトに
    対応する各クラスを第2の軸に沿って並べ、 各並行処理単位と各クラスとを関連づけて図示するよう
    に構成されたことを特徴とする請求項4記載のプログラ
    ム解析装置。
  6. 【請求項6】 オブジェクトと、相互に並行動作する並
    行処理単位と、を用いるオブジェクト指向システムを解
    析するプログラム解析方法において、 前記オブジェクト指向システムのソースコードを解析す
    ることによって、前記オブジェクトに関する情報を抽出
    するステップと、 前記ソースコードを解析することによって、前記並行処
    理単位に関する情報を抽出するステップと、 抽出された前記各情報に基づいて、前記オブジェクトと
    前記並行処理単位との関係を出力するステップと、 を含むことを特徴とするプログラム解析方法。
  7. 【請求項7】 前記オブジェクト指向システムのソース
    コードを解析することによって、前記並行処理単位がど
    のオブジェクトのメソッドを呼び出しているかを表す並
    行−メソッド情報を抽出するステップを含むことを特徴
    とする請求項6記載のプログラム解析方法。
  8. 【請求項8】 オブジェクトと、相互に並行動作する並
    行処理単位と、を用いるオブジェクト指向システムのソ
    ースコードを、コンピュータを用いて解析するプログラ
    ム解析用ソフトウェアを記録した記録媒体において、 前記ソフトウェアは、コンピュータに、 前記ソースコードを解析することによって、前記オブジ
    ェクトに関する情報を抽出させ、 前記ソースコードを解析することによって、前記並行処
    理単位に関する情報を抽出させ、 抽出された前記各情報に基づいて、前記オブジェクトと
    前記並行処理単位との関係を出力させることを特徴とす
    るプログラム解析用ソフトウェアを記録した記録媒体。
JP14681598A 1998-05-28 1998-05-28 プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体 Pending JPH11338692A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP14681598A JPH11338692A (ja) 1998-05-28 1998-05-28 プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP14681598A JPH11338692A (ja) 1998-05-28 1998-05-28 プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体

Publications (1)

Publication Number Publication Date
JPH11338692A true JPH11338692A (ja) 1999-12-10

Family

ID=15416165

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14681598A Pending JPH11338692A (ja) 1998-05-28 1998-05-28 プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体

Country Status (1)

Country Link
JP (1) JPH11338692A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347272B2 (en) 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8347272B2 (en) 2008-07-23 2013-01-01 International Business Machines Corporation Call graph dependency extraction by static source code analysis

Similar Documents

Publication Publication Date Title
US5898873A (en) System and method for visualizing system operation trace chronologies
EP2992431B1 (en) Activity based sampling of diagnostics data
US5754855A (en) System and method for managing control flow of computer programs executing in a computer system
EP0654735B1 (en) Apparatus and methods for analyzing a system of processes
US5630049A (en) Method and apparatus for testing software on a computer network
US5590330A (en) Method and system for providing a testing facility in a program development tool
JPH0689200A (ja) デバッグシステム及び方法
US8336032B2 (en) Implementing enhanced template debug
KR100221374B1 (ko) 이벤트를 효율적으로 처리하는 데이타 처리 시스템 및 그의 방법과 저장장치
JPH0823837B2 (ja) サンプリング性能分析方法及び装置
JP2009516239A (ja) コンピュータアプリケーションの追跡及びモニタリングを行う汎用のマルチインスタンスメソッド及びgui検出システム
Reiss et al. JOVE: Java as it happens
EP2052324A2 (en) Methods and products for determining and visualizin ic behaviour
Kazi et al. JaViz: A client/server Java profiling tool
US20110321001A1 (en) Visualization of runtime analysis across dynamic boundaries
JP3844801B2 (ja) インターフェース継承を伴うオブジェクト上での呼出しのための方法および機構
US5884081A (en) Method and system for synchronizing code with design
US20030086426A1 (en) Computer based verification system for telecommunication devices and method of operating the same
CN111382044A (zh) 性能瓶颈的定位方法、定位装置、电子设备及存储介质
US7506319B2 (en) Generating a model of software in execution
JPH11338692A (ja) プログラム解析装置及び方法並びにプログラム解析用ソフトウェアを記録した記録媒体
Cláudio et al. Monitoring and debugging message passing applications with MPVisualizer
Biddle et al. Reuse of debuggers for visualization of reuse
JP3910831B2 (ja) プログラム開発支援装置、記録媒体、及びプログラム
US20020062208A1 (en) Method and apparatus for visualization of microprocessor pipeline operation