★★1班★★
ChatGPTを利用することで,要求仕様書から基本設計書を作成する手助けができないかについて実験しました.
まず,ChatGPTに話題沸騰ポット要求仕様書を読み込ませてテキスト(マークダウン)を作成するよう指示します,その後,UML描画ツールmermaidを利用して,マークダウンからUML/SysMLの各図(ブロック図,ステートマシン図,シーケンス図)を描画しました.
■やったこと
・要求仕様書からマークダウンを作成できた.結果としてUML/SysML図を作成できた.
■わかったこと
・現時点では,数十ページの仕様書を与えても最初の一部しか理解してくれない
→2日目は小さな仕様を作成し進めた
・ブロック図:継承関係がまずい
・シーケンス図:1回タイマーがアイドル状態に戻ってくれない
・UML状態遷移図:状態を理解できていない
■次にやること
・ページ数の多い仕様書はあらかじめ分割し,それぞれを要約させてからChatGPTに与える
・近々利用できるChatGPTのファインチューニング機能を利用してページ数の多い仕様書を全部理解してくれるか実験する
現時点ではLlamaIndexを使って仕様書をインデックス化しクエリーと組合わせることでファインチューニングしているかのようなプロンプトを得られる.(4班のワークより)
★★2班★★
ChatGPTを利用することで,じゃんけんゲームの自動プログラミングが可能かについて実験しました.
■やったこと
・初日は,ChatGPTに概要仕様文を与えAndroid Studioのソースコードを作成するよう指示し,ソースコードを得ることができました.コードはほぼ修正不要で動作確認できました.
・二日目は,概要仕様文から要求仕様書と基本設計書を作成し,これらからソースコードを作成する実験を行いました.
■わかったこと(得られた好ましい結果)
・ChatGPTは直接的なソースコードの作成の要求に応えることができる.
簡単なプロトタイプの作成に活用できるのではないかと思われる.
・ChatGPTと対話的なやり取りで,プログラムの修正や改善ができる.
問題点や改善したい点などを具体的に伝えて,改善する方法がとれるのではないか.
・UMLの図もテキスト形式で表現可能であれば,得ることができる.
要求から設計させた結果として,シーケンス図やクラス図が得られた.
■わかったこと(問題点)
・所望の開発文書を書いてほしいとしたとき,入力を正確に伝える必要がある.
項目立てや各項目で定義してほしい内容を伝えると,ほぼそのまま文書化されることがある.
その場合はChatGPTの役割は清書してくれるところになるだろうか.
・仕様書を入力として,次の工程の作業をしてもらうとき,漏れがあることがある.
入力の仕様書に定義したことが次の工程の設計に反映されていないことがある.
指定した事柄が正しく反映されているか,内容が正しいか,確認する必要がある.
■次にやること(さらなる利用における課題)
・具体的な事柄について対話的な方法をとることで積み上げたり,改善したりする点がChatGPTは得意と思われる.
設計書を作成する際も,まとまった入力で一度でよい結果を得るよりも,対話的に進める方が良い可能性がある.
・設計書を作成させるとき,こちらが想定している仕様を正確に伝える必要がある.
ChatGPTをその相手としたときに,どのような伝え方をするのが適切かを考える必要ある.
・まとまった入力に対する出力については特に,内容を確認する必要がある.
トレーサビリティが取れていれば良いのだが,それを担保させる方法はあるだろうか.
★★3班★★
ChatGPTを利用することで,テスターの支援ができるかについて実験しました.
具体的には,開発対象をWebサービスのログイン機能として,開発から追加機能のメモだけが入手できたというシチュエーションで変更要求仕様書と追加機能の差分テスト仕様書を作成できるかを試しました.
まず,IDとパスワードだけのシンプルなログイン機能の要求仕様書を自動作成し,次に二要素認証機能(二段階で認証してログインさせる機能)の簡単な要求メモを与えて変更要求仕様書を自動作成しました.さらに変更要求仕様書の変更箇所を明示することで,差分テスト仕様書の作成を試みました.
■やったこと
・要求仕様書フォーマットしてIEEE Std 830に倣うよう指示を与えるだけで,機能のメモから要求仕様書が作成できた.
・要求仕様書と追加機能のメモから変更要求仕様書を作成できた.
空白の項目を一般的な例で埋めるよう指示するとそれらしい文章を追記してくれた.
・テスト観点と仕様書例を与えることで,欲しいテストケースが得られた.
■わかったこと
・要求仕様書作成指示の際にIEEE Std 830やESPRなどできるだけ詳細な条件を与えた方が良い.
・変更要求仕様書に以前からの機能か追加機能かを明確にするよう指示したが,正しく明確化できなかった.
・最終チェックは人間が行う必要がある.人間にはチェックできる能力が必要
■次にやること
・ASDoQのシステム開発文書品質特性を与えることで,要件が品質特性のどれに該当するかを自動的に付与できるかを試してみたい.
★★4班★★
ChatGPTを利用することで,要求仕様書やテスト仕様書の漏れを指摘できるかについて実験しました.
○×ゲームやムーブレボ要求仕様書を題材にして実験を進めました.
■やったこと
・質の高い結果を得るため,スパイラルアップ(何度かやりとり)をすることで,これによりテスト仕様の漏れに気がついた.
・それでも完璧な結果は得られない,最終的には人間が修正してやる必要がある
・LlamaIndexにより現時点でのChatGPTの容量制限を超えるローカル文書をインデックス化しプロンプトから扱えた.
(依頼文をクエリに置換え順次プロンプト呼び出す処理を自動で行ってくれる)
■わかったこと
・ロールを与えることが重要である.
・ロールのバリエーションを複数用意しておくと素早く色々な観点を得られて効率が良い.
・要求漏れを指摘させることは難しかった.
・追加のアイデアをもらえるような依頼方法が有効であった.
・自分のロールじゃないロール(開発者ならテスター)からの指摘が有効であった.
一人プロジェクトなどでは良い
・ステップ・バイ・ステップのプロンプトが有効であることが分っている.
要求定義や設計やテストなどのアクティビティをさらに細分化したステップに分解すれば,
利用価値が高まるはず.目次を検討する価値はありそう.
■次にやること
・ChatGPTに分かりやすい記述方法を試す.
【1班・2班のワークの様子】
【3班・4班のワークの様子】
2日間じっくり取り組むことで開発プロセスやシステム開発文書にChatGPTを取り入れるコツや手法など多くのものを得ることができました.今回のサマーワークショップの結果は、ASDoQ大会2023のポスター発表でも報告する予定です.文字だけでは十分に伝わらない部分もありますので,ASDoQ大会のポスター発表で,ぜひ活動した班メンバーと直接意見交換してみてください.