Skip to main content
QUICK REVIEW

[論文レビュー] An Exploratory Study of Debugging Episodes

Abdulaziz Alaboudi, Thomas D. LaToza|arXiv (Cornell University)|May 5, 2021
Software Engineering Research参考文献 54被引用数 7
ひとこと要約

本研究では、11名のプロフェッショナルな開発者が実施した30時間にわたるライブストリーミングプログラミングセッションを分析し、現実世界のデバッグエピソードを特徴づけた。2,137件のデバッグ活動および1,407件のプログラミング活動について定性的コード化を実施した結果、開発者は平均して8分ごとにデバッグを実施しており、デバッグは作業時間の約半分を占め、特に長時間のエピソードでは極めて多様で変動の大きい活動を含むことが明らかになった。これらの発見は、デバッグを単なる障害特定の活動と見る見方を疑問視し、編集、テスト、ブラウジング、外部リソースの利用の間でのコンテキストスイッチングを低減する統合型デバッグツールの必要性を示唆している。

ABSTRACT

Many studies have long investigated how developers debug, shaping our understanding of debugging and helping motivate the creation of more effective tools. However, less is known about the typical progression of debugging in real world settings. In this study, we focus on characterizing debugging episodes from the moment at which developers first encounter a defect to the moment at which it is resolved. We investigate the typical duration and frequency of debugging episodes and the typical activities which occur. We observed developers by watching professional developers at work in live-streamed programming sessions. Using this data source, we curated 15 sessions in which 11 professional developers worked for 30 hours. We then systematically coded the debugging episodes and activities that occurred within these videos, yielding a dataset of 2137 debugging activities and 1407 programming activities. We found that debugging was frequent, even in programming work, occurring once every eight minutes. Debugging episodes vary greatly in time, with most being less than a few minutes and a few as more than 100 minutes. However, most debugging time is spent in long debugging episodes. We found no single activity that dominated debugging time, and long debugging episodes often involved many diverse activities. Finally, we found that,in terms of the activities developers did, programming and debugging were remarkably similar, particularly in the frequency of editing and browsing code.

研究の動機と目的

  • 人工的なラボ研究やログベースの分析にとどまらない、自然主義的プログラミング環境におけるデバッグエピソードの現実世界での進行を理解すること。
  • プロフェッショナルな開発者の直接観察を用いて、デバッグエピソード内の頻度、継続時間、活動パターンを特徴づけること。
  • デバッグ活動と一般的なプログラミング活動との間の頻度および種別についての比較を調査すること。
  • 特に編集、テスト、ブラウジング、外部リソース利用の間でのコンテキストスイッチングといった開発者ワークフローにおける主な課題を特定することで、次世代のデバッグツールの設計を支援すること。

提案手法

  • 研究者らは、実際のオープンソースプロジェクトを共同開発しているプロフェッショナルな開発者の15回のライブストリーミングプログラミングセッションを収集し、合計30時間の動画データを取得した。
  • 研究者らは、Observe-dev.online と呼ばれるカスタムのウェブベースのツールを用い、動画のセグメントを「プログラミング」「デバッグ」「無関係な活動」の3つのカテゴリに分類してコード化・アノテーションした。
  • コード化は体系的かつ反復的であり、編集、ブラウジング、テスト、プログラム状態の確認、外部リソースの参照といった活動を特定し、ラベル付けした。
  • データセットには2,137件のデバッグ活動および1,407件のプログラミング活動が含まれており、行動パターンの定量的および定性的分析が可能になった。
  • プラットフォームは共同アノテーション、タイムライン可視化、データ共有をサポートしており、コード化の再現可能性と透明性を確保した。
  • 分析は、デバッグエピソードにおける継続時間、頻度、活動の多様性に焦点を当て、一般のプログラミング作業と比較した。

実験結果

リサーチクエスチョン

  • RQ1現実世界のプログラミング作業において、デバッグエピソードはどの程度の頻度で発生するか?
  • RQ2デバッグエピソードの典型的な継続時間は何か? また、エピソードごとの継続時間はどのように変動するか?
  • RQ3デバッグエピソード中、開発者が実施する活動の種別は何か? それらはプログラミング活動とどのように異なるか?
  • RQ4短時間エピソードと長時間エピソードの間で、活動の多様性と順序はどのように異なるか?
  • RQ5コードのブラウジング、編集、テスト、外部リソース利用の観点から、デバッグとプログラミングの行動はどのように異なるか?

主な発見

  • 開発者は、プログラミング作業の平均して8分ごとにデバッグを実施しており、デバッグは開発プロセスにおいて頻繁に発生する根幹的な活動であることが示された。
  • デバッグは観察された総プログラミング時間の約半分を占めており、89件の異なるエピソードを通じて15時間のデバッグ時間が記録された。
  • 多くのデバッグエピソードは短時間(数分未塔)であるが、デバッグ時間の大部分は長時間のエピソードに集中しており、100分を超えるものも存在した。
  • 特定の1つのデバッグ活動が時間の大部分を占めるという傾向は見られず、長時間のエピソードでは編集、ブラウジング、テスト、プログラム状態の確認、外部リソースの参照といった多様な活動の混合が見られた。
  • プログラミングとデバッグの行動は、コード編集やブラウジングの頻度において顕著に類似しており、ナビゲーションと変更が両活動の中心的要素であることが示された。
  • デバッグとプログラミングの主な違いは、テストとプログラム状態の確認にあり、デバッグは日常的な編集やナビゲーションをはるかに超えた、より深い行動分析を含むことが示唆された。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。