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