Presentation is loading. Please wait.

Presentation is loading. Please wait.

Javaソフトウェア部品 解析・検索システムSPARS-Jの構築

Similar presentations


Presentation on theme: "Javaソフトウェア部品 解析・検索システムSPARS-Jの構築"— Presentation transcript:

1 Javaソフトウェア部品 解析・検索システムSPARS-Jの構築
○西 秀雄**,梅森 文彰**,横森 励士**,山本 哲男* 松下 誠**,楠本 真二**,井上 克郎** *独立行政法人科学技術振興機構 **大阪大学情報科学研究科

2 発表内容 研究の背景と目的 SPARS-J 適用例 まとめと今後の課題 概要 システム構成 検索結果の順位付け 各部の説明 部品解析部
部品検索部 データ表示部 適用例 まとめと今後の課題 発表の流れはこのようになっております. まず,研究の背景と目的について説明します.

3 背景 ソフトウェア部品の再利用 問題点 既存の部品(コード片やドキュメント)を他のシステム内で用いること
生産性と品質を改善し,開発効率が向上する 問題点 開発現場では効果的な再利用が行われていない 原因:部品ライブラリに関する開発者の知識不足 再利用できる部品の存在や,部品の使い方を知らない ライブラリの部品情報を整理して,必要に応じて 容易に参照できるようにしたい 近年注目されているソフトウェア工学手法の一つにソフトウェア部品の再利用があります。同様の機能をもつ部品を効果的に再利用することで、生産性と品質を改善し、開発効率が向上すると言われています。 しかし、現在の開発現場では再利用が効果的に行われているとは言いがたい状況です。その原因として、過去開発された部品ライブラリに関する開発者の知識不足が挙げられます。たとえば、新規に開発しようとしている部品がライブラリに存在することを知らない場合や、存在を知っていても、部品の適切な利用方法がわかりにくくスムーズに再利用できない場合があります。 そこで,ライブラリの部品情報を整理して,必要に応じて容易に参照できれば,再利用を効果的に行うことができると考えられます。

4 目的 部品情報を自動的に管理し,要求に応じて最適な部品を提供する再利用支援システムの構築 再利用支援の対象とするライブラリ
閉じたライブラリ 企業内で開発され,外部に公開しない小規模な部品集合 将来に渡って再利用する部品の管理 開かれたライブラリ Webなどを通じて,外部に公開された大規模な部品集合 要求に応じた最適な部品の検索 総合的な再利用支援を目指す 本研究では,再利用支援を目的として,部品情報を自動的に管理し,要求に応じて最適な部品を提供するシステムの構築を行います. 再利用支援の対象とするライブラリは,企業内で開発され外部に公開しない小規模な部品集合である閉じたライブラリと,Webなどを通じて,外部に公開された大規模な部品集合である開かれたライブラリです.閉じたライブラリでの再利用支援は,開発の途上で生産された高品質な部品を管理するという側面が強くなります.開かれたライブラリでの再利用支援は,大量に存在する部品から要求に応じた部品を検索するという側面が強くなります. 本研究では,閉じたライブラリ,開かれたライブラリに両者に対応した,総合的な再利用支援を行います.

5 発表内容 研究の背景と目的 SPARS-J 適用例 まとめと今後の課題 概要 システム構成 検索結果の順位付け 各部の説明 部品解析部
部品検索部 データ表示部 適用例 まとめと今後の課題 次に我々が構築した再利用支援システムSPARS-Jについて説明します. 概要を述べ,システム構成を説明します. その後,検索結果の順位付けについて軽く触れてから, 各処理部の説明を行います.

6 SPARS-J (Software Product Archive,analysis and Retrieval System for Java)
大量の部品から自動的に情報を抽出する解析システム 検索要求に対し,最適な部品と情報を提供する検索システム 部品:1クラスまたは1インタフェースのソースコード 特徴 キーワード型の検索 検索結果の表示順位の工夫 キーワードの出現頻度,部品の利用実績 再利用時に役立つ情報の提示 部品の使用例,クラス階層構造 SPARS-JはJavaを対象とした部品解析・検索システムです。 大量の部品から自動的に情報を抽出する解析システムと,検索要求に対して最適と判断された部品とその情報を提供する検索システムからなります.SPARS-Jでは,クラスのソースコードを部品として扱います. 特徴として、キーワード型の検索を行い、ヒットした部品をキーワードの出現頻度や、部品の利用実績を考慮して順位付けし、最適と判断された部品を上位に表示します。また、部品と同時に、使用例や、クラス階層構造などの再利用に役立つ部品の詳細情報の提供を行います。

7 システム構成 データ表示部 部品解析部 部品検索部 データベース(DB) ユーザ ライブラリ (Javaファイル群) 検索結果 ファイル
検索要求 データ表示部 部品解析部 ・ファイルから部品を抽出 ・部品の解析情報をDBに格納 ・DBの情報を参照して部品群化や 利用実績による順位付けを行う ・検索要求を受け取り検索部に引き渡す ・検索結果の表示  検索要求 該当する部品 解析情報 部品検索部 システム構成を図を用いて説明します.SPARS-Jは大きく分けて,部品解析部,データベース,部品検索部,データ表示部という四つの部分から成り立っています.図の赤い矢印は,解析時のデータの流れをあらわし,青い矢印は,検索時のデータの流れをあらわします. まず解析時の処理について詳しく説明していきます.ライブラリ中のJavaファイルを部品解析部に入力すると,部品解析部はファイルの解析を行い,部品の抽出や,解析情報が得られます.それらの情報を,データベースに格納します.データベースでは解析情報を部品と関連付けして格納します.また,検索時に用いるために,この情報を持つ部品はどれか,といった逆引きの表を作成して持ちます.データベースに格納した情報をもとに,部品解析部は,類似部品を部品群にまとめ,利用実績による順位付けを行います. 続いて検索時の処理について詳しく説明します.ユーザは自身が求める部品を探すために,データ表示部に対して検索要求を渡します.検索要求は部品検索部に引き渡され,部品検索部で要求にヒットする部品をデータベースから検索します.検索結果に対して,キーワードの出現頻度による順位付けを行い,利用実績による順位と統合することで,検索結果をよりユーザの要求に適した順位に並び替えます.そして,結果をデータ表示部に渡し,ユーザに検索結果として提供します. ・要求に合致する部品をDBから検索 ・検索結果をキーワードの出現頻度に より順位付け ・順位の統合 格納情報 データベース(DB) ・解析情報を部品と関連付けして格納 ・各情報から部品への逆引きの表を持つ 格納情報

8 検索結果の順位付けについて 順位付けの観点 1,2 ともに評価が高いものが上位になることが望ましい ユーザ要求と部品内容の適合度
キーワードの出現頻度にもとづく順位付け 部品の再利用性 部品の利用実績にもとづく順位付け 1,2 ともに評価が高いものが上位になることが望ましい 最終的に順位を統合して結果を表示する Keyword Rank(KR)法 Component Rank(CR)法 SPARS-Jの特徴のひとつである、順位付けについて後ほど詳しく述べますが、ここで簡単に触れておきます。順位付けを行うためには、なんらかの尺度を用いて部品の評価値を算出する必要があります。SPARS-Jでは二つの観点から部品を評価し順位付けしています。 ひとつはユーザ要求と部品内容の適合度です。どれほどすばらしい部品であっても、要求する部品が上位にこなければ意味がありません。もうひとつは、部品の再利用性です。要求にヒットする部品のうち、再利用しやすい部品が上位にくればユーザはスムーズにその部品を再利用することができます。 続いて,各部の説明に移ります.

9 部品解析部 Javaファイルから部品情報を抽出 解析時の処理 部品の切り出し 索引付け 利用関係の抽出 類似部品を部品群にまとめる
利用実績にもとづく部品の順位付け(CR法) 部品解析部では,以下のような処理を行います. そして得られた情報をデータベースに格納します. 各処理について詳しく見ていきます.

10 部品の切り出しと索引付け 部品の切り出し 索引付け ファイル中からクラスを見つけ出し部品として切り出す 部品から索引キーを抽出
ファイル中の位置情報 (開始行番号,終了行番号) 索引付け 部品から索引キーを抽出 索引キー:キーワードと字句の種類の組 予約語は抽出しない キーワードの出現頻度を種類別にカウント public final class Sort { /* quicksort */ private static void quicksort(…) { int pivot; quicksort(…); } キーワード 字句の種類 Sort クラス定義名 quicksort コメント メソッド定義名 pivot 変数名 メソッド呼び出し 1 2 索引キー 出現頻度

11 利用関係の抽出 クラス間の関係を意味解析で求める 利用関係から部品グラフを構築 辺のラベルに関係の種類が付与される Data Sort
継承 抽象クラスの実装 インタフェース実装 変数宣言の型 インスタンス生成 フィールド参照 メソッド呼び出し Data public class Test extend Data{ public static void main(…) { Sort.quicksort(super.array); } 利用関係の種類 継承 フィールド参照 Sort Test メソッド呼び出し 部品グラフ

12 類似部品 コピーした部品やコピーして一部変更した部品 類似部品をまとめて類似部品群とする
所属する部品に利用関係があれば,部品群間にもその利用関係がある c4 c5 c4 c1 c1' c2 c2' c5 c3 {c1, c1'} {c2, c2'} {c3} {c4} {c5} c1 実際に部品を抽出した場合、 コピーした部品やコピーして一部変更した部品が多く存在します。 そこで、類似した部品をまとめて類似部品群とします。 以後類似部品群を単に部品ぐんと呼びます。 図Aでは、c1とc1プライム、 c2とc2プライムは類似した部品です。 また、c3すりー、c4ふぉー、c5ふぁいぶは類似した部品がありません。 このとき、 c1とc1プライム、c2とc2プライムをまとめて部品群 ラージc1、ラージc2としてまとめます。 c3すりーc4ふぉーc5ふぁいぶは1つの部品を要素とする部品群として扱います。 c1' c2 c2' c3 部品間の関係(部品グラフ) 部品群間の関係(部品群グラフ)

13 類似部品群化 特徴メトリクスの一致している割合から類似の判断を行う 類似部品をまとめて,部品群グラフを生成する 計測するメトリクス値 複雑度
クラス内のメソッド数, サイクロマチック数(分岐数)etc ソフトウェア部品の構造的特徴を表す トークン構成 字句の種類ごとの出現数 ソフトウェア部品の表層的特徴を表す 類似部品をまとめて,部品群グラフを生成する

14 利用実績にもとづく順位付け Component Rank(CR)法 被利用回数が多い部品ほど,再利用しやすいと考えられる
使用例が多い 汎用的で,バグなどが含まれにくい 部品の利用実績を定量的に評価し,順位付けする 多くの部品から利用されている部品は重要である 重要な部品から利用されている部品もまた重要である 評価値(CR値)の意味 利用関係に沿って部品が参照されていくと仮定した場合の参照されやすさ

15 CR値の計算 部品群グラフをもとにした繰り返し計算 計算手順 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1 C2 C3 C1
各頂点に適当な重みを与える 重みの総和は1 各有向辺の重みを求める 頂点の重みを,出ていく辺で分配する 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 頂点の重みが収束するまで,2.3.を繰り返し計算する 収束した頂点の重みを,その頂点に対応する部品群のCR値とする 部品の評価値は属する部品群のCR値とする C1 0.500 C2 0.1665 C3 0.3335 C1 0.400 C2 0.200 C3 C1 C2 C3 0.1665 0.167 0.500 C1 0.333 C2 0.167 C3 0.500 C1 0.334 C2 0.333 C3 C1 0.334 C2 0.333 C3 v1×50% v2×100% v3×100% C1 C2 C3 0.167 0.333 われわれの研究グループが提案する、利用実績に基づく再利用性評価手法(Component Rank法)では、先に説明しました利用関係に着目し、その関係を抽出してグラフを作成します。 そして、各関係に重み付けし評価を行います。そのときの評価の方法として、非利用数が多い部品は重要である、また、重要な部品から利用されている部品も重要であるという方針で計算を行います。

16 部品検索部 データベースから部品を検索し,ヒットした部品を順位付けしてデータ表示部に渡す 検索部の処理 部品の検索
ユーザ要求と部品内容の適合度による順位付け 順位の統合 次に部品検索部の説明をおこないます.

17 部品の検索 検索キーの指定 全索引キーを検索し,検索キーとマッチする索引キーをもつ部品を検索結果とする 要求の内容を端的にあらわすキーワード
検索対象(字句の種類,パッケージ) 全索引キーを検索し,検索キーとマッチする索引キーをもつ部品を検索結果とする

18 ユーザ要求と部品内容の適合度による順位付け
Keyword Rank(KR)法 マッチした索引キーが,部品を特徴付けるものであれば,部品は要求と適合すると考えられる 索引キーの重みから適合度を評価し,順位付けする 重要な索引キー 部品に繰り返しあらわれる 希少で,特定の部品に偏ってあらわれる クラス定義名など,部品内容を象徴する字句種類の索引キー 各索引キーの重みの総和を評価値(KR値)として算出 テキスト文書検索システムで一般的に用いられるTF-IDF法

19 KR値の計算 マッチしたキーワード t の部品cにおける 重みwct を計算 各索引キーの重みの総和をKR値とする
TFi:種類 i のキーワード t の出現頻度 IDF:全部品数/ヒットした部品数 kwi:字句の種類 i の重み 各索引キーの重みの総和をKR値とする 字句の種類 重み クラス定義 200 インタフェース定義 50 メソッド定義 パッケージ インポートパッケージ 30 メソッド呼び出し 10 フィールド参照 変数の型 生成したクラス ローカル変数参照 1 コメント 文書コメント 行末コメント 文字列リテラル 字句の種類と重み

20 順位の統合 KRとCRの順位の統合を行う 統合手法 選挙のアルゴリズムとして知られるBordaの方法 SPARS-J
投票者が様々な観点から候補者を評価して順位をつける 順位を統合して,投票者が納得する最良の候補者を上位にする SPARS-J KRとCRから部品を評価して順位付けする 順位を統合して,ユーザ要求と適合し,かつ再利用しやすい部品を上位にする

21 Bordaの方法 投票者10人が候補者AからEの5人に投票 順位に対して割り当てた評価値をもとに順位付け
各投票者は候補者に対して順位をつける 順位に対して割り当てた評価値をもとに順位付け 1位=5点,2位=4点,…として点数の多い順に並べる A: =28点 B:38点 C:38点 D:22点 E:26点 1位 2位 3位 4位 5位 3人 A B C D E 2人 順位の統合 1位 3位 4位 5位 B C A D E

22 データ表示部 Webインタフェースを利用して,ユーザから検索要求を受け取り,検索結果を提供する データ表示部の処理
Microsoft Internet Exploreなど データ表示部の処理 検索要求の受け付け 順位付けした検索結果の表示 部品の詳細データ表示 再利用に有益な情報の提供 利用関係,クラス階層構造 次にデータ表示部の説明を行います.

23 検索要求受け付け画面

24 検索結果の表示

25 詳細データ表示(ソースコード)

26 詳細データ表示(類似部品群)

27 詳細データ表示(利用する部品)

28 詳細データ表示(利用される部品)

29 詳細データ表示(パッケージブラウザ)

30 発表内容 研究の背景と目的 SPARS-J 適用例 まとめと今後について 概要 システム構成 検索結果の順位付け 各部の説明 部品解析部
部品検索部 データ表示部 適用例 まとめと今後について 次に簡単な適用例について説明します.

31 適用例(1/2) Googleとの比較 GoogleはWebページ検索エンジンなので・・・
Webから得られた約15万の部品をSPARS-Jに登録 検索キー”calculator applet”と”chat server client”で検索した結果を比較 上位10件の検索結果が,要求と適合するかどうか判定した 適合条件:再利用しやすいソースコードがあるかどうか GoogleはWebページ検索エンジンなので・・・ 検索キーに”java source”を加える 結果のWebページから1リンクたどってもよい

32 適用例(2/2) 適用例1: 適用例2: SPARS-Jでは適合する部品が上位にきている ”calculator applet”
ヒット9件 適合する部品は全部で7件 適用例2: ”chat server client” ヒット69件 適合する部品は全部で57件 SPARS-Jでは適合する部品が上位にきている

33 まとめと今後の課題 Javaソフトウェア部品解析・検索システムSPARS-Jの構築 今後の課題 適用例では良好な結果が得られた
効果的な索引付け 協調フィルタリングによる精度の向上 順位付けに関する工夫 重み付けの検討 統合順位の求め方 システムの有効性評価 順位付けの検討 利用関係やパッケージブラウザの有効性


Download ppt "Javaソフトウェア部品 解析・検索システムSPARS-Jの構築"

Similar presentations


Ads by Google