動的情報を利用したソフトウェア 部品評価手法 藤井 将人 井上研究室 2003年2月18日 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 研究の背景 ソフトウェア開発効率を向上するための手法として,再利 用が注目されている 再利用 既存のソフトウェア部品を同一システム内や他のシステム内で用いること ソフトウェア部品 ソフトウェア開発者が再利用を行う単位 部品例:ソースコード,ドキュメント,・・・ 再利用を用いることで,生産性と品質を改善し,結果としてコス ト削減にもつながる 再利用を用いて開発を行うには・・・・ 部品選択のための基準(評価値)が必要 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 2 ソフトウェア部品評価手法 再利用を用いた開発モデル 開発者は重要であると判断した部品を再利用 被利用数が多い部品ほど重要である 利用実績から部品の評価値を評価: Component Rank法(CR法)* 被利用数の多い部品は重要 重要な部品から利用されている部品は重要 部品間の利用関係をもとに,部品の評価値を計算 よく利用される汎用性の高い部品の検索に有効 * Inoue et al: “Component Rank: Relative Significance Rank for Software Component Search ”, ICSE2003 (to appear). Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 3 再利用の問題点 再利用における問題点 どの部品を利用するか? 汎用性の高い部品は? どのように部品を利用するか? 「いつ」「どのように」に利用する? CR法によるソフトウェア部品評価手法 静的な利用関係解析より部品評価値を計算 「どのように部品を利用するか?」という情報を完全に 取得することができない Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 4 提案手法 動的情報を利用したソフトウェア部品評価手法 ソフトウェアを実行し,動的な利用関係を取得 どのように部品を利用するか? CR法を用いて,部品の評価値を求める どの部品を利用するか? 特定の“機能”を実装するために,重要となる部品の 検出 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 5 部品間の利用関係 ソフトウェア部品間には利用関係が存在 利用関係例 ソースコード:メソッド呼び出し,継承 ドキュメント:リンク,参考文献 部品グラフ(Component Graph) c4 頂点:ソフトウェア部品 有向辺:利用関係 利用関係の種類 静的な利用関係 動的な利用関係 c5 c1 c2 c3 部品グラフ例 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 6 動的利用関係 動的利用関係 ソフトウェア実行時に,実際に呼び出し関係が発生した部品間の 関係 動的利用関係解析 動的利用関係を抽出する解析手法 ソフトウェアを実行し,その実行履歴から利用関係を取得 C4 : C5 : C2 : C3 C2 C4 C1 C6 : : C3 C5 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 7 動的利用関係 動的利用関係 ソフトウェア実行時に,実際に呼び出し関係が発生した部品間の 関係 動的利用関係解析 動的利用関係を抽出する解析手法 ソフトウェアを実行し,その実行履歴から利用関係を取得 特徴 実行方法により利用関係が変化 開発者が再利用したい機能に注目できる 呼び出しの順序が取得できる Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 8 動的部品グラフの生成 動的利用関係 実行されるまで,どの部品が利用されるか特定できない 実行中,部品が呼び出されて初めて利用関係が生じる 利用される部品は利用する部品に依存する 動的部品グラフ 有向辺の向き:利用される部品→利用する部品 C2 : C3 C1 C4 : C5 : C2 C4 C6 : : C3 C5 c1 c4 c5 動的部品グラフ Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 9 Component Rank法の利用 利用実績を基に部品の評価値を求める 部品評価値計算方法 部品グラフの利用 計算手順 1. 各頂点に適当な重みを与える 頂点の重みの総和は1 C1 C2 v0.1665 0.167 0.200 1×50% 0.334 0.333 0.500 0.400 0.1665 0.333 0.167 0.200 v0.1665 0.167 0.200 1×50% v30.400 ×100% 0.333 0.500 2. 各有向辺の重みを求める 頂点の重みを,その頂点から出ていく辺で分配する 辺ごとに与えられた配分率を用いて計算 v20.200 ×100% 0.333 0.167 C3 0.3335 0.333 0.500 0.400 3. 各頂点の重みを再計算 頂点に入ってくる辺の重みの総和を,その頂点の重みとして再定義する 4. 頂点の重みが収束するまで,2.,3.を繰り返し計算する 5. 収束した頂点の重みを,その頂点に対応する部品の評価値として出力 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 10 システムの実装 ソフトウェア部品評価システム 対象ソフトウェア:Javaプログラム 部品 – クラス(ソースコード) 部品間の利用関係 – クラスの継承,インターフェースおよび抽象クラスの実装,メソッド呼び出し,フィールド参照 システムの構成 利用関係解析部 ソフトウェア実行の際に,実行履歴を保存し,利用関係を出力 部品グラフ生成部 利用関係より部品グラフを生成 部品評価値計算部 CR法に基づいて,部品の評価値を計算 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 11 システムの構成 CA ・・・ 08CA ・・・・・・ 00 08 ・・・・・・ Component Rank class files Class Rank A B ・・ 00 ・・・ 利用関係解析部 Profiler (JVMDI) JavaVM ・・ ・・ ・・ Component Graph - A B ・・ A - 1 ・・ B 0 - ・・ : : : - Ranker A B ・・・A B ・・・・・・ execute result ・・・ prof files 部品評価値計算部 Dynamic Relation Analyzer 部品グラフ生成部 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 12 評価実験 実験対象プログラム javac (javaコンパイラ) 全159クラス(内部クラス含む) 評価値 順位 クラス名(部品名) 1 1 2 2 com.sun.tools.javac.v8.Main com.sun.tools.javac.v8.Main 3 3 4 4 com.sun.tools.javac.v8.comp.Gen com.sun.tools.javac.v8.comp.Gen 5 5 6 6 com.sun.tools.javac.v8.comp.Attr com.sun.tools.javac.v8.comp.Attr 7 7 8 8 com.sun.tools.javac.v8.comp.TransInner com.sun.tools.javac.v8.comp.TransInner 9 9 10 10 com.sun.tools.javac.v8.JavaCompiler com.sun.tools.javac.v8.JavaCompiler com.sun.tools.javac.Main com.sun.tools.javac.Main com.sun.tools.javac.v8.comp.Enter com.sun.tools.javac.v8.comp.Enter com.sun.tools.javac.v8.comp.ClassReader com.sun.tools.javac.v8.comp.ClassReader com.sun.tools.javac.v8.comp.Enter$CompleteEnter com.sun.tools.javac.v8.comp.Enter$CompleteEnter com.sun.tools.javac.v8.comp.TransTypes com.sun.tools.javac.v8.comp.TransTypes 実行方法: 「正常コンパイル終了」する プログラムを引数に与える 部品評価値 利用部 (108 ) 品数 利用数 順位 6230715 6230715 5401857 5401857 17 17 24 24 11 11 7 7 3308156 3308156 2911060 2911060 36 36 2 2 1 1 53 53 2844601 2844601 2588095 2588095 34 34 28 28 2 2 3 3 2007288 2007288 1949322 1949322 27 27 26 26 4 4 5 5 1821256 1821256 1797646 1797646 16 16 26 26 14 14 5 5 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 13 評価実験 実験対象プログラム j2sdk1.4.0_01.demo.jfc.Notepad 単純なテキストエディタプログラム 全19クラス(内部クラス含む) 複数機能実行結果 順位 クラス名 「file open」実行結果 順位 クラス名 「copy&paste」実行結果 順位 クラス名 1 <System> 1 Notepad 1 Notepad 2 Notepad 2 <System> 2 <System> 3 Notepad$UndoAction 3 Notepad$OpenAction 3 Notepad$UndoHandler 4 Notepad$OpenAction 4 Notepad$FileLoader 4 5 Notepad$ShowElementTreeAction 5 6 Notepad$UndoHandler 6 7 ElementTreePanel 8 Notepad$3 9 Notepad$FileLoader Notepad$UndoHandler Notepad$UndoAction Notepad$RedoAction Notepad$NewAction Notepad$ExitAction Notepad$ShowElementTreeAction : Notepad$UndoAction Notepad$OpenAction Notepad$RedoAction Notepad$NewAction Notepad$ExitAction Notepad$ShowElementTreeAction Notepad$ActionChangedListener Notepad$1 : : : Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 14 考察 部品利用数と部品評価値 部品利用数と部品評価値に完全に相関があるわけではない 利用数が少なくても,機能実装の核となる部品が存在 提案手法による部品評価手法は有効 実行方法と部品評価値 実行された機能を実現する部品ほど、高い評価値を得られる ファイルオープンを実行した時には,その動作に関連の高い部品が, 高い評価値を得る 「特定の機能を実現する部品」の再利用に利用できる Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 15 部品評価値の利用法 シーケンス図(sequence diagram)への適用 動的な部品間の利用関係をグラフ化 「いつ」「どのように」部品を利用しているか? Greeter Database Massage: browse() 部品 Recipe Massage: display() return: display() 時間軸 Planner メッセージのやり取り return: browse() Massage: makePlan() Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 16 部品評価値の利用法 適当な部品評価値でフィルタリング 例:Notepad 28,475,829 Notepad 3,800,453 Notepad$ UndoHandler <init> <init> 3,800,453 Notepad$ UndoAction <init> <init> 3,800,453 Notepad$ RedoAction 10,882,916 ・・・ Notepad$ OpenAction 7,715,919 ・・・ Notepad$ FileLoader <init> <init> <init> <init> <init> <init> getFrame getFrame Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 17 部品評価値の利用法 適当な部品評価値でフィルタリング 例:Notepad 28475829 10882916 7715919 Notepad Notepad$ OpenAction Notepad$ FileLoader <init> 重要な部品のみ出力 開発者が注目すべき部品, 利用関係を絞り込める <init> getFrame getFrame : <init> “機能の再利用”へ利用 ソフトウェア理解を支援 <init> Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 18 システムへの追加 動的利用関係によりシーケンス図を作成 部品評価値でフィルタリング フィルタリング前 フィルタリング後 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 19 まとめ まとめ 動的情報を利用したソフトウェア部品評価手法の提案 ソフトウェア中の特定の“機能”の再利用に利用できる 評価値の利用方法-シーケンス図への利用 ソフトウェア理解支援 今後の課題 提案手法による部品評価値計算 より多くのソフトウェアに適用 他の評価手法との比較 シーケンス図の表示 辺の重みによるフィルタリング フィルタリングの有効性検証 Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 20
© Copyright 2025 ExpyDoc