著者
肥後 芳樹 吉田 則裕
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.28, no.4, pp.4_43-4_56, 2011-10-25 (Released:2011-12-25)

コードクローンとは,ソースコード中に存在する互いに一致,もしくは類似したコード片を指す.コードクローンの存在は,ソフトウェアの開発および保守に悪影響を与える恐れがあるといわれている.本稿では,コードクローンを取り除くためのリファクタリング方法と近年の研究成果について紹介する.
著者
楠本 真二 肥後 芳樹
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.29, no.3, pp.3_29-3_38, 2012-07-25 (Released:2012-09-25)

本稿は,実証的アプローチに関するチュートリアルシリーズの一部として,ソフトウェアメトリクスの研究・実務における応用,特に研究成果の評価や組織におけるプロセス改善の評価での利用方法を中心に述べる.具体的には,評価目標に対してメトリクスを対応させるための枠組みの1つであるGQMパラダイム,評価対象のコンテキスト,著者等が過去に行った評価事例について紹介する.
著者
今里 文香 堀田 圭佑 肥後 芳樹 楠本 真二
出版者
The Institute of Electronics, Information and Communication Engineers
雑誌
電子情報通信学会論文誌 D (ISSN:18804535)
巻号頁・発行日
vol.J98-D, no.5, pp.847-850, 2015-05-01

本論文では,機械学習を用いてコードクローンの危険予測を行う手法を提案する.提案手法では,過去に存在したコードクローンの情報を学習し,その情報をもとに,現在ソースコード中に存在するコードクローンの危険予測を行う.
著者
倉林 利行 吉村 優 切貫 弘之 丹野 治門 富田 裕也 松本 淳之介 まつ本 真佑 肥後 芳樹 楠本 真二
雑誌
ソフトウェアエンジニアリングシンポジウム2020論文集
巻号頁・発行日
vol.2020, pp.143-152, 2020-09-03

本論文ではソフトウェア開発における実装の自動化に向けたファーストステップとして,プログラミングコンテスト AtCoder の正解プログラムを自動生成する技術の開発を目指す.自動プログラミングの既存研究としては,生成したいプログラムの入出力例からプログラム部品を合成する手法などが存在するが,プログラム部品の組み合わせ爆発により入出力例を満たすプログラムが生成できない,また生成できたとしても入出力例は満たすが正しいプログラムではないというオーバーフィッティングしたプログラムが生成されてしまうという課題が存在した.本論文では深層学習を用いて過去の問題情報から問題文と正解プログラムの関係性を学習することで上記の問題を解決する.具体的には学習済みモデルを用いて過去の問題情報から解きたい問題と類似した問題を検索して取得し,その正解プログラムを雛形としてプログラムを複数個合成し,再び学習済みモデルを用いて生成されたプログラムから最も問題文との関係性が近いプログラムを判定して出力する手法を提案した.提案手法は AtCoder の配点が 100 点の問題 92 問に対して評価を行い,24 問の正解プログラムの自動生成を確認した.
著者
渡辺 大登 柗本 真佑 肥後 芳樹 楠本 真二 倉林 利行 切貫 弘之 丹野 治門
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.63, no.10, pp.1564-1573, 2022-10-15

自動プログラム生成(APG)の実現を目指し,生成と検証に基づく自動プログラム修正(APR)を転用した手法が提案されている.APRはバグを含むソースコードをすべてのテストケースに通過するように全自動で改変する技術である.APRを転用したAPGでは,初期状態のソースコードを未実装,つまり複数のバグが含まれていると仮定し,ソースコードの改変,評価,選択を繰り返してソースコードを目的の状態に近づけていく.一般的なAPRでは改変ソースコードの評価指標として,テストケース通過数がよく用いられる.この指標は単一バグの修正を目的とした場合には問題にならないが,複数バグの修正時にはコード評価の表現能力不足という問題につながる.よって,初期状態に複数バグの存在を仮定するAPGにおいては,解決すべき重要な課題である.そこで,本研究ではAPGの成功率改善を目的とした多目的遺伝的アルゴリズムの適用を提案する.また,多目的遺伝的アルゴリズムによる高い個体評価の表現能力を利用した,相補的なテスト結果の2個体を選択的に交叉する手法も提案する.評価実験として,プログラミングコンテストの問題80問を題材に提案手法の効果を確かめた結果,成功率の有意な向上を確認した.
著者
安田 和矢 伊藤 信治 中村 知倫 原田 真雄 肥後 芳樹
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.38, no.4, pp.4_23-4_32, 2021-10-22 (Released:2021-12-22)

近年,ソースコードのデバッグ作業を効率化する自動プログラム修正が注目されている.従来の自動プログラム修正手法では,欠陥が含まれる命令を,ソースコード中の別の箇所に出現する式 (素材コード片) を用いて書き換えることで,欠陥を修正する.したがって,必要な素材コード片がソースコード中に存在しない場合,欠陥を修正できない.本研究では,修正対象システムで特定のコード記述パターンがよく用いられる,という開発者の知見を活用し,事前定義したコード記述パターンに基づき素材コード片を生成する手法を提案する.これにより,ソースコード中に素材コード片が存在しない場合でも,プログラムの自動修正が可能となる.実製品の開発中に検出・修正された欠陥48件に提案手法を適用した結果,既存手法では修正できた欠陥の数が9件だったところ,提案手法では2件増加し11件となった.
著者
幸 佑亮 肥後 芳樹 楠本 真二
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.59, no.4, pp.1192-1202, 2018-04-15

コードクローンはソフトウェアの保守性を低下させる原因の1つとされており,コードクローンがソフトウェア中にどの程度存在しているか,およびどこに存在しているかを理解することはソフトウェア保守の観点から重要である.そのため,これまでに多くのコードクローン検出手法が提案され,自動的にコードクローンを検出するツールが開発されている.既存のコードクローン検出手法は,ファイル単位やコード片単位など単一の粒度でコードクローンを検出する.一般的に,検出の粒度が粗いほど検出時間は短くなるが,検出可能なコードクローンは少なくなる.一方,検出対象の粒度が細かいほど検出可能なコードクローンは多くなるが,検出時間は長くなる.そこで本論文では,より多くのコードクローンをより短時間で検出することを目的として,粗粒度から細粒度へ段階的にコードクローンを検出する手法を提案する.段階的にコードクローンを検出する過程において,ある粒度でコードクローンとして検出されたコードをそれよりも細粒度なコードクローンの検出対象から除外することで,細粒度な検出手法と比較してより高速に検出できる.また,粗粒度な検出手法と比較してより多くのコードクローンを検出できる.提案手法をコードクローン検出ツールDecrescendoとして実装し,複数のオープンソースソフトウェアに適用した.そして,提案手法を粗粒度な検出手法および細粒度な検出手法と比較して評価を行った.実験の結果より,細粒度な(コード片単位の)検出手法と比較して,多粒度な検出手法が約10~20倍高速にコードクローンを検出できることを示した.また,粗粒度な(メソッド単位の)検出手法と比較して,多粒度な検出手法が約10~30倍のコードクローンを検出した.この検出数は細粒度な(コード片単位の)検出手法とほぼ同数であった.
著者
高先 修平 井垣 宏 肥後 芳樹 楠本 真二
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.55, no.1, pp.199-209, 2014-01-15

高度なソフトウェア技術者や高度ICT(Information and Communication Technology)人材の育成を目的として,ソフトウェア開発をテーマとしたPBL(Project Based Learning)と呼ばれる教育・学習手法が様々な形態で行われている.PBLでは,振り返りと呼ばれるプロジェクト中にあった問題の発見,原因の分析,対策の考案といった,プロジェクトを継続的に改善することを目的とした活動が重要視されている.ここで,問題の発見や原因の定量的で客観的な分析を行うためには,プロジェクト中に誰がどのようなタスクをいつ実施したかといった正確なタスク記録が必要不可欠である.しかしながらPBLでは,タスク記録時に記述漏れや入力誤りが発生することがある.実際に過去に行われた研究では,記録された全タスクのうち約40%ものチケットに何らかの誤りが存在していた.この問題の原因としては,タスク記録時の入力コストや,作業時間の計測コストの大きさがあげられる.そこで本研究では,タスク記録時の入力コストの削減と作業時間の自動計測を目的として,タスクボードとオンラインストレージを用いたタスク記録支援システム「TixRec」を提案する.タスクボードによってより直感的なタスクの変更や記録を実現し,オンラインストレージに保存された編集履歴を用いることで,チケットに記録されたタスクに対応するファイル情報を用いて,作業時間の自動計測を実現する.TixRecを用いた4人の被験者を対象とした評価実験により,タスク記録に要する時間が76%~93%削減され,ユーザビリティ評価においても,既存のチケットシステムより優位であることが確認された.作業時間の計測においても,誤差が平均26秒,最大でも146秒に収まっていた.In order to cultivate ICT (Information and Communication Technology) human resources, teaching activities called SDPBL (Software Development Project Based Learning) are widely performed. SDPBL is the educational technique which lets students acquire knowledge and skill spontaneously through practical software development. In SDPBL, a retrospective is regarded as important. It is intended to improve the project continuously through problem finding and root cause analysis. Moreover, this kind of analysis needs an accurate history of the project. However, such kinds of development history often include input errors and omissions. In a study made in the past, fourty percent of all recorded tickets included some errors like input omissions of start time or end time and measurement errors of working time. Therefore, we propose a system "TixRec" for the purpose of recording tasks and working time at a low cost, using online storage and task board UI. TixRec enables users to record tasks more intuitively. In addition, the online storage automatically preserves change logs of files on the user's PC. By using the change logs, TixRec calculates working time automatically. We implemented TixRec as a web application and conducted experiments on four subjects. As a result, we confirmed that time to record tasks is reduced about 84% and working time could be calculated with an error of less than 146 seconds per one ticket.
著者
木村 秀平 肥後 芳樹 井垣 宏 楠本 真二
出版者
The Institute of Electronics, Information and Communication Engineers
雑誌
電子情報通信学会論文誌 D (ISSN:18804535)
巻号頁・発行日
vol.J96-D, no.11, pp.2864-2865, 2013-11-01

モジュールの凝集度を高め結合度を下げるために,コード片を適切な位置に移動させるリファクタリングが行われる.このようなリファクタリングの候補を特定するために,従来の手法では静的解析を用いていた.しかし,静的解析を用いる手法は実行時に定まる情報を反映することができないため,特定が困難なリファクタリング候補があると考えられる.本論文では,動的解析によって得られるフェイズ分割を用いてMove Methodリファクタリングの候補を特定する手法を提案する.
著者
堀田 圭佑 佐野 由希子 肥後 芳樹 楠本 真二
雑誌
情報処理学会論文誌 (ISSN:18827764)
巻号頁・発行日
vol.52, no.9, pp.2788-2798, 2011-09-15

近年,重複コードへの関心が高まっている.一般的に重複コードはソフトウェアの修正作業量を増大させるおそれがあると考えられており,重複コードの検出や集約に関する研究がさかんに行われている.しかし,重複コードと修正作業量の関係を定量的に調査した研究はあまり行われていない.そこで本論文では,重複コードが非重複コードと比較して修正されやすければ重複コードが修正作業量を増大させているという考えに基づき,ソースコードに加えられる修正の頻度を計測,比較することで,重複コードと修正作業量の関係を調査した.15のオープンソースソフトウェアに対して実験を行った結果,非重複コードと比較して重複コードは修正されにくく,重複コードがソフトウェアの修正作業量を増大させているとは必ずしもいえないという結果を得た.
著者
肥後 芳樹 宮崎 宏海 楠本 真二 井上 克郎
出版者
The Institute of Electronics, Information and Communication Engineers
雑誌
電子情報通信学会論文誌 D (ISSN:18804535)
巻号頁・発行日
vol.J93-D, no.9, pp.1727-1735, 2010-09-01

これまでに様々なコードクローン検出手法が提案されているが,ギャップ(不一致部分)を含むコードクローンを検出できる手法は少ない.本論文では,ギャップを含むコードクローンを検出できないコードクローン検出手法の出力結果に対して後処理を行うことで,ギャップを含むコードクローン情報を生成する手法を提案する.提案手法は,グラフマイニングアルゴリズムの一つであるAGMアルゴリズムを用いており,効率的にギャップを含むコードクローン情報を生成することができる.提案手法を検出ツールCCFinderのポストプロセッサとして実装し,複数のオープンソースソフトウェアに対して適用したところ,多数の興味深いコードクローン情報を得ることができた.しかし,提示する必要がないと思われるコードクローンも生成してしまうことがあった.本論文では,この実験の結果について述べ,また,上記の問題に対する解決策についても考察する.