非エンジニアに開発を説明してみた(要件定義)
Boleh VELTRA!! ナオユキです。
非エンジニアにシステム開発について説明する際に、うまく伝わらなかったことはありませんか?そんなとき、私はよく「人参のおつかい」を例に、説明をするようにしています。日常生活でもよくある、母親からの「人参2,3本買ってきて!」です(笑)
「人参2,3本買ってきて!」と母親に言われたら皆さんはどうしますか?
- 財布を持つ
- 近くのスーパーへ行く
- 人参を探す・買う
- 家へ帰る
- 家計簿をつける
例えば、今回はこの5アクションになると想定します。
しかし、こんな経験はありませんか?
- 2本買ったら「小さいから、これなら3本欲しかった」と言われる
- 1本しかなかった、もしくは売り切れ
- 人参が想定より高かった(オーガニックしかなかったなど)
- いつもの店が閉まってた
- 財布を落とした
- 途中でジャ◯アンに野球に誘われて断れなかった
このように、想定通りいかない場合もあります。
システム開発においては残念ながら「要件漏れ」「バグ」と呼ばれてしまうやつです。
ここでは、最初の5アクションを正常ルート、それ以外を準正常ルート、異常ルートと表現しましょう!
準正常ルート = あり得るけど正常ルートではない。例えば店が閉まっている場合や、人参が1本しかない場合。
異常ルート = 想定外の内容だが0%ではない。例えば家を出てすぐに車にひかれてしまった・・・など。
要件定義
まずは要件定義を行います。
一番大切なのは相手のニーズです。そもそも母親はなぜ人参が必要なのでしょうか?
カレーを作りたい場合 = 1本でもまぁ大丈夫だと思われる。最悪0本でも栄養と見た目の問題は残るが、カレーとしては許容範囲。しかし、にんじんケーキを作りたい場合 = 2本必須!足りないとケーキそのものが作れない為。
しかし、、、よく考えてみてください。2本で良い場合と、3本欲しかった場合があります。なぜこのような問題が発生するかと言うと、人参はそれぞれ大きさが異なるためです。では、定性的な表現を止めて定量的な表現にしましょう。人参の大きさは大体150g〜200gです。400g必要だった場合150gなら3本、200gなら2本と言うことになります。
また、人参の平均単価は100円/本とします。その場合400円/本の人参を買って帰ると多分母親は切れます。そうです。。。費用対効果の妥当性です。
次に、店に人参がなかった場合や店が閉まっていた場合に次の店を目指すとしましょう。家の近くにはスーパーが3件あり、その3件なら10分以内だが、4件目に行こうとすると電車に乗る必要がある場合は3件目でなかったら諦めるべきでしょう。
そんなこんなで、以下のような要件定義が出来あがりました。
[目的]
にんじんケーキを作る
[要件]
- 人参は400g以上、600g以下
- 袋売りしかなく600gを超える場合は予算範囲内なら可能
- 400gに満たない場合は購入しない(ただし、後述する3つの内、最後のスーパーでない場合はその店で購入できる人参を購入してから移動する)
- 予算は合計で500円(税込み)以内とする
- スーパーは3件を対象とする。それぞれのスーパーを仮に A、B、C とする
- 回る順番は A->B->C とする。※母親が品揃えと価格の感覚値で判断
- 移動は徒歩・自転車など無料の方法に限る
- 15時までには作業を開始したいので、帰宅時間は厳守する
- 予想していない問題に遭遇した場合は「その時点で帰宅」とする
- いつ、どこで、何に、いくら使ったのかを記録する
こんなところでしょうか。
また、敢えて定義しませんでしたがこの要件の場合「お金が余ったのでアイスを買う」というのは許されます(笑)
さて、簡単ではありますが、要件定義は以上です。