Skip to main content
QUICK REVIEW

[論文レビュー] From Copilot to Pilot: Towards AI Supported Software Development

Rohith Pudari, Neil Ernst|arXiv (Cornell University)|Mar 7, 2023
Software Engineering Research被引用数 12
ひとこと要約

本論文は GitHub Copilot の Pythonic idioms の遵守能力と JavaScript のベストプラクティスの遵守を評価し、AI支援コード補完機能を制約する六段階のソフトウェア抽象化分類を導入する。

ABSTRACT

AI-supported programming has arrived, as shown by the introduction and successes of large language models for code, such as Copilot/Codex (Github/OpenAI) and AlphaCode (DeepMind). Above human average performance on programming challenges is now possible. However, software engineering is much more than solving programming contests. Moving beyond code completion to AI-supported software engineering will require an AI system that can, among other things, understand how to avoid code smells, to follow language idioms, and eventually (maybe!) propose rational software designs. In this study, we explore the current limitations of AI-supported code completion tools like Copilot and offer a simple taxonomy for understanding the classification of AI-supported code completion tools in this space. We first perform an exploratory study on Copilot's code suggestions for language idioms and code smells. Copilot does not follow language idioms and avoid code smells in most of our test scenarios. We then conduct additional investigation to determine the current boundaries of AI-supported code completion tools like Copilot by introducing a taxonomy of software abstraction hierarchies where 'basic programming functionality' such as code compilation and syntax checking is at the least abstract level, software architecture analysis and design are at the most abstract level. We conclude by providing a discussion on challenges for future development of AI-supported code completion tools to reach the design level of abstraction in our taxonomy.

研究の動機と目的

  • Copilot を代表的なツールとして用い、AI 支援コード補完ツールの現在の境界を評価する。
  • Copilot が Pythonic idioms に従い、JavaScript コードの code smells を回避できるかを評価する。
  • AI 支援コード生成タスクを分類するためのソフトウェア抽象化階層の分類法を提案する。
  • より高位で設計志向の AI ソフトウェア開発へ向けた課題と今後の方向性を議論する。

提案手法

  • オープンソースのソースから 25 個の人気のある Pythonic idiom を、AirBNB ガイドの 25 個の JavaScript ベストプラクティスとともにサンプル化する。
  • 二部入力(シナリオタイトルをコメントとして、最小限のコード)を用いて Copilot の提案をトリガーする。
  • 引用された idiom と practices に対して Copilot のトップ10提案を評価し、各シナリオごとに Pass/Fail を判定する。
  • Copilot のパフォーマンスを idioms/practices と比較して、通常のコーディング基準との整合性を評価する。
  • AI 支援コード補完の境界をマッピングする六階層のソフトウェア抽象化分類を開発する。
  • 抽象化レベル全体の機能を示すためにソートの例を用いる。
Figure 3: Koopman’s Autonomous Vehicle Safety Hierarchy of Needs [ 26 ] . SOTIF = safety of the intended function.
Figure 3: Koopman’s Autonomous Vehicle Safety Hierarchy of Needs [ 26 ] . SOTIF = safety of the intended function.

実験結果

リサーチクエスチョン

  • RQ1RQ-1: AI 支援コード補完ツールの現在の境界は何か?
  • RQ2RQ-1.1: AI 支援コード補完ツールはプログラミング・イディオムをどう扱うか?
  • RQ3RQ-1.2: AI 支援コード補完ツールはベストプラクティスを通じてコードスメルのないコードをどのように扱うか?

主な発見

  • Copilot は 25 のイディオムのうち 2 件で最初の提案として Pythonic idiom に一致し、残りの 23 のイディオムのうち上位10位に入ったのは 8 件でした。
  • Copilot は 15 件の 25 のイディオムについて、トップ10提案にイディオマティックな Pythonic アプローチが含まれていませんでした。
  • JavaScript のベストプラクティスについて、Copilot は 25 件のケース中ガイドラインに一致するトップ提案を提供したのは 3 件、残りの 22 件のうち上位10位に入ったのは 5 件でした。
  • JavaScript のシナリオ 25 件のうち、トップ10のベストプラクティスを提供できなかったのは 17 件でした。
  • Copilot は一般的な初心者タスク(例: 数値の合計、モジュールのインポート)でより良いパフォーマンスを示したが、全体として一貫してイディオマティックまたはベストプラクティスに沿ったコードを生成するのに苦戦した。
  • 著者は AI 支援コード生成能力を制約する六段階の分類法(構文、正確さ、パラダイム/イディオム、コードスメル、設計)を提案し、Copilot は下位レベルで良好に機能する一方、上位のアーキテクチャ/設計レベルでは課題に直面する。
Figure 4: Hierarchy of software abstractions. Copilot cleared all green levels and struggled in red levels.
Figure 4: Hierarchy of software abstractions. Copilot cleared all green levels and struggled in red levels.

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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