要求抽出を行うにあたり、3つの難点があります。
1.システム化の境界が明確に定義できない(どこまでがシステム、どこまでが人の作業なのか)
2.要求者自身が要求について完全に理解していない。
→コンピュータの能力や限界についての理解が不十分・ユーザフレンドリといった要求が曖昧過ぎる。
こんな風にしたいんだけれど、どうすれば良いのかな?程度の認識しかなく、何があれば自分の問題が解決するか分かっていない
3.時間の経過とともに要求が変化する。
では具体的に、どのように要求を抽出すれば良いのでしょうか?
1.資料収集:業務に関する既存の資料を収集・分析を行い、問題点や要求事項を抽出する手法。
→ある程度正確なドキュメントが残されている前提で行います。データマイニングが一番近い?
2.アンケート:システムを使うであろう人にアンケートにし、要求を抽出する手法。
→てっとり早い方法ですが、誘導尋問に近い形になる手法です。アンケートの質問を超える内容は出てこないケースがほとんどです。
3.インタビュー:オープン型インタビュー(自由に意見を貰う)と、構造化インタビュー(エンジニアが予め想定した回答に誘導する)の二種類がある。後者は責任分散が主な目的です。
→ほぼアンケートに近いですが、顔を合わせる分お互いの解答が印象に残りやすいです。
4.現場観察:現場に属することにより、事実、問題、対処策、改善の機会、成功するために必要な条件、KPI候補を導き出す。
→情報収集を、資料ベースでなく自分の感覚で進めていくやり方。人によって向き不向きがくっきり別れる手法です。
結論として、要件抽出の精度を上げるには適切なコミュニケーションを取るしかないです。
お互いが機能要件に熟知していれば最小で済みますし、逆の場合は僅かな意思疎通の乱れが命取りになります。
お互いのコミュニケーションを基本として、使いやすい手法・ツールを試し、質の高い要件抽出を目指しましょう。
最後に、コミュニケーション手法の例を示します。
・会議:最も一般的です。原則同一部署(利害関係が一致)内で行われますが、複数の利害関係者を同時に集めて議論する「協調セッション」という方法もあります。集団の合意を得るためには一番効率的な方法だそうです。
しかし、会話内容が十分正確に記録できないと、作成される要求仕様が不正確になる恐れがあります。
→真面目な人ほど会議好きのイメージです。
・ブレインストーミング:細かい意見が出やすく想定外の意見が出やすいため、活発なコミュニケーションが期待出来ます。しかし、まとめ役が不在の場合、生産性があるように見えてほとんどない場となってしまいます。
→学生が好きなイメージです。
・シナリオの利用:そのシステムが実際に使われたと過程してみんなでシミュレーションする。
例:福祉支援システムの要求を抽出する場合:年齢83 歳の花子おばあさんのある1日を具体的に各々想定する。
→一番能力のある人が全体を引っ張っていくケースが多発しそうなので、初学者の意見は吸い上げにくいかもしれません。