• 検索結果がありません。

より細かな差分を用いた手法

第 7 章 関連研究 89

7.2 より細かな差分を用いた手法

7.2 より細かな差分を用いた手法

既存の版管理システムを改良することで,プログラム変更の検出を改善する試 みも提案されている.たとえば,Magnussonらは,ソースコードをファイル単位 で格納するのではなく,それを構成するプログラム要素ごとに格納する版管理シ ステムを提案している [50].このような版管理システムを内包する開発環境を構 築し,それぞれのプログラム要素に対して開発時に行われた変更操作を記録する.

版管理システムには,プログラム要素のスナップショットと,そのプログラム要 素に対して行われた過去の変更操作の両方が同時にコミットされるため,プログ ラム要素の変更が容易に追跡できるようになっている.また,Hataらは,Gitに よるコード変更の特定と類似度に基づく名前変更の判別により,プログラム要素 に対する細粒度な変更を検出し,それを管理するリポジトリを提案している [51]. また,山本らは,開発に関わるすべてのソースコードを自動的に採取し,そのコ ピーを残す堆積型ファイルシステムMoraineを提案している [52].編集操作の粒 度が同じ,あるいは,編集操作ごとにソースコードのスナップショットの差分が抽 出されれば,我々の検出手法と同程度のプログラム変更が検出できる可能性があ る.ただし,これらの手法では,我々の提案する検出手法のようなプログラム変 更の集約の仕組みを備えていない.よって,開発者や保守者に提示されるプログ ラム変更の抽象レベルを柔軟に切り替えることはできない.

差分ではなく開発時の編集操作を利用することで,単一の版間差分に目的の異 なる変更が混ざるのを防ぐ方法として,林らの研究がある [53, 54, 55].この手法 では,我々の手法と同様に,OperationRecorderにより記録された編集操作履歴を 利用する.特に,編集操作に注釈を付与することで過去の変更過程を明示したり,

編集操作履歴の加工を支援したりすることで,分割コミットを実現している.さ らに,あらかじめ設定した時間基準,プログラム要素基準,コメント基準により,

編集操作の自動グルーピングを実現している.グルーピングの方針が我々の手法と 類似しているものの,林らの方法では編集操作を直接グルーピングしている.こ れに対して,我々の手法は,分割コミットの実現を目的としているわけではなく,

プログラム変更の検出である.このため,編集操作履歴に基づき抽出したプログ ラム変更をグルーピングの対象としている点が異なる.

93

8 章 結論

プログラム変更の理解において開発者や保守者は(1)個々のプログラム変更をよ り正確に検出し,(2)検出したプログラム変更に,その内容を付与する必要がある.

本論文では,それら2つの作業について従来のプログラム変更検出手法による支 援では問題があることを示した上で,このような問題を解決するために,開発時 にソースコードに対して行われた編集操作の履歴から,オブジェクト指向におけ るプログラム要素に関する変更情報を自動的に検出する手法を提案した.

本提案手法では編集操作が行われる間隔でプログラム変更を検出するため,版 管理システムに版がコミットされる間隔でプログラム変更の検出を行う従来手法 よりも,作業(1)においてより正確なプログラム変更を検出できる.また,本手法 では一度検出されたプログラム変更を集約することができ,その集約の粒度を開 発者や保守者によって選択できるようにすることによって,作業(2)において開発 者や保守者に受け入れられるプログラム変更を提示することを目指した.

また,本手法を実現したツールをEclipseプラグインとして実装し,それを用い た評価実験の結果より,本手法の有用性を示した.

ツールの閲覧部では検出されたプログラム変更のリストが提示され,個々のプ ログラム変更の行われた時刻や変更箇所,変更内容などを閲覧することができる.

また,ツール上で集約条件を設定し,プログラム変更を集約をすることで,検出 されたプログラム変更の異なる集約結果を閲覧することもできる.

評価実験では,6個のプロジェクトの開発時の編集操作履歴から本ツールを用い てそれぞれプログラム変更を検出し,それらの検出数と5つの事例における人手 で作成した変更タスクとの比較と考察によって提案手法の有用性を評価した.そ の結果,それぞれのプロジェクトのプログラム変更の検出数については,検出さ れたプログラム変更の総数を,それらを集約することで30.3〜54.5%に減少させる ことができた.また,5つの事例における比較と考察では,時間的な方針による集 約では,どの事例においてもプログラム理解支援に一定の効果があることがわかっ た.しかし空間的な方針による集約では,集約対象であるプログラム変更の変更 箇所周辺の構文上の構造に集約結果が影響を受ける傾向があり,その結果,人手 で作成した変更タスクに近い結果を提示する事例もあるものの,時間的な方針に よる集約よりもプログラム理解支援の効果が低いことがわかった.

今後の課題として,集約方針の改良とさらなる評価実験の実施を検討している.

たとえば,時間的距離と空間的距離の組み合わせや,プログラム要素ごとに基準 値を複数設定できる環境を考えている.また評価実験においては,プログラム変 更の理解という観点から,さらに別の評価基準を用意した上で有用性の評価を継 続していく必要がある.

95

謝辞

本研究を遂行するにあたり,終始懇切なる御指導御鞭撻を賜りました,立命館 大学情報理工学部 丸山 勝久 教授に心より感謝致します.本研究は著者が立命館 大学情報理工学部に在籍中に始めたものであり,本研究の方向性が定まらない研 究当初から,丸山教授には度重なる議論を通して様々な御助言や御指摘を頂きま した.また大学在籍中の研究活動を通して,丸山教授からは研究に対する姿勢や ものの考え方など様々なことを学びました.

また,本研究論文の副査の任を快く引き受けて下さると共に,本論文の作成に あたって貴重な御助言を頂きました,立命館大学情報理工学部 大西 淳 教授,立 命館大学情報理工学部 高田 秀志 教授に厚く御礼を申し上げます.

本研究に関して御討論下さり,本研究の遂行ならびに本論文の作成にあたって 貴重な御助言を頂きました,立命館大学情報理工学部 大森 隆行 助教に深く感謝 致します.

また,学内外での研究活動を通して,本研究に関して貴重な御助言を頂きまし た,立命館大学情報理工学部 糸賀 裕弥 准教授,立命館大学情報理工学部 桑原 寛 明 助教,東京工業大学大学院情報理工学研究科 林 晋平 助教に深く感謝致します.

本研究を遂行するにあたり,様々な御助言を頂きました,立命館大学情報理工 学部情報システム学科 ソフトウェア基礎技術研究室の皆様に深く感謝致します.

最後に,本研究の遂行ならびに本論文の作成にあたって支援してくれた家族に 感謝致します.

97

参考文献

[1] IEEE. IEEE Standard for Software Maintenance. IEEE Std, 1998.

[2] 上原三八, Wei‐TekTsai, 佐野隆,馬場一弥. 保守とリエンジニアリング-アー キテクチャとドメイン指向トラック(ソフトウェアテクノロジーシリーズ 6).

共立出版, 2000.

[3] 大森隆行, 丸山勝久, 林晋平, 沢田篤史. ソフトウェア進化研究の分類と動向. コンピュータ ソフトウェア, Vol. 29, No. 3, pp. 3–28, 2012.

[4] International Standards Organization (ISO).Software Engineering – Software Life Cycle Processes – Maintenance. ISO/IEC 14764, 2006.

[5] W. W. Royce. Managing the development of large software systems: Con-cepts and techniques. In Proceedings of the 9th International Conference on Software Engineering, ICSE ’87, pp. 328–338, 1987.

[6] Mohan V. Tatikonda. An empirical study of platform and derivative product development projects. Journal of Product Innovation Management, Vol. 16, No. 1, pp. 3–26, 1999.

[7] Alistair Cockburn. アジャイルソフトウェア開発 (The Agile Software Devel-opment Series). ピアソン・エデュケーション, 2002.

[8] Tom Mens and Serge Demeyer. Software Evolution. Springer Publishing Company, 2008.

[9] 片山卓也. 発展ドメイン: ソフトウェア発展のための理論的枠組み. コンピュー タ ソフトウェア, Vol. 21, No. 3, pp. 169–179, 2004.

[10] A. von Mayrhauser and A.M. Vans. Program comprehension during software maintenance and evolution. Computer, Vol. 28, No. 8, pp. 44–55, 1995.

[11] David Lorge Parnas. Software aging. InProceedings of the 16th International Conference on Software Engineering, pp. 279–287, 1994.

[12] 松本吉弘. ソフトウェアエンジニアリング基礎知識体系 : SWEBOK V3.0.

オーム社, 2014.

[13] B. P. Lientz, E. B. Swanson, and G. E. Tompkins. Characteristics of appli-cation software maintenance. Commun. ACM, Vol. 21, No. 6, pp. 466–471, 1978.

[14] Kunrong Chen and V. Rajlich. Case study of feature location using depen-dence graph. In Program Comprehension, 2000. Proceedings. IWPC 2000.

8th International Workshop on, pp. 241–247, 2000.

[15] AhmadSalman Khan and Mira Kajko-Mattsson. Identifying and tackling di-versity of management and administration of a handover process. In Product-Focused Software Process Improvement, Vol. 6759 of Lecture Notes in Com-puter Science, pp. 156–170, 2011.

[16] Sergio Cozzetti B. de Souza, Nicolas Anquetil, and Kathia M. de Oliveira.

Which documentation for software maintenance? Journal of the Brazilian Computer Society, Vol. 12, pp. 31–44, 2006.

[17] Jonathan Sillito, Gail C. Murphy, and Kris De Volder. Questions program-mers ask during software evolution tasks. In Proceedings of the 14th ACM SIGSOFT International Symposium on Foundations of Software Engineering, SIGSOFT ’06/FSE-14, pp. 23–34, 2006.

[18] David Binkley. Source code analysis: A road map. In2007 Future of Software Engineering, FOSE ’07, pp. 104–119, 2007.

[19] Mark Weiser. Program slicing. In Proceedings of the 5th International Con-ference on Software Engineering, ICSE ’81, pp. 439–449, 1981.

[20] A.V.エイホ, R.セシィ, J.D.ウルマン, M.S.ラム. コンパイラ -原理・技法・

ツール (Information & Computing) [第2版]. サイエンス社, 2009.

[21] Reidar Conradi and Bernhard Westfechtel. Version models for software con-figuration management. ACM Comput. Surv., Vol. 30, No. 2, pp. 232–282, 1998.

[22] Yida Tao, Yingnong Dang, Tao Xie, Dongmei Zhang, and Sunghun Kim. How do software engineers understand code changes?: An exploratory study in

参考文献 99 industry. InProceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE ’12, pp. 1–11, 2012.

[23] Steffen Lehnert. A taxonomy for software change impact analysis. In Proceed-ings of the 12th International Workshop on Principles of Software Evolution and the 7th Annual ERCIM Workshop on Software Evolution, IWPSE-EVOL

’11, pp. 41–50, 2011.

[24] Barbara G. Ryder and Frank Tip. Change impact analysis for object-oriented programs. In Proc. PASTE ’01, pp. 46–53, 2001.

[25] Xiaxia Ren, Fenil Shah, Frank Tip, Barbara G. Ryder, and Ophelia Chesley.

Chianti: A tool for change impact analysis of java programs. ACM SIGPLAN Not., Vol. 39, pp. 432–448, 2004.

[26] V. Rajlich. A model for change propagation based on graph rewriting. In Software Maintenance, 1997. Proceedings., International Conference on, pp.

84–91, 1997.

[27] Ahmed E. Hassan and Richard C. Holt. Predicting change propagation in software systems. In Proceedings of the 20th IEEE International Conference on Software Maintenance, ICSM ’04, pp. 284–293, 2004.

[28] Huzefa Kagdi, Michael L. Collard, and Jonathan I. Maletic. A survey and taxonomy of approaches for mining software repositories in the context of software evolution. J. Softw. Maint. Evol., Vol. 19, No. 2, pp. 77–131, 2007.

[29] B. O’Donovan and J.B. Grimson. A distributed version control system for wide area networks. Software Engineering Journal, Vol. 5, No. 5, pp. 255–

262, 1990.

[30] Lucian Voinea, Alex Telea, and Jarke J. van Wijk. Cvsscan: Visualization of code evolution. In Proceedings of the 2005 ACM Symposium on Software Visualization, SoftVis ’05, pp. 47–56, 2005.

[31] Romain Robbes and Michele Lanza. A change-based approach to software evolution. ENTCS, Vol. 166, pp. 93–109, 2007.

[32] Kim Herzig and Andreas Zeller. The impact of tangled code changes. InProc.

MSR ’13, pp. 121–130, 2013.