1 - Osaka University

Download Report

Transcript 1 - Osaka University

メソッドに用いられる
動詞-目的語関係を収録した
辞書構築手法の提案
鹿島 悠† ,早瀬 康裕‡ ,
真鍋 雄貴† ,松下 誠† ,
井上 克郎†
† 大阪大学, ‡ 東洋大学
Department of Computer Science,
Graduate School of Information Science & Technology,
Osaka University
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
1
概要
• 研究目的
– 識別子の命名支援
• 提案手法
– 動詞-目的語関係の辞書構築
• メソッドから動詞-目的語関係を抽出
• 特定のアプリケーションドメインを対象とした辞書の構築
• 評価実験
– 構築した辞書にドメイン固有の動詞-目的語関係が多
数収録されていることを確認
• 同じプログラミング言語を使用したプログラムに一般的に出
現する関係も多く収録されていた
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
2
プログラム理解
• ソフトウェア保守の際大きな時間を消費する[1]
• 識別子の名前が重要な役割を果たす[2][3]
– 作業者はプログラム要素の役割を名前から推測
し,アプリケーションドメインの知識と対応づける
• 識別子に不適切な命名がなされた場合,プロ
グラム理解に多大な時間を要する
[1] : R. K. Fieldstad and W. T. Hamlen. Application Program Maintenance Study: Report to Our
Respondents
[2]: A. Von Mayrhauser and A. M. Vans. Identication of Dynamic Comprehension Processes
During Large Scale Maintenance
[3]: Nancy Pennington. Comprehension strategies in programming
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
3
識別子への適切な命名
• 適切な命名のためには,名前に使用される
単語や命名規則を知る必要がある
– 単語や命名規則は以下の状況で変化
• プログラミング言語
• 開発組織
• アプリケーションドメイン
• 単語や命名規則が文書化されていない場合,
多数のソースコードを読解し,学習する必要
がある
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
4
名詞の辞書
• ソースコード中の名詞の辞書[4]
– 収録される関係
• 名詞の上位下位関係
• 名詞と修飾語の修飾関係
– クラス名や変数名の命名支援に役立つと考えら
れる
• メソッドでは動詞と名詞の関係が重要となる
– 名詞の辞書だけでは不十分
[4]:早瀬 康裕, 市井 誠, 井上 克郎. ソフトウェア理解支援を目的とした辞書の作成法
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
5
メソッド中の識別子
• メソッドの各要素の識別子
– メソッド名
• 複合語となっていることが多い
– 動詞,目的語,前置詞などから構成
– メソッド定義時
• 所属するクラス・仮引数が目的語になる
Ex. Jmenu クラスの void addMenuListener(MenuListener)
MenuListener を JMenu に 追加(add)する
直接目的語
間接目的語
動詞
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
6
提案手法
• 動詞-目的語関係の辞書の作成
– メソッドから動詞-目的語の関係を抽出
– 特定のドメインを対象とした辞書の作成
• 辞書の活用
– 識別子の命名支援
• 収録された動詞-目的語関係を開発者に例示
• 特定のドメインで使用される単語や命名規則の学習を
支援
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
7
提案手法の概要
特定のドメインに所属する
ソフトウェアのソースコード
戻り値
void
メソッド情報
戻り値
void
メソッド名
addProduct
引数
Product
事前に人手で定義
抽出パターン
クラス名
Stock
メソッド名
引数
クラス名
動詞1 名詞2
名詞2
名詞3
動詞
直接目的語
間接目的語
動詞1
名詞2
名詞3
add Product
動詞 名詞
void
名詞
パターンマッチ
名詞
動詞-直接目的語-間接目的語
辞書
動詞
直接目的語
間接目的語
出現したソフトウェアの数
Add
Product
Stock
3
Build
Data
BooleanMatrex
1
Set
Password
User
4
Describe
Alias
Xml
1
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
8
メソッド情報
戻り値,メソッド名,引数,クラス名に出現する単語に,
品詞情報を付けた単語列の4つ組
戻り値
名詞一つ
void
メソッド名
複合語を分解し
単語の列にして
品詞解析を行う
(OpenNLPを利用)
引数
名詞の列
クラス名
名詞一つ
メソッド情報の例
void
createTicketForUser
User
Server
名詞
名詞
create Ticket For User
void
動詞 名詞 前置詞 名詞
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
9
抽出パターン
抽出を行う条件の4つ組と
動詞,直接目的語,間接目的語として抽出する単語の指定
戻り値
メソッド名
引数
void
名詞一つ
ワイルドカード
品詞の列
名詞の列
ワイルドカード
クラス名
名詞一つ
ワイルドカード
各品詞に番号を付与
動詞,直接目的語,間接目的語として抽出する単語の指定
抽出パターンの例
戻り値
void
メソッド名
動詞1 名詞2 前置詞3 名詞4
動詞
直接目的語
動詞1 名詞2
引数
ワイルドカード
クラス名
ワイルドカード
間接目的語
名詞4
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
10
パターンマッチ
1. 抽出パターンで指定した条件の4つ組を,メソッド情報が
全て満たしているか検査
2. 条件が満たされた場合,抽出パターンに従い動詞,直接
目的語,間接目的語を抽出
メソッド情報
void
createTicketForUser
User
Server
動詞
直接目的語 間接目的語
create
Ticket
User
create Ticket For User
void
動詞 名詞 前置詞 名詞
名詞
名詞
抽出パターン
戻り値
void
メソッド名
動詞1 名詞2 前置詞3 名詞4
動詞
直接目的語
動詞1 名詞2
引数
クラス名
ワイルドカード ワイルドカード
間接目的語
名詞4
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
11
評価実験
• 評価基準
– メソッドの動詞-目的語関係を抽出した辞書が作
成できたかどうか
– 特定のドメインを対象とした命名支援用の辞書と
して有効かどうか
• 事前準備
– 抽出パターンを31個定義
• 著者が経験的に判断し,抽出パターンを定義
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
12
抽出パターンの作成方法
メソッド情報
void
addElement
Element
List
名詞
名詞
add Element
void
動詞 名詞
抽出パターン
戻り値
メソッド名
引数
void
動詞1 名詞2
名詞2
動詞
直接目的語
動詞1 名詞2
クラス名
名詞3
間接目的語
名詞3
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
13
実験対象
• 4つのドメインの辞書を作成
–
–
–
–
Web Application (WEB)
XML
Database (DB)
GUI
• 辞書には2つ以上のソフトウェアで出現した動詞-直接
目的語-間接目的語の三つ組を収録
ドメイン
入力した
ソフトウェア数
メソッド数
収録した
三つ組の数
WEB
10
74707
282
XML
11
55812
547
DB
9
74127
672
GUI
7
298696
407
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
14
実験方法
1. 各辞書からランダムに90個の組を抽出
2. 抽出した三つ組に対するアンケート調査
– 各三つ組は以下のドメインで見られる組かどうか
• 辞書が対象とするドメイン
• Javaプログラム一般
– 動詞,直接目的語,間接目的語の判断が正しいか
どうか
– 各三つ組を以下のドメインの命名支援用の辞書に
収録してもよいかどうか
• 辞書が対象とするドメイン
• Javaプログラム一般
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
15
被験者
著者の所属する研究室の学生6人
– 全員Javaを用いた開発経験あり
– 被験者が開発経験のあるドメインを対象とした辞
書に対して回答
– 1人あたり2つの辞書に対して回答
– 1つの辞書につき3人の被験者に30組づつ評価
してもらう
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
16
実験結果の概要
• メソッドに出現する動詞-目的語関係の辞書の
作成に成功
– 命名支援用の辞書に収録してもよいと判定された組
を多数収録していた
• ドメイン専用の辞書としては改善の余地あり
– Javaに出現する関係も多く収録されていた
• その他改善の余地がある点
– 動詞,直接目的語,間接目的語の判定に間違いが
ある組が収録されていた
– 命名支援には有用でない関係が収録されていた
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
17
実験結果(1/3)
各三つ組が見られるドメイン
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
WEB
XML
辞書のドメイン
DB
GUI
Java
• 辞書のドメインで見られる組の割合
• 62% ~ 75%
• Javaプログラム一般で見られる組の割合
• 38% ~ 76%
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
18
実験結果(2/3)
動詞,直接目的語,間接目的語の判定が間違っていると評価された
三つ組の割合
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
WEB
XML
DB
GUI
• 動詞,直接目的語,間接目的語の判定が間違っていると評価
された三つ組の割合
• 6% ~ 13%
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
19
実験結果(3/3)
命名支援用の辞書に収録しても良いと評価された三つ組の割合
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
WEB
XML
辞書のドメイン
DB
GUI
Java
• 辞書のドメインの辞書に収録しても良いと評価された三つ組の割合
• 53% ~ 71%
• Javaプログラム一般の辞書に収録しても良いと評価された三つ組の割合
• 30% ~ 61%
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
20
被験者が収録しても良いと判断した組
ドメイン
動詞
直接目的語
間接目的語
WEB
Destroy
Session
HttpSessionEvent
XML
Declare
Prefix
NamespaceSupport
DB
Add
Constraint
Table
GUI
Click
Mouse
MouseEvent
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
21
被験者が収録すべきでないと判断した組
• 判断の理由
– 対象ドメインとは異なるドメインに所属している
– 動詞,直接目的語,間接目的語の判定が間違っている
– 直接目的語や間接目的語に何らかの語の省略語と思わ
れる語が出現していた
– あまりにも一般的すぎる関係だった
– 特定のライブラリに依存して出現する関係であり,ドメイン
の辞書に入れるには不適当と判断した
• 例
ドメイン
動詞
直接目的語
間接目的語
DB
Release
Mouse
MouseEvent
GUI
Gain
Focus
Fe
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
22
実験結果に対する考察
• 異なるドメインに所属する関係が収録されて
しまった理由について
– 辞書作成のために入力したソフトウェアの数が7
~11と少なかったため,辞書のドメイン以外に所
属する関係を取り除けなかった
• 入力するソフトウェアの数を増やして対応したい
– 入力したソフトウェアが複数のドメインを扱ってい
た
• プログラムで一般的に見られる関係や他のドメインで
見られる関係を取り除くことで解決を狙う
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
23
まとめと今後の課題
• まとめ
– 特定のドメインを対象とした,メソッドに出現する
動詞-目的語関係を収録した辞書の構築手法を
提案
• 今後の課題
– 他のドメインに所属する関係や,命名支援に有用
でない関係を辞書から取り除く方法の開発
– 辞書を利用した命名支援環境の構築
Department of Computer Science, Graduate School of Information Science & Technology, Osaka University
24