利用頻度に基づくソフトウェア部品の 解析・検索システムの提案 山本 哲男*, 横森 励士**, 松下 誠**, 楠本 真二**, 井上 克郎** *科学技術振興事業団 **大阪大学 1 背景 ソフトウェアの開発効率を向上するための手法と して、再利用が注目されている 再利用とは既存のソフトウェア部品を同一システム内、 他のシステム内で用いること 部品が再利用に適しているか判断するために、 再利用性を定量的に示すことが必要 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). 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 4 利用頻度に基づく再利用性 利用頻度に基づいた評価手法R3(Relative Reusability Ranking)法 ソフトウェア部品の利用関係に着目 被利用数が多い部品は重要 重要な部品から利用されている部品もまた重要 5 本研究の目的 R3法に基づくソフトウェア部品の解析・検索システム SPARS(Software Product Archive, analysis and Retrieval System)の提案 プロトタイプを用いた適用実験を行う 提案手法が利用頻度を反映しているか 6 ソフトウェア部品 ソフトウェア開発者が再利用を行う単位をソフトウェ ア部品と呼ぶ ソースコードファイル、ドキュメントを部品として抽出 部品間には利用関係が存在する c4 c5 c1 c1 ' c2 c2 ' (a) 部品間の関係 7 c3 類似部品群(1) 実際に部品を抽出した場合、コピーした部品やコ ピーして一部変更した部品が多く存在する 類似した部品をまとめて類似部品群とする c4 c5 cC44 c1 c1 ' c1 c2 c2 ' (a) 部品間の関係 8 c3 c2 C2 cC55 c1 ' C1 c2 ' C3 c3 類似部品群(2) 所属する部品に利用関係があれば、部品群間にも その利用関係がある c4 c5 c1 c1 ' c2 c2 ' (a) 部品間の関係 9 C4 C5 C1 c3 C2 C3 (b) 部品群間の関係 相対的再利用性 再利用を用いてソフトウェア開発が繰り返されると、利用関 係は時間とともに変化していく 十分な時間が経過した状態で、部品の利用頻度に基づい て再利用性を評価 多数の部品間の利用関係から相対的に決まる 「相対的再利用性」 10 部品の分類 実際に部品を抽出した場合、コピーや類似した部品 が多数含まれる 類似部品群を相対的再利用性評価の対象とする 11 相対的再利用性評価値(1) 開発者は再利用性が高いと判断した部品群を利 用する 部品群を利用する→「再利用性が高い」という支持 投票をしたとみなす 多くの部品群から投票される部品群は再利用性評価が高い 再利用性評価が高い部品群から投票を受ける部品群は再利用 性評価が高い 部品群同士で互いに投票しあうことで評価値が循 環し相対的再利用性評価値が決まる 12 相対的再利用性評価値(2) 所属する部品群の評価値を部品の評価値とし、部 品を順位付けする 順位が高いほど再利用性が高い部品である 13 相対的再利用性評価値(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 14 システム構成 Java ソースファイル群 Raw Source Repository Analyzer Source Repository Query Parser Searcher Browser 15 Parser Ranker Relation Repository Raw Source Repository ファイルをそのままの形で保存する パッケージ名とクラス名をキーとして格納 クラスファイルそのもの 相対的再利用評価値 16 Parser Javaファイルの構文解析を行う 解析結果をSource Repositoryへ格納 検索時に利用する 利用関係の抽出 利用関係をRelation Repositoryへ格納 クラスの継承関係 インターフェースの実装関係 抽象クラスの実装関係 メソドの呼び出し関係 フィールドの参照関係 17 Parser (続き) 特徴メトリクスの計測 クラス名 フィールド名 メソド名 メソドのシグニチャ メソドの複雑度 18 Analyzer 類似ファイルを検索し、部品群化を行う 特徴メトリクスの一致している割合により判断 部品群化されたファイルの利用関係を統合する 19 Ranker 相対的利用評価値の計算を行う この計算はグラフの隣接行列の固有ベクトルを求め る計算に帰着される 計算した評価値はRaw Source Repositoryに格 納する 20 Searcher 検索キーを元に必要な部品を検索する 検索キー キーワード コード片 検索対象 コメント コード 21 Browser 検索キーと一致した部分とその検索キーを含むファイ ル名を表示する Rankerで求めた評価値の順番に表示 22 適用実験 プロトタイプを作成し、部品の順位が利用頻度を反 映しているかどうかの実験を行った 適用対象は、JDK 1.3.0 および10個のアプリケー ション(総部品数は6426) 23 適用結果 言語仕様上、直接的、間接的に利用しなければな らないクラスが上位を占めている 順位 1 2 3 3 66 67 68 69 70 71 72 24 部品名 java.lang.Object.java java.lang.Class.java java.io.EOFException.java ・・・ java.io.IOException.java .org.w3c.dom.Node.java java.lang.Throwable.java java.lang.StringBuffer.java javax.naming.NamingException.java java.lang.VirtualMachineError.java org.w3c.dom.NodeList.java java.io.InputStream.java 評価値 0.130842077 0.070779904 0.051143644 0.051143644 0.034599252 0.03047256 0.014695051 0.013914379 0.010906467 0.010547134 0.010030122 計算手法の有効性評価 非利用回数だけの順位はアプリケーションでよく利用 されている部品が上位にくる 順位 25 部品名 1 java.lang.Object.java 2 java.lang.Class.java 3 java.io.EOFException.java ・・・ 3 java.io.IOException.java 66 .org.w3c.dom.Node.java 67 java.lang.Throwable.java 68 java.lang.StringBuffer.java 69 javax.naming.NamingException.java 70 java.lang.VirtualMachineError.java 71 org.w3c.dom.NodeList.java 72 java.io.InputStream.java 評価値 順位 部品名 0.130842077 1 java.lang.Object.java 0.070779904 2 java.io.EOFException.java 0.051143644 … 2 java.io.IOException.java 0.051143644 65 java.util.Vector.java 0.034599252 66 java.lang.StringBuffer.java 0.03047256 67 java.util.HashMap.java 0.014695051 67 java.util.Hashtable.java 0.013914379 69 java.util.Enumeration.java 0.010906467 70 java.io.File.java 0.010547134 71 java.lang.Class.java 0.010030122 72 org.w3c.dom.Node.java 被利用回数 1201 1120 1120 545 458 448 448 444 326 297 285 部品群化の有効性評価 例外を扱うクラスがよく利用されている コピーされた部品の把握 順位 26 部品名 1 java.lang.Object.java 2 java.lang.Class.java 3 java.io.EOFException.java ・・・ 3 java.io.IOException.java 66 .org.w3c.dom.Node.java 67 java.lang.Throwable.java 68 java.lang.StringBuffer.java 69 javax.naming.NamingException.java 70 java.lang.VirtualMachineError.java 71 org.w3c.dom.NodeList.java 72 java.io.InputStream.java 評価値 0.130842077 0.070779904 0.051143644 0.051143644 0.034599252 0.03047256 0.014695051 0.013914379 0.010906467 0.010547134 0.010030122 順位 部品名 1 java.lang.Object.java 2 java.lang.Class.java 3 java.lang.Throwable.java 4 org.w3c.dom.Node.java 5 java.lang.Exception.java 6 java.lang.StringBuffer.java 7 java.io.IOException.java 8 java.lang.SecurityManager.java 9 java.io.InputStream.java 10 org.w3c.dom.NodeList.java 11 java.lang.reflect.Constructor.java 評価値 0.137758265 0.074010154 0.051009801 0.029174933 0.028564972 0.015180348 0.012814825 0.00959242 0.00916187 0.009015037 0.007984003 まとめ まとめ R3法に基づくソフトウェア部品の解析・検索システム SPARS(Software Product Archive, analysis and Retrieval System)の提案 提案手法が利用頻度を反映しているかプロトタイプを用 いた適用実験を行った 今後の課題 SPARSの実装 利用関係の種類による重み付けの検討 27 28 相対的再利用性評価値(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 29 0.200 v1 V v2 v 3 0 D 0 1 0 .5 0 .5 0 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 評価が循環しない場合 部品全体における票の重みの偏りを分析することで相対的 再利用性を評価している 票が全体に循環しなければ正しく評価できない 利用してない部品に対しては非常に低い重みの票を投票したとみなす 30
© Copyright 2025 ExpyDoc