【ChatGPT】要件定義フェーズでAIを活用する3つのパターン

ChatGPTをソフトウェア開発(要件定義)に応用する

2023年3月14日にChatGPT (GTP-4) がリリースされてから、その威力に全世界が注目するようになりました。

まだ多くの人が手さぐりで使い方を模索しているChatGPTですが、アカデミックの世界ではChatGPTの活用方法について既に研究が進んでいます。

このブログでは、論文などのエビデンスに基づいた知識をもとに、ChatGPTの応用方法を解説したいと思います。

 

今回は以下の論文から、ChatGPTをソフトウェア開発における要件定義に応用する方法についてまとめます。

WHITE, Jules, et al. ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design. arXiv preprint arXiv:2303.07839, 2023.

 

この論文では、ChatGPTを要件定義フェーズに応用するにあたって、以下3つのプロンプトパターンが使用できると述べられています。

  1. 要求シミュレータパターン
  2. 仕様の曖昧さ解消パターン
  3. 変更要求シミュレーションパターン

この3つを、以下に解説していきます。

 

要件シミュレータパターン

どんな場合に使用するパターンか?

作りたいシステムの要件を明覚にする(要件の網羅性を確認し、分析する)場合に使用できます。

プロンプトパターン

  1. システムとして振る舞ってください
  2. 要件に基づいてあなたの行動を決定してください。
  3. 私があなたにXをするよう求めたら、あなたは要件に基づいてXが可能かどうか教えてください
  4. もしXが可能なら、要件を使って説明してください
  5. 要件に基づいてXができない場合は、Yの形式で必要な要件を記述してください

実装例

以下の例では、社員管理システムを設計する際の要件を洗い出そうとしています。

社員管理システムの一般的な要件として、社員情報のCRUD操作、出退勤管理、有給休暇管理、給与管理、評価・昇進管理の機能があることをChatGPTが示してくれています。

 

メリットとデメリット

メリット デメリット
  • 要件が拡張されるにつれ、システムのシミュレーションがより高い忠実度で行われるようになる。
  • 対話的な探索によって要件が迅速に拡張されるため、シミュレーションの進行に伴ってシステムの忠実度が向上する。
  • この反復プロセスにより、大規模な要件セットが迅速に生成される。
  • このパターンを単独で使用する限界は、システムの説明が純粋にテキストベースであるため、すべての要件を正確に捉えるのに十分な情報が提供されない可能性がある。(しかし、他のパターンと組み合わせることでこの制約を克服できる可能性がある。)

仕様の曖昧さ解消パターン

どんな場合に使用するパターンか?

システムの仕様の見直しをLLMに行わせる場合に使用できます。
仕様の中に潜んでいる誤解や曖昧さを検出し、明確化することが目標です。

プロンプトパターン

  1. (要件や仕様を列挙する)
  2. これらの要件や仕様を検討してください
  3. 曖昧さや潜在的な意図しない結果がある箇所を指摘してください

実装例

例えば、顧客から以下4つの要件が与えられたとします。

1) WebブラウザーでファイルアップロードができるUIを作成する。
2) ファイルを安全に保管する。
3) ファイルがムービーファイルタイプであることを確認する。
4) ファイルのサイズは100MB以下とする。

 

このとき、ChatGPTに仕様の曖昧さを指摘してもらっている例が以下です。

 

メリットとデメリット

メリット デメリット
  • 要件仕様の弱点を見つけるための自動化された「悪魔の代弁者」を提供することで、曖昧さや不完全な仕様に対処します。
  • 開発者が質問を遠慮するような社会的懸念があっても、LLMはそのようなバイアスや遠慮がありません。
  • 仕様の作成には、曖昧な言語や不完全な仕様の問題が付きものです。特に大規模システムでは、開発者が仕様の設計者の意図とは異なる前提を立ててしまうことがあります。このパターンは、それらの問題に対処することを目的としていますが、完全に解決するわけではありません。

変更要求シミュレーションパターン

どんな場合に使用するパターンか?

システムの要件を変更する際の影響調査に使用できます。

プロンプトパターン

  1. 私のソフトウェアシステムアーキテクチャはXです。
  2. システムはこれらの制約に従わなければなりません。
  3. システムへの変更をシミュレートしてください。
  4. Qの観点からその変更の影響を説明してください。
  5. これが私のシステムへの変更です。

実装例

前提として、ChatGPTには既にOpenAPIベースの仕様を教えているものとします。
この状態で、顧客情報として新たに「性別」という必須フィールドを追加する場合、どのような影響が考えられるかを教えてくれています。

メリットとデメリット

メリット デメリット
  • 変更要求シミュレーションパターンを適用することで、開発者は参照されるファイル、関数、およびそれぞれの総数によって変更のコストを見積もることができます。また、他のシステム設計カテゴリのパターンと組み合わせることで、より効果的に機能します。
  • 変更要求シミュレーションパターンを適用する際の最大の難しさは、LLMが提案された変更について理解するための十分なコンテキストを確立することです。また、既存のLLMにはトークン制限があり、システムに関する情報を限定的にしか考慮できません。これにより、大規模な変更に対して詳細な情報を提供することが困難になる場合があります。

 

 

最新情報をチェックしよう!