類似プロダクト比較のための ディレクトリ構造の対応付け手法

Slides:



Advertisements
Similar presentations
ゲームプログラミング講習 第2章 関数の使い方
Advertisements

サービス管理責任者等研修テキスト 分野別講義    「アセスメントと        支援提供の基本姿勢」 <児童発達支援管理責任者> 平成27年10月1日.
ヒトの思考プロセスの解明を目的とするワーキングメモリの研究
第27講 オームの法則 電気抵抗の役割について知る オームの法則を使えるようにする 抵抗の温度変化を理解する 教科書P.223~226
コラッツ予想の変形について 東邦大学 理学部 情報科 白柳研究室 山中 陽子.
コンパイラ 第3回 字句解析 ― 決定性有限オートマトンの導出 ―
第5章 家計に関する統計 ー 経済統計 ー.
公共財 公共経済論 II no.3 麻生良文.
VTX alignment D2 浅野秀光 2011年12月15日  放射線研ミーティング.
冷却フランシウム原子を用いた 電子の永久電気双極子能率探索のための ルビジウム磁力計の研究
生命情報学 (8) スケールフリーネットワーク
前半戦 「史上最強」風 札上げクイズ.

認知症を理解し 環境の重要性について考える
フッ化ナトリウムによる洗口 2010・9・13 宮崎市郡東諸県郡薬剤師会 学校薬剤師  日高 華代子.
食品の安全性に関わる社会システム:総括 健康弱者 ハイリスク集団 HACCP (食肉処理場・食品工場) 農場でのQAP 一般的衛生管理
規制改革とは? ○規制改革の目的は、経済の活性化と雇用の創出によって、   活力ある経済社会の実現を図ることにあります。
地域保健対策検討会 に関する私見(保健所のあり方)
公共政策大学院 鈴木一人 第8回 専門化する政治 公共政策大学院 鈴木一人
医薬品ネット販売規制について 2012年5月31日 ケンコーコム株式会社.
平成26年8月27日(水) 大阪府 健康医療部 薬務課 医療機器グループ
平成26年度 呼吸器学会からの提案結果 (オレンジ色の部分が承認された提案) 新規提案 既収載の変更 免疫組織化学染色、免疫細胞化学染色
エナジードリンクの危険性 2015年6月23日 経営学部市場戦略学科MR3195稲沢珠依.
自動吸引は 在宅を変えるか 大分協和病院 院長         山本 真.
毎月レポート ビジネスの情報 (2016年7月号).
医療の歴史と将来 医療と医薬品産業 個人的経験 3. 「これからの医療を考える」 (1)医薬品の研究開発 -タクロリムスの歴史-
社会福祉調査論 第4講 2.社会調査の概要 11月2日.
2015年12月28日-2016年3月28日 掲載分.
2010度 民事訴訟法講義 補論 関西大学法学部教授 栗田 隆.
腫瘍学概論 埼玉医科大学国際医療センター 包括的がんセンター 緩和医療科/緩和ケアチーム 奈良林 至
“企業リスクへの考え方に変化を求められています。 トータルなリスクマネジメント・サービスをプロデュースします。“
情報漏えい 経済情報学科 E  西村 諭 E  釣 洋平.
金融班(ミクロ).
第11回 2009年12月16日 今日の資料=A4・4枚+解答用紙 期末試験:2月3日(水)N2教室
【ABL用語集】(あいうえお順) No 用語 解説 12 公正市場価格 13 債権 14 指名債権 15 事業収益資産 16 集合動産 17
基礎理論(3) 情報の非対称性と逆選択 公共政策論II No.3 麻生良文.
浜中 健児 昭和42年3月27日生まれ 東京都在住 株式会社ピー・アール・エフ 代表取締役 (学歴) 高 校:千葉県立東葛飾高校 卒業
COPYRIGHT(C) 2011 KYUSHU UNIVERSITY. ALL RIGHTS RESERVED
Blosxom による CMS 構築と SEO テクニック
記入例 JAWS DAYS 2015 – JOB BOARD 会社名 採用職種 営業職/技術職/その他( ) 仕事内容 待遇 募集数
ネットビジネスの 企業と特性 MR1127 まさ.
Future Technology活用による業務改革
ネットビジネス論(杉浦) 第8回 ネットビジネスと情報技術.
g741001 長谷川 嵩 g740796 迫村 光秋 g741000 西田 健太郎 g741147 小井出 真聡
自然独占 公共経済論 II no.5 麻生良文.
Autonomic Resource Provisioning for Cloud-Based Software
Webショップにおける webデザイン 12/6 08A1022 甲斐 広大.
物理的な位置情報を活用した仮想クラウドの構築
ハイブリッドクラウドを実現させるポイントと SCSKのOSSへの取組み
寺尾 敦 青山学院大学社会情報学部 第12回 情報デザイン(4) 情報の構造化と表現 寺尾 敦 青山学院大学社会情報学部
【1−1.開発計画 – 設計・開発計画】 システム開発計画にはシステム開発を効率的、効果的に実行する根拠(人員と経験、開発手順、開発・導入するシステム・アプリケーション・サービス等)を記述すること。 システム開発の開始から終了までの全体スケジュールを記載すること。 アプリケーション機能配置、ソフトウェア、インフラ構成、ネットワーク構成について概要を示すこと。
6 日本のコーポレート・ガバナンス 2008年度「企業論」 川端 望.
急成長する中国ソフトウェア産業 中国ソフトウェアと情報サービス産業の規模 総売上高は5年間で約5.3倍の成長
米国ユタ州LDS病院胸部心臓外科フェローの経験
公益社団法人日本青年会議所 関東地区埼玉ブロック協議会 JCの情熱(おもい)育成委員会 2011年度第1回全体委員会
次世代大学教育研究会のこれまでの活動 2005年度次世代大学教育研究大会 明治大学駿河台校舎リバティタワー9階1096教室
子どもの本の情報 大阪府内の協力書店の情報 こちらをクリック 大阪府内の公立図書館・図書室の情報
第2回産業調査 小島浩道.
〈起点〉を示す格助詞「を」と「から」の選択について
広東省民弁本科高校日語専業骨幹教師研修会 ①日本語の格助詞の使い分け ②動詞の自他受身の選択について   -日本語教育と中日カルチャーショックの観点から- 名古屋大学 杉村 泰.
■5Ahバッテリー使用報告 事例紹介/東【その1】 ■iphon4S(晴れの昼間/AM8-PM3) ◆約1時間で68%⇒100%
『ワタシが!!』『地域の仲間で!!』 市民が始める自然エネルギー!!
ポイントカードの未来形を形にした「MUJI Passport」
SAP NetWeaver を支える Microsoft テクノロジーの全貌 (Appendix)
ガイダンス(内業) 測量学実習 第1回.
Python超入門 久保 幹雄 東京海洋大学.
熱力学の基礎 丸山 茂夫 東京大学大学院 工学系研究科 機械工学専攻
京都民医連中央病院 CHDF学習推進委員会
資料2-④ ④下水道.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
Presentation transcript:

類似プロダクト比較のための ディレクトリ構造の対応付け手法 井上研究室 坂口 雄亮

類似プロダクトの開発 ソフトウェアプロダクト開発では,開発のコストを削減するために,既存のソースコードの再利用がなされる 開発管理が行われない場合,細かな改変が加えられ,類似したプロダクトが独立した形で多く生まれる ソフトウェアプロダクト開発において,開発のコストを削減するために,既存のソースコードの再利用がなされます. しかし,どのプロダクトからどの機能を再利用したか,ということや,どのプロダクトから派生されたか,といったような管理がしっかりとなされこと場面も多く,その場合,細かな改変がなされた類似したプロダクトが独立して多く生まれます.

類似プロダクトの比較 類似プロダクトの ディレクトリ単位での比較が重要 機能拡張やバグ修正などのコストが増加し,プロダクトの比較が必要となる Jongeは,プロダクト内の1つの機能に当たるファイル群が,1ディレクトリに格納される事が多いことを明らかにした[1] 類似プロダクトの ディレクトリ単位での比較が重要 そのような状況では,機能を拡張したり,再利用によってバグを取り込んだ場合の修正などのコストが増加し,プロダクト間で共通する機能や追加された機能を調べるためにプロダクトの比較が必要となります ここで一つの研究として,ジョーングはプロダクト内の1つの機能にあたるファイル群が1つのディレクトリに格納されることが多いことを明らかにしました そのため類似プロダクトの比較において,ディレクトリ単位で行うことが重要であると考えられます [1] Merijn de Jonge. Build-level components. IEEE Transactions on Software Engineering, 2005.

ディレクトリ単位の比較 共通したディレクトリの対応付けを 行う必要がある Duszynskiらは,複数プロダクト間で対応するディレクトリが与えられた場合,ソースコードの差分を用いてディレクトリ単位の比較を行うツールを提示した[2] ディレクトリの移動やリネームが行われた場合,ディレクトリの対応を容易にとることができない 共通したディレクトリの対応付けを 行う必要がある ディレクトリ間の比較として,ダスジンスキーらは複数のプロダクト間で対応するディレクトリが与えられた場合,ファイル単位の比較ではなく,ファイルのソースコードの差分を用いて,ディレクトリ単位での比較を行いました しかし,ディレクトリの移動やリネームが行われた場合,ディレクトリの対応を取ることが難しいとも述べています そのため,ディレクトリ単位の比較をするために,共通したディレクトリの対応付けを行う必要があります [2]Slawomir Duszynski, et al., Analyzing the source code of multiple software variants for reuse potential. In Proceedings of the 18th Working Conference on Reverse Engineering, 2011.

ディレクトリの対応付け 既存研究では複数プロダクトの 対応付けがなされていない Holtenらは,2つのプロダクト間のディレクトリ構造の対応関係を可視化する技術を開発した[3] 既存研究では複数プロダクトの 対応付けがなされていない ディレクトリの対応付けの既存研究として,ホルテンらは,2つのプロダクト間のディレクトリ構造の対応関係を可視化する技術を開発しました しかし,複数プロダクトの対応付けがなされていません [3]Danny Holten and Jarke J. van Wijk. Visual comparison of hierarchically organized data. In Proceedings of the 10th Joint Eurographics / IEEE - VGTC Conference on Visualization, 2008.

提案手法 複数プロダクトのディレクトリ構造を自動的に 対応付ける手法を提案 類似したファイルを基に,ディレクトリを対応付ける 複数プロダクトのディレクトリ構造を自動的に 対応付ける手法を提案 類似したファイルを基に,ディレクトリを対応付ける 対応付けたものを単一のディレクトリとみなし,ディレクトリツリーを作成 入力 複数プロダクトのソースコード 出力 単一のディレクトリツリー そこで,本研究では,提案手法として,複数のプロダクトのディレクトリ構造を自動的に対応付ける手法を提案します 基本的な考え方として,ディレクトリの対応付けは、類似したファイルを基に行います またディレクトリを対応付けてまとめたものをディレクトリとみなして,ディレクリツリーを作成します 提案手法では,複数の類似プロダクトのソースコードを入力し,ディレクトリの対応を取り,最終的に単一のディレクトリツリーを出力します.

手法の説明 Step1. ファイルを持つ ディレクトリのグループ化 ディレクトリツリー Step2. ファイルを持たない Step3. プロダクト ソースコード 手法の概要説明を行います 手法は3つのstepで構成されてます まずstep1では,ファイルを持つディレクトリを扱い,ファイルを基にして類似したファイルを持つディレクトリをグループにまとめます. 次にstep2では,ファイルを持たないディレクトリを扱い,step1での結果を基にしてディレクトリをグループにまとめます. 類似したディレクトリをファイルを基にしてグループ化するため,ディレクトリの移動やリネームがあっても1つにまとめることができます. 最後にstep3では,各グループをディレクトリとみなし,ディレクトリツリーを作成し出力します. ここで,出力されたディレクトリツリーの各ディレクトリを見ることで,対応しているディレクトリがまとめられているため,ディレクトリ比較が容易に行えると言えます. ディレクトリツリー Step2. ファイルを持たない ディレクトリのグループ化 Step3. ディレクトリツリー構築

Step1.ファイルを持つ ディレクトリのグループ化 ファイルを持つディレクトリ間の類似度を計算する 𝑠𝑖𝑚 𝐷1, 𝐷2 = |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∩ 𝑙𝑖𝑛𝑒𝑠 𝐷2 | |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∪ 𝑙𝑖𝑛𝑒𝑠(𝐷2)| lines(D)はディレクトリDの全てのファイルの “空白空行を無視した行”の集合 類似度がある閾値以上 同じグループ 類似しないディレクトリ 独立したグループ ここから各ステップの詳細を説明します ステップ1ではファイルを持つディレクトリのグループ化を行います ファイル内容が類似しているディレクトリを対応しているとみなします ディレクトリ間の類似度は,ディレクトリ内の全てのファイルの空白空行を無視した行の集合をlines(D)としたとき,その集合がどれだけ共通しているかで表します ディレクトリD1とD2の類似度simはこの式で表します これはlines(D1)とlines(D2)の和集合の要素数に対する共通集合の要素数の割合です.共通部分が多い場合simの値が大きくなり対応関係が大きいと表せます。 この類似度simがある閾値以上の場合対応しているとみなし同じグループとします ここで右図はプロダクト1,2,3のファイルをもつディレクトリの一部の例です。ディレクトリ間に辺が引かれているものが対応しているという例です この場合この4つのディレクトリは

Step1.ファイルを持つ ディレクトリのグループ化 ファイルを持つディレクトリ間の類似度を計算する 𝑠𝑖𝑚 𝐷1, 𝐷2 = |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∩ 𝑙𝑖𝑛𝑒𝑠 𝐷2 | |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∪ 𝑙𝑖𝑛𝑒𝑠(𝐷2)| lines(D)はディレクトリDの全てのファイルの “空白空行を無視した行”の集合 類似度がある閾値以上 同じグループ 類似しないディレクトリ 独立したグループ 1つのグループになります またプロダクト2,3の下の2つのディレクトリはどのディレクトリとも類似してないため

Step1.ファイルを持つ ディレクトリのグループ化 ファイルを持つディレクトリ間の類似度を計算する 𝑠𝑖𝑚 𝐷1, 𝐷2 = |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∩ 𝑙𝑖𝑛𝑒𝑠 𝐷2 | |𝑙𝑖𝑛𝑒𝑠 𝐷1 ∪ 𝑙𝑖𝑛𝑒𝑠(𝐷2)| lines(D)はディレクトリDの全てのファイルの “空白空行を無視した行”の集合 類似度がある閾値以上 同じグループ 類似しないディレクトリ 独立したグループ 独立したグループになります このようにして,ファイルを持つディレクトリを全てグループ化します

Step2.ファイルを持たない ディレクトリのグループ化(1/2) ファイルを持たない末端ディレクトリのグループ化 親ディレクトリのグループが同一の場合 同じグループ 親ディレクトリのグループが他と異なる場合 親ディレクトリがファイルを持たない場合 独立したグループ 次にステップ2ではファイルを持たないディレクトリのグループ化を行います まずファイルを持たないディレクトリはディレクトリ構造の末端であるか階層途中であるかで分けられます まず末端ディレクトリからグループ化します 末端ディレクトリは親ディレクトリの情報しかないため,下の例のように親ディレクトリのグループが同じである時

Step2.ファイルを持たない ディレクトリのグループ化(1/2) ファイルを持たない末端ディレクトリのグループ化 親ディレクトリのグループが同一の場合 同じグループ 親ディレクトリのグループが他と異なる場合 親ディレクトリがファイルを持たない場合 独立したグループ 対応しているとみなし同じグループとします 次に,親ディレクトリのグループが他とは異なる場合や,ファイルがなくまだグループ化されていない場合は,

Step2.ファイルを持たない ディレクトリのグループ化(1/2) ファイルを持たない末端ディレクトリのグループ化 親ディレクトリのグループが同一の場合 同じグループ 親ディレクトリのグループが他と異なる場合 親ディレクトリがファイルを持たない場合 独立したグループ 独立したグループとします

Step2.ファイルを持たない ディレクトリのグループ化(2/2) ファイルを持たない末端でないディレクトリの グループ化 サブディレクトリのグループが一つでも同一の場合 同じグループ サブディレクトリのグループが全て異なる場合 独立したグループ 次に階層途中のファイルを持たないディレクトリのグループ化を行います 下の例のようにサブディレクトリをファイルのようにみなしサブディレクトリのグループが1つでも同じである時

Step2.ファイルを持たない ディレクトリのグループ化(2/2) ファイルを持たない末端でないディレクトリの グループ化 サブディレクトリのグループが一つでも同一の場合 同じグループ サブディレクトリのグループが全て異なる場合 独立したグループ 対応しているとみなし同じグループとします サブディレクトリのグループが全て異なる場合

Step2.ファイルを持たない ディレクトリのグループ化(2/2) ファイルを持たない末端でないディレクトリの グループ化 サブディレクトリのグループが一つでも同一の場合 同じグループ サブディレクトリのグループが全て異なる場合 独立したグループ 独立したグループとします このようにしてファイルを持たないディレクトリを全てグループ化します

Step3.ディレクトリツリー構築(1/3) 各入力のルートディレクトリを含むグループを 1つにまとめルートディレクトリグループとする 各入力のルートディレクトリを含むグループを 1つにまとめルートディレクトリグループとする ルートディレクトリグループ 最後にステップ3では1つのグループを1つのディレクトリとみなし,ディレクトリツリーを構築し出力を行います ディレクトリ構造を構築するため,ルートディレクトリとなるグループを設定し,それ以外のグループでは親ディレクトリとなる親グループを設定します まず各入力のプロダクトソースコードのルートディレクトリを含むグループを1つにまとめ,それをルートディレクトリグループとします 例ではこのグループがルートディレクトリとなります プロダクト ソースコード

Step3.ディレクトリツリー構築(2/3) ルートディレクトリグループ以外について, 親グループをただ1つ決める ルートディレクトリグループ以外について, 親グループをただ1つ決める ディレクトリの親ディレクトリが属するグループの中で1番多いものを親グループとする グループAの 親グループ 次にルートディレクトリ以外のグループでは,親グループを決めます 決め方は,グループに属するディレクトリの親ディレクトリが属するグループの中で1番多いものを親グループとします 候補が複数ある場合,入力順により1つに定まるものとします グループA

Step3.ディレクトリツリー構築(3/3) 各グループを親グループに接続し, ディレクトリツリーを出力する 各グループを親グループに接続し, ディレクトリツリーを出力する 最後に各グループを親グループに接続することでディレクトリツリーが構築され,それを出力します.

ケーススタディ(1/3) 入力 出力 Android 閾値 : 0.6 出力ディレクトリ数 : 16,030 F-10D (2012/7) ディレクトリ数 8,456 F-01F (2013/10) ディレクトリ数 7,528 F-02G (2014/11) ディレクトリ数 13,347 合計サイズ : 約4.63GByte 閾値 : 0.6 出力 出力ディレクトリ数 : 16,030 実行時間 : 約3時間 (うち比較部分は約2時間) 提案手法をツール化し,ケーススタディを実施しました. 入力はこの3つのAndroid端末のソースコードです ファイルを持つディレクトリが対応しているとみなすしきい値を0.6としました 出力されたディレクトリ数は約1万6千となり,実行時間は約3時間でした.そのうちファイルを持つディレクトリの比較部分は2時間でした

ケーススタディ(2/3) 出力例 出力結果 : root / kernel / arch / microblaze / boot F-10D, F-01F, F-02G / kernel / arch / microblaze / boot bootディレクトリの内容 出力結果 : root / kernel / arch / microblaze / boot 出力bootディレクトリの内容 出力bootディレクトリに 対応付けられたディレクトリ 実際の出力例を示します.ツールは1グループを1ディレクトリとして出力し,グループ内のディレクトリのファイルも出力します.ただしファイル名と内容が全く同じであるものは1つだけ出力し,ファイル名が同じであっても内容が違う場合は異なる数だけ出力します 例では3つのandroid端末の対応しているディレクトリ部分が、共通したパス,ディレクトリ内容となっており上の図が対応ディレクトリの中身を表しています 出力されたディレクトリは同じパスとして出力されました。ファイルはlinked_dts.Sというファイルは3端末とも内容が共通で1つの出力,makefikeというファイルは内容が異なるため2つ出力されています サブディレクトリはファイルを持っていましたがF01Fのものだけ他の2つと類似度が0.6未満であったため別にグループ化され出力されています 入力のどのディレクトリが配置されているのかを示すテキストも出力して閲覧できるようにしています その内容が右下図のようになっています F-10D\kernel\arch\microblaze\boot F01F\kernel\arch\microblaze\boot F02G\kernel\arch\microblaze\boot

ケーススタディ(3/3) ディレクトリの移動 出力結果 : root / kernel / block / partitions F-10D / root / kernel / fs / partitions F-01F, F-02G / root / kernel / block / partitions partitionsディレクトリの内容の一部 出力結果 : root / kernel / block / partitions 出力partitionsディレクトリの内容の一部 次にディレクトリの移動が起こった場合でも対応付けられた例を示します.Partitionsというディレクトリは一番古いF-10Dは他の2つと親ディレクトリが異なり,派生の中で移動があったと考えられます その場合でも出力されたテキスト情報より3つのディレクトリを対応付けられていることが確認できます 更に出力ディレクトリの親ディレクトリはblockであり親グループを決める際に多い方のblockが選ばれたことも確認できます 出力partitionsディレクトリに対応付けられたディレクトリ F-10D\kernel\fs\partitions F02G\kernel\block\partitions F01F\kernel\block\partitions

まとめ 複数のプロダクトソースコードのディレクトリ構造を対応付ける手法を提案した 提案手法をツールとして実装し,ケーススタディを行った 複数プロダクトのディレクトリ構造をディレクトリの移動やリネームがある場合でも対応付けた 今後の課題 ディレクトリのパスや名前を考慮した対応付け 単純にディレクトリ名で対応付けたものとの評価 まとめです,本研究ではディレクトリ比較を行うために,複数のディレクトリ構造を対応付ける手法を提案しました.実際に手法をツールとして実装し,対応しているディレクトリの移動や,発表では省略しましたがリネームがある場合でも出来ることをケーススタディで確認しました 今後の課題として,ケーススタディ(2/3)で示したように、対応しているであろうディレクトリをまとめるために,ディレクトリのパスや名前を考慮した対応付けを考える必要があります また単純にディレクトリ名だけで対応付けたものとの評価が必要です 以上で発表をおわります.ありがとうございました.