Software Engineering Laboratory, Department of Computer Science

Download Report

Transcript Software Engineering Laboratory, Department of Computer Science

ソフトウェアライセンスが
コピーアンドペーストによる
再利用に与える影響の調査
鹿島 悠†,早瀬 康裕††,吉田 則裕†††,
真鍋 雄貴† ,井上克郎†
†:
大阪大学 ††:東洋大学
†††:奈良先端科学技術大学院大学
1
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ソフトウェア再利用
• ソフトウェア再利用の目的
– 信頼性の高いソフトウェアの開発
– ソフトウェアの生産性の向上
• 本研究ではソースコードのコピーアンドペースト
(C&P)に着目
– ソースコード再利用の基本的な方法の一つ
2
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
オープンソースソフトウェアと
ライセンス
• オープンソースソフトウェア(OSS)
– ソースコードの再利用が可能
– OSSの増加により,再利用可能なソースコードが増
加している
• OSSライセンス
– 多様な開発者の意図を満たすため様々なOSSライセ
ンスが存在
– ライセンスごとにソフトウェアを利用する条件は異なる
• 再利用はソフトウェア利用の一形態であり,ライセンスによ
り制限または許可されている
3
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
代表的なOSSライセンス
• BSD 3項ライセンス(BSD3)
– 著作権,免責事項,ライセンス条文を明記すれば異なるライセンスで
配布されているソースコードに対してC&Pして配布することを許可し
ている
• Apache License Version 2 (Apachev2)
– BSD3と同じく,他のライセンスで配布されているソースコードにC&P
して配布することを許可している
– 著作権,特許,商標に関する条件は,元のまま保持されなければな
らない
• GNU General Public License Version 2(GPLv2)
– 再利用したソースコードを組み込むソフトウェアのライセンスもGPLv2
にしなければならない
• ライセンスごとに再利用の条件は異なっている
4
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
ライセンスとC&P
• C&Pする際には,コピー元のライセンスとコ
ピー先のライセンスの両方を守る必要がある
• どちらかのライセンスを変更しない限り,C&P
した後配布ができなくなる場合がある
BSD3
GPLv2
Apachev2
GPLv2
コピー
コピー
コピー
コピー
5
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
C&Pに対するライセンスの影響
• 仮説
– ライセンスごとに再利用のされ方に違いがある
• C&Pが行われる頻度
• コピー先のソースコードが利用するライセンスの種類
• C&Pによる再利用をライセンスの観点で分析
した研究は確認されていない
• そこで実際のOSSに対して調査を行う
6
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験
• 目的
– 実際のOSSを対象にした,C&Pによる再利用に対するラ
イセンスの影響の調査
• ただし,本実験は予備的実験であり実験対象は小規模
– 本手法が大規模な対象に適用可能か検証
• 概要
– 実際のOSSを対象に以下の2つを調べ,両者を統合した
結果を調査する
• ライセンスの分布
• C&Pの分布
– ソースコードから直接C&Pの検出を行うのは難しいため,コードクローン
の検出を利用する
» コードクローンとは,他のコード片と一致または類似しているコード
片を指す
7
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験方法
ソフトウェアX
ライセンスA
ライセンスA
手順
1.ラ
イセン
スの
特定
ライセンスB
ソースファイル
集合
手順
2.
コード
クロー
ンの検
出
ライセンスA
ライセンスAが含ま
れるクローンセット
の集合
ソフトウェアY
ライセンスA
ライセンスB
手順
3.
コード
クロー
ンの数
え上げ
ライセンス
#コード
片
ライセンスA
10
ライセンスB
3
…
…
不明
8
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
手順1.ライセンスの特定
• Ninka[1]を利用
– ファイル中のライセンス記述を解析し,ライセンスの
特定を行うツール
– 特定されたライセンスが間違っている可能性は低い
• ライセンスの特定が出来なかったファイルは対
象から除外
– ライセンス記述が無いファイル
– 未知のライセンス記述が使用されているファイル
[1] D. M. German, Y. Manabe and K. Inoue: “A sentence-matching method for automatic license identification of source
code files”, ASE 2010, pp. 437–446 (2010)
9
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
手順2.コードクローンの検出
• CCFinder[2]を利用
– 異なるソフトウェア間で発生したコードクローンのみ抽出
• ソフトウェア内のC&Pはライセンスの影響が少ないと考えた
• C&P以外の理由で生成されたコードクローンを除外
– LNRを利用[2]
• 非繰り返し要素のトークン数
• LNR50以下のコードクローンを除外
ソフトウェアX
ソフトウェアY
ソフトウェアZ
ライセンスA
ライセンスB
ライセンスC
[2] T. Kamiya, S. Kusumoto and K. Inoue: “CCFinder: A multilinguistic token-based code clone detection system for
large scale source code”, IEEE Transactions on Software Engineering, 28, pp. 654–670 (2002)
10
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
手順3.コードクローンの数え上げ
1.
調査対象とするライセンスで配布されているコード片を含むクローン
セットを抽出
–
クローンセットとはコードクローンの同値類を指す
2.
クローンセット中に含まれるコード片を,コード片が所属するライセンス
で分類して数え上げる
•
クローンセット中にはコピー元のコード片とコピー先のコード片が含まれ
ており,C&Pの検出の代わりとなると考えた
調査対象とするライセンスとC&Pの関係にあるライセンスを調べる
•
ソフトウェアX
ソフトウェアY
ソフトウェアZ
ライセンスA
ライセンスB
ライセンスC
ライセンス
#コード片
ライセンスA
2
ライセンスB
1
ライセンスC
2
11
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験対象
• Debian GNU/Linux 5.0.2のMainセクションの
Javaファイル
• 対象に選んだ理由
– ソースファイルのライセンスに,多様なライセンスが
利用されている
– Ninka,CCFinderは共にJavaファイルの解析が可能
– 実験対象の規模として適切であった
パッケージ数
ファイル数
行数
452
77,452
8,530,896
12
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験対象中のライセンスの分布
20000
18000
16000
14000
12000
10000
8000
6000
4000
2000
0
13
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験結果(BSD3)
• BSD3のコード片が含まれるクローンセット中のコード片をライセンスで分類し,
数え上げた表
• BSD3で配布されているコード片がどのライセンスで配布されているコード片と
C&Pの関係にあるのかと,その頻度を示している
ライセンス
BSD3
割合
#コード片
613
92%
GPLv2+
20
3.0%
Apachev2
16
2.4%
LesserGPL2+
14
2.1%
GPLv2,ClassPathException
1
0.15%
LesserGPL2.1+
1
0.15%
• BSD3で配布されているコード片どうしのC&Pが多いと考えられる
14
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験結果(Apachev2)
ライセンス
#コード片
割合
1533
77%
• Apachev2で配布されている
316
16%
LesserGPL2.1+
42
2.1%
コード片どうしのC&Pが多い
と考えられる
MPLv1.1
33
1.6%
BSD3
29
1.5%
MX4JLicensev1
16
0.80%
GPLv2+
4
0.20%
LibraryGPL2+
3
0.15%
MPLv1.0
2
0.10%
MITX11noNotice
2
0.10%
Public Domain
1
0.050%
Subversion+
1
0.050%
EPLv1
1
0.050%
Apachev2
Apachev1.1
• Apachev1.1で配布されてい
るコード片が多く見られたの
はApachev2へライセンスが
変更されているためと考えら
れる
15
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
実験結果(GPLv2+)
ライセンス
#コード片
割合
GPLv2+
268
44%
GPLnoVersion,GPLv2+,LinkException
225
41%
BSD3
28
5.1%
LibraryGPLv2+
20
3.6%
Apachev2
4
0.73%
LesserGPLv2.1+
4
0.73%
• GPLv2+で配布されているコード片どうしのC&Pが多いと考えられる
• GPLnoVersion,GPLv2+,LinkExceptionで配布されている
コード片が多く見られた
• GPLnoVersion,GPLv2+,LinkExceptionで配布されているコード片を
C&PしてGPLv2+で配布するのは許可されているためと考えられる
• GPL系列のライセンスが見られるのは,GPL系列のライセンスで配布されている
コード片をGPLv2+で配布されているコード片にコピーして配布することが許可されてい
るためと考えられる
16
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
各ライセンスのファイル数と
コード片の数
#コード片
BSD3
Apachev2
GPLv2+
#ファイル
#コード片/#ファイル
665
2181
0.305
1983
16350
0.121
549
8160
0.0673
• BSD3,Apachev2,GPLv2+の順に再利用が活発に行われて
いると考えられる
17
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
全体のまとめ
• 全ライセンスに共通する特徴
– 同じライセンス,または同じ団体が規定したライセンスで配布されて
いるソースコード間でC&Pが多く行われていた
• 同じ開発団体内でC&Pが行われたためと考えられる
• Apachev2は多数の種類のライセンスとのC&Pが見つかった
– Apachev2は13種類,BSD3とGPLv2+は6種類
– 考えられる理由
• Apachev2は実験対象中で最もファイル数が多かった
• GPLv2+と比べて多かったのは,GPLv2+よりもApachev2の方が再利用
の条件を満たすのが容易であることも影響している
• BSD3,Apachev2,GPLv2+の順に再利用が活発に行われてい
ると考えられる
18
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
妥当性
• 結果をOSS一般に適用するのは不適当
– 実験対象の規模が小さい
– Javaファイルしか対象にしていない
• CやC++のファイルに比べ歴史が浅い
– C&Pも余り行われていないと考えられる
• 実験対象と同じライセンスの分布を持つソースファイ
ル集合には適用可能と考えられる
• C&Pの検出でコード片を重複して数えている可能性が
ある
コード片A
コード片B
19
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
大規模な対象への適用可能性
• 各ステップの大規模対象への適用可能性
– ライセンスの特定
• Ninkaはファイルを一つずつ処理するだけなので大規模な
対象にも適用可能
– コードクローンの検出
• CCFinderは,入力を分割し,出力を統合することで大規模
な対象にも適用可能
– コードクローンの数え上げ
• 大規模な対象にも適用可能な統計処理
• 全ステップが大規模対象に適用可能なため,
本手法は大規模対象に適用可能
20
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
まとめ
• C&Pに対するライセンスの影響を調査する予備
的実験を行った
– Debian/GNU LinuxのMainセクション中のJavaファ
イルを調査
• 同じライセンス,または同じ団体の規定したライ
センスで配布されているソースコード間のC&P
が多く見られた
• BSD3,Apachev2,GPLv2+の順に再利用が活
発に行われていた
• 本手法が大規模な対象にも適用可能なことを確
認した
21
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University
今後の課題
• 大規模なソースファイル集合に対する本手法
の適用
• 実験では,どのコード片からどのコード片へと
C&Pが行われたのかを特定出来ていない
– C&Pの向きの特定する手法の適用
• 同じ開発団体内でC&Pが行われたという考
察の検証
22
Department of Computer Science, Graduate School of Information Science and Technology, Osaka University