JP2544887B2 - 階層的グラフ解析方法及びその装置 - Google Patents
階層的グラフ解析方法及びその装置Info
- Publication number
- JP2544887B2 JP2544887B2 JP5184701A JP18470193A JP2544887B2 JP 2544887 B2 JP2544887 B2 JP 2544887B2 JP 5184701 A JP5184701 A JP 5184701A JP 18470193 A JP18470193 A JP 18470193A JP 2544887 B2 JP2544887 B2 JP 2544887B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- graph
- directed graph
- file
- analysis
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/10—Geometric CAD
- G06F30/18—Network design, e.g. design based on topological or interconnect aspects of utility systems, piping, heating ventilation air conditioning [HVAC] or cabling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S715/00—Data processing: presentation processing of document, operator interface processing, and screen saver display processing
- Y10S715/961—Operator interface with visual structure or function dictated by intended use
- Y10S715/965—Operator interface with visual structure or function dictated by intended use for process control and configuration
- Y10S715/966—Computer process, e.g. operation of computer
- Y10S715/967—Visual or iconic programming
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Digital Computer Display Output (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Description
【0001】
【産業上の利用分野】本発明は、コンピュータ・プログ
ラムの構造を解析するためのシステムに関する。特に、
コンピュータ・プログラムの構造を簡潔に表示するため
のコンピュータ・システム及びプロセスに関するもので
ある。
ラムの構造を解析するためのシステムに関する。特に、
コンピュータ・プログラムの構造を簡潔に表示するため
のコンピュータ・システム及びプロセスに関するもので
ある。
【0002】
【従来の技術】プログラム理解ツールの目的は、既存の
ソフトウェア・システムに対するプログラマの理解を助
けることである。この目的のためのいくつかのプログラ
ム理解ツールは、プログラマに対しグラフィカル様式に
よってソフトウェア・システムにみられるある呼出し関
係を提示する。例えば、制御流れと相互ファンクション
コールである。この情報をグラフとして表示することの
主な利点は、ノード間の呼出し関係を容易に視認できる
ことである。この表現によってプログラマは、ほんの僅
かかいま見るだけで、グラフのノードがどのような階層
的関係にあるか、そしてそのグラフ中の各ノードが他の
ノードとどのように関係しているかを知ることができ
る。この技術における問題の1つは、表示されるグラフ
が複雑になるにつれて、末端ユーザにとってはそのグラ
フの有用性が失われてしまうことである。実際非常に複
雑なグラフの場合、この問題は非常に深刻なものとな
り、従って表示されたグラフがプログラム理解の目的の
ために実質的に役に立たなくなる。
ソフトウェア・システムに対するプログラマの理解を助
けることである。この目的のためのいくつかのプログラ
ム理解ツールは、プログラマに対しグラフィカル様式に
よってソフトウェア・システムにみられるある呼出し関
係を提示する。例えば、制御流れと相互ファンクション
コールである。この情報をグラフとして表示することの
主な利点は、ノード間の呼出し関係を容易に視認できる
ことである。この表現によってプログラマは、ほんの僅
かかいま見るだけで、グラフのノードがどのような階層
的関係にあるか、そしてそのグラフ中の各ノードが他の
ノードとどのように関係しているかを知ることができ
る。この技術における問題の1つは、表示されるグラフ
が複雑になるにつれて、末端ユーザにとってはそのグラ
フの有用性が失われてしまうことである。実際非常に複
雑なグラフの場合、この問題は非常に深刻なものとな
り、従って表示されたグラフがプログラム理解の目的の
ために実質的に役に立たなくなる。
【0003】
【発明が解決しようとする課題】グラフの複雑さを決定
する最も重要な要素は、グラフに含まれるノードとアー
クの数の間の関係である。この複雑さの1つの目安は、
米国国立標準局(NBS)によって「サイクロマティッ
ク数(cyclomatic number)」として
提示されている(NBS Special Publi
cation 500−99、1982年12月刊)。
このサイクロマティック数による複雑度の評価は、ある
グラフ、Gに対して以下の計算から決定される。即ち、 サイクロマティック複雑度(G)=アーク数(G)−ノ
ード数(G)+2(コンポーネント数)
する最も重要な要素は、グラフに含まれるノードとアー
クの数の間の関係である。この複雑さの1つの目安は、
米国国立標準局(NBS)によって「サイクロマティッ
ク数(cyclomatic number)」として
提示されている(NBS Special Publi
cation 500−99、1982年12月刊)。
このサイクロマティック数による複雑度の評価は、ある
グラフ、Gに対して以下の計算から決定される。即ち、 サイクロマティック複雑度(G)=アーク数(G)−ノ
ード数(G)+2(コンポーネント数)
【0004】上記の式で「コンポーネント数」は、グラ
フGを構成する結合されていないサブコンポーネントの
数である。例えば複雑度数が12までのグラフならば、
プログラム理解の目的に使用できそうであるが、複雑度
47の例では、使用の限界を越えているようである。こ
の場合、グラフのノード同士の関係が、多数のアークに
よって隠されることもある。従来技術による実際のプロ
グラムの解析においては、複雑度数が数百に及ぶプログ
ラムは決して珍しくない。いくつかのプログラムにおい
ては、数千の複雑度数のものさえみられた。
フGを構成する結合されていないサブコンポーネントの
数である。例えば複雑度数が12までのグラフならば、
プログラム理解の目的に使用できそうであるが、複雑度
47の例では、使用の限界を越えているようである。こ
の場合、グラフのノード同士の関係が、多数のアークに
よって隠されることもある。従来技術による実際のプロ
グラムの解析においては、複雑度数が数百に及ぶプログ
ラムは決して珍しくない。いくつかのプログラムにおい
ては、数千の複雑度数のものさえみられた。
【0005】
【課題を解決するための手段】本発明の目的は、コンピ
ュータ・プログラムの構造を簡潔に表示するためのシス
テム及びその方法を提供することである。コンピュータ
・プログラムの構造は、有向グラフのファイルで表現さ
れる。このファイルは階層的グラフ解析プロセスに渡さ
れる。このプロセスは、(a)入力グラフ中の各ノード
についての「ノード・リーチ」を計算し、(b)そのグ
ラフについての「ノード表示閾値」を決定し、(c)そ
の選択されたノード表示閾値においてそのグラフを変換
する。それから変換されたグラフは表示プロセスに渡さ
れ、表示プロセスはその変換されたグラフを表示媒体上
に表示する。
ュータ・プログラムの構造を簡潔に表示するためのシス
テム及びその方法を提供することである。コンピュータ
・プログラムの構造は、有向グラフのファイルで表現さ
れる。このファイルは階層的グラフ解析プロセスに渡さ
れる。このプロセスは、(a)入力グラフ中の各ノード
についての「ノード・リーチ」を計算し、(b)そのグ
ラフについての「ノード表示閾値」を決定し、(c)そ
の選択されたノード表示閾値においてそのグラフを変換
する。それから変換されたグラフは表示プロセスに渡さ
れ、表示プロセスはその変換されたグラフを表示媒体上
に表示する。
【0006】
【実施例】図1は、本発明の好適例における基本的要素
を描いたシステム図である。コンピュータ・システム1
1は、グラフ解析ファンクション19を含む。グラフ解
析ファンクション19は、解析ファンクション12、階
層的グラフ解析(Hierarchical Grag
h Analysis)(HGA)ファンクション1
5、及び表示ファンクション17から構成される。解析
ファンクション12は、ソース・ファイル13からソー
ス・コード入力を受取り、有向グラフ・ファイル14を
作成する。このファイルは、ファンクションリスト・フ
ァイルとファンクションコールリスト・ファイルからな
る。HGAファンクション15は有向グラフ・ファイル
14から入力を受取り、HGAノード・リーチ・ファイ
ル20を作成してノード表示閾値21を決定し、そして
HGA有向グラフ16を作る。表示ファンクション17
は、HGA有向グラフ・ファイル16から入力を受取
り、表示装置18上に出力する。
を描いたシステム図である。コンピュータ・システム1
1は、グラフ解析ファンクション19を含む。グラフ解
析ファンクション19は、解析ファンクション12、階
層的グラフ解析(Hierarchical Grag
h Analysis)(HGA)ファンクション1
5、及び表示ファンクション17から構成される。解析
ファンクション12は、ソース・ファイル13からソー
ス・コード入力を受取り、有向グラフ・ファイル14を
作成する。このファイルは、ファンクションリスト・フ
ァイルとファンクションコールリスト・ファイルからな
る。HGAファンクション15は有向グラフ・ファイル
14から入力を受取り、HGAノード・リーチ・ファイ
ル20を作成してノード表示閾値21を決定し、そして
HGA有向グラフ16を作る。表示ファンクション17
は、HGA有向グラフ・ファイル16から入力を受取
り、表示装置18上に出力する。
【0007】図2は、解析ファンクション12の制御流
れを描いた流れ図である。解析対象の各ソース・プログ
ラム13について、プログラムファンクション定義(フ
ァンクションX)の最初に到達するまでそのソース・コ
ードが走査される(201)。そのソースの最後に達し
たならば(202)、解析ファンクションが終了する。
もし達しないならば、有向グラフ・ファイル14内のフ
ァンクションリスト・ファイルにファンクション記録が
書込まれる(203)。(このステップは、次のフォー
マット、即ちProgramFunction(ファン
クションX)の記録を書込むことにより実行される。)
れを描いた流れ図である。解析対象の各ソース・プログ
ラム13について、プログラムファンクション定義(フ
ァンクションX)の最初に到達するまでそのソース・コ
ードが走査される(201)。そのソースの最後に達し
たならば(202)、解析ファンクションが終了する。
もし達しないならば、有向グラフ・ファイル14内のフ
ァンクションリスト・ファイルにファンクション記録が
書込まれる(203)。(このステップは、次のフォー
マット、即ちProgramFunction(ファン
クションX)の記録を書込むことにより実行される。)
【0008】次に、ソース・ファイル13内のファンク
ションXについてのファンクション定義が、ファンクシ
ョンコール(別のファンクション、即ちファンクション
Yの呼出し)のために走査される(204)。もし続く
ファンクションコールが無い場合(205)、処理は続
行され201において次のファンクションを探索する。
もし続くファンクションコールがあれば、有向グラフ・
ファイル12内のファンクションコールリスト・ファイ
ルにファンクションコール記録が書込まれる(20
6)。(このステップは、次のフォーマット、即ちPr
ogramFunctionCall(ファンクション
X、ファンクションY)の記録を書込むことにより実行
される。)その後、処理は続行され204において現在
のファンクション定義内の別のファンクションコールを
探索する。
ションXについてのファンクション定義が、ファンクシ
ョンコール(別のファンクション、即ちファンクション
Yの呼出し)のために走査される(204)。もし続く
ファンクションコールが無い場合(205)、処理は続
行され201において次のファンクションを探索する。
もし続くファンクションコールがあれば、有向グラフ・
ファイル12内のファンクションコールリスト・ファイ
ルにファンクションコール記録が書込まれる(20
6)。(このステップは、次のフォーマット、即ちPr
ogramFunctionCall(ファンクション
X、ファンクションY)の記録を書込むことにより実行
される。)その後、処理は続行され204において現在
のファンクション定義内の別のファンクションコールを
探索する。
【0009】図2の処理の後、ファンクションコールリ
スト・ファイルには、解析されたソース・コード・プロ
グラムのプログラム・ファンクション間の呼出し(コー
ル)リストが含まれている。また、ファンクションリス
ト・ファイルには、解析されたソース・コード・プログ
ラムの全プログラムファンクションのリストが含まれて
いる。図8は、(ファンクションリスト・ファイル70
3とファンクションコールリスト・ファイル704から
なる)有向グラフ・ファイルのサンプル702を示した
ものであり、この解析処理をソース・コード・ファイル
のサンプル701に対して適用することによって作られ
たものである。このファンクションリスト・ファイル
は、「ノード・セット」とも呼ばれ、最終的なグラフ表
示において「ノード」として表示されることになるファ
ンクション(プログラム)からなる。また、ファンクシ
ョンコールリスト・ファイルは、「アーク・セット」と
も呼ばれ、最終的なグラフ表示における「アーク」(ノ
ードと呼出されたファンクションとの間のリンク)から
なる。
スト・ファイルには、解析されたソース・コード・プロ
グラムのプログラム・ファンクション間の呼出し(コー
ル)リストが含まれている。また、ファンクションリス
ト・ファイルには、解析されたソース・コード・プログ
ラムの全プログラムファンクションのリストが含まれて
いる。図8は、(ファンクションリスト・ファイル70
3とファンクションコールリスト・ファイル704から
なる)有向グラフ・ファイルのサンプル702を示した
ものであり、この解析処理をソース・コード・ファイル
のサンプル701に対して適用することによって作られ
たものである。このファンクションリスト・ファイル
は、「ノード・セット」とも呼ばれ、最終的なグラフ表
示において「ノード」として表示されることになるファ
ンクション(プログラム)からなる。また、ファンクシ
ョンコールリスト・ファイルは、「アーク・セット」と
も呼ばれ、最終的なグラフ表示における「アーク」(ノ
ードと呼出されたファンクションとの間のリンク)から
なる。
【0010】図3は、階層的グラフ表示(HGA)ファ
ンクションを実行する主要なステップを示している。先
ず、グラフの各ノードについて「ノード・リーチ」が計
算される(301)。このプロセスは、図4及び以下に
詳細に記載されている。次に、302においてそのグラ
フの「ノード表示閾値」が決定される。このプロセス
は、図5及び図6並びに以下に詳細に記載されている。
最後に、302で決定されたノード表示閾値において、
グラフは「HGA有向グラフ」16に変換される(30
3)。このプロセスは、図7及び以下により詳細に記載
されている。HGA有向グラフ16は有向グラフ14の
サブセットとなり、さらに最終的に出力装置18上に表
示するために表示ファンクション17によって利用され
る。
ンクションを実行する主要なステップを示している。先
ず、グラフの各ノードについて「ノード・リーチ」が計
算される(301)。このプロセスは、図4及び以下に
詳細に記載されている。次に、302においてそのグラ
フの「ノード表示閾値」が決定される。このプロセス
は、図5及び図6並びに以下に詳細に記載されている。
最後に、302で決定されたノード表示閾値において、
グラフは「HGA有向グラフ」16に変換される(30
3)。このプロセスは、図7及び以下により詳細に記載
されている。HGA有向グラフ16は有向グラフ14の
サブセットとなり、さらに最終的に出力装置18上に表
示するために表示ファンクション17によって利用され
る。
【0011】図4は、グラフの各ノードについてのノー
ド・リーチを計算するプロセスを示している。このプロ
セスの最後において、グラフの各ノードはそれに対する
ノード・リーチ値を決定される。各ノード・リーチ値
は、1から元のグラフのノード数までの範囲内である。
所与のノード、NodeXがグラフ内の他のいずれかの
ノード(NodeX以外)へ出て行くアークを全く持た
ない場合、ノード・リーチ値は1に等しくなる。所与の
ノードに対する最大のノード・リーチ値は、グラフのノ
ード数に等しくなる。これは、所与のノード、Node
Xからグラフの全てのノードにパスが存在する場合であ
る。
ド・リーチを計算するプロセスを示している。このプロ
セスの最後において、グラフの各ノードはそれに対する
ノード・リーチ値を決定される。各ノード・リーチ値
は、1から元のグラフのノード数までの範囲内である。
所与のノード、NodeXがグラフ内の他のいずれかの
ノード(NodeX以外)へ出て行くアークを全く持た
ない場合、ノード・リーチ値は1に等しくなる。所与の
ノードに対する最大のノード・リーチ値は、グラフのノ
ード数に等しくなる。これは、所与のノード、Node
Xからグラフの全てのノードにパスが存在する場合であ
る。
【0012】401において、処理のためにノード・セ
ット14Aから1つのノードを得る。このノードは、4
02で一時的ファイル(ノード・リーチット・ファイ
ル)の中に置かれることにより、このノードからスター
トして到達する可能性のあるノードの組に含まれたこと
を表す。次に、403においてアーク・セット14Bか
ら1つのアークを得る。このアークは、特定の形を採る
(ソース・ノードとターゲット・ノードを持つ)。40
4で、そのアークのソース・ノードが処理中のノードで
あるかどうか検査される。もしそうでなければ、別のア
ークが403において得られる。もしそうであれば、4
05において関係するターゲット・ノードが既にノード
・リーチット・ファイル中にあるかどうかが検査され
る。もしなければ、406において関係するターゲット
・ノードがノード・リーチット・ファイルへ置かれる。
次に、407において処理中のノードが関係するターゲ
ット・ノードと等しくなるようセットされる。それか
ら、408においてアーク・セット14Bにまだアーク
が残っているかどうかが検査される。もし残っていれ
ば、403において前記の処理が続行される。残ってい
なければ、409においてノード・リーチが、その時の
一時的ノード・リーチット・ファイルの全ノード数に等
しくなるようにセットされ、そして410においてその
ノード・リーチ値は、HGAノード・リーチ・ファイル
20内にその関係するノードとともに置かれる。それか
ら、411においてノード・セット14A内にさらに処
理すべきノードが残っているかどうか検査される。もし
残っていれば、401において前記の処理が続行され
る。残っていなければ、各ノードに対するノード・リー
チ値が計算されたことになり、処理は終了する。
ット14Aから1つのノードを得る。このノードは、4
02で一時的ファイル(ノード・リーチット・ファイ
ル)の中に置かれることにより、このノードからスター
トして到達する可能性のあるノードの組に含まれたこと
を表す。次に、403においてアーク・セット14Bか
ら1つのアークを得る。このアークは、特定の形を採る
(ソース・ノードとターゲット・ノードを持つ)。40
4で、そのアークのソース・ノードが処理中のノードで
あるかどうか検査される。もしそうでなければ、別のア
ークが403において得られる。もしそうであれば、4
05において関係するターゲット・ノードが既にノード
・リーチット・ファイル中にあるかどうかが検査され
る。もしなければ、406において関係するターゲット
・ノードがノード・リーチット・ファイルへ置かれる。
次に、407において処理中のノードが関係するターゲ
ット・ノードと等しくなるようセットされる。それか
ら、408においてアーク・セット14Bにまだアーク
が残っているかどうかが検査される。もし残っていれ
ば、403において前記の処理が続行される。残ってい
なければ、409においてノード・リーチが、その時の
一時的ノード・リーチット・ファイルの全ノード数に等
しくなるようにセットされ、そして410においてその
ノード・リーチ値は、HGAノード・リーチ・ファイル
20内にその関係するノードとともに置かれる。それか
ら、411においてノード・セット14A内にさらに処
理すべきノードが残っているかどうか検査される。もし
残っていれば、401において前記の処理が続行され
る。残っていなければ、各ノードに対するノード・リー
チ値が計算されたことになり、処理は終了する。
【0013】図5及び図6は、そのグラフに対するノー
ド・リーチ表示閾値21を決定するプロセスを示してい
る。この閾値は、選択されたそのグラフ表示ファンクシ
ョンが、末端ユーザとの直接対話が可能であるかどうか
によって2つの方法の内のいずれかによって決定するこ
とができる。
ド・リーチ表示閾値21を決定するプロセスを示してい
る。この閾値は、選択されたそのグラフ表示ファンクシ
ョンが、末端ユーザとの直接対話が可能であるかどうか
によって2つの方法の内のいずれかによって決定するこ
とができる。
【0014】もし末端ユーザとの対話が望ましければ、
そのユーザがノード表示閾値をセットしてもよい。好適
例においては、この形態の末端ユーザ対話は、コンピュ
ータ・モニタ18等の動的表示媒体と結び付いている。
この場合、末端ユーザは対話的にノード表示閾値を異な
る値に設定することが可能で、そのユーザは容易に特定
のプログラム理解タスクのための必要な詳細を十分に見
ることができる。このプロセスは、図5に示されてい
る。501において、閾値のユーザ入力が要求される。
次に502において、入力値をHGAノード・リーチ・
ファイル20中の値の組と比較することによって、入力
値が「適切」かどうかが検査される。もし入力値がその
ファイル内の値の1つでなければ、替わりの値が再び5
01において要求される。もし入力値が認められれば、
その値はノード表示閾値21として設定され、表示ファ
ンクション17によって利用される。(表示ファンクシ
ョン17は汎用的ステップであることを注記する。この
中には、コンピュータ表示装置上にグラフ表示を行うた
めの多くのツールが存在する。例えば、バックマン・イ
ンフォメーション・システムズ・インコーポレーション
によるバックマン・アナリスト・リエンジニアリング・
ツール等である。)
そのユーザがノード表示閾値をセットしてもよい。好適
例においては、この形態の末端ユーザ対話は、コンピュ
ータ・モニタ18等の動的表示媒体と結び付いている。
この場合、末端ユーザは対話的にノード表示閾値を異な
る値に設定することが可能で、そのユーザは容易に特定
のプログラム理解タスクのための必要な詳細を十分に見
ることができる。このプロセスは、図5に示されてい
る。501において、閾値のユーザ入力が要求される。
次に502において、入力値をHGAノード・リーチ・
ファイル20中の値の組と比較することによって、入力
値が「適切」かどうかが検査される。もし入力値がその
ファイル内の値の1つでなければ、替わりの値が再び5
01において要求される。もし入力値が認められれば、
その値はノード表示閾値21として設定され、表示ファ
ンクション17によって利用される。(表示ファンクシ
ョン17は汎用的ステップであることを注記する。この
中には、コンピュータ表示装置上にグラフ表示を行うた
めの多くのツールが存在する。例えば、バックマン・イ
ンフォメーション・システムズ・インコーポレーション
によるバックマン・アナリスト・リエンジニアリング・
ツール等である。)
【0015】末端ユーザとの対話が必要でなければ、ノ
ード表示閾値を選択するための所定の方法が必要であ
る。好適例では、所与のグラフの平均ノード・リーチを
ノード表示閾値をして利用してもよい。図6にはこのプ
ロセスが示されている。501において、HGAグラフ
に関係する全てのノード・リーチ値がHGAノード・リ
ード・ファイル20から読込まれる。この数字の組の平
均値が505において計算される。この(最も近い整数
に丸められた)平均値が、506においてノード表示閾
値21として設定され、表示ファンクション17によっ
て利用される。
ード表示閾値を選択するための所定の方法が必要であ
る。好適例では、所与のグラフの平均ノード・リーチを
ノード表示閾値をして利用してもよい。図6にはこのプ
ロセスが示されている。501において、HGAグラフ
に関係する全てのノード・リーチ値がHGAノード・リ
ード・ファイル20から読込まれる。この数字の組の平
均値が505において計算される。この(最も近い整数
に丸められた)平均値が、506においてノード表示閾
値21として設定され、表示ファンクション17によっ
て利用される。
【0016】図7は、図5及び図6に示したように有向
グラフ14について計算されたノード表示閾値21にお
いて、有向グラフ14をHGA有向グラフ16に変換す
るプロセスを示している。601において、ノード・セ
ット14Aからノードを得る。そしてその関係するノー
ド・リーチが、HGAノード・リーチ・ファイル20か
ら得られる。次に602において、その関係するノード
・リーチがノード表示閾値21より大きいかあるいは等
しいかどうかが検査される。もし小さければ、そのノー
ドは表示されず(それはHGA有向グラフ・ファイルに
追加されない)、さらに処理は以下に示す604におい
て続行される。もし閾値より大きいか等しければ、その
ノードがHGA有向グラフ・ファイル16に追加される
(HGAノード・セット16A)。次に604において
処理されるべきノードがまだ残っているかどうか検査さ
れる。もし残っていれば、ステップ601で説明したよ
うに処理が行われる。残っていなければ、有向グラフ1
4内の各々のアーク・リンクが以下のように処理され
る。
グラフ14について計算されたノード表示閾値21にお
いて、有向グラフ14をHGA有向グラフ16に変換す
るプロセスを示している。601において、ノード・セ
ット14Aからノードを得る。そしてその関係するノー
ド・リーチが、HGAノード・リーチ・ファイル20か
ら得られる。次に602において、その関係するノード
・リーチがノード表示閾値21より大きいかあるいは等
しいかどうかが検査される。もし小さければ、そのノー
ドは表示されず(それはHGA有向グラフ・ファイルに
追加されない)、さらに処理は以下に示す604におい
て続行される。もし閾値より大きいか等しければ、その
ノードがHGA有向グラフ・ファイル16に追加される
(HGAノード・セット16A)。次に604において
処理されるべきノードがまだ残っているかどうか検査さ
れる。もし残っていれば、ステップ601で説明したよ
うに処理が行われる。残っていなければ、有向グラフ1
4内の各々のアーク・リンクが以下のように処理され
る。
【0017】605において、処理されるべきアークが
アーク・セット14Bから得られる。そのアークは、特
定の形である(ソース・ノードとターゲット・ノードを
持つ)。606において、ソース・ノードに関係するノ
ード・リーチ(HGAノード・リーチ・ファイル20か
ら得られた)がそのノード表示閾値21より大きいかあ
るいは等しいかが検査される。もし小さければ、新しい
アークが605において得られる。もし閾値より大きい
か等しければ、607において、そのターゲット・ノー
ドに関係するノード・リーチ(同じくHGAノード・リ
ーチ・ファイル20から得られた)がノード表示閾値2
1より大きいかあるいは等しいかどうかが検査される。
もし小さければ、新しいアークが605において得られ
る。もし大きいか等しければ、処理中のそのアークがH
GA有向グラフ16のHGAアーク・セット部分16B
に追加される。(HGA有向グラフ16は、HGAノー
ド・セット16A及びHGAアーク・セット16Bから
なる。)次に、処理されるべきアークがまだ残っている
かどうか検査される。もし残っていなければ、処理は終
了する。残っていれば、605において示したように別
のアークが得られ、処理が続けられる。
アーク・セット14Bから得られる。そのアークは、特
定の形である(ソース・ノードとターゲット・ノードを
持つ)。606において、ソース・ノードに関係するノ
ード・リーチ(HGAノード・リーチ・ファイル20か
ら得られた)がそのノード表示閾値21より大きいかあ
るいは等しいかが検査される。もし小さければ、新しい
アークが605において得られる。もし閾値より大きい
か等しければ、607において、そのターゲット・ノー
ドに関係するノード・リーチ(同じくHGAノード・リ
ーチ・ファイル20から得られた)がノード表示閾値2
1より大きいかあるいは等しいかどうかが検査される。
もし小さければ、新しいアークが605において得られ
る。もし大きいか等しければ、処理中のそのアークがH
GA有向グラフ16のHGAアーク・セット部分16B
に追加される。(HGA有向グラフ16は、HGAノー
ド・セット16A及びHGAアーク・セット16Bから
なる。)次に、処理されるべきアークがまだ残っている
かどうか検査される。もし残っていなければ、処理は終
了する。残っていれば、605において示したように別
のアークが得られ、処理が続けられる。
【0018】本発明の好適例は記載されたとおりである
が、本発明の範囲内において改良が可能であることは当
業者であれば理解できるであろう。
が、本発明の範囲内において改良が可能であることは当
業者であれば理解できるであろう。
【0019】
【発明の効果】本発明によって、コンピュータ・プログ
ラムの構造を簡潔に表示するためのシステム及びその方
法が提供される。
ラムの構造を簡潔に表示するためのシステム及びその方
法が提供される。
【図1】本発明のシステム構造を示すブロック図であ
る。
る。
【図2】本発明の解析ソース・コード・プロセスのため
の制御流れを示す流れ図である。
の制御流れを示す流れ図である。
【図3】階層的グラフ解析(HGA)ファンクションの
ための制御流れを示す流れ図である。
ための制御流れを示す流れ図である。
【図4】ノード・リーチ計算ファンクションのための制
御流れを示す流れ図である。
御流れを示す流れ図である。
【図5】ノード・リーチ表示閾値決定ファンクションの
ための制御流れを示す流れ図である。
ための制御流れを示す流れ図である。
【図6】ノード・リーチ表示閾値決定ファンクションの
ための制御流れを示す流れ図である。
ための制御流れを示す流れ図である。
【図7】グラフ変換ファンクションのための制御流れを
示す流れ図である。
示す流れ図である。
【図8】サンプル入力ソース・プログラムのための解析
ファンクションによって作られた有向グラフを示したブ
ロック図である。
ファンクションによって作られた有向グラフを示したブ
ロック図である。
11 システム 12 解析ファンクション 13 ソース・プログラム 14 有向グラフ・ファイル 15 HGA 16 HGA有向グラフ・ファイル 17 表示ファンクション 18 表示装置 19 グラフ解析 20 HGAノード・リーチ・ファイル 21 ノード表示閾値
フロントページの続き (56)参考文献 特開 昭59−85543(JP,A) 特開 昭63−109578(JP,A) 特開 昭61−80332(JP,A) 特開 平3−246626(JP,A)
Claims (11)
- 【請求項1】ソース・コンピュータ・プログラムの構造
を表示するためのシステムにおいて、 a)出力表示装置と、 b)前記ソース・コンピュータ・プログラムを解析する
ためのグラフ解析手段とを有し、 前記グラフ解析手段が、 1)前記ソース・コンピュータ・プログラムを、少なく
とも1つのノードを有するファンクションリスト・ファ
イルと少なくとも1つのアークを有するファンクション
コールリスト・ファイルとを含む有向グラフ・ファイル
に変換するための解析手段と、 2)前記有向グラフ・ファイルを前記ノードのそれぞれ
に対するノード・リーチ値に基づいて階層的グラフ解析
有向グラフ・ファイルに変換するための階層的グラフ解
析手段と、 3)前記階層的グラフ解析有向グラフ・ファイルを前記
出力表示装置上に表示するための表示手段とからなるこ
とを特徴とする、前記のシステム。 - 【請求項2】前記階層的グラフ解析手段が、 a) 前記有向グラフ・ファイルに対するノード表示閾値
を決めるための閾値決定手段と、b) 前記ノード表示閾値によって修正された有向グラフ
に相当する階層的グラフ解析有向グラフを作成するため
のグラフ変換手段とを含む、階層的グラフ解析手段とを
有することを特徴とする、 請求項1記載のシステム。 - 【請求項3】前記ノード表示閾値決定手段が、 前記ノード表示閾値をユーザに求め、そして該ユーザか
ら受取るための手段からなることを特徴とする、 請求項2記載のシステム。 - 【請求項4】前記閾値決定手段が、 前記ノード・リーチ値を入力として、所与のアルゴリズ
ムにより出力された値を該閾値とするアルゴリズム手段
からなることを特徴とする、 請求項2記載のシステム。 - 【請求項5】ソース・コンピュータ・プログラムの構造
を表示するためにコンピュータと出力表示装置とを設
け、 a)前記ソース・コンピュータ・プログラムを、少なく
とも1つのノードを有するファンクションリスト・ファ
イルと少なくとも1つのアークを有するファンクション
コールリスト・ファイルとを含む有向グラフ・ファイル
に変換するステップと、 b)前記有向グラフ・ファイルを前記ノードのそれぞれ
に対するノード・リーチ値に基づいて階層的グラフ解析
有向グラフ・ファイルに変換するステップと、 c)前記階層的グラフ解析有向グラフ・ファイルを前記
出力表示装置上に表示するステップとを有する、 コンピュータ・システムを動作する方法。 - 【請求項6】前記階層的グラフ解析有向グラフ・ファイ
ルに変換するステップが、 a) 前記有向グラフ・ファイルのためにノード表示閾値
を作成し、b) 有向グラフ内のノードの1つが前記ノード表示閾値
と第1の特定関係を有するノード・リーチ値のうちの関
連する1つを有する場合にのみ該ノードを階層的グラフ
解析有向グラフ内に含めることによって、前記ノード表
示閾値を用いて前記有向グラフを変換して階層的グラフ
解析有向グラフを作成する各ステップとを含む、 請求項5記載のコンピュータ・システムを動作する方
法。 - 【請求項7】前記第1の特定関係が「より大きいかある
いは等しい」ことであることを特徴とする請求項6記載
のコンピュータ・システムを動作する方法。 - 【請求項8】前記ノード表示閾値を作成するステップ
が、 該ノード表示閾値をユーザに求め、そして該ユーザから
受取るステップからなることを特徴とする、 請求項6記載のコンピュータ・システムを動作する方
法。 - 【請求項9】前記階層的グラフ解析有向グラフ・ファイ
ルを表示するステップの後に新しいノード表示閾値を前
記ユーザに求め、該ユーザが該新しいノード表示閾値を
与えたならば、該新しいノード表示閾値を用いて前記有
向グラフ・ファイルを新しい階層的グラフ解析有向グラ
フ・ファイルに変換し、その後該新しい階層的グラフ解
析有向グラフ・ファイルを前記出力表示装置上に表示す
る各ステップを含むことを特徴とする、 請求項8記載のコンピュータ・システムを動作する方
法。 - 【請求項10】前記ノード表示閾値を作成するステップ
が、 前記ノード・リーチ値を入力として、所与のアルゴリズ
ムにより出力された値を該ノード表示閾値とするステッ
プからなることを特徴とする請求項6記載のコンピュー
タ・システムを動作する方法。 - 【請求項11】前記アークのそれぞれがソース・ノード
とターゲット・ノードからなり、前記ノード表示閾値を
用いて前記有向グラフを変更することにより階層的グラ
フ解析有向グラフを作成するステップが、該アークを構
成するソース・ノードとターゲット・ノードの双方が該
ノード表示閾値と第2の特定関係を有する関連ノード・
リーチ値を有する場合にのみ、該階層的グラフ解析有向
グラフ内に該アークを含めるステップからなることを特
徴とする請求項6記載のコンピュータ・システムを動作
する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US939815 | 1992-09-03 | ||
US07/939,815 US5428554A (en) | 1992-09-03 | 1992-09-03 | Hierarchical graph analysis method and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06187138A JPH06187138A (ja) | 1994-07-08 |
JP2544887B2 true JP2544887B2 (ja) | 1996-10-16 |
Family
ID=25473784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP5184701A Expired - Fee Related JP2544887B2 (ja) | 1992-09-03 | 1993-07-27 | 階層的グラフ解析方法及びその装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5428554A (ja) |
JP (1) | JP2544887B2 (ja) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BE1007551A3 (nl) * | 1993-09-24 | 1995-08-01 | Philips Electronics Nv | Werkwijze voor het in een rekenmachine automatisch herstellen van consistentie in een hierarchische objektstruktuur na een interaktie door een gebruiker en rekenmachine voorzien van zo een systeem voor automatische consistentieherstelling. |
US5596703A (en) * | 1993-10-22 | 1997-01-21 | Lucent Technologies Inc. | Graphical display of relationships |
US5581797A (en) * | 1993-10-22 | 1996-12-03 | Lucent Technologies Inc. | Method and apparatus for displaying hierarchical information of a large software system |
US5701137A (en) * | 1995-05-24 | 1997-12-23 | Microsoft Corporation | Method for separating a hierarchical tree control into one or more hierarchical child tree controls in a graphical user interface |
US6311166B1 (en) | 1996-07-25 | 2001-10-30 | Price Waterhouse World Firm Services Bv | Method for analyzing effectiveness of internal controls in a model of an accounting system |
US5774119A (en) * | 1996-08-14 | 1998-06-30 | International Business Machines Corporation | Graphical interface method, apparatus and application for selection of target object |
US6195096B1 (en) | 1996-08-14 | 2001-02-27 | International Business Machines Corporation | Graphical interface method, apparatus and application for creating and modifying a multiple-value text list |
US5818444A (en) * | 1996-08-14 | 1998-10-06 | International Business Machines Corporation | Method, apparatus and application for object selective but global attribute modification |
US6104395A (en) * | 1996-08-14 | 2000-08-15 | International Business Machines Corporation | Graphical interface method, apparatus and application for opening window of all designated container objects |
US5867157A (en) * | 1996-08-14 | 1999-02-02 | International Business Machines Corporation | Graphical interface method, apparatus and application for creating and modifying a list of values with multiple components |
US5784057A (en) * | 1996-08-14 | 1998-07-21 | International Business Machines Corporation | Dynamically modifying a graphical user interface window title |
US5774120A (en) * | 1996-08-14 | 1998-06-30 | International Business Machines Corporation | Refresh and select-all actions in graphical user interface |
US5781193A (en) * | 1996-08-14 | 1998-07-14 | International Business Machines Corporation | Graphical interface method, apparatus and application for creating multiple value list from superset list |
US5872568A (en) * | 1996-08-14 | 1999-02-16 | International Business Machines Corporation | Application and method for creating a list from pre-defined and user values |
US6097887A (en) * | 1997-10-27 | 2000-08-01 | Kla-Tencor Corporation | Software system and method for graphically building customized recipe flowcharts |
US6493869B1 (en) | 1999-05-28 | 2002-12-10 | Microsoft Corporation | Inheriting code in a transformational programming system |
US6665866B1 (en) * | 1999-05-28 | 2003-12-16 | Microsoft Corporation | Extensible compiler utilizing a plurality of question handlers |
US6583794B1 (en) | 1999-07-01 | 2003-06-24 | Smart Money | Interface system for information mapping |
US6944851B1 (en) * | 2001-04-30 | 2005-09-13 | General Electric Capital Corporation | Method and system for executing a computer program |
US7356480B2 (en) * | 2002-08-01 | 2008-04-08 | International Business Machines Corporation | Method of data transformation via efficient path discovery using a digraph |
WO2006091119A1 (en) * | 2005-02-21 | 2006-08-31 | Intel Corporation | Method of stable incremental layout for a hierarchical graph representation |
US20070266039A1 (en) * | 2006-05-11 | 2007-11-15 | Boykin James R | Simplifying A Visual Depiction of A Graph |
US9398033B2 (en) | 2011-02-25 | 2016-07-19 | Cavium, Inc. | Regular expression processing automaton |
US9203805B2 (en) | 2011-11-23 | 2015-12-01 | Cavium, Inc. | Reverse NFA generation and processing |
JPWO2013088461A1 (ja) * | 2011-12-12 | 2015-04-27 | 株式会社日立製作所 | ソフトウェア解析プログラム、および、ソフトウェア解析システム |
US9426166B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for processing finite automata |
US9507563B2 (en) | 2013-08-30 | 2016-11-29 | Cavium, Inc. | System and method to traverse a non-deterministic finite automata (NFA) graph generated for regular expression patterns with advanced features |
US9426165B2 (en) | 2013-08-30 | 2016-08-23 | Cavium, Inc. | Method and apparatus for compilation of finite automata |
US9419943B2 (en) | 2013-12-30 | 2016-08-16 | Cavium, Inc. | Method and apparatus for processing of finite automata |
US9602532B2 (en) | 2014-01-31 | 2017-03-21 | Cavium, Inc. | Method and apparatus for optimizing finite automata processing |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US9438561B2 (en) * | 2014-04-14 | 2016-09-06 | Cavium, Inc. | Processing of finite automata based on a node cache |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5985543A (ja) * | 1982-11-08 | 1984-05-17 | Fujitsu Ltd | プログラム制御構造図の自動生成方式 |
US4613946A (en) * | 1984-06-07 | 1986-09-23 | Forman Ernest H | Method and apparatus for generating hierarchical displays |
JPS6180332A (ja) * | 1984-09-28 | 1986-04-23 | Toshiba Corp | プログラム作成装置 |
US4800510A (en) * | 1985-07-31 | 1989-01-24 | Computer Associates International, Inc. | Method and system for programmed control of computer generated graphics layout |
US4731606A (en) * | 1985-08-02 | 1988-03-15 | International Business Machines Corporation | Method for rapid windowing of display information in computer graphics |
US4852019A (en) * | 1986-01-31 | 1989-07-25 | Computer Associates International, Inc. | Method and system for retrieval of stored graphs |
US5021947A (en) * | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
JPS63109578A (ja) * | 1986-10-27 | 1988-05-14 | Fujitsu Ltd | 論理図概要表示処理方式 |
JP2786206B2 (ja) * | 1988-07-29 | 1998-08-13 | 株式会社日立製作所 | 機能設計図生成方法 |
JPH03246626A (ja) * | 1990-02-23 | 1991-11-05 | Nec Corp | 関数のプログラム構造図自動作成ツール |
-
1992
- 1992-09-03 US US07/939,815 patent/US5428554A/en not_active Expired - Fee Related
-
1993
- 1993-07-27 JP JP5184701A patent/JP2544887B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06187138A (ja) | 1994-07-08 |
US5428554A (en) | 1995-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2544887B2 (ja) | 階層的グラフ解析方法及びその装置 | |
EP0752670B1 (en) | Method and apparatus for front end navigator and network architecture for performing functions on distributed files in a computer network | |
JP2008293486A (ja) | ソースコード解析機器、解析プログラムおよび解析方法 | |
US5995113A (en) | Coloring events in event streams in order to provide information about operation of a software library | |
JP4737624B2 (ja) | アプリケーションの障害原因の特定作業支援システム | |
US20040002829A1 (en) | Semiconductor test data analysis system | |
GB2411984A (en) | Updating forms | |
JP3997495B2 (ja) | ソフトウェア解析装置及びソフトウェア解析方法 | |
CN116257666A (zh) | 一种基于Echarts的数据动态渲染展示方法及系统 | |
JPH0895826A (ja) | プログラムテスト方法 | |
JP4501886B2 (ja) | Xmlスキーマ編集支援装置及びxmlスキーマ編集支援方法並びにプログラム | |
Ferri et al. | Software reuse metrics for an industrial project | |
JPH10269076A (ja) | 進捗管理方式および記録媒体 | |
CN115544333A (zh) | 一种数据展示方法、系统及电子设备 | |
Eick | A visualization tool for Y2K | |
JPH03230259A (ja) | 注釈付加方式 | |
US20020183983A1 (en) | Method and system for designing a building | |
JPH05216726A (ja) | ソースプログラムの世代比較画面表示方式 | |
KR100316244B1 (ko) | 소프트웨어 프로세스 심사 시스템 및 그 방법 | |
JP3001042B2 (ja) | クラス継承評価方式 | |
JP3037129B2 (ja) | コマンドデータベース作成装置 | |
JPH04315255A (ja) | データ処理システム用ワークベンチ/ツールボックスインターフェース | |
CN114265894A (zh) | 一种数据可视化评价方法、装置、设备及存储介质 | |
JPH1055364A (ja) | 文字図形編集装置 | |
CN117873466A (zh) | 用于二次开发的代码管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |