LLMがソフトウェアエンジリアリングにおいて現時点で役に立つこと&課題をまとめた報告が行われました。
伝統的なSE技術とLLMとのハイブリッドアプローチが効果的と結論づけられています。
Metaなどの研究者らによる発表です。
@ Angela Fan et al., “Large Language Models for Software Engineering: Survey and Open Problems”
ソフトウェアエンジニアリングは自動化と効率化が求められており、LLMの応用に期待が集まっています。
しかし、本分野におけるLLMの能力やリスクに関する知見は整理されていません。
そこで研究者らは、本分野における複数のタスクにおけるLLMのできることと障壁を網羅的に調査しました。
■コーディング
① コード生成に有用であるが、ハルシネーションのリスクはある
② コードレビューにおいてもLLMが役立つ可能性がある
■設計
① 設計パターンの生成や推薦に活用できる
② ただし設計の複雑性に対応するための追加のフレームワークは必要
■要件定義
① 自然言語での要件収集に有用
② 誤解や曖昧性を排除するための校正機能が要る
■バグ修正(バグフィックス)
① バグ修正の自動化に貢献する
② 生成された修復が正確であるかの確認は必須
■リファクタリング
① コードのリファクタリング提案に使用できる
② 既存のリファクタリング手法との組み合わせが効果的
■パフォーマンス改善
① パフォーマンス改善のためのコード変更を提案可能
② 精度と効率性のバランスが課題
■ドキュメンテーション
① ドキュメンテーションの生成と更新を自動化できる
② 生成されたドキュメントの品質保証は必須
■分析
① ソフトウェア全体の分析、特にコードや設計の品質分析に有用
② 分析結果の解釈と適用は人間の専門家が行う
■研究者らによる主な結論
① LLMはソフトウェアエンジニアリングの多くのタスクに応用可能
② ハルシネーションが信頼性に影響を与える
③ 自動テスト技術が一定の効果を示している
④ LLMと伝統的なSE技術のハイブリッドアプローチが効果的