Download presentation
Presentation is loading. Please wait.
Published byいつや のじま Modified 約 7 年前
1
【ICSE2012 勉強会】 Recovering Links between an API and Its Learning Resources
担当 : 岩崎 慎司(NTTデータ)
2
背景・問題点 / 目的 背景・問題点 フレームワークやライブラリの再利用には、提供されている学習資料 (ドキュメント、ML etc)を利用しAPIを理解する必要がある APIと学習資料のリンクを維持するのは難しい 学習資料の情報は構造化されておらず曖昧性を含んでおり、自動でリンクを復元するのは難しい 目的 提案手法により、精度の高い学習資料とAPI間のリンクの復元を行う スライド中の図表は論文の図表を引用
3
提案したメタモデルを利用し、学習資料とソースコードのリンク付けを行う
アプローチ 提案したメタモデルを利用し、学習資料とソースコードのリンク付けを行う ドキュメント、ML、ソースコードを解析し、提案モデルの要素を生成する ドキュメントとMLのCodeLikeTermとソースコードのCodeElementをリンク(精度をあげるためリンクのフィルタリングを実施) CodeElement org.apache.http.entity.EntityTemplate org.apache.http.entity.ContentProducer CodeLikeTerm ソースコード ContentProducer EntityTemplate Crednetials ドキュメント、ML
4
評価内容 評価方法 リンクの正確さ(CodeLikeTermとCodeElementのリンクに誤りが存在しないか)
評価内容・評価方法 評価内容 リンクの正確さ(CodeLikeTermとCodeElementのリンクに誤りが存在しないか) フィルタの効果(不要なリンクをどれだけフィルタできるか) 評価方法 4種類のオープンソースのシステム(JodaTime、HttpComponents、Hibernate、XStream)を対象に実施 手動でリンク付けした結果と提案手法を実装したツール(RecoDoc)の結果を比較し、手動でリンク付けした結果にどれだけ提案手法が近いかで評価
5
評価結果 フィルタの効果 リンクの正確さ 評価結果 4つのシステムで平均96%の精度
各CodeLikeTermに存在した平均16.8個のCodeElementへのリンク候補が、フィルターにより0.7個に削減
6
Generative Range Fixes for Software Configuration
2012/8/30 (株) NTTデータ Copyright © 2011 NTT DATA Corporation
7
目的 多くかつ複雑な設定項目を持つソフトウェアが対象 妥当でない設定に対し、ユーザが修正を適切にできるような仕組みを提供するもの
8
主要貢献、手法、評価 主要貢献: Range Fixという考え方 どのような修正候補があるかを幅を持ってユーザに提示する
評価 : RQを5つ設定し、評価を実施 評価がしっかりしている印象 どのような複雑な設定に対して修正候補を提示できるか?ユーザにとって妥当な候補が提示されているか? 高性能か?既存手法より良いか?提示した3つの戦略のどれが効果的か? [Use_Pre_Allocation := false] • [Pre_Allocation_Size: Pre_Allocation_Size <=8] • [Buffer_Size: Buffer_Size >= 5] • [Object_Size: Object_Size <= 409.6]
9
Graph-Based Pattern-Oriented, Context-Sensitive Source Code Completion
Anh Tuan Nguyen, et al. 担当 : 岡田 譲二 (NTTデータ)
10
APIの利用方法についてコードの文脈を考慮して最適なコード補完を行う
目的と主要な貢献 ■目的 APIの利用方法についてコードの文脈を考慮して最適なコード補完を行う ■主要な貢献 コードの文脈に即したAPI利用パターンを検索・順位付するアルゴリズム グラフに基づくコード補完のアルゴリズム 編集途中のコードに対しても文脈に即したコードを補完するツール(GraPacc) GraPaccの正確性・有益性を示す実証的な評価方法 1 Display display = new Display(); 2 Shell shell = new Shell(display); 3 ... 4 Button button = new Button(shell, SWT.PUSH); 5 button._ 1 Display display = new Display(); 2 Shell shell = new Shell(display); 3 ... 4 shell.pack(); 5 shell.open(); 6 while (!shell.isDiposed()){ 7 if (!display.readAndDiposed()) 8 display.sleep(); 9 } 10 display.disposed(); 編集途中のコード 5行目にカーソルがある時には、 ①ではなく②のAPI利用パターンでコード補完して欲しい API利用パターン① 1 Button button = new Button(shell, SWT.PUSH); 2 FormData bData = new FormData(); 3 button.setLayout(bData); API利用パターン②
11
< アプローチ 編集途中のコードと、API利用パターンをグラフベースのモデル(Groum[1])に変換
編集途中のコードはPPA[2]を利用して部分的なASTを作り、Groumに変換 変換したAPI利用パターンのGroumと、編集途中のコードのGroumの各ノードに、カーソルからの距離や、関連性の多さなどによって重み付ける 重み付けられたノードのTf-Idfを類似度として、API利用パターンを順位付ける 1 Display display = new Display(); 2 Shell shell = new Shell(display); 3 ... 4 Button button = new Button(shell, SWT.PUSH); 5 button._ API利用パターン①のGroum 3.Tf-Idfで最終的な 類似度を計算 編集途中のコード 1.Groumに変換 API利用パターン②のGroum 編集途中のコードのGroum 2.重み付け 類似度: 3 < 類似度: 7 [1] T.T. Nguyen, et al, "Graph-based Mining of Multiple Object Usage Patterns", in ESEC/FSE '09. ACM Press, 2009. [2] B. Dagenais and L. Hendren, "Enabling static analysis for patial java programs", in OOPSLA '08. ACM, 2008, pp
12
テストデータで利用したプロジェクトのソースの例
評価方法・結果 ■評価方法 4プロジェクトからJava Utility libraryのAPI利用パターンを抽出 他の24プロジェクトにGraPaccを適用して評価 テストデータは上記のプロジェクトのソースを途中で分割して、 前半を編集途中のコード、後半を正解とした ■評価結果 適合率:84.6%、再現率:71.0%、F値:77.0% パターンを検索し、コード補完するまで0.7秒 不正確な結果を出す理由としては、1つのAPIが2つのメソッドに分かれているとコード補完が冗長に行われることなどを挙げている 編集途中のコード 正解 テストデータで利用したプロジェクトのソースの例
13
【ICSE2012 勉強会】 Session B : Automatic Input Rectification
担当 : 津野 裕介 (NTTデータ)
14
背景・問題点 目的 ソフトウェアのエラーやセキュリティの脆弱性は、しばしば非定型入力によって発生 標準的な対応方法は、フィルタの利用
背景・問題点 / 目的 背景・問題点 ソフトウェアのエラーやセキュリティの脆弱性は、しばしば非定型入力によって発生 標準的な対応方法は、フィルタの利用 しかし、問題のない変則的な入力を排除してしまう 目的 自動的に潜在的に危険性のある入力をプログラムが正常に処理する可能性が高い典型的な入力に変換すること スライド中の図表は論文の図表を引用
15
自動入力修正 (SOAP=Sanitization Of Anomalous inPuts)の提案
アプローチ 自動入力修正 (SOAP=Sanitization Of Anomalous inPuts)の提案 入力を処理するアプリケーション向けの典型的入力について、一組の制約を最初に学習 自動的に修正機を生成 入力が与えられる時、制約を満たせばスルー 制約を満たさない入力は修正 SOAPの4つのコンポーネント 入力パーサ:入力を構文構造木に変換 実行モニタ:メモリ割当てなどを行うフィールドを識別 学習エンジン:フィールドへの安全な入力を学習し制約を作成 修正機(Input Rectifer):入力を制約を用いて修正 自動入力修正(SOAP)システムのアーキテクチャ
16
適用対象 適用方法 適用例 オープンソースWebブラウザ Dillo パーサがDilloの PNG入力に関する フィールドを特定
トレーニングの結果を 受けてフィールドの 上限値を推論 オンラインにて入力を 自動修正 脆弱性を持つDillo のコード
17
評価方法・結果 定量評価 アマゾン メカニカルタークを利用した人手による評価 評価方法・結果
5つのアプリケーションに対して、SOAPで制約を生成 悪意あるデータを投入→すべて脆弱性を無効化 問題ないデータはほぼ損失せず(TIFF で0.5%) アマゾン メカニカルタークを利用した人手による評価 SOAPで修正した画像、動画とオリジナルを提示 0(全く異なる)~3(完全に一致)の指標でランク付け 全体で2.5を上回る結果→修正画像はオリジナルに近い 5つのアプリケーション SOAPによって修正された画像の例 Swfdec Google Picasa Dillo Image- Magick VLC オリジナル 修正
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.