Parallel Setsによるライブラリの

Parallel Setsによるライブラリの
組み合わせと利用状況の可視化
井上研究室
矢野裕貴
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ライブラリの利用
ソースコードの再利用手段として,オープンソースライ
ブラリの利用が盛んに行われている
メリット
多彩な機能
開発コストの削減
2
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ライブラリのバージョンアップ
ライブラリは自身のプロジェクトとは別に開発が進めら
れ,新しいバージョンがリリースされる
機能の追加
バグの修正 など
開発者は使用しているライブラリの更新作業を行う
必要がある
互換性の問題
3
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
バージョン間の非互換性
アップデートの際,互換性を失うような変更が加えら
れる場合がある
APIの変更などが行われると開発中のプログラムにも修正
が必要
ライブラリ間にも依存関係が存在する
ライブラリの組み合わせによっても,非互換性による問題
が発生する可能性
4
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
研究背景
ライブラリの更新を行う際には,様々なことを考慮す
る必要がある
機能
品質
互換性
適切な選択が難しい
他の開発者の判断を参考にする
5
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
利用状況の可視化
他のシステムにおけるライブラリの利用状況を,ライブ
ラリ選択の際の判断基準に
例)時間的な利用数の変化[1]
usage
time
[1] Y. M. Mileva, V. Dallmeier, M. Burger, and A. Zeller. Mining trends
of library usage, in ERCIM Workshops, 2009, pp. 57–62.
6
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
提案手法
Parallel Setsを用いた,既存のシステムにおけるライ
ブラリ利用の組み合わせの可視化
Parallel Sets とは,Kosaraらによって提案された複数のパラメータ
で分類分けできるようなデータに対する可視化手法[2]
組みあわせを考慮することで,ライブラリ間で非互換
性による問題が発生するリスクを低減
既に利用された実績のある組み合わせを選ぶと安全であ
る可能性が高い
[2] Robert Kosara. Turning a table into a tree: Growing parallel sets into a purposeful
project. Beautiful Visualization: Looking at Data through the Eyes of Experts, pp. 193-204
7
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Parallel Setsを用いた
ライブラリ利用状況の可視化
それぞれの階層でシステムが各ライブラリのどのバー
ジョンを利用しているかが表される
幅:各バージョンの利用数
線:組み合わせ
色:1層目のライブラリの利用バージョン
8
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Parallel Sets - データとの対応
ライブラリA,Bの両方を
使用している100個の
システムの場合
1.0
40(40%)
Library A
Ver. 1.0 Ver. 2.0
Library
B
Ver.
1.0
25
25
50
Ver.
2.0
15
35
50
40
60
100
1.0→1.0
25(25%)
9
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Parallel Sets - 3層以上の場合
3層以上でも同様
1.0→1.0→2.0
10(10%)
10
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Parallel Sets - 並び替え
各階層の入れ替え
バージョン,利用数順にソート
11
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
可視化手順
Step1 依存関係データベースの作成
既存のシステムから依存関係を収集
Step2 Parallel Setsの出力
データベースからの検索,可視化を行うツールを作成
12
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Step1 依存関係データベースの作成
調査対象
GitHubで公開されている約4000のプロジェクト(2014/8)
100コミット以上
Maven2を用いて管理されている
方法
pom.xmlに記述された依存関係を参照
約40万の依存関係を抽出
Neo4jグラフデータベースへ追加
13
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Step2 Parallel Setsの出力
データベースから選択ライブラリに関するデータの検索,
結果の可視化
Query
14
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
使用例(ケース設定)
開発中のHttpのクライアントアプリケーションに新しく,
Joda-Timeというライブラリを導入したい
現在使用しているライブラリ
・Commons-Collections : Ver. 3.2
・Commons-HttpClient : Ver. 3.1
Q1. Joda-Timeのどのバージョンが現在の環境に適合
する可能性が高いか
Q2. 使用中のライブラリのアップデートも行うとしたら,
どんな組み合わせが良いか
15
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Q1:Joda-Timeのどのバージョンを選ぶか
同じ組み合わせで2つのライブラリを使用しているシス
テムが,Joda-Timeのどのバージョンを使用している
現在使用しているライブラリ
かを調べる
・Commons-Collections : Ver. 3.2
・Commons-HttpClient : Ver. 3.1
16
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Q1:Joda-Timeのどのバージョンを選ぶか
3.2→3.1の組み合わせに対して,Joda-Timeの4つ
のバージョンが使用されている
候補
Ver. {1.4, 1.6, 2.0, 2.2}
17
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Q2: 3つのライブラリのバージョンの組み合わせの
選択
利用数が多い組み合わせを探した場合
Commons-Collections
Ver. 3.2.1
Commons-HttpClient
Ver. 3.1
Joda-time
Ver. 1.6
18
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
Q2: 3つのライブラリのバージョンの組み合わせの
選択
新しいバージョンの組み合わせを優先した場合
Commons-Collections
Ver. 3.2.1
Commons-HttpClient
Ver. 3.1
Joda-time
Ver. 2.2
19
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめと今後の課題
まとめ
ライブラリの組み合わせに着目した利用状況の可視化の
提案
実際のデータに対する可視化を行った
今後の課題
ライブラリ同士の比較を行いやすいように
他の可視化手法との組み合わせ
20
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University