システム管理論 I / 第 5 回

要求分析(2)

獲得・表現・検証 ── なぜ要求は正しく伝わらないのか

この回のねらい

ユーザ要求における課題

要求分析がうまくいかない原因は、技術ではなく人と人の間にあります。

要求が正しく伝わらない主な理由
原因中身
ユーザは要求を言えない 日々の仕事が「当たり前」になっていて、言語化されていない。 聞かれてはじめて気づくことが多い
ユーザは要求を知らない 技術で何ができるかを知らないので、想像の枠が現状の延長になる
ことばが食い違う 同じ用語を別の意味で使っている(第4回の用語定義)
要求は変わる 開発中に業務も市場も変わる。凍結しても現実は止まらない
要求は矛盾する 部署ごとに望むものが違う。全部を満たす解は存在しないことがある

ユーザ要求の獲得

獲得とは、問題に関連するすべての情報を収集することです。

方法向くところ注意
面談(インタビュー)背景や意図を深く聞ける聞き手の思い込みが入りやすい
アンケート多人数から広く集められる想定外のことは出てこない
現場の観察言語化されていない作業が見える手間がかかる
既存文書・帳票の分析実際に使われている項目が分かる形骸化した項目も混ざる
試作品を触ってもらう「思っていたのと違う」が出る作る手間(第3回プロトタイプ)

観察が効く理由。 ユーザが「言えない」要求は、聞いても出てきません。 しかし実際の作業を見れば分かることが多い。 「なぜこの付箋が貼ってあるのか」「なぜこの帳票を二度書きしているのか」── そこに、システムが解くべき本当の問題が隠れています。

ユーザ要求の表現

表現とは、得られた情報を論理的な要求モデルに変換し、 仕様として正確に記述することです。

自然言語だけで書くと、どうしても曖昧さが残ります。 だから図や表を使ってモデル化します。

表し方表せるもの
ユースケース図誰が、システムに何をさせるか(第10回)
データフロー図データがどこからどこへ流れるか
状態遷移図どんな状態があり、何で移るか
画面遷移図・画面案利用者から見た振る舞い
用語集(データ辞書)ことばの意味

曖昧な書き方の例。

これらはすべて、後になって「言った・言わない」の争いになります。 検証できない書き方は、要求として成立していないと考えてください。

ユーザ要求の検証

検証とは、要求モデルや仕様に間違いがないことを確かめることです。

要求仕様に求められる性質
性質問い
完全性必要なことがすべて書かれているか
無矛盾性互いに矛盾する要求はないか
明確性読む人によって解釈が変わらないか
検証可能性満たしたかどうかを後で確かめられるか
実現可能性技術・コスト・期間の中で作れるか
追跡可能性どの要求がどの設計・どのテストに対応するか辿れるか

追跡可能性が効く場面。 第8回のテストで、テスト網羅行列という表が出てきます。 「要求」と「プログラムの部分」の対応を記録しておく表です。 これがあると、システムを修正したときに どこを再テストすべきかがすぐ分かります。 要求分析の段階で対応を残しておくことが、後の工程を助けます。

なぜ上流ほど大事なのか

誤りを見つけるのが遅れるほど、修正の費用は大きくなります。

見つけた工程直す範囲
要求分析中文書を直すだけ
設計中要求+設計を直す
実装中要求+設計+コードを直す
テスト中要求+設計+コード+テストをやり直す
運用開始後上記すべて+業務への影響、信用の低下

だからこそ、要求分析には時間をかける価値があるのです。 急いで先へ進むことが、結果的にいちばん遅い道になります。

← 第4回 第6回 システム設計(1) →