要件定義とは
Wikipediaを見てみると
ソフトウェア開発やシステム開発においては、「要件定義」とは、そのソフトウェアやシステムに必要な機能や性能を明らかにしてゆく作業のこと
こう記載されています。
まさにその通りなのですが、これも業界用語であり、初めてアプリ開発を行う方だとなじみがない言葉だと思います。アプリ開発はないけれど、システム開発がある、それならばご存知でしょう。
私はこうして「要件定義はなじみがない言葉」と書いている自分に違和感を感じるのですが、それだけ、自分にとっての常識になっているということ。
自分で書いた「システムのプロは、あなたの業界のプロではない (常識が常識ではないことを思い出してください)」が身に染みているところです。
要件定義は最も重要な工程
さて、改めて要件定義ですが、
Wikipedia記載のとおりであり、かつアプリ開発・システム開発において最も重要である、と言い切ってよい工程でもあります。
このイメージをご覧ください。
STARTからGOALまでは、アプリ開発の開始から完成までの時間軸です。
ある点から、射撃した弾道でも構いません。(実際は放物線になるということはこの際無視して頂いて)
最初の発射角がわずかでもズレると、距離が遠くなればなるほど最終到達点での誤差は大きくなります。
これは、アプリ開発においても同じです。
つまり、要件定義という最初の工程において発生したズレは、そのズレが大きければ大きいほど完成時点では、余計なコストとなって跳ね返ってきます。
前述が赤いラインだとすると、この青いラインで伝えたいのは、ズレは小さいに越したことはないのですが、ゼロにすることはかなり難しいこと。ならば、少しでも早いうちにズレを修正することによって、完成時点での損失を可能な限り小さくできる。というメッセージです。
要件定義を住居建築に例えて考えてみる
本当に重要な工程であるため、しつこいですがまた別の例を挙げるなら
あなたが家を建てることになりました。
2世帯住宅を希望しています。
両親と一緒に住むので、2世帯住宅を作ってください。
こう依頼しました。(こんな安易な注文はありえないでしょうが・・・)
出来上がったのは、玄関が1つだけ、1階はご両親、2階を子供たち家族用にという建物でした。
「いやいや、そうじゃなくて、玄関は2つに分けて、完全にプライバシーを保てるようにしてほしかったんだ。」
「そうだったんですか、てっきりこれでいいのかと思い、、、じゃあ、一旦壊して設計からやり直しですね。」
こんな問題は実際は起きないでしょう。
しかし、依頼が適当だと出来上がりが自分の想定したものにならないことがあること、そして、建物だと簡単に手直しすることができないことは理解して頂けるはず。
なのに、アプリ・システムもこれと同じことだということを意外に分からない方が多いのです。
理由は簡単。形のない「サービス」から作られるものであり、プログラムはワープロの手直しのような感覚で修正できるだろうと思われるからです。
いや、違うのです。
やはり、システムの開発においても建築同様に設計があり建物を建てるに相当するプログラム開発があり、完成したものを手直しをする場合、(文字修正だけなどでない限り)設計に立ち返ってやり直しをするのです。
家を建てて、もしお風呂場の位置を変えようとしても、一旦どこかを壊して、、、という作業が必要。それが簡単ではないことは想像がつくでしょう。それと同じだと考えてください。
要件定義の具体的な話は、次の回に送りますので、タイトルから外れている部分もありますが、まずは要件定義がいかに重要なのかということをご理解いただければと思います。
スマホアプリを使った業務システム構築のことなら
株式会社クラボードへお気軽にご相談ください