Comments
Description
Transcript
Title 協調動作するオブジェクト群に着目したJavaプログラム の実行履歴
Title 協調動作するオブジェクト群に着目したJavaプログラム の実行履歴分割手法の提案 Author(s) 大平, 直宏; 谷口, 考治; 石尾, 隆; 神谷, 年洋; 楠本, 真二; 井 上, 克郎 Citation Issue Date 電子情報通信学会総合大会講演論文集. 2005(1) P.25-P.25 2005-03-07 Text Version publisher URL http://hdl.handle.net/11094/51100 DOI Rights copyright©2005 IEICE Osaka University 2005年 電 子 情 報 通 信 学 会 総 合 大 会 0 35 但 協調動作するオブジェクト群に着目した J a v aプログラムの実行履歴分割手法の提案 D i v i s i o nofJ a v aE x e c u t i o nT r a c eBasedonC o l l a b o r a t i o nofO b j e c t s 大平直宏↑ 谷口考 r~t 石 尾 隆f 神谷年洋I 橋本真二T 井上克郎T tK tT tT tS N a o h i r oO h i r a o j iT a r 註g u c h i a k a s h iI s h i o o s h i h i r oKam i y a h i n j iKusumotot K a t s u r oI n o u e ↑ ?大阪大学大学院情報科学研究科 t O r a d u a t eS c h o o lof I n f o r m a t i o nS c i e n c ea n dT e c h n o l o g y, OsakaU n i v e r s i t y t 科学技術後輿機構さきがけ t p r e s t o, J a p a nS c i e n c ea n dT e c h n o l o g yAgency 1.まえがき -・ァタタ〈オブジェタト) 我々は, J a v aプログラムの振る舞い理解を支援するため に,実行プログラムのメソッド呼び出し旗涯を取得し,こ の実行履歴を基にシーケンス図を生成する手法を提案して いる[1]. しかし,生成されるシーケンス図は実行蔵援のサ して巨大なものになっている.そこで,実行中 イズに比伊l に協調動作するオブジェクト群に注思し,実行履歴を意味 のある複数ブロックに分割した上で,各ブロック単位にシ ーケンス屈を表示することを考えている.本稿では,実行 履歴を分割する手法の概略と手法の適用事例について述べ る. 時間 図 1:複数のフェイズを含むシ}ケンス図の伊i 2. 協誤動作するオブジヱクトの時罰変化伊l 一般にプログラムの lつの実行履歴は,初期化部やユー ザ入力部,内部計算部, OUI出力部など,システムの複数 のフェイズを含んでおり,各フェイズではそのフェイズ国 有のオブジェクト群が協調動作していると考えられる(例 えば図 1は,ユーザ入力部と OUI出カ部では,そのフェイ ズで協調動作するオブジェクト群が異なることを示す). そこで,実際のプログラム(著者らの l人が作成した,入 a v aプログラムを解析してプログラム依存グラフ 力された J を出カするツーノレ)の実行履涯を用いて,待問の経過とと もにオブジェクトの動作状況が変化する様子をグラフ化し た.図 2は,時刻 t(実行履康中の t番密)のメソッド呼び出 しに関して,呼び出し元と呼び出し先のオブジェクト ID をそれぞれプロットしたものである.この図より,約 500 番目, 2600番自のメソッド呼び出しを境にメッセージ通信 に関わるオブジェクト群が急激に変化しているのが分かる. 例えば, 500番目以前のメソッド呼び出しで動作したオブ ジェクトはその後ほとんど動作していない.実際に, 1~ 500番目, 500~2600 悉畏までの部分は 2 j 匿の入力データ をそれぞれ個別に処淫する部分であり,さらに 2600番良 以降の部分はファイノレ出カ部に対応していることが磯認で きた. 3. 実行翠歴の分割 2.で調べたように,プログラムの実行履庭を時間煩に 追跡すると,プログラムの異なるフェイズに入った部分で 協調動作しているオブジェクト鮮が大きく変化すると予想 される.そこで,メッセージ通信 i こ関わるオブジェクト群 の変化に注隠することで実行履療を複数のブロックに分割 する方法を検討した.具体的には,メソッド呼び出しに関 係していたオブジェクトをキャッシュに記憶しておき,キ ャッシュ中のオブジェクトの入れ務わ 9頻度が大きくなる 部分で実行履歴を分苦手!するというアプローチである. 5 叩 口 J 4三平ミよ; 200 . ム 、 々 担曲 -r 250 1 5 0 H ,~ t - 1凹 和 回 面泌 1 0 0 0 19 語 2. . 泌 2500 3 < J ( 刻 。 時刻 I ( 実行厩度中由 1 番目白メソッド呼び出し} 図 2:協瀦動作するオブジェクトの時間による変化 護1 ! ? - 2 ? l 様 。a ト 寸 喫 0.61 1 - ハ 」 ! ? hi内」同~l 吋 什 G 珊 1 醐 1 闘 訓 制 3棚 時刻1(実行憲摩中国 t 番目白メソッド呼び出し) 図 3・キャッシュの更新頻度 関 2で使用した実行履歴に対し,実際に実行履歴の分割 を試みた.その一例として,キャッシュサイズを 50 とし, J でのメソッド呼び出し毎に過去 20泊分のオブジェ 各時tJ クトの入れ苓わり頻度(0~1) をグラフ化した結果を ~3 の 折れ線グラフに示す この例からは,システムの異なるフ ェイズに処理が移行したと考えられる部分で実際にキャッ シュの更新頻度が高くなっていることが確認できた. 今後,様々な種類のプログラムの実行履歴に対して適用 を行い,提案手法の詳純化・一般化を行う予定である. 参考文献 [ 1 ] 谷口,石尾,神谷,橋本,井上:“J a v aプログラムの実 行履歴に基づくシーケンス図の作成", FOSE2004 予稿集, ppふ 1 5(N o v .2 0 0 4 ) . 2 5