要件定義のポイント
7/5の振り返り。
システム開発において、要件定義は重要と言われる。
なぜ、要件定義が重要なのか、どうしたら要件定義の質を向上させることができるのか。
まとめてみる。
システム開発の成否は何で決まるのか?
まず、システム開発が上手くいくパターンは大きく2つある。
1つ目は、要件定義がちゃんとできているパターン。
2つ目は、要件定義がちゃんとしていなくても、開発者が優秀で要件を上手く汲み取って開発してくれるパターン。
お金をかけられるなら、後者のパターンを採れる。
優秀なエンジニアを社内に持つか、優秀なエンジニアがいる会社に外注できるからだ。
もし、お金がないなら、前者のパターンでいくしかない。
つまり、要件定義をキチンとやって、開発が混乱・迷走しないようにする必要がある。
では、要件定義の質を上げるには、どうしたら良いか?
要件定義の質の向上①︰データのインプット・アウトプットの設計
要件定義の最初のステップでは、データのインプット・アウトプットを設計する。
また、インプットとアウトプットを設計する際には、どのインターフェース・どのタイミングでデータが入力・出力されるのかも検討しておく。
そもそも、システムというのは、「何かの情報をインプットすると、何かの情報が加工されたり、見え方が変わってアウトプットされるもの」である。
例えば、顧客管理システムであれば、顧客名や顧客の会社名や商談状況などをインプットとして入力する。
すると、会社名で検索して顧客情報を一覧で見られたり、商談状況別にソートして顧客情報を確認できたりする。
つまり、少し加工されたアウトプットが見られる。
この設計段階においては、必要なデータを網羅的に出し切ることが大切。
データを出し切ると、データの構造化も必要になってくる。
例えば、先の顧客管理システムの例で、顧客が購入した商品の情報も入力するとしよう。
もし、商品が車なら、車種・型番・年式なども必要かもしれない。
それだけ商品の情報が増えてくると、単に顧客情報と言っても、購入した商品の情報は別で入力するインターフェースを持った方がよいかもしれない。
また、データのCRUDが全て実現できる機能がそろっているか、というのも確認する。
※CRUD(Create Read Update Delete)
要件定義の質の向上②︰画面遷移の設計
データの設計が固まったら、具体的にユーザーにどのようにシステムを利用してもらうかを設計する。
WEBサイトでもWEBサービスでもアプリでも、基本的には画面遷移を書くことになる。
ほぼプロトタイプに近いようなイメージまで詰めると以下の画像のようになるだろう。
ここまでやらなくとも、手書きやパワーポイントベースでよい。
ユーザー候補の人に見せて、フィードバックをもらい、ブラッシュアップしておく。
要件定義の質の向上③︰将来に向けた拡張性の確保
要件には、将来実現したいことと、直近実現したいことの2つがある。
この将来実現したい要件というのが、曲者だ。
要件を定義する側としては、将来的にはガンガン機能を拡張したいと思っている。
しかし、開発する側としては要件が定まらないと、開発の工数も見込めないし混乱する。
従って、将来実現したいことも要件に盛り込んで開発してしまうか、もしくは要件を直近実現したいことだけに絞り、将来実現したいことは追加開発に回す、のどちらかになる。
しかし、奥の手もある。
"将来実現したい機能に向けて拡張性をもたせながら、要件は直近実現したいものに絞る"という手だ。
この手段をとるには、かなり優秀なエンジニアが身近にいる必要がある。
もし、外注するのだとしたら、その優秀なエンジニアに外注会社の設計をレビューしてもらう。
以上のような進め方で、要件定義の質を上げると、システム開発の成功につながる。