JPWO2008096632A1 - オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体 - Google Patents

オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JPWO2008096632A1
JPWO2008096632A1 JP2008557069A JP2008557069A JPWO2008096632A1 JP WO2008096632 A1 JPWO2008096632 A1 JP WO2008096632A1 JP 2008557069 A JP2008557069 A JP 2008557069A JP 2008557069 A JP2008557069 A JP 2008557069A JP WO2008096632 A1 JPWO2008096632 A1 JP WO2008096632A1
Authority
JP
Japan
Prior art keywords
log
objects
source code
relationship
function
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
JP2008557069A
Other languages
English (en)
Inventor
智宏 海津
智宏 海津
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
Publication of JPWO2008096632A1 publication Critical patent/JPWO2008096632A1/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

オブジェクト指向言語で記述されたソースコードの視覚化に際して、包含関係や関連を含むクラス間の関係情報でユーザに必要な情報を表示するとともに、実際にプログラムを実行した場合のクラス間関係を明確化することで、ユーザのソフトウェア開発を効果的に支援する。ログ出力部品追加部101により、対象プログラムに対してログ出力部品を埋め込んでログを取得できるようにしておき、テスト実行部102により、ユーザが着目する機能に関するテストケースでプログラムを実行する。そして、ログ解析部103により、テスト実行で得られたログからオブジェクト一覧及びオブジェクト間関係を収集し、オブジェクト構造抽出部104により、重要度が高いオブジェクト間関係を抽出してオブジェクト図情報を生成し、表示部105により、オブジェクト図を作成し表示する。

Description

本発明は、オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体に関し、特に、ソースコード等からオブジェクト図を表示してソースコードの構造を把握する技術で、ソフトウェア解析に好適に適用される技術に関するものである。
従来から、オブジェクトを単位として構成されるコンピュータのソフトウェアとして、オブジェクト指向システムが知られている。ここで、オブジェクトとは、現実の世界に存在する各種の実体に対応するソフトウェア上の単位であり、お互いにメッセージを交換することで情報処理の目的を達成するものである。
そして、当該オブジェクト指向システムにおいて、複雑なプログラムを開発する場合には、プログラムの内部構造を設計書で記述し、該設計に従って開発を進める。しかし、仕様変更や実装上の問題から設計完了後にも内部構造が変更となることは多く、そのような場合にはソースコードと設計書の内容が乖離してしまう。また、設計書では、全体の構成は記述されていても、 特定の細かい部分の構成は記述されていないことが多い。このため、開発の途中でソースコードの構造を知りたい場合は、あらかじめ用意された設計書だけではなく、ソースコードも直接視覚化できることが便利で望ましい。
しかしながら、オブジェクト指向システムにおいて、上記のような開発や修正等の作業を支援する代表的な機能としては、以下のようなものであった。すなわち、与えられたソースコードを静的解析した結果や、プログラム実行時に記録した情報を後で解析した結果として、オブジェクトやそのクラス間の関係や関数呼び出し間の関係を、関係するクラス間を結ぶ等の形でシステム構成図上に表示するというものであった。
ところで、例えば特許文献1では、対象プログラム実行の際に得られたログ情報に基づいてシーケンス図情報を生成し、該情報から対象プログラムの実行結果を構造化表示したシーケンス図を表示するシーケンス図表示装置が提案されている。また、例えば特許文献2では、要求文から自然言語解析により抽出されたオブジェクトをもとにクラス図を作成するオブジェクト指向分析設計支援装置が開示されている。また、例えば特許文献3では、対象プログラムを1ステップずつ実行してステップごとにオブジェクトのフィールド情報を取得し、各オブジェクトの状態単位での因果関係を抽出するプログラム解析装置が提案されている。また、例えば特許文献4では、オブジェクト指向言語で記述されたソースコードからオブジェクト図を出力するオブジェクト図表示装置が開示されている。
特開2005−92609号公報 特開2005−293526号公報 特開2006−185211号公報 特開平9−185497号公報
先に述べたように、ソフトウェア開発においては、開発人員を増やす場合やリファクタリングを行う際に、ソースコードの構造を視覚化することで効率良くソースコードの内容を把握できる。例えば、Java(登録商標)等のオブジェクト指向言語からクラス図を作成し表示することは従来から広く行われているが、メソッドやフィールドの一覧、継承関係等は図示できても包含関係や関連を図示することは困難であった。これには2つの理由がある。1つは、プログラムに含まれる参照関係の数が多いことから、全ての参照関係を表示するときには必要な情報が埋もれてしまうという問題である。もう1つは、インタフェースや抽象クラスが参照されている場合、実際にどのクラスとどのクラスが関係を持つのかがわかりにくくなるという問題である。
そこで、本発明は、オブジェクト指向言語で記述されたソースコードの視覚化に際して、包含関係や関連を含むクラス間の関係情報でユーザに必要な情報を表示するとともに、実際にプログラムを実行した場合のクラス間関係を明確化することで、ユーザのソフトウェア開発を効果的に支援することを目的とする。
かかる目的を達成するために、本発明は、オブジェクト指向言語で記述されたソースコード及びユーザが着目する機能に関するテストケースの入力から、該着目機能に実質的に関わりのあるオブジェクト及び重要度の高いオブジェクト間関係についてオブジェクト図を作成し表示することを特徴とする。
より詳細には、ログを出力するログ出力部品をオブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工手段と、前記ソースコード加工手段により加工されたプログラムについてユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行手段と、前記テスト実行手段により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析手段と、前記ログ解析手段により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出手段と、前記オブジェクト構造抽出手段により抽出されたオブジェクト構造をオブジェクト図として表示する表示手段と、を有することを特徴とする。
ソースコード加工手段により、対象プログラムに対しログ出力部品を埋め込んでログを取得できるようにしておき、テスト実行手段により、ユーザが着目する機能に関するテストケースでプログラムを実行する。そして、ログ解析手段により、テスト実行で得られたログから着目機能に関わりのあるオブジェクト一覧及びオブジェクト間関係を収集し、オブジェクト構造抽出手段により、重要度が高いと予測されたオブジェクト間関係を抽出してオブジェクト図情報を生成し、表示手段により、オブジェクト図を作成し表示する。
上記構成では、テスト実行の際に生成されたログファイルに含まれるログ情報に基づいてオブジェクト図情報を生成する。ユーザが調べたい動作についてのテストケースを実行し、ログの傾向から重要と思われる情報のみを表示することで、調べたい情報が埋もれてしまうのを防ぐことができる。また、実際に動作しているときの参照関係を取り出すため、ソースコード上でインタフェースや抽象クラスが使われている場合にも実際に関係を持っているオブジェクトがどれなのかを把握できるようになる。
また、本発明は、ログを出力するログ出力部品を、オブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工工程と、ソースコード加工工程により加工されたプログラムについて、ユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行工程と、テスト実行工程により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析工程と、ログ解析工程により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出工程と、オブジェクト構造抽出工程により抽出されたオブジェクト構造をオブジェクト図として表示する表示工程と、を有することを特徴とするオブジェクト図表示方法であってもよい。
また、本発明は、ログを出力するログ出力部品を、オブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工機能と、ソースコード加工機能により加工されたプログラムについて、ユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行機能と、テスト実行機能により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析機能と、ログ解析機能により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出機能と、オブジェクト構造抽出機能により抽出されたオブジェクト構造をオブジェクト図として表示する表示機能と、をコンピュータに実行させることを特徴とするプログラムであってもよい。
また、本発明は、上記プログラムを記録したコンピュータ読み取り可能な記録媒体であってもよい。
本発明によれば、オブジェクト指向言語で記述されたソースコードの視覚化に際して、包含関係や関連を含むクラス間の関係情報でユーザに必要な情報を表示するとともに、実際にプログラムを実行した場合のクラス間関係を明確化することで、ユーザのソフトウェア開発の効果的な支援が実現される。
本発明の実施形態に係るオブジェクト図表示装置の概略構成及び処理の流れを説明するための図である。 従来技術を用いて、オブジェクト指向言語で記述されたソースコードをクラス図に表示したものである。 本発明の実施形態におけるログ出力処理を説明するための図である。 本発明の実施形態におけるログ出力処理を説明するための図である。 本発明の実施形態において出力されたオブジェクト図の例である。 本発明の実施形態において出力されたオブジェクト図の例である。 本発明の実施形態において出力されたオブジェクト図の例である。 本発明の実施形態において出力されたオブジェクト図の例である。 本発明の実施形態に係るオブジェクト図表示装置の概略構成及び処理の流れを説明するための図である。 本発明の実施形態に係るオブジェクト図表示装置の概略構成及び処理の流れを説明するための図である。
符号の説明
101 ログ出力部品追加部
102 テスト実行部
103 ログ解析部
104 オブジェクト構造抽出部
105 表示部
106 クラス図生成部
107 ソースコード解析部
108 クラス図合成部
201 ソースコード・テストケース
202 ログ取得可能なプログラム
203 ログ
204 解析済みログ
205 オブジェクト図情報
206 クラス図情報
207 ソースコード
208 静的なクラス情報
209 合成クラス図情報
以下、図面を参照しながら、本発明の実施形態のオブジェクト図表示装置について説明する。なお、実施形態は、第1の実施形態から第4の実施形態に分けて述べる。実施形態1は本発明において基本的な処理を行う構成を示し、実施形態2から実施形態4は実施形態1に別の処理を追加したり、別の機能を入れ替えたりする構成を示している。詳細は後述する。
本実施形態における入力例として、ここでは書籍販売サービスのプログラムを考える。当該プログラムでは、出版サービスの出版した本を、書籍販売サービスが販売し、配達サービスを利用して配達する。また、家庭用のホームシステムが書籍販売サービスと連携してサービスと仲介する。上記プログラムを既存の手法で視覚化すると図2のようになる。
図2はクラス図としてプログラムを視覚化したものであり、クラスの継承関係を矢印で表現している。例えば、「DeliveryStore」、「Publisher」、及び「BookStore」が「IServer」であることを確認できる。しかし、それ以外のクラス間の関係(関連、依存等)は図示できていない。クラスの継承関係の情報はプログラム中に明記されるため、このような図示が可能であるが、既存の手法を用いて継承以外の関係を自動的かつ適切に図示することは困難であった。
[実施形態1]
まず、本発明の第1の実施形態におけるオブジェクト図表示装置の主要な構成とオブジェクト図表示の処理について説明する。図1は、本実施形態のオブジェクト図表示装置の概略構成及び処理の流れを示した図である。本オブジェクト図表示装置は、ログ出力部品追加部101、テスト実行部102、ログ解析部103、オブジェクト構造抽出部104、及び表示部105を有している。
ログ出力部品追加部101は、対象となるプログラムに対してログ出力部品(ログを出力するための部品)を挿入する。なお、対象となるプログラムは、ソースコード・テストケース201で、オブジェクト指向言語で記述されたソースコード(ユーザが着目する機能に関するテストケースで実行されるもの)が対象となる。また、ログの挿入範囲はユーザが指定できるようにする。ログ出力部品は、2つのオブジェクトが関係を持つ場合に、2つのオブジェクトの識別子名と、オブジェクトが持つ関係の種類とをログとして出力する。ここで、オブジェクトAとオブジェクトBが関係を持つとは、オブジェクトAがオブジェクトBに対する処理を実行することである。
ログ出力部品は、例えば以下の動作が実行される場合に、オブジェクトAとオブジェクトBの間に関係があるものとしてログ出力を行う。なお、ログ出力部品に対して、下記以外の動作でオブジェクト間の関係を推測させるものを設定することは可能であり、ログ出力部品の機能は下記に限られない。
・オブジェクトAがオブジェクトBを生成する
・オブジェクトAのフィールドにオブジェクトBへの参照が代入される
・オブジェクトAがオブジェクトBのメソッドを呼び出す
・オブジェクトAがオブジェクトBを生成し、さらにオブジェクトAのフィールドにその参照を代入する
図3は本実施形態の入力例の書籍販売サービスのプログラムである。ここで、2、3、4、5、9、10、11行目のメソッド呼び出し、13行目のオブジェクト生成、14行目のフィールドへの代入の各箇所にログ出力部品を埋め込む。例えば「publisher.buy(book):」の箇所では、BookStoreオブジェクトがPublisherオブジェクトのbuyメソッドを呼び出しているため、両オブジェクトの関係についてログ出力を行うべくログ出力部品を埋め込む。他の箇所についても上記動作に該当していることから、オブジェクト間の関係をログ出力するためにログ出力部品を埋め込む。
なお、実装方法の例としては、AOP(Aspect Oriented Program)技術を用いてメソッドの呼び出しやフィールドへの代入部分にアスペクトを挿入することで、 ログを記録することができる。
テスト実行部102は、ログ出力部品を埋め込んだログ取得可能なプログラム202を、着目する機能に関するテストケースで実行する。ログ出力部品を対象プログラムに挿入してあることから、テスト実行後にはログ203が得られる。ログの例を図4に示す。先述したように、ログ出力部品は、2つの要素の識別子名と関係の種類とをログとして出力するため、図4においても2つのオブジェクト名とオブジェクト間の関係の種類が表されている。
ログ解析部103は、取得したログ203を読み込み、オブジェクトの一覧とオブジェクト間の関係とを収集して、解析済みログ204を得る。 なお、ログ出力部品で必要な情報のみを出力してあれば、出力ファイルの内容をメモリ上に読み込むだけでよい。
オブジェクト構造抽出部104では、ログ解析部103で収集したオブジェクト間関係をつなぎあわせてオブジェクト図情報205を生成する。このとき、着目機能にとって重要と予測される関係のみを抽出する。
着目機能にとって重要か否かの予測は、例えば以下の点を考慮した関係の重み付けを行ってオブジェクト間関係を点数化し、各関係の点数をもとに行う。
・メソッド呼び出し、オブジェクト生成等の関係の種類により重要度は異なる
・メソッド呼び出しを繰り返し行う場合等は、全体としてオブジェクト間の関係は強い
・汎用的なオブジェクトは通常多数のオブジェクトとの関係を持つが、ひとつひとつの関係は弱くなる
また、点数化の一例としては、以下のような計算式が考えられる。
・オブジェクト生成に10点、フィールドへの代入に5点、メソッド呼び出しに1点の点数を与える
・各オブジェクトについて、点数の合計が100点となるように点数を正規化する
・全てのオブジェクトの対について、オブジェクト間の関係の点数を合計する
・点数の多い順に関係を選び、選ぶ関係の個数はオブジェクト数Nと同数程度とする
なお、上述した関係の重み付けやオブジェクト間関係の点数化は、あくまで一例でありこれに限られない。これらの重み付けや点数化は、アウトプットされるオブジェクト図の表示内容に影響する要素であり、ユーザが必要とする情報が表示されるように設定することが可能である。
表示部105では、オブジェクト構造抽出部104で生成されたオブジェクト図情報205に基づいて、オブジェクト間を結ぶ線ができるだけ重ならないようにオブジェクトを配置し、オブジェクト図として表示する。
次に、本実施形態のオブジェクト図表示処理を、冒頭に入力例として述べた書籍販売サービスのプログラムに適用した具体例について説明する。なお、図5から図8はオブジェクト図であるため、各オブジェクトに下線を付して表示しているが、本明細書では下線を付さずに表記する(但し、図からの引用を意味する意図から「」は付す)。
図5は、該書籍販売システムにおいて、「本の一覧を表示し、そのうちの1冊を注文し、注文の一覧を確認する」という機能に着目したテストケースを実施し、そこで取得したログに基づいてオブジェクト図を作成したものである。図5では、単純に「メソッド呼び出し」等の回数を数えて、2回以上の関係があったものに線を引いている。既存の方法ではうまく視覚化できなかったオブジェクト間のつながり方が効果的に視覚化できている。
また、図6は、コレクション・クラスを除外し、オブジェクトとコレクション内のオブジェクトに直接関係を結ぶようにした例である。 このことにより、図5では確認できなかった、Publisher(「14:Publisher」)とBook(「1c:Book」、「1f:Book」、「19:Book」)との関係が可視化されている。
図7は、先に述べた関係の重み付け、すなわち、オブジェクト生成やフィールドへの代入に対する点数を高くして計算した例である。これにより、「4:BookStore」、「14:Publisher」、「d:DeliveryStore」といったサービスが、IPAddress(「2:IPAddress」、「12:IPAddress」、「d:IPAddress」)を持っているという所有関係が明確化できる。
また、図8は、線の集中しているオブジェクトとの関係について、点数を下げるように調整した例である。テキストマイニング等で用いられるTF−IDF(Term Frequency-Inverse Document Frequency)の手法を用いて点数を調整することで、「4:BookStore」等に線が集中しすぎる傾向を軽減することに成功している。なお、図7では点数が最小だった[4:BookStore]−「2:IPAddress」間の関係については、「2:IPAddress」からの関係が少ないため重要度が高いと判断され、図8でも保存されている。
なお、図5から図8までの例ではオブジェクト間の関係を全て通常の線で図示しているが、呼び出しの方向や所有関係等を明記するように改良する、例えば、線種や色、太さ等を使い分けることで、 単に関係があるというだけでなくどのような関係なのかも図示することが可能である。
上記実施形態によれば、ソースコードの構造を理解するのに不要な情報を削除することができる。その理由は、着目する機能に関するテストケースを実行し、収集したログを分析することで重要な関係を抽出できるからである。また、インタフェースや抽象クラスが使われている場合にも実際に関係を持っているオブジェクトが把握できる。その理由は、実際に実行したログを元に関係を抽出するからである。
[実施形態2]
本発明の第2の実施形態としては、ログ出力部品でオブジェクトの識別や関係の識別を行わず、加工前のスタックトレース等をそのまま記録する構成が考えられる。この場合、ログ解析部103(図1)でログの内容を解析し、オブジェクトの識別とオブジェクト間の関係の識別を行う必要がある。なお、図1の構成やオブジェクト構造抽出部の動作については、実施形態1と同様である。
ログ出力の機能はプログラミング言語に依存するため複雑な処理ができない場合もあるが、本実施形態によれば、このような場合にログ出力の機能をできるだけ少なくして、対応することができる。
[実施形態3]
本発明の第3の実施形態としては、オブジェクト図ではなくクラス図を出力する構成が考えられる。図9に示すように、オブジェクト図の場合(図1)と同様に、着目する機能についてのテストケースを実行し、オブジェクト構造抽出部104にて、ログを元にオブジェクト間の関係を抽出する。そして、クラス図生成部106により、抽出した結果のうち同じクラスのオブジェクトをまとめて集計して、クラス図情報206を生成し、表示部105が、クラス図情報206をもとにクラス図を作成する。
本実施形態によれば、着目する機能を実行した場合のクラス間の継承関係等を把握することが可能となる。
[実施形態4]
本発明の第4の実施形態としては、ソースコードを解析した静的なプログラムの構造を、ログを解析して抽出した構造と合わせて表示する構成が考えられる。図10に示すように、実施形態3の処理(ログ出力部品追加部101から表示部105における処理)に、ソースコード解析部107の処理を加えた構成としている。つまり、ログ出力部品追加部101からオブジェクト構造抽出部104における処理により、テストケース実行のログからオブジェクト間の関係を抽出してオブジェクト図情報205を生成し、ソースコード解析部107により、ソースコード207を解析して静的なプログラム構造情報を取得する。そして、クラス図合成部108により、テスト実行時の関係及び静的なクラス構造を表示可能な合成クラス図情報209が生成される。表示部105は、生成された合成クラス図情報209をもとに図表示する。
本実施形態によれば、クラス間の継承関係等と実行時の関係とを重ね合わせて表示することができ、プログラムの理解をさらに助けることが可能となる。
なお、上述する実施形態は、本発明の好適な実施形態であり、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
すなわち、上記した実施形態のオブジェクト図表示装置は、プログラムの命令により該表示装置内のCPU等で実行される処理等によって動作する。当該プログラムは、該表示装置の各構成要素に指令を送り、先に述べたような所定の処理、例えば、対象プログラムにログ出力部品を挿入してテストケースを実行し、テスト実行で得られたログからオブジェクト間の関係を抽出してオブジェクト図情報を生成する。このように、上記実施形態のオブジェクト図表示装置における各処理は、プログラム(ソフトウェア)とコンピュータ(ハードウェア)とが協働した具体的手段によって実現されるものである。
そして、上記実施形態の機能を実現するソフトウェアのプログラムコードを記録したコンピュータ読み取り可能な記録媒体、すなわち記憶メディアを介して、オブジェクト図表示装置のCPUが記憶メディアに格納されたプログラムコードを読み出し実行することによっても、本発明の目的は達成される。また、プログラムは、記録メディアを介さず、通信回線を通じて直接にオブジェクト図表示装置のCPUにロードし実行することもでき、これによっても同様に本発明の目的は達成される。
この場合、記憶メディアから読み出された又は通信回線を通じてロードし実行されたプログラムコード自体が前述の実施形態の処理機能を実現することになる。そして、そのプログラムコードを記憶した記憶メディアは本発明を構成する。なお、プログラムコードを供給するための記憶メディアとしては、例えば、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、不揮発性のメモリカード、ROM、磁気テープ等を用いることができる。
本発明は、オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体に関し、特に、ソースコード等からオブジェクト図を表示してソースコードの構造を把握する技術で、ソフトウェア解析に好適に適用される。

Claims (19)

  1. ログを出力するログ出力部品をオブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工手段と、
    前記ソースコード加工手段により加工されたプログラムについてユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行手段と、
    前記テスト実行手段により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析手段と、
    前記ログ解析手段により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出手段と、
    前記オブジェクト構造抽出手段により抽出されたオブジェクト構造をオブジェクト図として表示する表示手段と、
    を有することを特徴とするオブジェクト図表示装置。
  2. 前記ログ出力部品は、2つのオブジェクトの識別子名及び関係の種類をログとして出力することを特徴とし、
    前記ソースコード加工手段は、ソースコード中で2つのオブジェクトが関係を持つ箇所に前記ログ出力部品を埋め込むことを特徴とし、
    前記2つのオブジェクトが関係を持つとは、一方のオブジェクトが他方のオブジェクトに対する処理を実行することを示す
    請求項1に記載のオブジェクト図表示装置。
  3. 前記ログ出力部品は、オブジェクトの識別子名及び関係の種類の情報を含む実行時のスタックトレースをそのまま記録することを特徴とする請求項1もしくは2に記載のオブジェクト図表示装置。
  4. 前記オブジェクト構造抽出手段は、関係の種類ごとに定められた重み付け及び関係の数に基づいて、より重みの重い関係がより多く含まれるオブジェクトの組み合わせの重要度を高いと判断し、関係の重みが軽いか関係の数が少ない場合にはオブジェクトの組み合わせの重要度を低いと判断することを特徴とする請求項1から3のいずれか1項に記載のオブジェクト図表示装置。
  5. 前記オブジェクト構造抽出手段は、前記ログ解析手段により収集されたオブジェクトの一覧から同じクラスのオブジェクトをまとめて集計することを特徴とする請求項1から4のいずれか1項に記載のオブジェクト図表示装置。
  6. 前記ソースコードを解析して該ソースコードの静的構造を取得するソースコード解析手段と、
    前記オブジェクト構造抽出手段により抽出されたオブジェクト構造と、前記ソースコード解析手段により取得された静的ソースコード構造とを合わせた構造図情報を生成する構造図情報生成手段と、をさらに有し、
    前記表示手段は、前記構造図情報生成手段により生成された構造図情報をもとに、前記オブジェクト構造と前記静的ソースコード構造とを重ね合わせて表示することを特徴とする請求項1から5のいずれか1項に記載のオブジェクト図表示装置。
  7. ログを出力するログ出力部品を、オブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工工程と、
    前記ソースコード加工工程により加工されたプログラムについて、ユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行工程と、
    前記テスト実行工程により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析工程と、
    前記ログ解析工程により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出工程と、
    前記オブジェクト構造抽出工程により抽出されたオブジェクト構造をオブジェクト図として表示する表示工程と、
    を有することを特徴とするオブジェクト図表示方法。
  8. 前記ログ出力部品は、2つのオブジェクトの識別子名及び関係の種類をログとして出力することを特徴とし、
    前記ソースコード加工工程は、ソースコード中で2つのオブジェクトが関係を持つ箇所に前記ログ出力部品を埋め込むことを特徴とし、
    前記2つのオブジェクトが関係を持つとは、一方のオブジェクトが他方のオブジェクトに対する処理を実行することを示す
    請求項7に記載のオブジェクト図表示方法。
  9. 前記ログ出力部品は、オブジェクトの識別子名及び関係の種類の情報を含む実行時のスタックトレースをそのまま記録することを特徴とする請求項7に記載のオブジェクト図表示方法。
  10. 前記オブジェクト構造抽出工程は、関係の種類ごとに定められた重み付け及び関係の数に基づいて、より重みの重い関係がより多く含まれるオブジェクトの組み合わせの重要度を高いと判断し、関係の重みが軽いか関係の数が少ない場合にはオブジェクトの組み合わせの重要度を低いと判断することを特徴とする請求項7から9のいずれか1項に記載のオブジェクト図表示方法。
  11. 前記オブジェクト構造抽出工程は、前記ログ解析工程により収集されたオブジェクトの一覧から同じクラスのオブジェクトをまとめて集計することを特徴とする請求項7から10のいずれか1項に記載のオブジェクト図表示方法。
  12. 前記ソースコードを解析して該ソースコードの静的構造を取得するソースコード解析工程と、
    前記オブジェクト構造抽出工程により抽出されたオブジェクト構造と、前記ソースコード解析工程により取得された静的ソースコード構造とを合わせた構造図情報を生成する構造図情報生成工程と、をさらに有し、
    前記表示工程は、前記構造図情報生成工程により生成された構造図情報をもとに、前記オブジェクト構造と前記静的ソースコード構造とを重ね合わせて表示することを特徴とする請求項7から11のいずれか1項に記載のオブジェクト図表示方法。
  13. ログを出力するログ出力部品を、オブジェクト指向言語で記述されたソースコードに対して挿入し、ログ取得可能なプログラムに加工するソースコード加工機能と、
    前記ソースコード加工機能により加工されたプログラムについて、ユーザが着目する機能に関するテストケースで実行し、ログを取得するテスト実行機能と、
    前記テスト実行機能により取得されたログを解析し、オブジェクトの一覧と該オブジェクト間の関係を収集するログ解析機能と、
    前記ログ解析機能により収集されたオブジェクト間の関係をもとに、重要度の高いオブジェクトの組み合わせをつなぎあわせてオブジェクト構造を抽出するオブジェクト構造抽出機能と、
    前記オブジェクト構造抽出機能により抽出されたオブジェクト構造をオブジェクト図として表示する表示機能と、
    をコンピュータに実行させることを特徴とするプログラム。
  14. 前記ログ出力部品は、2つのオブジェクトの識別子名及び関係の種類をログとして出力することを特徴とし、
    前記ソースコード加工機能は、ソースコード中で2つのオブジェクトが関係を持つ箇所に前記ログ出力部品を埋め込むことを特徴とし、
    前記2つのオブジェクトが関係を持つとは、一方のオブジェクトが他方のオブジェクトに対する処理を実行することを示す
    請求項13に記載のプログラム。
  15. 前記ログ出力部品は、オブジェクトの識別子名及び関係の種類の情報を含む実行時のスタックトレースをそのまま記録することを特徴とする請求項13に記載のプログラム。
  16. 前記オブジェクト構造抽出機能は、関係の種類ごとに定められた重み付け及び関係の数に基づいて、より重みの重い関係がより多く含まれるオブジェクトの組み合わせの重要度を高いと判断し、関係の重みが軽いか関係の数が少ない場合にはオブジェクトの組み合わせの重要度を低いと判断することを特徴とする請求項13から15のいずれか1項に記載のプログラム。
  17. 前記オブジェクト構造抽出機能は、前記ログ解析機能により収集されたオブジェクトの一覧から同じクラスのオブジェクトをまとめて集計することを特徴とする請求項13から16のいずれか1項に記載のプログラム。
  18. 前記ソースコードを解析して該ソースコードの静的構造を取得するソースコード解析機能と、
    前記オブジェクト構造抽出機能により抽出されたオブジェクト構造と、前記ソースコード解析機能により取得された静的ソースコード構造とを合わせた構造図情報を生成する構造図情報生成機能と、をさらに有し、
    前記表示機能は、前記構造図情報生成機能により生成された構造図情報をもとに、前記オブジェクト構造と前記静的ソースコード構造とを重ね合わせて表示することを特徴とする請求項13から17のいずれか1項に記載のプログラム。
  19. 請求項13から18のいずれか1項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2008557069A 2007-02-05 2008-01-29 オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体 Pending JPWO2008096632A1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2007025485 2007-02-05
JP2007025485 2007-02-05
PCT/JP2008/051249 WO2008096632A1 (ja) 2007-02-05 2008-01-29 オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体

Publications (1)

Publication Number Publication Date
JPWO2008096632A1 true JPWO2008096632A1 (ja) 2010-05-20

Family

ID=39681543

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008557069A Pending JPWO2008096632A1 (ja) 2007-02-05 2008-01-29 オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体

Country Status (2)

Country Link
JP (1) JPWO2008096632A1 (ja)
WO (1) WO2008096632A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5212145B2 (ja) * 2009-01-30 2013-06-19 日本電気株式会社 リファクタリング支援装置、リファクタリング支援方法およびプログラム
JP5392820B2 (ja) * 2009-02-23 2014-01-22 インターナショナル・ビジネス・マシーンズ・コーポレーション 性能評価モデリングのための関数選択手法
CN102782649A (zh) * 2010-03-04 2012-11-14 日本电气株式会社 应用程序修改部分搜索装置和应用程序修改部分搜索方法
US9104389B2 (en) 2011-10-18 2015-08-11 International Business Machines Corporation Hierarchical functional and variable composition diagramming of a programming class
US8914771B2 (en) 2012-11-13 2014-12-16 International Business Machines Corporation Indicating hierarchy diversion in a class diagram
JP6021109B2 (ja) * 2013-05-17 2016-11-02 日本電信電話株式会社 プログラム分析装置及び方法及びプログラム
JP6935825B1 (ja) 2020-03-31 2021-09-15 ダイキン工業株式会社 制御仕様可読化プログラム及び制御仕様可読化方法

Also Published As

Publication number Publication date
WO2008096632A1 (ja) 2008-08-14

Similar Documents

Publication Publication Date Title
JPWO2008096632A1 (ja) オブジェクト図表示装置、オブジェクト図表示方法、プログラム、及びコンピュータ読み取り可能な記録媒体
US7089535B2 (en) Code coverage with an integrated development environment
JP2005196291A (ja) ユーザインタフェースアプリケーション開発プログラム、および開発装置
KR20060114871A (ko) 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법
US8621429B2 (en) Software development support apparatus, function extension method and storage medium for storing function extension program
CN109308254B (zh) 一种测试方法、装置及测试设备
RU2007138848A (ru) Определяющие поля для представляемых файлов и схемы расширяемого языка разметки для библиографий и цитирования
US20110016447A1 (en) Method for improving execution efficiency of a software package customization
CN106547698A (zh) 覆盖率数据的处理方法、装置和服务器
KR101623174B1 (ko) 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
Nichols Augmented bug localization using past bug information
EP2477116A1 (en) Method and system for debugging a job running on a legacy system
JP5626333B2 (ja) プログラム作成支援装置、プログラム、および、情報システム
US8701086B2 (en) Simplifying analysis of software code used in software systems
CN117076338B (zh) 基于kprobe的linux内核动态调试方法及系统
JP4867864B2 (ja) 性能データ収集・表示システム、性能データ表示装置、そのプログラム
Jiang et al. Constructing usage scenarios for API redocumentation
JP2005338987A (ja) 例外テスト支援プログラム及び例外テスト支援装置
Eckert et al. RESTful open workflows for data provenance and reuse
CN116225902A (zh) 生成测试用例的方法、装置及设备
Schafmeister Clasp—a common Lisp that interoperates with C++ and uses the LLVM Backend
Fernández-Ropero et al. Repairing business process models as retrieved from source code
KR20110135966A (ko) 복합 시스템의 개발 또는 사용을 지원하는 방법 및 장치, 그리고 그 지원 방법을 사용하는 프린터
Ghaleb The role of open source software in program analysis for reverse engineering
Shahid et al. Test coverage measurement and analysis on the basis of software traceability approaches