Javaソースコード蓄積・ 検索システムSPARS-Jの概要

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