JP2010097474A - 依存関係提示方法、装置及びプログラム - Google Patents

依存関係提示方法、装置及びプログラム Download PDF

Info

Publication number
JP2010097474A
JP2010097474A JP2008268613A JP2008268613A JP2010097474A JP 2010097474 A JP2010097474 A JP 2010097474A JP 2008268613 A JP2008268613 A JP 2008268613A JP 2008268613 A JP2008268613 A JP 2008268613A JP 2010097474 A JP2010097474 A JP 2010097474A
Authority
JP
Japan
Prior art keywords
subroutine
file
program
program file
dependency
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.)
Withdrawn
Application number
JP2008268613A
Other languages
English (en)
Inventor
Yudai Yamazaki
雄大 山崎
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2008268613A priority Critical patent/JP2010097474A/ja
Publication of JP2010097474A publication Critical patent/JP2010097474A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】あるサブルーチンと依存関係にある(影響を受ける)プログラムファイルを容易に把握できるようにする。
【解決手段】まず、依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する。次に、前記抽出されたサブルーチンが呼び出しているサブルーチンを検出する。次に、前記検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する。
【選択図】図6

Description

本発明は、依存関係提示方法、装置及びプログラムに関し、特に、サブルーチンを含むソフトウェア構成要素間の依存関係を提示する依存関係提示方法、装置及びプログラムに関する。
一般的に、コンピュータプログラムは、予め作成されたサブルーチンを呼び出すソースコードによって記述される。また、ソースコードの冒頭で宣言されるヘッダファイル内でもサブルーチンを呼び出している場合がある。単一のソースコードやヘッダファイルでなく、複数のソースコードやヘッダファイルが互いに同一のサブルーチンを呼び出している場合もある。
これらソースコードやヘッダファイル等のプログラムファイルとそのプログラムファイルに定義されているサブルーチンとの間には、主従関係があると考えることができる。
非特許文献1のソースコード文書化ツールが知られており、非特許文献2に、非特許文献1のツールを用いて、サブルーチンの集まりであるライブラリファイルの依存関係を表示したサンプルが紹介されている。
また、特許文献1には、入力されたソースプログラムを構文解析し、その結果を出力用中間ファイルに格納するソースプログラム解析手段と、このソースプログラム解析手段で得られた複数の出力用中間ファイルの内容を解析してその関数と広域データのアクセス関係とを上記出力用中間ファイルに格納する出力用中間ファイル解析手段と、上記出力用中間ファイル解析手段で得られた出力用中間ファイルに格納されている関数と広域データのアクセス関係とをソースプログラムに付加して出力する出力手段とを備える文字列出力装置が開示されている。
また、特許文献2には、入力された原始プログラムに対して文法解析を行い、あるモジュールが他のモジュールを呼び出す関係を判別し、そのモジュール呼び出し関係から呼び出しモジュールと呼び出されるモジュールの対である二項モジュール呼び出し関係を抽出するプログラム解析部と、プログラム解析部の解析結果である呼び出しモジュールと呼び出されるモジュールの対を記憶するモジュール呼び出し関係記憶部と、モジュール呼び出し関係記憶部のモジュール呼び出し関係データを、プログラム呼び出し木におけるモジュール相互の呼び出し関係を表すノードデータに変換する呼び出し木変換部と、呼び出し木変換部で変換された呼び出し木のノードデータを記憶する呼び出し木記憶部と、呼び出し木記憶部のノードデータに従って、呼び出し木を描画する呼び出し木描画部とを備えたことを特徴とするプログラム解析装置が開示されている。
更に、プログラムの特許文献3には、プログラムのソースコードからコールフローグラフを生成するコールフロー解析手段と、生成された前記コールフローグラフから注目するサブルーチンを直接あるいは間接に呼び出している複数の注目ルートサブルーチンを抽出するルートサブルーチン選択手段と、抽出されたそれぞれの注目ルートサブルーチンから直接あるいは間接に呼び出されているサブルーチンを前記コールフローグラフに基づいて抽出し、抽出したサブルーチンのうち各注目ルートサブルーチンから共通して呼び出されているサブルーチンを探索対象のサブルーチン候補として抽出する候補サブルーチン選択手段とを備えることを特徴とする従属サブルーチン探索支援装置が開示されている。
特開平2−64738号公報 特開平5−274132号公報 特許第3694872号公報 "Doxygen"、[平成20年10月6日検索]、インターネット〈URL:http://www.stack.nl/~dimitri/doxygen/〉 "diagrams_a.h File Reference"、[平成20年10月6日検索]、インターネット〈URL: http://skazami.web.infoseek.co.jp/tools/doxygen/doxygen_example_html/diagrams__a_8h.html〉
プログラムの解析を効率よく行うためには、関連の強いソースコードの集まりやサブルーチンの集まりとのいえるヘッダファイルを漏らさず把握しておくことが望ましい。上記関連の強さは、ソースコードやサブルーチンの依存関係の有無から判断することができる。
しかしながら、上記した各技術では、ソースコードとソースコード、出力用中間ファイルと出力用中間ファイル、モジュールとモジュール、サブルーチンとサブルーチンといった同格同士の関係を抽出することができるが、例えば、あるサブルーチンと、該サブルーチンが呼び出す他のサブルーチンが定義されたソースコードやヘッダファイルといった異なる対象間の依存関係を把握できないという問題点がある。
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、プログラムファイルに含まれるサブルーチンと、当該サブルーチンが呼び出す他のサブルーチンを定義するプログラムファイルとの依存関係を表示する依存関係提示方法、装置及びプログラムを提供することにある。
本発明の第1の視点によれば、依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する抽出手段と、前記抽出されたサブルーチンが呼び出しているサブルーチンを検出するサブルーチン依存関係取得手段と、を備え、前記検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する装置が提供される。
本発明の第2の視点によれば、依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する抽出ステップと、前記抽出されたサブルーチンが呼び出しているサブルーチンを検出する検出ステップと、前記検出ステップにて検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する出力ステップと、を含む依存関係提示方法が提供される。
本発明の第3の視点によれば、依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する処理と、前記抽出されたサブルーチンが呼び出しているサブルーチンを検出する処理と、前記サブルーチンを検出する処理にて検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する処理と、をコンピュータに実行させるプログラムが提供される。
本発明によれば、プログラムの解析や修正等が容易化される。その理由は、あるサブルーチンと依存関係にある(影響を受ける)プログラムファイルを特定可能としたことにある。
[発明の概要]
始めに本発明の概要について説明する。本発明は、ソースコードやヘッダファイル等のプログラムファイルに定義されているサブルーチンを抽出する抽出手段と、前記抽出したサブルーチンが呼び出しているサブルーチンを検出するサブルーチン依存関係取得手段と、を備え、前記検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する装置により実現される。
前記抽出手段は、依存関係の提示対象となるプログラムファイルから、該ソースコードに定義されているサブルーチンを抽出する(図6左上テーブル参照)。
前記サブルーチン依存関係取得手段は、前記プログラムファイルを参照して、前記抽出したサブルーチンが呼び出しているサブルーチンを検出する(図6左下テーブル参照)。
依存関係を表示する装置は、上記抽出手段及びサブルーチン依存関係取得手段の出力結果を用いて、依存関係の提示対象となるプログラムファイルに定義されているサブルーチンと、各サブルーチンが呼び出しているサブルーチンを定義しているプログラムファイル(ファイル名)とを対応付けて、依存関係として出力する(図6の右側テーブル参照)。
このように作成された依存関係によれば、プログラムファイル中のサブルーチン(例:図6の「a1」)と依存関係にあるプログラムファイル(ファイル名)を漏らすことなく把握することが可能になる。
[第1の実施形態]
次に、本発明の第1の実施形態について、図面を参照して詳細に説明する。図1は、本発明の第1の実施形態の構成を表したブロック図である。図1を参照すると、プログラムファイル記憶手段101と、サブルーチン抽出手段102と、サブルーチン依存関係取得手段104と、表示手段106とを備える装置構成が示されている。
サブルーチン抽出手段102は、プログラムファイル記憶手段101に記憶された解析対象のソースコードやヘッダファイル等を分析し、当該ソースコード等が定義するサブルーチンを抽出し、プログラムファイル(ファイル名)と当該ソースコードに含まれるサブルーチンとを対応付けたサブルーチン一覧103(図4参照)を出力する。
サブルーチン依存関係取得手段104は、サブルーチン抽出手段102にて作成されたサブルーチン一覧103に記述されたサブルーチンについて、元のプログラムファイルの該当箇所を参照して分析し、各サブルーチンが呼び出す他のサブルーチンを検出し、呼び出し元サブルーチンと、呼び出し先サブルーチンとを対応付けたサブルーチン依存関係一覧105(図5参照)を出力する。
表示手段106は、サブルーチン一覧103と、サブルーチン依存関係一覧105と、に基づいて、サブルーチン依存関係一覧105で呼び出し先として検出されたサブルーチンを定義するプログラムファイルを、サブルーチン一覧103から特定し、前記各抽出されたサブルーチンに関連づけて表示する(図6の右側テーブル、図7参照)。
なお、サブルーチン抽出手段102、サブルーチン依存関係取得手段104及び表示手段106は、コンピュータに、そのCPU及び記憶装置を用いて上記サブルーチンの抽出処理、サブルーチン依存関係取得処理を実行させるプログラムにより実現することができる。
続いて、本実施形態の動作について図面を参照して詳細に説明する。図2は、本発明の第1の実施形態の装置において実行される処理の流れを表したフローチャートである。
図2を参照すると、まず、サブルーチン抽出手段102は、プログラムファイル記憶手段101から、解析対象として指定されたプログラムファイルを読み出し、そのプログラムファイルに定義されているサブルーチンを抽出する(ステップA1)。
サブルーチン依存関係取得手段104は、サブルーチン抽出手段102で抽出されたサブルーチンそれぞれについて、そのサブルーチンが含む(即ち、呼び出している)他のサブルーチンを検出し、サブルーチン依存関係一覧として出力する(ステップA2)。
表示手段106は、サブルーチン抽出手段102により作成されたサブルーチン一覧を参照し、サブルーチン依存関係取得手段104で検出されたサブルーチンが定義するファイルを特定し各サブルーチンに関連づけて表示する(ステップA3)。
以上の本実施形態の動作について具体例を用いて詳細に説明する。図3は、C言語で書かれたサンプルプログラムである。図3を参照すると、a.c、b1.c、b2.cとのソースコードファイルと、b.h、c.h、d.h、e.hとのヘッダファイル(ライブラリファイル)が示されている。
これらのソースコード等から、サブルーチンを抽出し、サブルーチン一覧を作成する。ここでは、ソースコードやヘッダファイル中の関数を定義している部分から、サブルーチンを抽出している。例えば、図3のソースコードa.cの場合、第3行目「void a1(){」で関数型サブルーチンa1を定義している。従って、サブルーチン抽出手段102は、ソースコードa.cの第3行目から、サブルーチン一覧103にサブルーチン名「a1」、ファイル名「a.c」とした行を追加する(図4参照)。なお、このサブルーチンの抽出手法は、プログラム言語に応じて適宜変更される。例えば、サブルーチンを呼び出すコマンドが決められている場合には、当該コマンドを用いて抽出すればよい。
同様に、ソースコードa.c、b1.c、b2.c及びライブラリファイルb.h、c.h、d.h、e.hのサブルーチン抽出処理を完了した時点で、図4に示すサブルーチン一覧103が得られる。即ち、図4は、解析対象のソースコード等で定義しているサブルーチンを網羅しており、かつ、各サブルーチンを定義しているプログラムファイルを示したものとなっている。
サブルーチン依存関係取得手段104は、上記のようにして作成されたサブルーチン一覧103に列記されたサブルーチンを解析し、サブルーチン依存関係一覧を作成する。例えば、サブルーチンa1の場合、図3のソースコードa.cの第4行目でサブルーチンbを呼び出している。サブルーチン依存関係取得手段104は、このような呼び出し関係を読み出して、サブルーチン依存関係一覧のサブルーチンa1の呼び出し先サブルーチンとしてサブルーチンbを追加する(図5参照)。
同様に、サブルーチン一覧103のすべてのサブルーチンの呼び出し先を検出した時点で、図5に示すサブルーチン依存関係一覧105が得られる。
最後に、表示手段106は、サブルーチン一覧103及びサブルーチン依存関係一覧105に基づいて、呼び出しを行っているサブルーチンと、該サブルーチンを定義しているプログラムファイルとの対応関係を表示する。
この対応関係の出力形態としては、例えば、図6の右側のテーブルのように、サブルーチン名と、ファイル名とを対応付けた表を作成、出力する形態が考えられる。
また、例えば、プログラムファイルとサブルーチンをノードとし、ノード間をエッジで結んだ図7に示すようなグラフを作成することで、より視覚的にあるサブルーチンに変更を加えた場合に、影響を受けるプログラムファイル、あるいは、あるプログラムファイルに変更を加えた場合に、影響を受けるサブルーチンを把握することが可能になる。
図7から、例えばサブルーチンa1とサブルーチンa2は、共通の間接的な依存関係が存在しない(独立している)こと、サブルーチンa2とサブルーチンbは、ヘッダファイルc.hという共通の間接的な依存関係が存在すること等を直感的に把握することが可能になる。
以上、本発明の好適な実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。例えば、上記した図7の例では、プログラムファイルとサブルーチンの依存関係を一般的なグラフにより表示するものとして説明したが、例えば、所定の閾値M以上のエッジを持つノードを強調表示する、あるいは、所定の閾値N未満のエッジしか持たないノードを非強調表示とする等の変形実施を施すことが可能である。
またあるいは、上記図7のサブルーチンa2とサブルーチンbのように、間接的に依存関係を持つノードについては、これらの間接的な依存関係が視覚的に判るように、色分けしたり、点線で結んだり、破線で囲う(図8参照)といった表現手法も適宜採用することが可能である。あるいは、図6の右側のテーブルに間接的な依存関係を有するサブルーチンを記述する欄を設けるといったことも可能である。
本発明によれば既存のプログラムをリバースエンジニアリングするといった用途に適用できる。
本発明の第1の実施形態の構成を表したブロック図である。 本発明の第1の実施形態の動作を説明するためのフローチャートである。 本発明の具体的動作を説明するためのサンプルプログラムである。 本発明の第1の実施形態の装置により作成されるサブルーチン一覧の例である。 本発明の第1の実施形態の装置により作成されるサブルーチン依存関係一覧の例である。 本発明の第1の実施形態の装置により表示される内容を説明するための図である。 本発明の第1の実施形態の装置により表示される内容を説明するための図である。 本発明の第1の実施形態の装置の変形例を説明するための図である。
符号の説明
101 プログラムファイル記憶手段
102 サブルーチン抽出手段
103 サブルーチン一覧
104 サブルーチン依存関係取得手段
105 サブルーチン依存関係一覧
106 表示手段
a.c、b1.c、b2.c ソースコードファイル
b.h、c.h、d.h、e.h ヘッダファイル(ライブラリファイル)

Claims (8)

  1. 依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する抽出手段と、
    前記抽出されたサブルーチンが呼び出しているサブルーチンを検出するサブルーチン依存関係取得手段と、を備え、
    前記検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する装置。
  2. 前記抽出したサブルーチンと、前記特定されたプログラムファイルと、の依存関係をグラフで表示する請求項1に記載の装置。
  3. 前記プログラムファイルとして、少なくともソースコード及びヘッダファイルを解析し、
    ソースコード及びヘッダファイルに定義されているサブルーチンと依存関係にあるソースコード又はヘッダファイルを特定する請求項1又は2に記載の装置。
  4. 前記サブルーチン又はプログラムファイルを介して依存関係にある前記プログラムファイル同士又はサブルーチン同士の間接的な依存関係を表示する機能を備えた請求項1乃至3いずれか一に記載の装置。
  5. 依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する抽出ステップと、
    前記抽出されたサブルーチンが呼び出しているサブルーチンを検出する検出ステップと、
    前記検出ステップにて検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する出力ステップと、を含む依存関係提示方法。
  6. 前記プログラムファイルとして、少なくともソースコード及びヘッダファイルを解析し、
    ソースコード及びヘッダファイルに定義されているサブルーチンと依存関係にあるソースコード又はヘッダファイルを特定する請求項5に記載の依存関係提示方法。
  7. 依存関係の提示対象となるプログラムファイルを読み出して、該プログラムファイルに定義されているサブルーチンを抽出する処理と、
    前記抽出されたサブルーチンが呼び出しているサブルーチンを検出する処理と、
    前記サブルーチンを検出する処理にて検出されたサブルーチンを定義しているプログラムファイルを特定し、前記抽出したサブルーチンに関連付けて出力する処理と、をコンピュータに実行させるプログラム。
  8. 前記コンピュータに、前記プログラムファイルとして、少なくともソースコード及びヘッダファイルを解析させ、
    ソースコード及びヘッダファイルに定義されているサブルーチンと依存関係にあるソースコード又はヘッダファイルを特定させる請求項7に記載のプログラム。
JP2008268613A 2008-10-17 2008-10-17 依存関係提示方法、装置及びプログラム Withdrawn JP2010097474A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008268613A JP2010097474A (ja) 2008-10-17 2008-10-17 依存関係提示方法、装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008268613A JP2010097474A (ja) 2008-10-17 2008-10-17 依存関係提示方法、装置及びプログラム

Publications (1)

Publication Number Publication Date
JP2010097474A true JP2010097474A (ja) 2010-04-30

Family

ID=42259099

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008268613A Withdrawn JP2010097474A (ja) 2008-10-17 2008-10-17 依存関係提示方法、装置及びプログラム

Country Status (1)

Country Link
JP (1) JP2010097474A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016208073A1 (ja) * 2015-06-26 2016-12-29 株式会社日立製作所 モジュール再利用判定装置、モジュール再利用判定方法、及びモジュール再利用判定プログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016208073A1 (ja) * 2015-06-26 2016-12-29 株式会社日立製作所 モジュール再利用判定装置、モジュール再利用判定方法、及びモジュール再利用判定プログラム
JPWO2016208073A1 (ja) * 2015-06-26 2017-06-29 株式会社日立製作所 モジュール再利用判定装置、モジュール再利用判定方法、及びモジュール再利用判定プログラム

Similar Documents

Publication Publication Date Title
KR101623174B1 (ko) 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
JP4737624B2 (ja) アプリケーションの障害原因の特定作業支援システム
JP2007109044A (ja) プログラム変換プログラム、プログラム変換装置、プログラム変換方法
JP2010122959A (ja) テスト支援システム、方法、及び、プログラム
JP2016076080A (ja) ソースコード解析装置、ソースコード解析方法、及びプログラム
JP2010097474A (ja) 依存関係提示方法、装置及びプログラム
JP4448724B2 (ja) ウェブブラウザのアクセシビリティ検査プログラム
WO2011024716A1 (ja) 構造化文書検索式生成装置、その方法及びプログラム、並びに構造化文書検索装置、その方法及びプログラム
JP5702265B2 (ja) プログラム自動生成装置およびプログラム自動生成方法
JP4983027B2 (ja) チェックプログラム及びチェック方法
JP2009205242A (ja) 検証用プログラム自動生成装置、その方法及びプログラム
JP4960188B2 (ja) 画面遷移図の表示方法およびシステム
JP2007226358A (ja) アプリケーション生成装置、アプリケーション生成方法、およびアプリケーション生成プログラム
JP3731628B2 (ja) Cgiプログラム作成方法
JP4641238B2 (ja) アプリケーション動作追跡支援装置
JP2006268777A (ja) ソースコード管理システム、ソースコード管理方法、およびソースコード管理プログラム
KR101705254B1 (ko) 장치 및 프로그램
Costagliola et al. Visualizing visual parser execution
JP2010204910A (ja) 相互リンク表示システム、相互リンク表示方法及び相互リンク表示プログラム
JP4201206B2 (ja) Cgiプログラム作成方法、該方法に係るプログラムを記録した記録媒体、および、cgiプログラム作成装置
JP2002215391A (ja) プログラム解析装置及びプログラム解析方法及び記録媒体
JP5174648B2 (ja) プログラム開発支援機器、方法およびプログラム
JP2008310679A (ja) 動的設計情報生成装置およびプログラム
JP4241642B2 (ja) 情報表示方法、情報表示装置及び情報表示プログラム
EP3121711A1 (en) Action designing device and action designing program

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120110