ソフトウェアライセンスが コピーアンドペーストによる...

Preview:

DESCRIPTION

ソフトウェアライセンスが コピーアンドペーストによる 再利用に与える影響の調査. 鹿島 悠 † , 早瀬 康裕 †† , 吉田 則裕 ††† , 真鍋 雄貴 † , 井上克郎 † † : 大阪大学 †† :東洋大学 ††† : 奈良先端科学技術大学院大学. ソフトウェア再利用. ソフトウェア再利用の目的 信頼性の高いソフトウェアの開発 ソフトウェアの生産性の向上 本研究ではソースコードのコピーアンドペースト (C&P) に着目 ソースコード再利用の基本的な方法の一つ. オープンソースソフトウェアと ライセンス. オープンソースソフトウェア (OSS) - PowerPoint PPT Presentation

Citation preview

Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

ソフトウェアライセンスがコピーアンドペーストによる再利用に与える影響の調査

鹿島 悠†,早瀬 康裕††,吉田 則裕†††,真鍋 雄貴† ,井上克郎†

† : 大阪大学 ††:東洋大学††† :奈良先端科学技術大学院大学

1

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 した後配布ができなくなる場合がある

コピー

5

BSD3 GPLv2コ

ピー

コピー

Apachev2 GPLv2コ

ピー

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

実験方法

手順1.ライセンスの特定

ソースファイル集合

手順2.コードクローンの検出

ソフトウェア X

ソフトウェア Y

手順3.コードクローンの数え上げ

ライセンス A が含まれるクローンセットの集合

8

ライセンス #コード片

ライセンスA

10

ライセンスB

3

… …

不明

ライセンスA

ライセンスB

ライセンスA

ライセンスA

ライセンスA

ライセンスB

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 以下のコードクローンを除外

[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

ライセンスA

ライセンスB

ライセンスC

ソフトウェア X

ソフトウェア Y

ソフトウェア Z

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

手順3.コードクローンの数え上げ

1. 調査対象とするライセンスで配布されているコード片を含むクローンセットを抽出

– クローンセットとはコードクローンの同値類を指す2. クローンセット中に含まれるコード片を,コード片が所属するライセン

スで分類して数え上げる

• クローンセット中にはコピー元のコード片とコピー先のコード片が含まれており,C&Pの検出の代わりとなると考えた

• 調査対象とするライセンスと C&Pの関係にあるライセンスを調べる

11

ライセンスA

ライセンスB

ライセンスC

ライセンス #コード片

ライセンス A 2

ライセンス B 1

ライセンス C 2

ソフトウェア X ソフトウェア Y ソフトウェア Z

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験対象

• Debian GNU/Linux 5.0.2 の Main セクションの Java ファイル

• 対象に選んだ理由– ソースファイルのライセンスに,多様なライセ

ンスが利用されている– Ninka , CCFinder は共に Java ファイルの解析が

可能– 実験対象の規模として適切であった

12

パッケージ数 452

ファイル数 77,452

行数 8,530,896

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験対象中のライセンスの分布

13

Apach

ev2

GPLv2+

Less

erGPLv

2.1+

GPLnoV

ersio

n,GPLv

2+,L

inkExc

eptio

n

GPLv2

BSD3

GPLv2,

ClassP

athE

xcep

tion

その

ライ

セン

ス記

述無

未知

のラ

イセ

ンス

02000400060008000

100001200014000160001800020000

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果( BSD3)

14

ライセンス #コード片 割合

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 のコード片が含まれるクローンセット中のコード片をライセンスで分類し, 数え上げた表• BSD3 で配布されているコード片がどのライセンスで配布されているコード片と C&P の関係にあるのかと,その頻度を示している

• BSD3 で配布されているコード片どうしの C&P が多いと考えられる

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果( Apachev2)ライセンス #コード

片割合

Apachev2 1533 77%

Apachev1.1 316 16%

LesserGPL2.1+ 42 2.1%

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%

15

• Apachev2 で配布されている コード片どうしの C&P が多い と考えられる

• Apachev1.1 で配布されてい るコード片が多く見られたの は Apachev2へライセンスが 変更されているためと考えら れる

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

実験結果( GPLv2+)

16

ライセンス #コード片

割合

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+ で配布されているコード片にコピーして配布することが許可されてい るためと考えられる

Department of Computer Science, Graduate School of Information Science and Technology, Osaka University

各ライセンスのファイル数とコード片の数

17

#コード片 #ファイル #コード片/ #ファイル

BSD3 665 2181 0.305

Apachev2 1983 16350 0.121

GPLv2+ 549 8160 0.0673

• BSD3 , Apachev2 , GPLv2+ の順に再利用が活発に行われて いると考えられる

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 の検出でコード片を重複して数えている可能性がある

19

コード片 A

コード片 B

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

Recommended