2 - Software Engineering Laboratory

ソースコードの利用関係を用いた
再利用性評価手法の提案
横森 励士, 藤原 晃, 山本 哲男
松下 誠, 楠本 真二, 井上 克郎
大阪大学大学院基礎工学研究科
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
1
背景
ソフトウェア開発効率を向上するための手法とし
て、再利用が注目されている
再利用とは既存のソフトウェア部品を同一システム内、
他のシステム内で用いること
部品が再利用に適しているか判断するために、
再利用性を定量的に示すことが必要
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
2
従来の再利用性評価手法
従来の再利用性評価手法は、個々の部品の静的な特性
を評価している
コードメトリクスを足し合わせて再利用性を評価[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).
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
3
実績に基づく評価
計量社会学で一般に用いられている手法
Influence Weight[3](学術論文の重要度を評価)
多くの論文に引用される論文は重要である
重要な論文に引用される論文はまた重要である
他の応用
Page Rank[4] (Webページの重要度を評価)
多くのページからリンクされるページは重要である
重要なページからリンクされるページはまた重要である
[3] G. Pinski et al.:``Citation Influence for Journal Aggregates of Scientific Publications: Theory,
with 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://wwwdb.stanford.edu/~backrub/pageranksub.ps JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
4
本研究の目的
利用実績に基づくソフトウェア部品の再利用性評価
手法を提案
提案手法による再利用性評価システムを実装
Javaソースコードに対して適用実験を行う
提案手法が利用実績を反映しているか
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
5
ソフトウェア部品
ソフトウェア開発者が再利用を行う単位をソフトウェ
ア部品と呼ぶ
ソースコードファイル、ドキュメントを部品として抽出
部品間には利用関係が存在する
c4
c5
c1
c1 '
c2
c2 '
(a) 部品間の関係
c3
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
6
類似部品群(1)
実際に部品を抽出した場合、コピーした部品やコ
ピーして一部変更した部品が多く存在する
類似した部品をまとめて類似部品群とする
c4
c5
cC44
c1
c1 '
c1
c2
c2 '
(a) 部品間の関係
c3
c2 C2
JSTミーティング
cC55
c1 '
C1
c2 '
C3 c3
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
7
類似部品群(2)
所属する部品同士に利用関係があれば、部品群
間にも利用関係がある
c4
c5
c1
c1 '
c2
c2 '
(a) 部品間の関係
C4
C5
C1
c3
C2
JSTミーティング
C3
(b) 部品群間の関係
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
8
相対的再利用性
再利用を用いてソフトウェア開発が繰り返されると、
利用関係は時間とともに変化していく
十分な時間が経過した状態で、部品の利用実績に
基づいて再利用性を評価
多数の部品間の利用関係から相対的に決まる
「相対的再利用性」
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
9
部品の分類
実際に部品を抽出した場合、コピーや類似した部品
が多数含まれる
類似部品群を相対的再利用性評価の対象とする
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
10
相対的再利用性評価値(1)
開発者は再利用性が高いと判断した部品群を利
用する
部品群を利用する→「再利用性が高い」という支持
投票をしたとみなす
多くの部品群から投票される部品群は再利用性評価が高い
再利用性評価が高い部品群から投票を受ける部品群は再利用
性評価が高い
部品群同士で互いに投票しあうことで評価値が循
環し相対的再利用性評価値が決まる
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
11
相対的再利用性評価値(2)
所属する部品群の評価値を部品の評価値とし、部
品を順位付けする
本提案手法を「Relative Reusability Ranking」
法(R3法)と呼ぶ
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
12
相対的再利用性評価値(3)
C1
0.333
vC
1 1
C1
0.200
C2
C1
C2
0.333
vC
0.400
0.200
0.167
2 2
50%
0.200
C2
0.167
100%
100%0.167 0.400
0.200
0.333
C1 C 0.1670.333 C2
0.333
C3 C2
C1 C2
C1 3
0.167
CvC
C0.250
C2 C 0.400
C2 0.167
0.417
13 3C
1
0.5000.333
0.167
0.167
1
2
0.334
0.250
C
0.500
0.2500.167 0.167
3
0.500
0.334 C3 0.417
0.167
0.250
C3
C3
C
C3 0.417
0.334 3 C
50%
3
0.417
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
13
相対的再利用性評価値(4)
相対的再利用性評価値を求める計算は行列の固
有ベクトルを求める計算に帰着される
C1
50%
v1
C1
C2
v2
50%
0.200
0.400
100%
C2
0.200
100%
0.200
0.400
C3
v3
C3
0.400
0.200
 v1 
 
V   v2 
v 
 3
 0 0.5 0.5 


D  0 0
1 
1 0

0


V = Dt・V
λ=1の固有ベクトル
 0.4   0 0 1   0.4 
  
  
 0.2    0.5 0 0    0.2 
 0.4   0.5 1 0   0.4 
  
  
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
14
Javaへの適用
ソースコードファイルを部品とする
類似度にはSlineを用いる[5]
2つのソースコード間で一致する行の割合
SMMT(Similarity Metrics Mesuring Tool)を用いて
Slineを計測する
継承、インターフェイスの実装、メソッド呼出を部品
間の利用関係とする
[5]山本, 松下, 神谷, 井上:``ソフトウェアシステムの類似度とその計測ツールSMMT'',
電子情報通信学会論文誌 D-I(採録決定).
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
15
R3-Systemの構成
Java ファイル (N個)
SMMT
ファイル間の関係
抽出部
クラスタ分析
ツール
部品群間の関係
抽出部
部品群の順位
→ファイルの順位
相対的再利用性
計算部
N個のファイルの順位
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
16
JDKへの適用
JDK(Java Development Kit) 1.3.0のソースコードへ
適用(1877 files, 18.4MB)
言語仕様上、直接的、間接的に利用しなければならな
いクラスが上位を占めている
順位
1
2
3
4
5
6
7
8
9
10
クラス名
java.lang.Object
java.lang.Class
java.lang.Throwable
java.lang.Exception
java.io.IOException
java.lang.StringBuffer
java.lang.SecurityManager
java.io.InputStream
java.lang.reflect.Field
java.lang.reflect.Constructor
JSTミーティング
評価値
0.161269
0.087124
0.055101
0.031032
0.013438
0.012144
0.011700
0.010277
0.009483
0.009370
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
17
研究室内ソースコードへの適用
研究室内で作成したツールと、使用したパッケージの
ソースコードへ適用(582 files, 6.1MB)
類似した部品は同一評価値を持っている
作成したツールより使用パッケージの方が評価が高い
順位
1
2
2
4
5
6
7
8
8
10
クラス名
antlr.Token
antlr.debug.Event
antlr.debug.NewLineEvent
antlr.collections.impl.Vector
jp.gr.java_conf.keisuken.text.html.HtmlParameter
jp.gr.java_conf.keisuken.net.server.ServerProperties
Jama.Matrix
jp.gr.java_conf.keisuken.util.IntegerArray
jp.gr.java_conf.keisuken.util.LongArray
jp.ac.osaka_u.es.ics.iip_lab.metrics.parser.java.IdentifierInfo
JSTミーティング
評価値
0.107270
0.061890
0.061890
0.054348
0.052461
0.036995
0.015649
0.013907
0.013907
0.013654
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
18
提案手法の応用
R3法をソフトウェア部品検索へ応用
インターネットを通じてソフトウェア部品を収集
R3法で部品を順位付け
検索結果を相対的再利用性で順位付けして表示
R3-System
インターネット
部品の収集
部品リポジトリ
順位付け
部品検索
エンジン
JSTミーティング
検索キー
検索結果
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
19
まとめ
まとめ
類似部品群間の利用関係から再利用性を評価する手
法を提案した
提案する手法に基づいて再利用性評価を行うシステムを
開発し、Javaソースコードを対象に適用した
適用結果から、提案する評価手法が利用実績を反映し
ていることが示された
今後の課題
より多くの部品に対して適用する
利用関係の種類による重み付けの検討
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
20
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
21
評価が循環しない場合
部品全体における票の重みの偏りを分析することで相対的
再利用性を評価している
票が全体に循環しなければ正しく評価できない
利用してない部品に対しては非常に低い重みの票を投票したとみなす
JSTミーティング
Software Engineering Research Group, Department of Informatics and Mathematical Science, Graduate School of Engineering Science, Osaka University
22