Javaソースコード蓄積・ 検索システムSPARS-Jの概要 井上克郎 大阪大学大学院 情報科学研究科
ソフトウェアプロダクト管理システム 開発したドキュメント,ソースコード,テストケースなどを保存・取り出しを行う 組織全体のソフトウェアプロダクトを資産として管理するのが理想 ソフトウェア開発を行う組織にとってのメリット: 再利用して生産性を向上 過去の信頼できるプロダクトの利用によって品質の向上 ユーザ組織にとってのメリット: 現状の把握(規模や品質vs投資) 緊急時の対応とりやすい 過去の資産の把握,整理
ソースコードの蓄積・検索 ソースコードは最も信頼できるプロダクト? しかし,誰が管理するの? 動いているシステムに対応 他のドキュメントは更新がされていない場合も ソースコードを核として他は関連付けて蓄積 しかし,誰が管理するの? 開発,運用の要員だけで管理まで手が回らない 常に最新の状態にしないと意味がない いい加減な分類や索引付けでは探せない
ソースコード蓄積・検索システム ソフトウェアプロダクトの自動収集・解析・検索システム Asset Locator (IBM) 各種ソース(Java, JSP, C++, HTML, XML, Cobol, Java ClassFile, Text)の収集,解析,検索システム 計画倒れ?
SPARS-J Software Product Archive, Analysis, and Retrieve System for Java 新しい発想に基づいたソースコード蓄積・検索システム Javaを対象に 日々の管理は全自動 静的解析技術を用いて広域の依存関係抽出 メトリクス技術を用いて類似部品抽出
SPARS-Jの概要 SPARS-J 検索 登録 ユーザー Java 表示 ファイル群 依存関係 キーワード キーワード検索 解析・登録 パッケージ階層 表示 レポジトリ Webブラウザ SPARS-J
SPARS-Jの機能の概要(登録) Javaの1クラス(*.java) = 検索単位 :部品 指定したファイル群やディレクトリ群に含まれる部品の自動検索 クラス間の関係(継承,インターフェース,呼び出し,参照等)の解析 部品内に含まれるキーワードの抽出 DB(Berkeley DB)に登録
SPRAS-Jの機能(検索・表示) キーワード検索/パッケージ木ブラウズ 部品のソース,呼ばれている・呼んでいるクラス・メソドの表示や各種メトリクス表示 条件付検索(クラス名,コメント,・・・) 重要な部品を上位に表示 部品間の類似度を計測―同一部品集約 日本語/英語両用
SPARS-J検索入り口
検索結果表示
パッケージブラウザ
SPARS-Jの使い方 一つの開発中のプロジェクトのソース管理 過去の類似プロジェクトのソース管理 組織の全プロジェクトのソース管理 他人が作った部品が見える 前の版も調べられる 過去の類似プロジェクトのソース管理 部品の依存関係が分かる 再利用率,新規開発率が分かる 組織の全プロジェクトのソース管理 何か使われて何がいらないか 全資産量はどれだけあるか
適用例 JDKのライブラリ検索(約2000クラス) 研究室内のJavaの資産管理(約2500クラス) インターネット上から入手できるプログラムの検索(18万クラス) あるソフトウェアハウスのJavaフレームワークにおける資産管理 ...
SPARS-Jの実行環境 UNIX版,Windows版 FreeBSD, Solaris,Windows-XP,... C, Berkeley DB、BisonFlex、gettext、kakasi 最小メモリ 100MB (多いほうがいい) 最小ディスク100MB
DB構築時間 AがB,Cと同程度時間がかかっている D,Eで極端に構築時間が大きくなる 構築時間は索引キー数に依存 Aは索引キー数が多いため メモリが尽きてスワップが生じた 構築時間は索引キー数に依存 OS : FreeBSD 5.2-RC CPU : Intel(R) Xeon2.80GHz(Dual) Memory : 2.0 GB File数(Size: MB) 部品数 部品群数 索引キー数 合計時間(秒) A 3593 (35) 5407 5370 574048 857.8 B 6158 (67) 7594 966 132583 933.7 C 9561 (93) 12355 8995 306551 866.9 D 13696 (130) 15634 9033 745663 6469.5 E 18384 (192) 20463 13839 886574 16093.1(4H) 18万 3日
構築したDBサイズ 格納している情報はほぼ同じ割合 索引キー数に依存 ファイル情報 : 1 %, 部品情報 : 30 % 利用関係情報 : 10%, 索引情報 : 60~70 % 索引キー数に依存 File数(Size: MB) 部品数 部品群数 索引キー数 DB size(MB) A 3593 (35) 5407 5370 574048 288 B 6158 (67) 7594 966 132583 C 9561 (93) 12355 8995 306551 252 D 13696 (130) 15634 9033 745663 800 E 18384 (192) 20463 13839 886574 1000
検索時間 300件のクエリに対してCGIを経由せず検索 部品数の増加に従って検索時間も増加 実際には,結果表示の時間がプラス 索引キー検索よりも,ヒットした部品のソートに時間がかかる File数(Size: MB) 部品数 部品群数 索引キー数 合計時間(秒) A 3593 (35) 5407 5370 574048 4.140 B 6158 (67) 7594 966 132583 4.787 C 9561 (93) 12355 8995 306551 5.964 D 13696 (130) 15634 9033 745663 14.395 E 18384 (192) 20463 13839 886574 19.514
SPARS-Jのライセンス 基本動作を行う部分はオープンソース化(BSDライセンス) ランク付け機能(CR)は特許申請中 変更,再配布,商用利用可能 大阪大学のクレジット表示義務 ランク付け機能(CR)は特許申請中 JST(科学技術振興機構)所有 なくても実用上支障はない