220 likes | 329 Views
ソフトウェアライセンスが コピーアンドペーストによる 再利用に与える影響の調査. 鹿島 悠 † , 早瀬 康裕 †† , 吉田 則裕 ††† , 真鍋 雄貴 † , 井上克郎 † † : 大阪大学 †† :東洋大学 ††† : 奈良先端科学技術大学院大学. ソフトウェア再利用. ソフトウェア再利用の目的 信頼性の高いソフトウェアの開発 ソフトウェアの生産性の向上 本研究ではソースコードのコピーアンドペースト (C&P) に着目 ソースコード再利用の基本的な方法の一つ. オープンソースソフトウェアと ライセンス. オープンソースソフトウェア (OSS)
E N D
ソフトウェアライセンスがコピーアンドペーストによる再利用に与える影響の調査ソフトウェアライセンスがコピーアンドペーストによる再利用に与える影響の調査 鹿島 悠†,早瀬 康裕††,吉田 則裕†††, 真鍋 雄貴† ,井上克郎† † : 大阪大学††:東洋大学 †††:奈良先端科学技術大学院大学
ソフトウェア再利用 • ソフトウェア再利用の目的 • 信頼性の高いソフトウェアの開発 • ソフトウェアの生産性の向上 • 本研究ではソースコードのコピーアンドペースト(C&P)に着目 • ソースコード再利用の基本的な方法の一つ
オープンソースソフトウェアとライセンス • オープンソースソフトウェア(OSS) • ソースコードの再利用が可能 • OSSの増加により,再利用可能なソースコードが増加している • OSSライセンス • 多様な開発者の意図を満たすため様々なOSSライセンスが存在 • ライセンスごとにソフトウェアを利用する条件は異なる • 再利用はソフトウェア利用の一形態であり,ライセンスにより制限または許可されている
代表的なOSSライセンス • BSD3項ライセンス(BSD3) • 著作権,免責事項,ライセンス条文を明記すれば異なるライセンスで配布されているソースコードに対してC&Pして配布することを許可している • Apache License Version 2 (Apachev2) • BSD3と同じく,他のライセンスで配布されているソースコードにC&Pして配布することを許可している • 著作権,特許,商標に関する条件は,元のまま保持されなければならない • GNU General Public License Version 2(GPLv2) • 再利用したソースコードを組み込むソフトウェアのライセンスもGPLv2にしなければならない • ライセンスごとに再利用の条件は異なっている
ライセンスとC&P • C&Pする際には,コピー元のライセンスとコピー先のライセンスの両方を守る必要がある • どちらかのライセンスを変更しない限り,C&Pした後配布ができなくなる場合がある BSD3 GPLv2 Apachev2 GPLv2 コピー コピー コピー コピー
C&Pに対するライセンスの影響 • 仮説 • ライセンスごとに再利用のされ方に違いがある • C&Pが行われる頻度 • コピー先のソースコードが利用するライセンスの種類 • C&Pによる再利用をライセンスの観点で分析した研究は確認されていない • そこで実際のOSSに対して調査を行う
実験 • 目的 • 実際のOSSを対象にした,C&Pによる再利用に対するライセンスの影響の調査 • ただし,本実験は予備的実験であり実験対象は小規模 • 本手法が大規模な対象に適用可能か検証 • 概要 • 実際のOSSを対象に以下の2つを調べ,両者を統合した結果を調査する • ライセンスの分布 • C&Pの分布 • ソースコードから直接C&Pの検出を行うのは難しいため,コードクローンの検出を利用する • コードクローンとは,他のコード片と一致または類似しているコード片を指す
実験方法 ソフトウェアX ライセンスA ライセンスA ライセンスA 手順1.ライセンスの特定 手順2.コードクローンの検出 手順3.コードクローンの数え上げ ライセンスAが含まれるクローンセットの集合 ライセンスB ソフトウェアY ソースファイル 集合 ライセンスA ライセンスB 不明
手順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)
手順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) ソフトウェアX ソフトウェアY ソフトウェアZ ライセンスA ライセンスB ライセンスC
手順3.コードクローンの数え上げ • 調査対象とするライセンスで配布されているコード片を含むクローンセットを抽出 • クローンセットとはコードクローンの同値類を指す • クローンセット中に含まれるコード片を,コード片が所属するライセンスで分類して数え上げる • クローンセット中にはコピー元のコード片とコピー先のコード片が含まれており,C&Pの検出の代わりとなると考えた • 調査対象とするライセンスとC&Pの関係にあるライセンスを調べる ソフトウェアX ソフトウェアY ソフトウェアZ ライセンスA ライセンスB ライセンスC
実験対象 • Debian GNU/Linux 5.0.2のMainセクションのJavaファイル • 対象に選んだ理由 • ソースファイルのライセンスに,多様なライセンスが利用されている • Ninka,CCFinderは共にJavaファイルの解析が可能 • 実験対象の規模として適切であった
実験結果(BSD3) • BSD3のコード片が含まれるクローンセット中のコード片をライセンスで分類し, • 数え上げた表 • BSD3で配布されているコード片がどのライセンスで配布されているコード片と • C&Pの関係にあるのかと,その頻度を示している • BSD3で配布されているコード片どうしのC&Pが多いと考えられる
実験結果(Apachev2) • Apachev2で配布されている • コード片どうしのC&Pが多い • と考えられる • Apachev1.1で配布されてい • るコード片が多く見られたの • はApachev2へライセンスが • 変更されているためと考えら • れる
実験結果(GPLv2+) • GPLv2+で配布されているコード片どうしのC&Pが多いと考えられる • GPLnoVersion,GPLv2+,LinkExceptionで配布されている • コード片が多く見られた • GPLnoVersion,GPLv2+,LinkExceptionで配布されているコード片を • C&PしてGPLv2+で配布するのは許可されているためと考えられる • GPL系列のライセンスが見られるのは,GPL系列のライセンスで配布されている • コード片をGPLv2+で配布されているコード片にコピーして配布することが許可されてい • るためと考えられる
各ライセンスのファイル数とコード片の数 • BSD3,Apachev2,GPLv2+の順に再利用が活発に行われて • いると考えられる
全体のまとめ • 全ライセンスに共通する特徴 • 同じライセンス,または同じ団体が規定したライセンスで配布されているソースコード間でC&Pが多く行われていた • 同じ開発団体内でC&Pが行われたためと考えられる • Apachev2は多数の種類のライセンスとのC&Pが見つかった • Apachev2は13種類,BSD3とGPLv2+は6種類 • 考えられる理由 • Apachev2は実験対象中で最もファイル数が多かった • GPLv2+と比べて多かったのは,GPLv2+よりもApachev2の方が再利用の条件を満たすのが容易であることも影響している • BSD3,Apachev2,GPLv2+の順に再利用が活発に行われていると考えられる
妥当性 • 結果をOSS一般に適用するのは不適当 • 実験対象の規模が小さい • Javaファイルしか対象にしていない • CやC++のファイルに比べ歴史が浅い • C&Pも余り行われていないと考えられる • 実験対象と同じライセンスの分布を持つソースファイル集合には適用可能と考えられる • C&Pの検出でコード片を重複して数えている可能性がある コード片A コード片B
大規模な対象への適用可能性 • 各ステップの大規模対象への適用可能性 • ライセンスの特定 • Ninkaはファイルを一つずつ処理するだけなので大規模な対象にも適用可能 • コードクローンの検出 • CCFinderは,入力を分割し,出力を統合することで大規模な対象にも適用可能 • コードクローンの数え上げ • 大規模な対象にも適用可能な統計処理 • 全ステップが大規模対象に適用可能なため, 本手法は大規模対象に適用可能
まとめ • C&Pに対するライセンスの影響を調査する予備的実験を行った • Debian/GNU LinuxのMainセクション中のJavaファイルを調査 • 同じライセンス,または同じ団体の規定したライセンスで配布されているソースコード間のC&Pが多く見られた • BSD3,Apachev2,GPLv2+の順に再利用が活発に行われていた • 本手法が大規模な対象にも適用可能なことを確認した
今後の課題 • 大規模なソースファイル集合に対する本手法の適用 • 実験では,どのコード片からどのコード片へとC&Pが行われたのかを特定出来ていない • C&Pの向きの特定する手法の適用 • 同じ開発団体内でC&Pが行われたという考察の検証