大規模ソースファイル集合に適用可能なソフトウェアラ

コメント中のライセンス記述を用いた
大規模ソースファイル集合の分類手法
井上研究室
博士前期課程2年
真鍋雄貴
2008/02/15
平成19年度修士論文発表会
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
発表概要
• ライセンスごとにソースファイルを分類する手法の
提案
– ライセンスの確認による再利用の労力が大きい
– 多くのソースファイルをライセンス(利用条件)ごとに分
類する
– 各ソースファイルのコメント間で共通する文字列を使用
• オープンソースソフトウェアへの適用により手法の
有効性を評価
• 博士後期課程での研究計画
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2
2008/02/15
ソフトウェアの再利用
• 既存のソフトウェア部品を他のソフトウェアの開
発に利用すること
• ソフトウェア開発コストの削減に有効な方法
本研究ではソースコードの再利用に注目
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
3
2008/02/15
ライセンス
• 使用する際に順守すべき条件
• ライセンスの例
– GNU General Public License(GPL)
• GPLのソースコードを再利用したソフトウェアもGPLに
基づいて配布しなければならない
– 修正BSD License
• 「無保証」であることの明記と,著作権表示のみでソー
スコードを再利用できる
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
4
2008/02/15
ライセンス記述
• Copyright
ライセンスの条文,もしくは条文が記述されて
(c) 2005, 2006 Taras Puchko
All rights reserved.
いるファイルへの参照
/*
Redistribution
in source
andProject
binary and
forms,
or without
* Copyrightand
(c) use
2003,
the JUNG
thewith
Regents
of the University
• ライセンス記述は1つのライセンスにつき1つと
modification,
are permitted provided that the following conditions
* of California
are met:
* All rights reserved.
は限らない
1. Redistributions
of source code must retain the above copyright
*
notice,
list of conditions
and the
following
disclaimer.
* Thisthis
software
is open-source
under
the BSD
license; see either
2. Redistributions
in binary form must reproduce the above copyright
* "license.txt" or
notice,
this list of conditions and the following
in the
* http://jung.sourceforge.net/license.txt
for adisclaimer
description.
documentation
and/or other materials provided with the distribution.
*/
3. Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
(例)修正BSDライセンス
...
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
5
2008/02/15
ライセンス特定問題
多数のソースファイルを各ソースファイルが
GPL 2.0
基づくライセンスに分類する
...
new BSD
...
......
分類
人間が多数のソースファイルを分類するには大きな労力
⇒ソースファイル分類を支援する
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
6
2008/02/15
ソースファイルの分類
ソースファイルをライセンスをカテゴリ名とする
カテゴリに分ける
– 各ソースファイルは1つのカテゴリに分類される
– どのカテゴリにも分類されないファイルは「ライセン
ス不明」に分類
ライセンス
ライセンス不明
GPL2.0
Apache
License 2.0
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソースファイル
7
2008/02/15
ソースファイル分類の問題点
多数のソースファイルをライセンスごとに分類
することは労力が大きい
– 人間が一つ一つ分類することは困難
– 任意のライセンスに対してソースファイルを自動分
類することは困難
• 1ライセンスに対してライセンス記述は1つではない
• ライセンスの種類が多い
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
8
2008/02/15
既存手法
• Google Code Search[1]
– ソースファイルのコメントまたはライセンスを記述
したテキストファイルから分類する
– 対応するライセンスは限定されている
• Tuunanenら[2]
ライセンス記述に対応する正規表現とソースファ
イルのコメント部分の一致から分類
ソースファイル分類を行うには事前準備が必要
[1] http://www.google.com/codesearch
[2] Tuunanen, T. et. al. :ASLA: Reverse Engineering Approach for Software License Information Retrieval
Proc. CSMR 2006,pp.291-294 (2006)平成19年度修士論文発表会
9
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
2008/02/15
着眼点
同じソフトウェアに含まれるソースファイルは同
じ文字列でライセンスを指定していることが多い
・・・・・・
・・・・・・
・・・・・・
/*
* hoge license
* copylight bar
*
*/
・・・・・・
ソフトウェアパッケージ
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
10
2008/02/15
研究方針
• ライセンス記述は複数のソースファイルのコメ
ントで同じ文字列として現れることが多い
• ソースファイル間で共通する文字列をソースフ
ァイルの分類に利用する
事前準備を必要とせず分類できる
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
11
2008/02/15
共通文字列を用いた分類
• 共通文字列:複数ソースファイルのコメント間に共通す
る記述
• 共通文字列αがライセンスAのライセンス記述を含む
⇒αを含むソースファイルはライセンスAに分類
A
ライセンス
共通文字列
α
ソースファイル
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ライセンスAの
ライセンス記述
12
2008/02/15
共通文字列の順位づけ
多くのファイルを分類できる共通文字列を優先して
使用する
⇒未分類ファイル数
– 共通文字列を含むファイルのうち,未分類のファイル数
– その共通文字列を読むことで,ライセンスが分かった場合
分類されるファイル数
未分類ファイル数
2
a
b
α
3
β
未分類ファイル数が最大
の共通文字列
最も多くのソースファイル
を分類できる共通文字列
平成19年度修士論文発表会
c
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
13
2008/02/15
利用者が行う作業
• 利用者は未分類ファイル数が最大の共通文字列を読
み,以下の作業を行う
– 共通文字列にライセンス記述が含まれているかを入力
– 含まれているならばライセンスを入力
• 利用者が未読かつ,未分類ファイル数が0でない共通
文字列がなくなるまで繰り返す
A
未分類ファイル数が
最大の共通文字列
利用者
A
ライセンスAを入力
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
14
2008/02/15
適用実験概要
• 実験内容
オープンソースソフトウェアのソースファイル集
合に対し,提案手法を適用
• 評価項目
– 所要時間
– 手法終了までに利用者が読む共通文字列の個
数
– 分類済みファイルの割合の推移
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
15
2008/02/15
実験対象
• 実験対象
オープンソースソフトウェアのJavaソースファイル集合4つ
• 実験に使用した計算機
– CPU: Intel Xeon 5160 3.0GHz×2
– メモリ: 3Gバイト
• 共通文字列の抽出にはクローン検出ツールCCFinderを使用
30単語以上の共通文字列を抽出できるよう設定
ソフトウェア数
ファイル数
コメントで分類
できるファイル
数
実験対象1
2
554
478
3
3
実験対象2
4
2141
1889
11
9
実験対象3
5
2348
692
12
6
実験対象4
10
7819
4908
18
13
含まれるラ コメントで指定
イセンス数 されるライセ
ンス数
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
16
2008/02/15
評価(1/2):所要時間
共通文字列の個数
• 共通文字列を読み,ライセンスを確認する時間が大
部分
• 分類に寄与しなかった共通文字列が多数
⇒共通文字列を読む労力が大きい
手法終了までに利用
所要時間
実験対象1
実験対象2
実験対象3
実験対象4
者が読む共通文字
列の個数
ファイル 全体の所要 利用者が作 分類に寄与 分類に寄与し
数
時間(秒)
業する
した共通文 なかった共通
時間(秒) 字列数
文字列数
554
117
74
3
3
2141
651
489
10
38
2348
1487
1371
10
912
7819
2432
1278
15
643
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
17
2008/02/15
評価(2/2) :分類済みファイルの割合の推移
86.3%
88.1%
分類済みファイルの割合
(%)
86.3%
0
0
1
2
3
4
5
6
分類済みファイルの割合
(%)
88.2%
100
100
0
0
読んだ共通文字列の個数
10
20
30
40
読んだ共通文字列の個数
ライセンス記述を含むソースファイルの割合と
実験対象2
実験対象1
少数の共通文字列で分類済みファイルの割合が大きく上昇
最終的な分類済みファイルの割合がほぼ等しい
分類済みファイルの割合
(%)
38.3%
38.2%
分類済みファイルの割合
(%)
100
100
61.5%
62.8%
0
0
0 100 200 300 400 500 600 700 800 900
読んだ共通文字列の個数
0
100
200
300
400
500
600
読んだ共通文字列の個数
実験対象3
実験対象4
分類済みファイルの割合
ライセンス記述を含むソースファイルの割合
平成19年度修士論文発表会
最終的な分類済みファイルの割合
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
18
2008/02/15
考察
• ソースファイルを分類できない共通文字列を
読むために多くの労力がかかる
⇒機械学習を利用した共通文字列のフィルタリング
• 大部分のソースファイルを少数の共通文字列
で分類可能
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
19
2008/02/15
まとめ
• ライセンスごとにソースファイルを分類する手法
– 各ソースファイルのコメント間で共通する文字列を
使用
– 少数の共通文字列で多くのソースファイルを分類
• 今後の課題
– 機械学習によるフィルタリング
– ソースファイル検索システムへの組み込み
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
20
2008/02/15
ソフトウェア部品の再利用における要求
再利用の際,ソフトウェア部品(部品)に求めら
れる条件
– 動作環境
対応プラットフォーム,必要なライブラリなど
– 品質
– 性能
これらの条件を部品のタグとして表現
再利用にかかる労力を減らす
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
21
2008/02/15
タグの例
• プラットフォームタグ
– 特定のプラットフォームでのみ動作する部品に依存してい
る部品はそのプラットフォームに依存する
• 信頼性タグ
– 部品のテストカバレッジ
– 欠陥管理システムに蓄積された部品の障害情報
• 性能タグ
– 追加・削除操作の計算量
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
22
2008/02/15
研究計画
1. タグの種類を決定する
(例)プラットフォーム,信頼性,性能
2. タグに対応するデータを選択,収集する
(例)信頼性タグ:部品のテストカバレッジ
3. タグを生成する手法を提案
4. タグに基づいた検索を行うことができる部品
検索システムを構築
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
23
2008/02/15
終
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
24
2008/02/15
参考資料
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
25
2008/02/15
ライセンス記述の例
(例)Apache Software Foundation
コーディング規約としてソースファイルのヘッダ部
分に,ライセンス記述を含める
/*
* Copyright 2002-2005 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
http://www.apache.org/licenses/LICENSE-2.0
*
……
*/
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
26
2008/02/15
共通文字列の例
Copyright 2002-2005 the original author or authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.
See the License for the specific language governing permissions and
limitations under the License
平成19年度修士論文発表会
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
27
2008/02/15