要件定義のために考えること

次のプロジェクトではリーダーとして要件定義から参加するっぽいので、要件定義について調べてみたメモ。間違っている部分や誤解している部分があるからかもしれないけど、とりあえずメモしておく。

1.システム化目標

お客さんの真のニーズを満たしていなければその製品は無駄なものになってしまうので、これが一番大切。とりあえず、以下のようなことを明確にする。

  • お客さんが重視していること
  • 何のためにシステムを構築するのか
  • これを作るとお客さんにとって何がうれしくなるのか

で、これを満足させるシステムを作る。ヒアリングしてみて「こっちのほうが…」って思ったら提案してもOK。

2.業務要件

以下を明確にしお互いのイメージが一致しているか確認しておく。

  • システム化範囲:どこからどこまでをシステムでカバーするのか、をハッキリさせておく
  • 業務フロー:システム化した場合の今後の(お客さんの)仕事の流れ

3.データ要件

データモデル。業務をモデル化したもの。モデリング

  • 「現行の業務をヒアリングした結果、このようなデータを扱って運営されているんではないかと分析いたしました」
  • 「こういうデータを扱ってシステム化します」

4.品質要件

パフォーマンスについて。

5.プラットフォーム要件

  • OS
  • アプリケーション形態
  • DB
  • 言語、など

6.費用対効果

非常に難しいけど提示できたらすごい。

7.画面遷移

  • ユーザ系
  • 管理系


以上、上記の項目を考える。ベースはシステム化目標。なぜかというと、お客さんの要望がそこにつまっているから。なので、

  • それはこういう画面構成になっているんですよ、という画面遷移
  • それにはこういう部分をシステムでカバーしますよ、というシステム範囲
  • それはそれぞれこういうフローになっていますよ、という業務フロー

っていうことを定義する。
画面遷移については各画面で、

  • 何をするのか
  • 何を表示するのか
  • どういう遷移で来るのか
  • どこに遷移するのか

が分かるようにする。

お客さん自身、本当にどういうものを作りたいのか見えていない場合があるらしい。なので、ヒアリングして DFD(Data Flow Diagram) などに落とし込んで「見える化」する。見えるものにしてイメージを共有する。