ソフトウェア部品間の利用関係を用いた 再利用性評価手法の提案

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
利用実績に基づくソフトウェア部品検索システムSPARS-J
情報爆発A01支援班 マイサーチエンジン開発環境支援グループ 中村聡史, 大島裕明, 田中克己, 喜連川優
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
ソースコードの利用関係を用いた 再利用性評価手法の提案
コンポーネントランクを用いた ソフトウェアのクラス設計に関する 分析手法の提案
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
オントロジーを使用した プログラム開発支援システムの提案
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
Javaソフトウェア部品 解析・検索システムSPARS-Jの構築
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
Javaソースコード蓄積・ 検索システムSPARS-Jの概要
類似度を用いたプログラムの再利用性尺度の提案と実現
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
動的情報を利用したソフトウェア 部品評価手法
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
実行時情報に基づく OSカーネルのコンフィグ最小化
環境リスクマネジメントに関する 検索システム
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
コンポーネントランク法を用いたJavaクラス分類手法の提案
Javaを対象としたソフトウェア部品 検索システムSPARS-Jの実験的評価
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
ソフトウェア保守のための コードクローン情報検索ツール
コードクローンの理解支援を目的としたコードクローン周辺コードの解析
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
保守請負時を対象とした 労力見積のためのメトリクスの提案
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
メソッドの同時更新履歴を用いたクラスの機能別分類法
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
ソースコードの利用関係を用いた 再利用性評価手法の提案
動的情報を利用したソフトウェア 部品重要度評価手法の提案と評価
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
オブジェクト指向メトリクスを用いた 開発支援に関する研究 --- VC++とMFCを用いた開発を対象として ---
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
Presentation transcript:

ソフトウェア部品間の利用関係を用いた 再利用性評価手法の提案 横森 励士, 藤原 晃, 山本 哲男 松下 誠, 楠本 真二, 井上 克郎 大阪大学大学院基礎工学研究科 SS2002

背景 ソフトウェア開発効率を向上するための手法として、再利用が注目されている 再利用とは既存のソフトウェア部品を同一システム内、他のシステム内で用いること 部品が再利用に適しているか判断するために、再利用性を定量的に示すことが必要 まずはじめに研究の背景について説明します。 ソフトウェア開発効率を向上するための手法は 多数提案されておりますが、 その中でも再利用が注目されています。 再利用とは既存のソフトウェア部品を同一システム内、 他のシステム内で用いることとされています。 実際のソフトウェア開発において再利用を行うためには、 その部品が再利用に適しているかを判断するために 再利用性を定量的に示すことが必要です。 SS2002

利用実績に基づく再利用性を定量的に評価することが必要 従来の再利用性評価手法 従来の再利用性評価手法は、個々の部品の特性を評価 コードメトリクスを足し合わせて再利用性を評価[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). SS2002

実績に基づく評価手法 計量社会学における手法(Influence Weight[3]) 引用実績をもとに学術論文の重要度を評価 多くの論文に引用される論文は重要 重要な論文に引用される論文はまた重要 Googleで利用されている手法(Page Rank[4]) リンク実績をもとにWebページの重要度を評価 多くのページからリンクされるページは重要である 重要なページからリンクされるページはまた重要である ひっくり返す. 実績に基づく評価は、 計量社会学の分野においては以前から一般に用いられている手法です。 たとえば、学術論文の引用解析の分野においては、1970年代に ぷりんすきー らが、Influence Weightを提案しています。 この手法では、多くの論文に引用されるるんぶんは重要である、 重要な論文に引用される論文はまた重要である という考えに基づいて論文の重要度を評価しています。 また他の応用としては、 Webページ検索の分野において PageらがPageランクを提案しております。 この手法では、多くのページからリンクされるページは重要である、 重要なページからリンクされるページはまた重要である という考えに基づいて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://www-db.stanford.edu/~backrub/pageranksub.ps SS2002

本研究の目的 利用実績に基づく再利用性の定量的な評価 ソフトウェア部品の集合の中で実際にどれくらい利用 複数のソフトウェアシステムをソフトウェア部品の集合に分解し利用実績に基づいて各部品の再利用性を評価する ソフトウェア部品の集合の中で実際にどれくらい利用 されたかに関する定量的な指標を得ることができる →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

本研究の内容 利用実績に基づくソフトウェア部品の再利用性評価 提案手法による再利用性評価システムの実現 R3法の提案 提案手法による再利用性評価システムの実現 Javaソースコードを対象としたR3-systemの実現 Javaソースコードに対するR3-systemの適用実験 提案手法が利用実績を反映しているか ソフトウェア部品検索への応用 R3-systemを検索の順位付けに用いる →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

本研究の内容 利用実績に基づくソフトウェア部品の再利用性評価 提案手法による再利用性評価システムの実現 R3法の提案 提案手法による再利用性評価システムの実現 Javaソースコードを対象としたR3-systemの実現 Javaソースコードに対するR3-systemの適用実験 提案手法が利用実績を反映しているか ソフトウェア部品検索への応用 R3-systemを検索の順位付けに用いる →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

ソフトウェア部品 開発者が開発を行う単位をソフトウェア部品と呼ぶ 部品間には利用関係が存在する 部品の例:ソースコードファイル、ドキュメント ソースコード間の利用関係の例: 継承、メソッド呼び出し c4 c5 ソフトウェア開発者が再利用を行う単位をソフトウェア部品 あるいは単に部品と呼びます。 たとえば、ソースコードファイルやドキュメントを部品として抽出します。 また部品間には、利用する、されるという利用関係が存在します。 図を用いて説明します。 四角は部品をあらわし、 矢印は利用関係を表します。 この図では、 c2はc1を利用し、c1はc4を利用しています。 c1 c1' c2 c2' c3 (a) 部品間の関係 SS2002

類似部品群(1) 多数の部品が存在する場合,コピーした部品やコピーして一部変更した部品が多く存在する 類似した部品をまとめて類似部品群とする コピーした部品間の関係をグループ化により表現 c4 c5 c4 c1 c1' c2 c2' c5 c3 C1 C2 C3 C4 C5 実際に部品を抽出した場合、 コピーした部品やコピーして一部変更した部品が多く存在します。 そこで、類似した部品をまとめて類似部品群とします。 以後類似部品群を単に部品ぐんと呼びます。 図Aでは、c1とc1プライム、 c2とc2プライムは類似した部品です。 また、c3すりー、c4ふぉー、c5ふぁいぶは類似した部品がありません。 このとき、 → c1とc1プライム、c2とc2プライムをまとめて部品群 ラージc1、ラージc2としてまとめます。 c3すりーc4ふぉーc5ふぁいぶは1つの部品を要素とする部品群として扱います。 c1 c1' c2 c2' c3 (a) 部品間の関係 SS2002

類似部品群(2) 類似部品群間の利用関係 所属する部品間の利用関係の足し合わせ 部品群をまたぐような利用関係が1つでも存在すれば、 その部品群間にも利用関係があると定義 c4 c5 C4 C5 また、所属する部品どうしに利用関係が部品群にも 利用関係があるとします。 (下のほうの矢印さす) 図では、c1およびc1プライムを利用するという関係は → 部品群ラージc1を利用するという関係に、 c1およびc1プライムが利用するという関係は 部品群らーじc1を利用するという関係に それぞれまとめます。 次に、提案する再利用性評価手法について説明します。 (b) 部品群間の関係 c1 c1' C1 c2 c2' c3 C2 C3 (a) 部品間の関係 SS2002

再利用を用いた開発 再利用を用いた開発では 開発者は再利用性が高いと判断した部品を再利用 既存の部品をコピーして利用 ライブラリとして利用 ソフトウェア開発が繰り返されると、時間とともにソフトウェアシステムが追加されていき,利用関係が変化していく 十分な時間が経過すると利用関係は収束すると仮定 開発者は、再利用性が高いと判断した部品群を利用すると考えられます。 そこで、部品群を利用するという行為を 再利用性が高いという支持投票をしたとみなします。 このとき、多くの部品から投票される部品は再利用性評価が高い、 再利用性評価が高い部品から投票を受ける部品は再利用性評価が高い という2つの考えに基づいて、 部品群同士で互いに投票しあうことで評価値が循環し、 相対的再利用性評価値がきまります。 複数のソフトウェアシステムから構成される 利用関係が収束したソフトウェア部品の集合を対象に 利用実績に基づいた再利用性を評価 SS2002

利用実績に基づいた再利用性の評価 再利用性評価値の計算 直接部品間の利用関係から求めるのではなく,グループ化を行った上で,類似部品群および類似部品群間の利用関係から計算 コピーした部品や類似した部品が多数含まれるため 部品の再利用性評価値 各部品が所属する類似部品群の評価値 同一部品群に属する部品は同一評価値 実際に部品を抽出した場合、コピーや類似した部品が 多数含まれております。 そこで本研究では、類似部品群を 相対的再利用性評価の対象とします。 SS2002

多数の部品間の利用関係から相対的に決まる 利用実績に基づいた再利用性評価値の計算 再利用性評価値として各部品群に適当な初期値を与える 部品群間の利用関係の重みをそれぞれ計算 利用している側の部品の評価値からの分配という形で決定される 利用している側の部品の評価値が高いと利用関係の重みも高い 2で求めた部品群間の利用関係の重みから部品群の再利用性評価値を計算し,新たに定義しなおす. 部品の再利用性評価値はその部品への利用関係の重みの和 たくさんの部品から利用される部品の評価値は高くなる 収束するまで2,3を繰り返す 再利用を用いたソフトウェア開発が繰り返されると 利用関係は時間とともに変化していきます。 本研究では、十分な時間が経過した状態で、部品の利用実績に基づいて 再利用性を評価します。 → この再利用性は、 多数の部品間の利用関係から相対的に決まるため、 従来手法の静的な再利用性と区別して 「相対的再利用性」と呼びます。 多数の部品間の利用関係から相対的に決まる 「相対的再利用性」 SS2002

相対的再利用性による評価 相対的再利用性評価値を元に部品を順位付け ソフトウェア部品の集合に対して, 再利用性評価値の絶対値自身にはさほど意味がない 相対的な順位をもとに再利用性を評価 ソフトウェア部品の集合に対して, 部品群へのグループ化を行った上で, 相対的再利用性を計算して 順位付けによって評価を行う  手法を「Relative Reusability Ranking」法(R3法)と呼ぶ 実際に部品を抽出した場合、コピーや類似した部品が 多数含まれております。 そこで本研究では、類似部品群を 相対的再利用性評価の対象とします。 SS2002

相対的再利用性評価値の計算例 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 v1 C2 v2 C3 v3 C1×50% C2×100% C3×100% C1 0.333 C2 C3 C1×50% C2×100% C3×100% C1 v1 C2 v2 C3 v3 C1 0.400 C2 0.200 C3 C1 C2 C3 0.167 0.333 C1 0.333 C2 0.167 C3 0.500 C1 C2 C3 0.167 0.500 C1 0.417 C2 0.167 C3 C1 0.500 C2 0.167 C3 0.334 C1 C2 C3 0.250 0.167 0.334 C1 C2 C3 0.167 0.250 0.417 C1 0.334 C2 0.250 C3 0.417 具体的に評価値が決まる様子を図をもちいて説明します。 (はじめの図) この図では、部品群C1はC2、C3を利用し、 C2はC3を、C3はC1をそれぞれ利用しています。 各部品群の評価値をv1、v2、v3とします。 (クリック1) 各部品は、自分の評価値を票の重みとして、 利用する部品に対して配分します。 C1はC2とC3を利用しているので、自分の評価値v1を C2とC3に半分ずつ配分します。 C2はC3だけを利用しているので、C3にすべての評価値を配分します。 同様にC3もC1のみを利用しているので、C1にすべての評価値を配分します。 (クリック2) 次に、評価値の合計が1になるように、 各部品の初期値を決めます。 部品数は3ですから、各部品に0.333を与えます。 ここから、評価値の投票を繰り返します。 (くりっく3) このように部品の重みが投票の重みになります。 各部品の評価値は、獲得した票の重みの合計とし、 (くりっく4) このようになります。 これを繰り返すと、 (くりっく連打) このように各評価値が 0.4、0.2、0.4 という状態に収束します。 この収束した値を部品群の相対的再利用性評価値とします。 この計算はグラフの隣接行列の固有ベクトルを求める計算に帰着されます。 SS2002

相対的再利用性評価値計算の補正 利用関係を投票とみなして,票の重みの偏りを分析することで相対的再利用性を評価している 票が全体に循環せず正しく評価できない場合がある 利用してない部品に対しても非常に低い重みの票を投票したとみなす 本提案手法では、部品全体における票の重みの偏りを 分析することで 相対的再利用性を評価しております。 (クリック) したがって、票が全体に循環しなければ正しく評価できません。 図では、この部分で票がとどまってしまうため、 評価値が全体に循環しません。 そこで、利用していない部品には非常に低い重みの投票をしたとみなします。 図の破線の矢印は、非常に低い重みの投票を表します。 このように全体に矢印を補うことで、評価を循環させます。 次に、提案する手法を用いてJavaソースコードを評価するシステムについて説明します。 この部品の評価値が0となり, 部品の利用関係を反映出来ない この部品からの利用関係を 評価値に反映 SS2002

本研究の内容 利用実績に基づくソフトウェア部品の再利用性評価 提案手法による再利用性評価システムの実現 R3法の提案 提案手法による再利用性評価システムの実現 Javaソースコードを対象としたR3-systemの実現 Javaソースコードに対するR3-systemの適用実験 提案手法が利用実績を反映しているか ソフトウェア部品検索への応用 R3-systemを検索の順位付けに用いる →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

Javaへの適用 R3法をもとにR3-SystemをJavaを対象として実現 部品の単位 部品間の利用関係 ソースコードファイル(クラス) Javaは原則として一つのファイルに一つのクラスを記述 部品間の利用関係 継承、インターフェイスの実装、メソッド呼び出し 類似部品群化への指標にはSlineを用いる[5] 2つのソースコード間で一致する行の割合 SMMT(Similarity Metrics Measuring Tool)を用いて計測 提案手法をJavaに適用するため、次のように実装します。 Javaはオブジェクト指向言語ですのでクラス単位で再利用しやすく、 1つのクラスは1つのソースファイルにすることになっております。 そこでソースコードファイルを部品とします。 また類似度には 山本らが提案するSlineを用います。 Slineは2つのソースコード間で一致する行数の割合です。 また山本らの開発したSMMTというを用いてSlineを計測します。 またクラスの継承、インターフェイスの実装、メソッド呼出を 部品間の利用関係とします。 [5]山本, 松下, 神谷, 井上:``ソフトウェアシステムの類似度とその計測ツールSMMT'', 電子情報通信学会論文誌 D-I. SS2002

R3-Systemの構成図 Java ファイル (N個) SMMT Java ファイル (N個) SMMT Java ファイル (N個) ファイル間の類似度 (N×N個) 各部品の所属情報 (N個) 部品間の利用関係情報 部品群間の利用関係情報 各部品群の評価値 (M個) Java ファイル (N個) SMMT ファイル間の関係 抽出部 クラスタ分析 ツール 部品群間の関係 順位変換部 相対的再利用性 計算部 N個のファイルの順位 ファイル間の類似度 (N×N個) 各部品の所属情報 (N個) 部品間の利用関係情報 部品群間の利用関係情報 各部品群の評価値 (M個) Java ファイル (N個) SMMT ファイル間の関係 抽出部 クラスタ分析 ツール 部品群間の関係 順位変換部 相対的再利用性 計算部 N個のファイルの順位 Java ファイル (N個) Java ファイル (N個) SMMT SMMT ファイル間の関係 抽出部 ファイル間の関係 抽出部 ファイル間の類似度 (N×N個) ファイル間の類似度 (N×N個) 部品間の利用関係情報 部品間の利用関係情報 クラスタ分析 ツール クラスタ分析 ツール 部品群間の関係 抽出部 部品群間の関係 抽出部 各部品の所属情報 (N個) 各部品の所属情報 (N個) 各部品の所属情報 (N個) 各部品の所属情報 (N個) 提案するアールキューブ法に基づいて部品の 再利用性評価を行うシステム、アールキューブシステムの構成図です。 Javaファイルを入力として、 まずファイル間の関係の抽出と 類似した部品の分類を行います。 次に部品群間の関係を抽出し、 部品群の相対的再利用性評価値を計算します。 最後に部品群の順位を 各ファイルの順位として出力します。 部品群間の利用関係情報 部品群間の利用関係情報 順位変換部 順位変換部 相対的再利用性 計算部 相対的再利用性 計算部 各部品群の評価値 (M個) 各部品群の評価値 (M個) N個のファイルの順位 N個のファイルの順位 SS2002

本研究の内容 利用実績に基づくソフトウェア部品の再利用性評価 提案手法による再利用性評価システムの実現 R3法の提案 提案手法による再利用性評価システムの実現 Javaソースコードを対象としたR3-systemの実現 Javaソースコードに対するR3-systemの適用実験 提案手法が利用実績を反映しているか ソフトウェア部品検索への応用 R3-systemを検索の順位付けに用いる →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

適用例(1):JDKへの適用 JDK(Java Development Kit)1.3.0のソースコードへ適用 規模:1877 files(クラス), 18.4MB 言語仕様上、直接的、間接的に利用しなければならないクラスや入出力に関するクラスが上位を独占 この評価システムをJavaソースコードに対して適用するシステムを実装し、 2つの適用実験を行いました。 1つ目の適用実験として、 JDK(Java Development Kit) 1.3.0のソースコードへ適用しました。 JDKはJavaの基本パッケージであり、 Javaで開発を行う際には必ず使用します。 ファイル数は1877で大きさはおよそ18メガです。 適用結果の上位10位の部品を表に示します。 全体として、Javaの言語仕様上、直接的、間接的に利用しなければ ならないクラスが上位を占めてます。 たとえばObjectクラスはすべてのクラスから利用されることになっているため、 1位になっています。 SS2002

適用例(2):研究室内ソースコードへの適用 研究室内で作成したツールと、使用したパッケージのソースコードへ適用(582 files, 6.1MB) 同一部品群に含まれる部品は同一評価値 作成したツールより使用パッケージの方が評価が高い また、 2つめの適用実験として、井上研究室で過去にJavaで作成したツールと その中で用いているパッケージを適用しました。 ファイル数は582、大きさはおよそ6めがでした。 (クリック) 類似した部品をまとめて扱っているため、類似した部品は同じ評価値を持っています。 2位と8位のクラスは、それぞれほぼ内容が同じなので同じ部品群となっています。 (くりっく) 全体として研究室で作成したツール自身より、使用されている パッケージの方が高く評価される傾向がありました。 10位のクラスは研究室で作成されたもので、 1から9位までは使用したパッケージです。 これらの結果から、本手法による評価値が実際の利用実績を 反映していることが示されています。 SS2002

実際の利用実績の傾向を反映することができている 考察 適用例における結果 利用されなくてはならないクラスや一般的によく利用されるクラスが上位に 利用されるライブラリのほうが上位に現れやすい 相対的再利用性評価値による順位づけは, 実際の利用実績の傾向を反映することができている SS2002

本研究の内容 利用実績に基づくソフトウェア部品の再利用性評価 提案手法による再利用性評価システムの実現 R3法の提案 提案手法による再利用性評価システムの実現 Javaソースコードを対象としたR3-systemの実現 Javaソースコードに対するR3-systemの適用実験 提案手法が利用実績を反映しているか ソフトウェア部品検索への応用 R3-systemを検索の順位付けに用いることで,部品の取得が容易に →本研究では、 利用実績に基づくソフトウェア部品の再利用性評価手法を提案します。 そして提案手法に夜再利用性評価システムを実装し、 Javaソースコードを対象として適用実験を行い、 提案する手法が利用実績を反映しているかどうかを検証します。 次に、ソフトウェア開発における再利用をモデル化します。→ SS2002

ソフトウェア部品検索への応用 R3法による順位付けをソフトウェア部品検索へ応用 インターネットを通じてソフトウェア部品を収集 検索エンジンを用いて検索 検索結果を相対的再利用性で順位付けして表示 R3-System インターネット 開発者は再利用実績の高い部品を 手軽に取得できる 本提案手法の手法の応用として ソフトウェア部品検索への応用が考えられます。 (各部を指しながら) インターネットを通じて多数のソフトウェア部品を収集し、 提案するアールキューブ法により部品をあらかじめ順位付けしておきます。 そして、開発者が再利用したい部品を検索する際、 検索キーでの検索結果を相対的再利用性で順位付けして 表示します。 これにより、開発者は再利用実績の高い部品を容易に入手し、 再利用することができます。 順位付け 部品の収集 部品リポジトリ 部品検索 エンジン 検索キー 検索結果 SS2002

ソフトウェア部品検索への適用実験 ソフトウェア部品検索を想定し,R3法を用いた検索結果の順位付けが妥当であるかを検証 実験内容 JDKおよびXMLを利用しているアプリケーションに対する検索 9アプリケーション(7171ファイル) getNodetype というキーで検索 DOM 内のノードの種類に関する情報を得るメソッド 検索の手順 7171ファイルをR3法で順位付け Grepで検索 コメントのみに現れるクラスを検索結果から削除 検索の結果,181クラスを抽出 SS2002

実験結果 DOM内のノード操作に関するクラスが上位に 上位のクラスでは getNodetype を定義しているクラスが多い 一般的な利用例が上位に (Element 操作、スタイルシート解析) 特殊な利用例は下位に集まりやすい (例:XMLで記述された内容を解釈して実行するためのクラス) SS2002

検索に関する考察 全体的な傾向 部品検索の順位付けにR3法を用いることで,部品の定義に関する情報や,一般的な利用法などを容易に取得できる 上位には定義クラスや一般的な利用例が多く存在 一般的な利用例は上位にも下位にも満遍なく存在している 特殊な利用例は下位に多い あまり使われていないクラスが下位になっている 部品検索の順位付けにR3法を用いることで,部品の定義に関する情報や,一般的な利用法などを容易に取得できる SS2002

まとめと今後の課題 まとめ 今後の課題 類似部品群間の利用関係から再利用性を評価する手法を提案した 提案する手法に基づいて再利用性評価を行うシステムを開発し、Javaソースコードを対象に適用した 適用結果から、提案する評価手法が利用実績を反映していることが示された 今後の課題 より多くの部品に対しての適用 解析対象をより大きく取ることで,より実績を反映した結果が期待できる ソフトウェア部品検索システムの実現 最後にまとめます。 SS2002

実行環境 推奨環境 実行に必要なプログラム CPU: PIII 1GHz 以上 Memory: 1GB 以上 SMMT(CCfinder) の都合上,ファイルパスに日本語は使えない 実行に必要なプログラム Java 2 SDK Ver. 1.3 Ver1.4リリース当初に試したところ,うまく動かなかった Active Perl Ver. 5.6.1.631 SMMTを利用する際に必要 Cygwin 最新版 Diff コマンドを実行するために必要 インストール時にネットワークに接続する必要あり 単体のDiff があれば必要ないかも 最後にまとめます。 SS2002

実験その1 6262ファイルに対する解析 実行環境 クラスタ分析での閾値を変えながら解析 PentiumIII 1Ghz Memory 2GB クラスタ分析での閾値を変えながら解析 構文解析時間は約5分 file間の関係の抽出は約20分 クラスタ分析に要する時間は閾値が低くなると長くなる 行列計算は3分~7分 SS2002

実験その1:部品群化に関する考察(1/5) 6262ファイルに対する解析 クラスタ分析での閾値を変えながら解析 Spearmanの順位相関 全ての組み合わせで0.93以上の非常に高い値 大局的に見た場合、クラスタ分析での閾値を変える事による影響はあまりない 一部のクラスでは、閾値を変える事で順位が変わっている SS2002

実験その1:部品群化に関する考察(2/5) 閾値を1.0→0.8にしたときの変化 クラスタ数は5524→5039 グループ化の特徴 同一内容のファイルが多いため1.0でもグループ化されている グループ化の特徴 同じ人が同じ目的で作ったものクラス同士 (違う人が作ると、あまりくっつかない) ほかのクラスを呼び出すだけのメインクラス的クラス コードクローン 例外やエラー処理 ・ ログ出力部 インタフェース部 構文解析部(クラスの名前を変えて一部変更しても追跡できるようになり再利用して伝播している状態がよくわかるようになった) SS2002

実験その1:部品群化に関する考察(3/5) 閾値を0.8→0.5にしたときの変化 クラスタ数は5039→4693 グループ化の特徴 これ以上閾値を下げても、あまりクラスタ数は減らない グループ化の特徴 同じ人が同じ目的で作ったクラスはさらにくっつきやすくなる 違う人が作ると、別クラスタになりやすい 同じような単純な構造のやつはくっつく 周りの値が変わることによる降格もある SS2002

実験その1:部品群化に関する考察(4/5) 閾値を下げる事で順位が大幅に変わる場合 閾値が高かったときに順位が高かったものと同じクラスタに入ったために,引き上げられた場合が多い 一番順位が高いものが似た例を拾い上げている 閾値が高い時には順位が低かったクラス同士が、閾値を下げる事でくっついて順位を上げる場合もある 独自に定義したリストや表などのデータ構造クラス サーバテストなどの設定情報を持つクラス 例外クラス 解析対象が大規模になれば、もっと有効な例があげられそう SS2002

実験その1:部品群化に関する考察(5/5) まとめ 全般的に同じ人が同じ目的で作ったファイルは同一クラスタになりやすい クローンができやすいため 違う人が作ると、別クラスタになりやすい クラス作成時における作法が違うから ただ、単純な処理内容の場合は同一クラスタになる場合も 再利用して少し変更しただけのファイルが同一クラスタ内に収まるので、クラスタ分析を用いたグループ化は必要 なければ、クラス名の変更に対応できない クラスタ分析での閾値を極端に下げても,時間がかかるだけであまり意味がない SS2002

実験その2(1/2) 6262ファイルに対して,グラフ上での遷移確率を変えて解析 利用関係に基づいた投票(d)と 全部にいきわたる低い重みの投票(1- d )のバランスを調整 パラメータ d により全体の順位に影響があるかどうかを実験 dは0, 0.05, 0.15, 0.25, 0.35, ………. , 0.75, 0.85, 0.95 , 1.00 d が0だと,全部にいきわたる低い重みの投票のみ d が1だと, 低い重みの投票をしない それぞれの場合に対して各ソースファイルの順位を求め, Spearmanの順位相関を用いて評価 SS2002

実験その2 (2/2) グラフ上での遷移確率 d を変えた場合の影響 利用してない部品に対して非常に低い重みの票を投票する仕組みは必要 d が0.05~1 の場合, それぞれの結果の順位相関は0.97以上 非常に高い dが1の場合, 行列計算が収束するまで時間がかかる(約10倍) うまく値が循環できていない d = 0 と d ≠ 0 の結果間の順位相関は低い d = 0 の場合, 全てのクラスの評価値が同じになるため,その結果には意味がない 利用してない部品に対して非常に低い重みの票を投票する仕組みは必要 利用関係を表すグラフが強連結となることで,行列計算が収束しやすくなる SS2002

実験その3 (1/2) XMLを利用しているJavaアプリケーション (7171ファイル)に対する解析 構文解析時間は約5分 ファイル間の関係の抽出は約21分 クラスタリングにかかる時間 40分(閾値1)~2時間(閾値0.5)~28時間(閾値0.1) 6262ファイルのときと比較した場合,同じファイルが少ないため必要な時間は少し減少している 行列計算は7分~10分 SS2002

実験その3 (2/2) 解析結果の考察 異なるXMLの構文解析クラスが同一クラスタになる場合を確認 0.5で半分くらいが一つのクラスタに この部分には、派生品がいくつか存在している それ以外は、コピーであることが容易に推測できるクラス以外で他人間のクラス間のくっつきはあまりない 同一アプリ内のクラス同士は同じクラスタに入りやすい 同じ人が作っている事が多いから 同じような処理内容および記述になりやすい SS2002

実験その3:検索の例(DTD) XMLを利用しているアプリケーション (7171ファイル)に対する解析 DTDというクエリーで検索 Grep を用いて検出できたものの中で, DTDという単語がコメントのみに現れるクラスを削除 128クラスを抽出 相対的再利用性評価値 でソート SS2002

実験その3:検索の結果(DTD) DTDの実現に関するクラスが上位に多い 字句解析クラスが1位 インタフェースクラスや抽象クラスが上位も多い(3,5,7,8位) Drop-Target-Drag-Event など関係のないクラスも(4位) SS2002

実験その3:検索結果の考察(DTD) 利用方法として一般的なものは比較的上位(10%~25%)に存在している 構文解析関係のクラスは10位~30位に現れている あまり一般的でない利用例は,下位に集まりやすい XMLで記述されたモデルの生成クラス ログファイルをXML形式で記述するためのクラス 最上位は大きいアプリケーション内に現れるクラス Enhydra は2388クラス まだ解析対象の規模がそれほど大きくないため、大規模アプリケーションに有利に出ている もっと解析対象を広げる事で、違った結果が出ると思われる SS2002

実験その3:検索の例(getNodetype) XMLを利用しているアプリケーション (7171ファイル)に対する解析 getNodetype というクエリーで検索 DOM 内のノードの種類に関する情報を得る Grep を用いて検出できたものの中で, コメントのみに現れるクラスを削除 181クラスを抽出 相対的再利用性評価値 でソート SS2002

実験その3:検索の結果(getNodetype) DOM内のノード操作に関するクラスが上位に 上位のクラスでは getNodetype を定義しているクラスが多い Elementの操作や、スタイルシートの解析に関するクラスも上位に 特殊な利用例は下位に集まりやすい (例:XMLで記述された実行内容を実行するためのクラス) SS2002

実験その3:検索結果の考察(getNodetype) クラスタリングの閾値0.8と0.5の2種類で比較したところ、検索結果はほぼ同じ 半分以上の要素の順位は変わらず 順位の違いが2以下の要素は全体の3/4 最大は25 Spearmanの順位相関も0.997と高い値 SS2002

検索に関する考察 上位には定義に関するクラスや利用方法として一般的なものが多く存在 特殊な利用例は下位に多い 一般的な利用例は上位にも下位にも満遍なく存在している あまり使われていないクラスが下位になっている 相対的再利用性評価値による順位づけは,実際の利用実績の傾向を反映している 再利用を目的とした検索にも応用できると考えられる 解析対象をより大きく取ることで,よりいい結果が得られる事が期待できる SS2002

相対的再利用性評価値の計算例(2) 相対的再利用性評価値を求める計算は行列の固有ベクトルを求める計算に帰着される C1 C2 C3 C1 v1 C2 v2 C3 v3 50% 100% C1 0.400 C2 0.200 C3 V = D・V この評価値を求める計算は、行列の固有値をもとめる計算に帰着されます。 先ほどの図において、 各部品群の評価値をこのようにベクトルVとします。 また、この重みつきの投票関係を行列Dで表します。 (さしながら、) たとえばC1からC2へ投票する重みを 1行2列の成分としています。 定常状態に収束すれば V=DtVという関係を満たします。 tは転置を表します。 この式から、評価値ベクトルVはDtにおける固有値らむだ=1の固有ベクトルです。 (クリック) 先ほどの収束状態においても、 このように式を満たしていることがわかります。 λ=1(絶対値最大)の固有ベクトル SS2002