利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

30
1 利利利利利利利利利利利利利利利利利 利利 利利利利利利利利利 利利 利利 *, 利利 利利 **, 利利 利 **, 利利 利利 **, 利利 利利 ** * 利利利利利利利利利 ** 利利利利

Upload: aidan-neal

Post on 03-Jan-2016

76 views

Category:

Documents


0 download

DESCRIPTION

利用頻度に基づくソフトウェア部品の 解析・検索システムの提案. 山本 哲男* , 横森 励士** , 松下 誠** , 楠本 真二** , 井上 克郎** *科学技術振興事業団 **大阪大学. 背景. ソフトウェアの開発効率を向上するための手法として、再利用が注目されている 再利用とは既存のソフトウェア部品を同一システム内、他のシステム内で用いること 部品が再利用に適しているか判断するために、再利用性を定量的に示すことが必要. 静的な特性からは再利用性が低いと評価されていても、実際には頻繁に再利用されている部品も存在する. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

1

利用頻度に基づくソフトウェア部品の解析・検索システムの提案

山本 哲男 *, 横森 励士 **, 松下 誠 **, 楠本 真二 **, 井上 克郎

**

* 科学技術振興事業団** 大阪大学

Page 2: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

2

背景ソフトウェアの開発効率を向上するための手法として、再利用が注目されている

再利用とは既存のソフトウェア部品を同一システム内、他のシステム内で用いること

部品が再利用に適しているか判断するために、再利用性を定量的に示すことが必要

Page 3: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

3

従来の再利用性評価手法従来の再利用性評価手法は、個々の部品の静的な特性を評価している

コードメトリクスを足し合わせて再利用性を評価 [1]

インタフェース部分の情報から再利用性を評価 [2]

[1] L. Etzkorn et al.: ``Automated reusability quality analysis of OO legacy software,'' Information and Software Technology, Vol. 43, Issue 5, pp. 295-308 (2001).[2] 山本 他 : `` 再利用特性に基づくコンポーネントメトリクスの提案と検証 ," FOSE2001, (2001).

利用頻度に基づく再利用性を定量的に評価することが必要

静的な特性からは再利用性が低いと評価されていても、実際には頻繁に再利用されている部品も存

在する

Page 4: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

4

利用頻度に基づく評価計量社会学で一般に用いられている手法

Influence Weight[3] (学術論文の重要度を評価)多くの論文に引用される論文は重要である重要な論文に引用される論文はまた重要である

他の応用Page Rank[4] ( Web ページの重要度を評価)

多くのページからリンクされるページは重要である重要なページからリンクされるページはまた重要である[3] G. Pinski et al.:``Citation Influence for Journal Aggregates of Scientific Publications: Theory, wit

h Application to the Literature of Physics,“ Information Processing and Management, Vol. 12, Num 5, pp. 297-312, (1976).[4] L. Page et al.: ``The PageRank Citation Ranking: Bringing Order to the Web,'' http://www-db.stanford.edu/~backrub/pageranksub.ps

Page 5: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

5

利用頻度に基づく再利用性

利用頻度に基づいた評価手法 R3(Relative Reusability Ranking) 法

ソフトウェア部品の利用関係に着目被利用数が多い部品は重要重要な部品から利用されている部品もまた重要

Page 6: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

6

本研究の目的R3 法に基づくソフトウェア部品の解析・検索システム SPARS(Sof t ware Product Archive, analysis and Retrieval System) の提案

プロトタイプを用いた適用実験を行う提案手法が利用頻度を反映しているか

Page 7: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

7

ソフトウェア部品ソフトウェア開発者が再利用を行う単位をソフトウェア部品と呼ぶ

ソースコードファイル、ドキュメントを部品として抽出部品間には利用関係が存在する

c4

c1 c1'

c2 c2'

c5

c3

(a) 部品間の関係

Page 8: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

8

c4

c1 c1'

c2 c2'

c5

c3

類似部品群 (1)

実際に部品を抽出した場合、コピーした部品やコピーして一部変更した部品が多く存在する類似した部品をまとめて類似部品群とする

c4

c1 c1'

c2 c2'

c5

c3

(a) 部品間の関係

C1

C2 C3

C4 C5

Page 9: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

9

類似部品群 (2)

所属する部品に利用関係があれば、部品群間にもその利用関係がある

c4

c1 c1'

c2 c2'

c5

c3

C1

C2 C3

C4 C5

(a) 部品間の関係 (b) 部品群間の関係

Page 10: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

10

相対的再利用性再利用を用いてソフトウェア開発が繰り返されると、利用関係は時間とともに変化していく

十分な時間が経過した状態で、部品の利用頻度に基づいて再利用性を評価

多数の部品間の利用関係から相対的に決まる「相対的再利用性」

Page 11: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

11

部品の分類実際に部品を抽出した場合、コピーや類似した部品が多数含まれる

類似部品群を相対的再利用性評価の対象とする

Page 12: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

12

相対的再利用性評価値 (1)

開発者は再利用性が高いと判断した部品群を利用する部品群を利用する→「再利用性が高い」という支持投票をしたとみなす

多くの部品群から投票される部品群は再利用性評価が高い再利用性評価が高い部品群から投票を受ける部品群は再利用性評価が高い

部品群同士で互いに投票しあうことで評価値が循環し相対的再利用性評価値が決まる

Page 13: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

13

相対的再利用性評価値 (2)

所属する部品群の評価値を部品の評価値とし、部品を順位付けする順位が高いほど再利用性が高い部品である

Page 14: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

14

C1

v1

C2

v2

C3

v3

C1

v1

C2

v2

C3

v3

50%

50%

100%100%

C1

0.333

C2

0.333

C3

0.333

50%

50%

100%100%

相対的再利用性評価値 (3)

C1 C2

C3

0.167

0.167

0.3330.333

C1

0.333

C2

0.167

C3

0.500

C1 C2

C3

0.167

0.167

0.1670.500

C1

0.500

C2

0.167

C3

0.334

C1 C2

C3

0.250

0.250

0.1670.334

C1

0.334

C2

0.250

C3

0.417

C1 C2

C3

0.167

0.167

0.2500.417

C1

0.417

C2

0.167

C3

0.417

C1

0.400

C2

0.200

C3

0.400

0.200

0.200

0.2000.400

Page 15: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

15

システム構成

RawSource

Repository

SourceRepository

Ranker

SearcherQueryParser

Browser

Parser Analyzer

RelationRepository

Javaソースファイル群

Page 16: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

16

Raw Source Repository

ファイルをそのままの形で保存するパッケージ名とクラス名をキーとして格納

クラスファイルそのもの相対的再利用評価値

Page 17: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

17

Parser

Java ファイルの構文解析を行う解析結果を Source Repository へ格納

検索時に利用する

利用関係の抽出利用関係を Relation Repository へ格納

クラスの継承関係インターフェースの実装関係抽象クラスの実装関係メソドの呼び出し関係フィールドの参照関係

Page 18: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

18

Parser (続き)特徴メトリクスの計測

クラス名フィールド名メソド名メソドのシグニチャメソドの複雑度

Page 19: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

19

Analyzer

類似ファイルを検索し、部品群化を行う特徴メトリクスの一致している割合により判断

部品群化されたファイルの利用関係を統合する

Page 20: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

20

Ranker

相対的利用評価値の計算を行うこの計算はグラフの隣接行列の固有ベクトルを求める計算に帰着される計算した評価値は Raw Source Repository に格納する

Page 21: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

21

Searcher

検索キーを元に必要な部品を検索する検索キー

キーワードコード片

検索対象コメントコード

Page 22: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

22

Browser

検索キーと一致した部分とその検索キーを含むファイル名を表示するRanker で求めた評価値の順番に表示

Page 23: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

23

適用実験プロトタイプを作成し、部品の順位が利用頻度を反映しているかどうかの実験を行った

適用対象は、 JDK 1.3.0 および 10 個のアプリケーション(総部品数は 6426 )

Page 24: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

24

適用結果言語仕様上、直接的、間接的に利用しなければならないクラスが上位を占めている順位 部品名 評価値

1 java.lang.Object.java 0.1308420772 java.lang.Class.java 0.0707799043 java.io.EOFException.java 0.051143644

・・・3 java.io.IOException.java 0.051143644

66 .org.w3c.dom.Node.java 0.03459925267 java.lang.Throwable.java 0.0304725668 java.lang.StringBuffer.java 0.01469505169 javax.naming.NamingException.java 0.01391437970 java.lang.VirtualMachineError.java 0.01090646771 org.w3c.dom.NodeList.java 0.01054713472 java.io.InputStream.java 0.010030122

Page 25: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

25

計算手法の有効性評価非利用回数だけの順位はアプリケーションでよく利用されている部品が上位にくる

順位 部品名 被利用回数1 java.lang.Object.java 12012 java.io.EOFException.java 1120

…2 java.io.IOException.java 1120

65 java.util.Vector.java 54566 java.lang.StringBuffer.java 45867 java.util.HashMap.java 44867 java.util.Hashtable.java 44869 java.util.Enumeration.java 44470 java.io.File.java 32671 java.lang.Class.java 29772 org.w3c.dom.Node.java 285

順位 部品名 評価値1 java.lang.Object.java 0.1308420772 java.lang.Class.java 0.0707799043 java.io.EOFException.java 0.051143644

・・・3 java.io.IOException.java 0.051143644

66 .org.w3c.dom.Node.java 0.03459925267 java.lang.Throwable.java 0.0304725668 java.lang.StringBuffer.java 0.01469505169 javax.naming.NamingException.java 0.01391437970 java.lang.VirtualMachineError.java 0.01090646771 org.w3c.dom.NodeList.java 0.01054713472 java.io.InputStream.java 0.010030122

Page 26: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

26

部品群化の有効性評価

順位 部品名 評価値1 java.lang.Object.java 0.1377582652 java.lang.Class.java 0.0740101543 java.lang.Throwable.java 0.0510098014 org.w3c.dom.Node.java 0.0291749335 java.lang.Exception.java 0.0285649726 java.lang.StringBuffer.java 0.0151803487 java.io.IOException.java 0.0128148258 java.lang.SecurityManager.java 0.009592429 java.io.InputStream.java 0.00916187

10 org.w3c.dom.NodeList.java 0.00901503711 java.lang.reflect.Constructor.java 0.007984003

順位 部品名 評価値1 java.lang.Object.java 0.1308420772 java.lang.Class.java 0.0707799043 java.io.EOFException.java 0.051143644

・・・3 java.io.IOException.java 0.051143644

66 .org.w3c.dom.Node.java 0.03459925267 java.lang.Throwable.java 0.0304725668 java.lang.StringBuffer.java 0.01469505169 javax.naming.NamingException.java 0.01391437970 java.lang.VirtualMachineError.java 0.01090646771 org.w3c.dom.NodeList.java 0.01054713472 java.io.InputStream.java 0.010030122

例外を扱うクラスがよく利用されているコピーされた部品の把握

Page 27: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

27

まとめまとめ

R3 法に基づくソフトウェア部品の解析・検索システム SPARS(Sof t ware Product Archive, analysis and Retrieval System) の提案提案手法が利用頻度を反映しているかプロトタイプを用いた適用実験を行った

今後の課題SPARS の実装利用関係の種類による重み付けの検討

Page 28: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

28

Page 29: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

29

相対的再利用性評価値 (4)

相対的再利用性評価値を求める計算は行列の固有ベクトルを求める計算に帰着される

C1

v1

C2

v2

C3

v3

50%

50%

100%100%

3

2

1

v

v

v

V

001

100

5.05.00

D

V = Dt ・ Vλ=1 の固有ベクトル

C1

0.400

C2

0.200

C3

0.400

0.200

0.200

0.2000.400

4.0

2.0

4.0

015.0

005.0

100

4.0

2.0

4.0

Page 30: 利用頻度に基づくソフトウェア部品の 解析・検索システムの提案

30

評価が循環しない場合部品全体における票の重みの偏りを分析することで相対的再利用性を評価している

利用してない部品に対しては非常に低い重みの票を投票したとみなす

票が全体に循環しなければ正しく評価できない