ソフトウェア部品検索システムを 対象とするソフトウェアライセンス 特定手法

Slides:



Advertisements
Similar presentations
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 ソフトウェア部品推薦のための.
Advertisements

シーケンス図の生成のための実行履歴圧縮手法
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
JavaScript プログラミング入門 2006/11/10 神津.
Java I 第2回 (4/18)
JavaによるCAI学習ソフトウェアの開発
利用実績に基づくソフトウェア部品検索システムSPARS-J
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
情報伝播によるオブジェクト指向プログラム理解支援の提案
研究の背景 コードクローン ソースコード中に存在する一致または類似したコード片
日本大学 文理学部 情報システム解析学科 谷研究室 益田真太郎
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
アスペクト指向プログラミングを用いたIDSオフロード
川口真司 松下誠 井上克郎 大阪大学大学院情報科学研究科
Java ソフトウェア部品検索システム SPARS-J のための リポジトリ自動更新機能の実現
プログラム実行履歴を用いたトランザクションファンクション抽出手法
オントロジーを使用した プログラム開発支援システムの提案
プログラム実行時情報を用いたトランザクションファンクション抽出手法
ソースコードの変更履歴における メトリクス値の変化を用いた ソフトウェアの特性分析
静的情報と動的情報を用いた プログラムスライス計算法
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
識別子の命名支援を目的とした動詞-目的語関係の辞書構築
関数の変更履歴と呼出し関係に基づいた開発履歴理解支援システムの実現
定兼邦彦 今井浩 東京大学理学系研究科 情報科学専攻
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
クローンセットに対する主要編集者の分析法の提案と調査
環境リスクマネジメントに関する 検索システム
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
利用実績に基づくソフトウェア部品検索システムSPARS-J
コンポーネントランク法を用いたJavaクラス分類手法の提案
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
コードクローンの動作を比較するためのコードクローン周辺コードの解析
ソースコードの静的特性を用いた Javaプログラム間類似度測定ツールの試作
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
プログラム理解におけるThin sliceの 統計的調査による有用性評価
バイトコードを単位とするJavaスライスシステムの試作
コード片に共通した特性を自動抽出する ソースコード閲覧ツールの試作
コードクローンのメトリクス値と 開発者の相関の調査
Javaソフトウェア部品検索システムSPARS-Jの実験的評価
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
コーディングパターンの あいまい検索の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
コードクローン間の依存関係に基づく リファクタリング支援環境の実装
ソフトウェアプロダクト集合に対する 派生関係木の構築
構造的類似性を持つ半構造化文書における頻度分析
設計情報の再利用を目的とした UML図の自動推薦ツール
発表32 レポート評価支援について (剽窃部分と指導箇所の検出)
保守請負時を対象とした 労力見積のためのメトリクスの提案
アスペクト指向言語のための視点に応じた編集を可能にするツール
クローン検出ツールを用いた ソフトウェアシステムの類似度調査
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
4.プッシュダウンオートマトンと 文脈自由文法の等価性
ソースコードの編集状況に応じた ソフトウェア部品の自動推薦システム
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
関数の変更履歴と呼び出し関係に 基づいた開発履歴理解支援システム
識別子の読解を目的とした名詞辞書の作成方法の一試案
プログラム理解のための 付加注釈 DocumentTag の提案
プログラム依存グラフを用いた ソースコードのパターン違反検出法
Presentation transcript:

ソフトウェア部品検索システムを 対象とするソフトウェアライセンス 特定手法 ○真鍋雄貴,市井誠,早瀬康裕,松下誠,井上克郎 大阪大学 大学院情報科学研究科 第69回 情報処理学会全国大会

発表の流れ 研究の背景 ソフトウェアライセンス特定手法 適用実験 考察 まとめと今後の課題 第69回 情報処理学会全国大会 (流し気味に) 本発表では初めに研究の背景について, 次に本研究の提案手法であるソフトウェアライセンス手法について, そして提案手法の評価のための適用実験と実験結果に対する考察について, 最後にまとめと今後の課題の順に発表いたします. 第69回 情報処理学会全国大会

ソフトウェア部品の再利用 ソフトウェア部品(以降,単に部品)の再利用 オープンソースソフトウェア ソフトウェアの生産性,品質の向上に寄与 再利用できる部品が多数公開されている ソフトウェア部品の再利用は 近年,オープンソースソフトウェアとして開発されているソフトが増えています. そのため,多数の~ そのため,目的に合った~という問題があります この問題に対し,ソフトウェア部品検索システムが用いられます. 目的に合った部品を探すのに手間がかかる ⇒ソフトウェア部品検索システムが用いられる 第69回 情報処理学会全国大会

ソフトウェア部品検索システム ソフトウェア部品検索システム (例)SPARS-J 蓄積した部品を検索するシステム 部品の再利用や理解を支援 Javaのクラスを部品とする 大規模ソースファイル群を対象 ソフトウェア部品検索システムは~ その一例といたしまして,われわれの研究グループが過去に開発したSPARS-Jがあります. SPARS-Jは~ 第69回 情報処理学会全国大会

検索結果で各部品のライセンスが表示されることが望ましい 問題点 再利用をおこなう人が各部品のライセンスを調べることは大変 再利用をおこなう際には部品のソフトウェアライセンス(以降,単にライセンス)に従わなければならない 従わなければ著作権の侵害⇒法的問題の恐れ ライセンスの種類は多い オープンソースソフトウェアは様々なライセンスの下で配布 ソフトウェア部品検索システムの問題点は,再利用を行う人が各部品のライセンスを調べることが大変であることです. 再利用を~ もし従わない場合,著作権の~ また,ライセンスの~ そこで,システム側で~が必要となる. 検索結果で各部品のライセンスが表示されることが望ましい 第69回 情報処理学会全国大会

関連研究 Koders[1],Google Code Search[2] Tuunanenら[3] 検索結果のライセンスを表示するソフトウェア部品検索システム ライセンスが特定できていないファイルが多い Tuunanenら[3] 正規表現を用いてソフトウェアのライセンスを特定する手法 正規表現のパターンとライセンスを指定するソースファイルのコメント部分のマッチ 正規表現のパターンを手作業で作成する必要がある この問題に関連した研究として, KodersやGoogle Code Searchといった,検索結果の~ しかし,ライセンスを特定できていない~のが現状です. また,Tuunanenらは~正規表現を~手法を提案 これは~によりライセンスを特定いたします. しかし,この手法には正規表現の~ [1] http://www.koders.com/ [2] http://www.google.com/codesearch [3] Tuunanen, T. et. al. :Retrieving open source software licenses,Proc. OSS 2006, pp.35 – 46 (2006) 第69回 情報処理学会全国大会

研究の目的 少ない手間で部品のライセンスを特定 ライセンスの特定に必要な文字列を自動的に抽出 抽出された文字列だけを見てライセンスを特定する 既存手法では手作業で正規表現のパターンを作成しなければならず手間がかかる ライセンスの特定に必要な文字列を自動的に抽出 抽出された文字列だけを見てライセンスを特定する 本研究の目的は部品のライセンスを少ない手間で特定したいということです. 既存手法では~ そこで,われわれはライセンスの~ そして,抽出された~ことができると考えました. 第69回 情報処理学会全国大会

着眼点 複数のブロックコメントに共通して現れる文字列にライセンスの指定が含まれる場合が多い 経験則 ライセンスを指定する記述がソースファイルのコメントに含まれている 同一のソフトウェアに含まれる同一のライセンスのソースファイルならばライセンスの指定に統一された記述が用いられている 本研究では複数のブロックコメントに共通して現れる文字列にライセンスの指定が含まれる場合が多いということに着目しました. //ブロックコメントはこのように複数行にわたって記述できるコメントです. 根拠として,ライセンスを指定する記述がソースファイルのコメントに含まれている 同一のソフトウェアに含まれる同一のライセンスのソースファイルならばライセンスの指定に統一された記述が用いられている ということが経験則から言えるためです. /* * You should have received * a copy of the GNU General * Public License * along with this program.. */ 第69回 情報処理学会全国大会

提案手法の概要 コメント間に共通して現れる文字列(共通文字列)を抽出 部品検索システムの管理者が共通文字列が示すライセンスを手作業で確認する 共通文字列は機械的に抽出される 部品検索システムの管理者が共通文字列が示すライセンスを手作業で確認する 提案するライセンス特定手法ではまず,コメント間に共通して現れる文字列を抽出します. この文字列を共通文字列と呼び,共通文字列は機械的に抽出されます. それから,システムの管理者が共通文字列が示すライセンスを手作業で確認します. これが提案手法の大まかな流れとなります. 第69回 情報処理学会全国大会

提案手法の特長 簡易な作業で特定 効率的に特定 共通文字列を読み,対応するライセンスを選ぶだけでソースファイルのライセンスを特定 ファイルの多い順に共通文字列を処理 ⇒一度に多くのファイルのライセンスを特定 提案手法の特長は2つあります. ひとつは簡易な作業で特定できることです. これは,共通文字列を読み~ためです. もうひとつは,効率的に特定できることです. ソースファイル群全体のライセンスを早く特定できるということです. これは,ファイルの多い順に~,一度に多くのファイルのライセンスを特定 できるためです. #メモ 機械で抽出→なんのアルゴリズム? 第69回 情報処理学会全国大会

提案手法の流れ ソースファイル コメント ライセンスが未特定のファイル数 共通文字列 a 2 α α α 管理者 b 4 β c 2 2 d α α α 管理者 b 4 β c 2 2 d γ γ ソースファイルから~ コメントから~ ライセンスが未特定のファイル数が最大の~ この場合はβ βを特定すると~ (ソースファイル灰色) ソースファイルのライセンスが特定されたのでファイル数が再計算される 次にライセンスが~ この場合はγ 同様に特定 次はαですが,ファイル数0だからこれで終了 #メモ 配色考え直す(分かりやすく) 図と同時に文字情報を提供 ライセンスの特定できたソースファイルに目印 「もっとも最大」禁止 後半流し気味に ライセンスが未特定のファイル数が0でない共通文字列が残っている場合はライセンスの特定を続ける. 残っていない場合は終了する. ソースファイルからコメントを抽出する. コメントから共通文字列を抽出する. 各共通文字列のライセンスが未特定のファイル数を計算する ライセンスが未特定のファイル数が最大の共通文字列を確認し,ライセンスを特定する. e f 第69回 情報処理学会全国大会

適用実験 目的⇒提案手法によるライセンス特定の効率を評価する 提案手法によるライセンス特定のカバー率を調査 対象:Gaimのソースファイル(C言語:182個) Tuunanenらの手法と比較 共通文字列の抽出にCCFinderを使用 30単語以上の共通文字列 126 個のファイルでコメントによりライセンスが指定 提案手法によるライセンスの~を評価するため,適用実験を行いました. 実験内容は提案手法による~ 実験対象にはGaimを構成するC言語のソースファイル181個を用いました. 理由は正規表現を用いるtuunannenらの手法と比較するためです. また,126 個のファイルでコメントによりライセンスが指定されており, この数は本手法とtuunannenらの手法でライセンスを特定できる最大の数となります. #メモ 「126 個のファイルでコメントによりライセンスが指定されている」が何を意味するのかを言う 「126個~」の下りと「手法と比較する~」のくだりは先に比較のほうから. 第69回 情報処理学会全国大会

ライセンスを指定する記述の一部であったが, 実験結果 提案手法によるカバー率の推移 ライセンスを特定するためのコメントを含む ソースファイルの割合 0.69(=126/182) 0.68 0.69 ライセンスの特定とは無関係 このグラフは手案手法によるカバー率の推移を示したものです. 横軸は確認した共通文字列の数を表し, 縦軸は各時点におけるカバー率を表しています 本手法とTunnanenらの手法でのカバー率の上限となるライセンスを~ 126個を特定する場合カバー率は0.69 本手法では終了までに19個の共通文字列を確認し,カバー率が0.69と 上限まで上昇しました. また,本手法では序盤にカバー率の大きな伸びを示し,6個の時点でも0.68まで 上昇していました. 一方で,このように丸の部分と四角で囲まれた~ これはライセンスの特定できない共通文字列が現れたためです. このような共通文字列は2種類あり, 一方は~ 残りは~でした. #メモ 0.69が手法の限界であることは言う かなり序盤で大きくカバー率を稼いでいることも言いたい. まず最終結果.次に6個時点 こんな文字列も出たよ,みたいに. アニメ直す ライセンスを指定する記述の一部であったが, ライセンスを特定出来なかった 第69回 情報処理学会全国大会

考察(1/2) ライセンス指定の記述を含む全てのファイルのライセンスを特定できた 本手法⇒システムにより抽出される19個の共通文字列を人が確認 抽出された文字列を見ているだけなので負担が小さい Tunnanenらの手法⇒人が7 種類の正規表現のパターンを作成 ライセンスが未特定のソースファイルから一つずつパターンを作る分負担が大きい 本手法により人の負担が少なく,ファイル群のライセンスの特定ができる 第69回 情報処理学会全国大会

考察(2/2) ライセンスを特定できない共通文字列が現れた システムの管理者の作業量が増える ライセンスと無関係 ライセンス指定の一部 共通文字列中に出現する単語を考慮すれば不要な共通文字列を排除できる可能性がある is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ライセンス名 General Public License 次に,ライセンスを~ このような共通文字列は2種類ありました. 一方はライセンスと無関係な共通文字列. もう一方はライセンスの指定と関連があるものでした. 例えばこのような文字列が該当いたします. この文字列の後には欠落部分があるのですが, この部分には”General~”と”Lesser~”と2種類の異なったライセンス名が入る可能性があります. そのため,一つのライセンスに特定することはできません. このような共通文字列が現れることにより,システムの~ この問題に対し,共通文字列中の~ Lesser General Public License 第69回 情報処理学会全国大会

まとめと今後の課題 まとめ 今後の課題 ソフトウェアライセンス特定手法の提案 実際のソフトウェアに対して適用実験 特定できるファイルのライセンスは全て特定 ライセンスを特定できない共通文字列 今後の課題 ライセンスを特定できない共通文字列の除去 多種のソースファイル群に対する適用実験 ソフトウェア部品検索システムSPARS-J へ実装 本発表ではソフトウェアライセンス特定手法の提案を行いました. また,実際のソフトウェアであるGaimのソースファイルを用いて適用実験を行いました. (ところ, 特定できるファイルのライセンスは全て特定でき, また効率的でした. 一方でライセンスが特定できない共通文字列も現れておりました.) 今後の課題として,ライセンスを特定できない共通文字列の除去, 大規模なソースファイル群に対する適用実験, そしてソフトウェア部品検索システムSPARS-Jへ実装することが挙げられます. 第69回 情報処理学会全国大会