こんにちは、コンサルタントのしんです。
今回は、システムを実際に設計・構築を始める前に必要な要件定義フェーズにおいて何を定義し、何を作るのかお話したいと思います。
はじめに
私がITコンサルタントとして今まで何度も経験してきた要件定義フェーズですが、多種多様なプロジェクトがあり、一口に要件定義と言ってもプロジェクトによって必要となる決定事項や作成すべきドキュメントは違いました。
プロジェクトによって何が必要かをしっかり考慮していないと、後続の設計・構築フェーズでどんでん返しが発生し、要件定義のやり直しだったり要件定義・基本設計・開発フェーズを行ったり来たりする羽目になったりと、苦い経験もたくさんありましたが、そうならないために最低限必要なことを書きます。
私が経験してきたプロジェクトの中で、必ずと言って良いほど作成してきた重要な決定事項及びドキュメントをいくつか紹介します。
より具体的な記事にするため、今回は「カスタマーサポートの業務過多が発生していて、チャットボットの導入を検討している」というシナリオで書いてみました。
成果物の種類
まず、成果物の種類は作るシステムによって種類や数は変わりますが、要件定義フェーズにおいて、成果物は大きく分けて3つ(業務要件・機能要件・非機能要件)のカテゴリに分かれます。
1. 業務要件
お客様の既存の業務を整理・把握した上で、そのプロジェクトを遂行する「目的」、「目的を達成しようと動き出した背景」、「目的を達成した後のTo-Be像」を定義します。
- 目的例
- お客様からの問い合わせ数が増え、カスタマーサポートの業務不可が高まっており、チャットボットを設置し、カスタマーサポートの業務不可を減らす。
- 背景例
- 簡易的な問い合わせに対しても毎回カスタマーサポートの従業員が手入力で問い合わせに返信をしており、従業員の残業が増えている。
- To-Be例
- 簡易的・頻出の問い合わせはAIで識別し、テンプレートによる回答をすることにより、カスタマーサポートの従業員の工数を削減し、重要な顧客・案件への問い合わせに対応する時間を確保する。
2. 機能要件
機能要件においては、業務要件を満たすために必要なハードウェア、ソフトウェア、ネットワークを定義します。
チャットボットは既存のパッケージを使用するのか、それともスクラッチで開発するのか、クラウド/オンプレミスどちらで構築するのか、など。どの機能をどこのサーバに設置し、サーバ間ではどのような方式でデータを連携するのか、バッチ処理は行われるとしたらどれくらいの頻度でデータを回収し、データベースに格納するのかなどもこちらで定義します。
また、画面を作成して業務で使用する想定であれば画面レイアウトなどもこの段階で定義します。
3. 非機能要件
機能以外のものはすべて非機能要件となるので、非機能要件で定義する項目はプロジェクトによって大きく異なります。そのため、定義すべき内容が不明瞭で、しっかりと定義せずにシステムを作ってしまうと後々お客様と大きなトラブルになる可能性があります。
今回はとくに大切なシステムのパフォーマンスに関してお話しします。
パフォーマンスと言っても様々な指標がありますが、チャットボットで例を言うとサービスの時間と、対応速度が大切になると考えられます。
チャットボット導入によってお客様からの問い合わせに対して24時間チャットボットのサービスを提供するのか? 24時間対応できるようになったとしても、チャットボットの反応速度は最低でもX秒以内に返信をするなどの定義が必要です。チャットボットの反応速度が遅かったらお客様にストレスがかかり、むしろ逆効果になってしまうので、しっかりとサービスの時間、反応速度などは定義しておいたほうが導入する側のことを考えても得策と言えます。
さいごに
上記以外にも要件定義フェーズにおいて考慮すべき事項、作成すべきドキュメントはたくさんあります。各ドキュメントの記載内容や記載粒度に関しては次回のブログにて触れたいと考えています。