背景 オブジェクト指向プログラム プログラムの状態はオブジェクトの動作で決まる 多数のオブジェクト間の相互作用により動作するプログラム

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
Python超入門 久保 幹雄 東京海洋大学.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Presentation transcript:

実行履歴の照合による オブジェクトの振舞い予測手法の提案 井上研究室 脇阪大輝

背景 オブジェクト指向プログラム プログラムの状態はオブジェクトの動作で決まる 多数のオブジェクト間の相互作用により動作するプログラム オブジェクト: 実行時にメモリ上に生成され,外部からのメソッ ド呼出しに応じて機能を実行する部品単位 プログラムの状態はオブジェクトの動作で決まる ある処理を理解するためには,その処理に関連したオブジェ クトを特定し,その振舞いを分析する必要がある. オブジェクト指向プログラムは, 多数のオブジェクト間の相互作用により動作するプログラムです. オブジェクトとは,プログラムの実行時にメモリ上に生成され, 外部からのメソッド呼出しに応じて機能を実行する部品単位です. オブジェクト指向プログラムでは,プログラムの状態はオブジェクトの動作で決まります. ある処理を理解するためには, その処理に関連したオブジェクトを特定し,その振舞いを分析する必要があります.

研究の動機 興味のあるプログラムの動作に対応するオブジェクトを詳しく調査したい オブジェクトの詳細な振舞いを理解するために,機能を実行する途中のオブジェク トの動作・状態を知りたい そのためには,プログラムの実行中に,分析したいオブジェクトを興味ある動 作を行うよりも前に特定しなくてはならない しかし,オブジェクト指向プログラムの実行では,1つのクラスに対して複数のオブ ジェクトが生成されるため,その中からオブジェクトを特定する必要がある Stack s=new Stack(); while(reader.available()>=4) s.push(reader.readInt()); int i=0; do{ i+=s.pop(); }while(!s.isEmpty()); オブジェクトが生成されたとき 次にpushが呼ばれる 分析しなくてよいオブジェクト 知りたいこと or そこで興味のあるプログラムの動作に対応するオブジェクトを詳しく調査したいとき, そのオブジェクトの詳細な振舞いを理解するためには, 機能を実行する途中のオブジェクトの動作を知ることが求められます. それを行うためには, プログラムの実行中に, 分析したいオブジェトを,興味のある動作を行うよりも前に特定しなくてはなりません. しかし,オブジェクト指向プログラムの実行では多数のオブジェクトが生成されるため, オブジェクトを特定することは容易ではありません. 図のプログラムはスタックを利用したプログラムの例であるが, スタッククラスのオブジェクトが生成されたところでプログラムを一時停止し, そのスタックがこれからどのような振舞いをするかがわかれば, そのスタックオブジェクトが分析したいオブジェクトかどうかが判断できます. 次にpopが呼ばれる 分析したいオブジェクト

オブジェクトの振舞いの分類 過去の研究から,1つのプログラムで,オブジェクトの振 舞いはいくつかのグループに分類できることがわかって いる 事前に振舞いのグループがわかっていれば,プログラム実行 中に着目しているオブジェクトが,どのグループに分類される かが分かればよい 分析したいオブジェクトを特定できる クラス A

提案手法 一度実行したプログラムのオブジェクトの振舞いに基づい て,次の実行における各オブジェクトの振舞いを予測,提 示する プログラムを2回実行したとき,ほぼ同じ動作をすると仮定 オブジェクトごとの実行履歴を取得 オブジェクトごとの振舞いを表現するオートマトンを作 成し,振舞いの事例とする もう一度プログラムを実行し,各オブジェクトについて 振舞いの一致する事例を探す 事例を用いて,オブジェクトの振舞いを予測する そこで私の研究では, 1度実行したプログラムのオブジェクトの振舞いに基づいて, 次の実行における各オブジェクトの振舞いを予測する手法を提案します. プログラムの2回の実行は,ほぼ同じ動作をすると仮定します. 提案する手法では,まずオブジェクトの振舞いの事例を取得します. プログラムを実行し,実行記録をとり,それを使ってオブジェクトの振舞いをオートマトンとして表現します. もう一度プログラムを実行するときに,各オブジェクトに対して振舞いの一致する事例を探します. そしてその事例を用いてオブジェクトの振舞いを予測します.

提案手法 実行履歴を取得 一度プログラムを実行 オブジェクトごとの実行履歴を取得 実行されたオブジェクト生成命令,メソッド呼出し命令 提案手法 実行履歴を取得 一度プログラムを実行 オブジェクトごとの実行履歴を取得 実行されたオブジェクト生成命令,メソッド呼出し命令 そのソースコードでの位置 あるオブジェクトについての実行履歴の例 呼ばれたメソッド 位置 Sample() Sample.java(L.8) methodA() Sample.java(L.10) methodB() Sample.java(L.20) methodC() Sample.java(L.30) 次に手法の具体的な説明に入ります. まず実行履歴の取得についてです. 1度プログラムを実行し, オブジェクトごとに実行されたメソッド呼出し命令と,そのソースコードでの位置を取得します.

提案手法 オートマトンを作成 オブジェクトごとにオートマトンを作成する 提案手法 オートマトンを作成 オブジェクトごとにオートマトンを作成する Dynamic Object Process Graph [1]を中間表現と して変換 オブジェクトの生成命令,メソッド呼出し命令を入 力として状態遷移する 複数のオブジェクトが同じ振舞いをする場合,1つ のオートマトンにまとめる オートマトンはオブジェクトの振舞いの事例となる [1]Jochen Quante and Rainer Koschke. Dynamic object process graphs. J. Syst. Softw., Vol. 81, pp. 481-501, April 2008. 呼ばれたメソッド 位置 Sample() Sample.java(L.8) methodA() Sample.java(L.10) methodB() Sample.java(L.20) methodC() Sample.java(L.30) Jochen Quante and Rainer Koschke. Dynamic object process graphs. J. Syst. Softw., Vol. 81, pp. 481{501, April 2008. 次に実行履歴を用いて, オブジェクトごとにオートマトンを作成します. 作成にはDynamic OPGを中間表現として用います. これによりループによる繰り返しを右図のような形で表現できます. 作成するオートマトンはオブジェクトの生成命令,メソッド呼出し命令を入力として状態遷移します. 複数のオブジェクトが同じ振舞いをする場合,1つのオートマトンにまとめます. このオートマトンがオブジェクトの振舞いの事例となります.

提案手法 振舞いの一致する事例を探す もう一度プログラムを実行する 実行中に現れた各オブジェクトについ て,振舞いが一致する事例を探す 提案手法 振舞いの一致する事例を探す もう一度プログラムを実行する オブジェクトの生成命令とメソッド呼出し 命令をオブジェクトごとに取得しながら 実行中に現れた各オブジェクトについ て,振舞いが一致する事例を探す オブジェクトが出現した時点では,同じ クラスの事例のオートマトン全てを候 補とする 実行中に得られた命令を,候補のオー トマトンへ入力として与える その過程で,状態遷移できないオートマ トンがあればそれを候補から外す 候補が1つになったとき,それを振舞 いの一致するオートマトンと決定する 次に,振舞いの一致する事例を探す方法についてです. もう1度プログラムを実行します. オブジェクトの生成命令とメソッド呼出し命令を取得しながら実行します. 実行中に現れた各オブジェクトについて,振舞いが一致する事例を探します. オブジェクトが出現した時点では,そのオブジェクトと同じクラスの事例のオートマトン全てを候補とします. 実行中に得られたオブジェクトに対しても命令を,候補のオートマトンへの入力として与えます. 状態遷移できないオートマトンがあればそれを候補から外します. 候補が1つになったとき,それを振舞いの一致するオートマトンと決定します.

提案手法 振舞いの予測 振舞いの一致する事例のオートマトンが 決定すると,その時点での状態から受理 状態までの振舞いが予測される振舞い 提案手法 振舞いの予測 振舞いの一致する事例のオートマトンが 決定すると,その時点での状態から受理 状態までの振舞いが予測される振舞い 「methodBが0回以上呼ばれて,methodCが1 回呼ばれる」という系列が予測できる 振舞いが一致する事例のオートマトンが決定すると, その時点での状態から受理状態までの振舞いが予測される振舞いとなります.

評価実験 目的 対象 手順 手法によりオブジェクトの動作をどの程度予測できるかを調査 DaCapoベンチマークに収録されたプログラムのうち,avrora, batik,lusearch,pmd,xalanを対象とした 手順 既存ツールのAmidaを使用してオブジェクトごとの実行履歴 を取得 作成したツールでオブジェクトごとのオートマトンを取得 オートマトンの性質を調査 次に評価実験についてです. この手法を評価する実験を行いました. 実験ではオブジェクトの動作をどの程度予測できるかを調査しました. DaCapoベンチマークに収録されたプログラムのうち5つを対象として用いました. 実験ではまず,既存ツールのAmidaを使用してオブジェクトごとの実行履歴を取得し, 作成したツールでオートマトンを取得し, そしてオートマトンを調査しました.

評価尺度 クラスごとのオートマトン集合の性質 Trace Predict R :予測できる割合 振舞いの一致するオートマトンを決定するために 必要なメソッド呼び出しの数の期待値 Predict 予測できるメソッド呼出しの数の最小値の期待値 R :予測できる割合 𝑅= 𝑃𝑟𝑒𝑑𝑖𝑐𝑡 𝑇𝑟𝑎𝑐𝑒+𝑃𝑟𝑒𝑑𝑖𝑐𝑡 値が大きいほど多く予測できることを表す ① 次に評価尺度についてです. オートマトンの性質として, 振舞いの一致するオートマトンの検索に必要なメソッド呼出し数を求めました. これは図の1の値のことで,Traceと呼ぶことにします. 次に予測できるメソッド呼出し数を求めました. これは図の2の値のことで,Predictと呼ぶことにします. これらの値を用いて,予測できる割合Rをこの式のように定義しました. ②

結果 グラフはクラスごとにRの値を求 めた結果 約66%のクラスでR=1 約24%のクラスで0<R<1 約10%のクラスでR=0 このクラスでは,オブジェクトの振 舞いがただ1種類となる 一致する振舞いを探す必要がない クラス 約24%のクラスで0<R<1 一致する振舞いを探す必要がある 振舞いの一致するオートマトンを 決定するために1つ以上の命令呼 出しが必要 1つ以上の命令呼出しを予測可能 約10%のクラスでR=0 予測できる命令呼出しがない 𝑅= 𝑃𝑟𝑒𝑑𝑖𝑐𝑡 𝑇𝑟𝑎𝑐𝑒+𝑃𝑟𝑒𝑑𝑖𝑐𝑡 クラスごとに計算したRの値 次に評価実験の結果です. クラスごとにTraceとPredictの平均値を求めRを計算しました. グラフはRの値の順にクラスを並べたものです. 約66%のクラスでR=1となりました. このクラスではオブジェクトの振舞いがただ1種類となります. つまり分析したいオブジェクトを特定するまでもなく,予測の必要のないクラスです. 次に約24%のクラスが0<R<1となりました. これらのクラスでは振舞いの一致するオートマトンを探すために1つ以上の命令呼び出しが必要です. また,1つ以上の命令呼出しを予測できます. そして約10%のクラスでR=0となりました. これらのクラスでは予測できる命令呼出しがありません. クラス

考察 振舞いの予測が必要なクラスは約34% R=0である約10%のクラス そのうち約70%はある程度の予測が可能 各クラスごとに,予測可能な度合は,1回目の実行履歴を取 得した時点で求まる 利用者は,調べたいクラスのオブジェクトの振舞いが予測可能かを 知った状態で予測機能を利用できる R=0である約10%のクラス 振舞いの一致するオートマトンの決定が受理状態に達する時 点で完了する メソッド呼出しだけでは,振舞いの予測ができない 引数の値といった他の要素を実行履歴に導入して,オブジェ クトの区別を行う必要がある

まとめと今後の課題 まとめ 本研究では,過去のオブジェクトの振舞いを表現するオートマ トンと現在のオブジェクトの振舞いを比較することによって振 舞いを予測する手法を提案し,その評価実験を行った 予測の必要があるクラスは約34% 予測が可能なクラスはそのうちの約70% デバッガに組込めば予測機能を有効に使用できることが期待 できる 課題 実験結果の一般性を検証する 他の種類のアプリケーションに対しても実験データをとることが必要 デバッガに本手法による予測機能を組み込む

Dynamic Object Process Graph オブジェクトの振舞いを表現するグラフ ノード 実行中に起きたオブジェクト生成命令・メソッド 呼出し命令 それらのソースコードでの位置 エッジ 順序を表す 呼ばれたメソッド 位置 Sample() Sample.java(L.8) methodA() Sample.java(L.10) methodB() Sample.java(L.20) methodC() Sample.java(L.30)

例のオートマトン集合

TraceとPredictの求め方 クラスごとの生存オートマトン木を 作成 葉の深さの平均がTrace ノード 根から自分までの命令呼出しを オートマトンに入力として与えたと き,残るオートマトンの集合 根はクラスのオートマトン全てを含む 集合 葉はオートマトン集合の要素数が1つ エッジ オートマトンへの入力の命令呼出し 葉の深さの平均がTrace 葉の持つ集合に残った1つのオー トマトンが受理状態まで至るまで の最小入力数の平均がPredict 候補のオートマトンは2つ 候補のオートマトンは1つ