コードクローンに対する リファクタリング可能性に基づいた 削減可能ソースコード量の調査

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:

コードクローンに対する リファクタリング可能性に基づいた 削減可能ソースコード量の調査 オープンソースソフトウェアを対象とした集約可能コードクローン量の調査という題目で研究報告をします. ○石津卓也1  吉田則裕2 崔恩瀞3 井上克郎1 1大阪大学 2名古屋大学 3 奈良先端科学技術大学院大学

コードクローンを削減する研究を行っている. 同一または類似した部分を持つコード片[1] . 主な発生原因:コピーアンドペースト. コードクローンの修正時に多大な労力. まず初めにコードクローンについて説明します. コードクローンとは,同一または類似した部分を持つコード片をことを言います. コードクローン関係にある2つのコード片をクローンペアといいます。 また、コードクローンの集合をクローンセットと呼びます. コードクローンの主な発生原因はコピーアンドペーストといわれています.これは同じ処理内容を反復して書く際にコピーアンドペーストを使って書くためと考えられています. このクローンですが,クローンのコード片を1つ修正すると,他のクローンについても修正を検討する必要があります. しかし,それは開発者がクローンがどこにあるのか知っている必要があり,開発者にとって負担にかかる作業となります. そのため,コードクローンの数を減らす取り組みについて研究されています. コードクローンを削減する研究を行っている. コードクローン ファイルA ファイルB クローンペア クローンセット (以下,CS) [1]井上克郎, 神谷年洋, 楠本真二. コードクローン検出法. コンピュータソフトウェア, Vol. 18, No. 5, pp. 47–54, 2001.

コードクローンの集約 定義: 同一CS内に含まれる処理内容を 1つのメソッドやクラスにまとめること. コードクローンの問題を解決する手法として,集約という手法があります。 これは、同一クローンセット内に含まれる処理内容を1つのメソッドやクラスにまとめることをいいます。 メリットは,ソースコードの行数が削減するということです. コードクローンが減少をすると余分なソースコードが削減されるため,保守作業にかかる労力が軽減できるという効果が期待できます。

集約のメリット ソースコード行数削減の可能性. 開発者の集約後の保守作業にかかる労力を 軽減する効果が期待できる. コードクローンが減少することで,               ソースコードの行数が減少する. 開発者の集約後の保守作業にかかる労力を 軽減する効果が期待できる.

コードクローンの集約サービス(1/2) 集約サービスへ保守作業に労力がかかる ソースコードに対して,次の見積もり依頼がある. ①見積り依頼 企業Aの ソースコード ソフトウェアの 最適化を行う    サービス ビジネスの現場では,どのくらい事前に提示する必要があります。 集約サービスへ保守作業に労力がかかる     ソースコードに対して,次の見積もり依頼がある. どのくらいソースコードを保守しやすくなるか. いくらくらい費用が掛かるか. 期間はどの程度かかるか.

コードクローンの集約サービス(2/2) コストや効果の見積もり提示. ②見積り提示 企業Aの ソフトウェアの ソースコード 最適化を行う ビジネスの現場では,どのくらい事前に提示する必要があります。 コストや効果の見積もり提示. ソースコードの規模やコードクローンの数で判断する.

集約サービスの問題と解決案 問題点 顧客への見積もりを事前に提示するのが難しい. 解決案 コードクローン数が多い場合,時間や金銭的コストを       把握するのが難しい. このようなケースにおいて、集約作業には問題点があります。 それは,多くのコードクローンが検出されてしまった場合、その作業に必要な時間や金銭的コストが把握するのが困難であるということです。 すなわち、どれほどのコードクローンがどのくらいのコストで削減できるのか事前に提示するのが難しいということです。 解決案 指標として削減可能な行数である            削減可能ソースコード量を新たに定義する. 減少する行数が開発者にとって                 直観的な指標になりやすいと考えられる.

削減可能ソースコード量 定義: 仮に集約によってコードクローンが削減した場合, 減少するソースコードの行数. 算出の方針: 削減前の行数と削減後の行数の差. 削減前 削減後

削減可能ソースコード量の2つの課題 検出したコードクローンから 単純には削減可能ソースコード量を算出できない. 検出したコードクローンから              単純には削減可能ソースコード量を算出できない. コードクローンのオーバーラップ コードクローンの集約可能性

1. コードクローンのオーバーラップ クローンセット1 クローンセット2 同時には集約できない. ファイルA ファイルB ファイルC

本研究では,2つの課題を解決しつつ, 削減可能ソースコード量を算出する手法を提案する. 2. コードクローンの集約可能性 全てのコードクローンが集約ができるとは限らない. 条件付きreturn文などが含まれている. クラスの継承関係が複雑である. etc. 集約可能の条件が複雑で,                  研究対象を単一言語に絞っても困難な課題である. 本研究では,2つの課題を解決しつつ,         削減可能ソースコード量を算出する手法を提案する.

研究概要 削減可能ソースコード量を算出する手法の提案. 削減可能ソースコード量を算出する手法を 適用した調査. 2つの課題を解決する手段. 本研究での対象言語はJava. 削減可能ソースコード量を算出する手法を     適用した調査. オープンソースソフトウェア(OSS)が対象. コードクローンが占める行数の内,             およそ5%から6%が削減可能であると判明.

オーバーラップしているCSは 組み合わせ問題として処理する. 削減可能ソースコード量算出手法 STEP2 ソースコード全体 JDeodorant[2] 集約可能なコードクローン   以外を排除する. STEP1 集約可能なコードクローン コードクローン検出ツール CCFinderX STEP3 検出されたコードクローン 削減可能ソースコード量の算出 オーバーラップしているCSは 組み合わせ問題として処理する. [2]Nikolaos Tsantalis,Davood Mazinanian, and Giri Panamoottil Krishnan, ”Assessing the Refactorablility of Software Clones,” IEEE Transactions on Software Engineering,vol41,no.11,pp.1055-1090,November 2015

STEP2 : CSの集約可能性の分類 JDeodorantの集約可能性判定機能 CS単位の判定 集約可能性の可否を複数の制約に基づいて判定する. クローンペア単位で判定する. CS単位の判定 削減可能ソースコード量の算出には CS単位の集約可能性が必要である. All すべてのクローンペアが集約可能なCS. Part それぞれ1つ以上の集約可能と集約不能の   クローンペアが含まれるCS. Non すべてのクローンペアが集約不能なCS.

STEP3: オーバーラップに対する 最適解への工夫 最適解の難解さ オーバーラップしているCSは部分的にしか集約できな い. 最適解を求めるには,通常組み合わせの全通りを計算 する必要がある. オーバーラップが𝑘回発生した場合の時間計算量は  少なくても𝑂( 2 𝑘 )となる. 工夫してできるだけ最適解に近い手法を    適用する必要がある.

STEP3: オーバーラップに対する メタヒューリスティクス 組み合わせ最適化問題を求めるアルゴリズムの  基本的な枠組みを指す. 貪欲法 山登り法 焼きなまし法 遺伝的アルゴリズム 1~4から得られる削減可能ソースコード量の差は      僅かであるため,実行時間が少ない貪欲法を選択した[3]. [3]石津卓也, 吉田則裕,崔恩瀞.井上克郎.メタヒューリスティックを用いた集約可能コードクローン量の推定. 情報処理学会研究報告, Vol.2016-SE-193, No.5, pp.1-8

STEP3: 貪欲法の適用例(1/3) (前提)オーバーラップの検出と 各CSの削減可能ソースコード量の算出(後述). 100 1 ID 90 80 2 3 70 60 4 5 CS間のオーバーラップ

STEP3: 貪欲法の適用例(2/3) (1)最も削減可能ソースコード量が大きいID1のCS を候補に加える. (2)ID1とオーバーラップしているID2,3のCSを候補 から除外する. 100 1 90 80 2 3 70 60 4 5

STEP3: 貪欲法の適用例(3/3) (3)次に候補に加えるべきCSはID4である. (2)最後にID4とオーバーラップしているID5のCS を候補から除外する. 100 1 90 80 2 3 70 60 4 5

STEP3: CSに対する 削減可能ソースコード量の算出式 1つのコードクローンの行数 𝑐 𝑠𝑖𝑧𝑒 𝑐 𝑠𝑖𝑧𝑒 = 𝑐 𝑒𝑛𝑑 − 𝑐 𝑏𝑒𝑔𝑖𝑛 +1 ( 𝑐 𝑒𝑛𝑑 , 𝑐 𝑏𝑒𝑔𝑖𝑛 は終了行数,開始行数) 平均的なコードクローンの行数 𝑐 𝑠𝑖𝑧𝑒 ∗ 𝑐 𝑠𝑖𝑧𝑒 ∗ = 1 𝑛 𝑖≤𝑛 𝑐 𝑠𝑖𝑧𝑒,𝑖 コードクローン毎にコーディングスタイルが違う恐れが あるため,平均を割り出す. CSの削減可能ソースコード量𝑇(𝐶𝑆) 𝑇 𝐶𝑆 =𝑛∗ 𝑐 𝑠𝑖𝑧𝑒 ∗ −( 𝑐 𝑠𝑖𝑧𝑒 ∗ +2+𝑛)

STEP3: CSに対する 削減可能ソースコード量の算出過程 𝑇 𝐶𝑆 =𝑛∗ 𝑐 𝑠𝑖𝑧𝑒 ∗ −( 𝑐 𝑠𝑖𝑧𝑒 ∗ +2+𝑛) 𝑛∗ 𝑐 𝑠𝑖𝑧𝑒 ∗ 削減前のCSが占める行数を示す. 𝑐 𝑠𝑖𝑧𝑒 ∗ +2+𝑛 削減後に集約による振る舞いを 保持するための処理に 必要な行数を示す.

調査概要 7つのOSSに対して,削減可能ソースコード量 を調査した. 7つのOSSは研究で参考した論文で対象となっていた. 表中の行数の単位はkLoC プロジェクト名 バージョン 行数 コードクローン行数(%) Apache Ant 1.10.1 268 60(22.3) Columba 1.4 54 4.6(8.5) JMeter 3.2 91 5.6(6.1) JEdit 5.4.0 180 1.8(1.0) JFreeChart 1.0.19 310 175(56.4) JRuby 1.7.27 325 61(18.8) Apache Xerces 2.10.0 238 83(34.9)

リファクタリング可能性に基づく 分類 Nonは,集約可能なクローンペアが 含まれていないので除外する. リファクタリング可能性に基づく 分類 プロジェクト名 All Part Non Apache Ant 303(30.1) 50(5.0) 652(64.9) Columba 37(27.4) 4(3.0) 94(69.6) JMeter 43(21.4) 2(1.0) 156(77.6) JEdit 14(25.9) 1(1.9) 39(72.2) JFreeChart 449(19.4) 180(7.8) 1680(72.8) JRuby 312(22.3) 39(2.8) 1047(74.9) Apache Xerces 292(22.3) 82(6.3) 937(71.5) Nonは,集約可能なクローンペアが         含まれていないので除外する. Partは,集約不可なコードクローンを除外して   集約可能なコードクローンは調査対象に残す..

調査結果 削減可能ソースコード量 削減可能ソースコード量について コードクローンに含まれる行数のうち, およそ5%から6%が削減可能である. 調査結果  削減可能ソースコード量 プロジェクト名 JDeodorantによる   集約可能行数(%) 削減可能ソースコード量(%) Apache Ant 11224(18.7) 3429(5.7) Columba 1394(25.5) 584(10.7) JMeter 1117(17.7) 385(6.1) JEdit 384(18.6) 136(6.6) JFreeChart 30495(15.7) 9700(5.0) JRuby 7708(11.4) 2161(3.2) Apache Xerces 16611(17.4) 5533(5.8) 削減可能ソースコード量について 理由;JrubyはPOP数の大きなクローンセットが大きく,その多くがリファクタリング不可に含まれている. 多くは6%前後である. コードクローンに含まれる行数のうち,         およそ5%から6%が削減可能である.

調査結果 CSの個数の推移 削減可能なCSと判断されるのは    全体のおよそ20%~30%になる.

まとめ 需要が高まるコードクローンの集約を支援する 指標として削減可能ソースコード量を定義した. 需要が高まるコードクローンの集約を支援する  指標として削減可能ソースコード量を定義した. 削減可能ソースコード量を算出する上で      発生する2つの課題の解決案を提案した. オーバーラップはメタヒューリスティックな手法を用いて 短時間で課題を解決した. 集約可能性に対しては,リファクタリングを        支援するツールJDeodorantの機能を利用した. 7つのOSSに対して削減可能ソースコード量を   調査した. コードクローン行数のうち,およそ5%から6%が     削減可能であることが判明した.