要件定義(要求分析)
要件定義では、システム全体の機能を決定する。このフェーズの成果が、システム開発全体の成功/失敗を左右するといっても過言ではない。
インプット | アウトプット |
|
|
要件定義でインプットとなるのは、顧客がシステム化したいビジネスの要件である。システム開発は、顧客企業のビジネスの活性化と効率化を達成することが狙いである。一方、要件定義フェーズでの目的は、顧客企業がシステム化したいビジネスモデルの明確化にある。
要件定義を行うための能力
上記の内容を踏まえると、次のような能力が求められる。
顧客企業のビジネスモデルを理解できること
顧客がどのようにして商売を行っているかを、十分に理解する必要がある。なぜシステム化することが必要なのか、なぜそのようなビジネスモデルを考えたのかを理解し、不足なく要件を汲み取ることが求められる。後々になって、不足した要件が見つかれば、システム開発全体にダメージを与えることになる。 一方で無駄な要件が発覚したときは、その機能自体を破棄してしまえば良く、スケジュールへの影響も少ない。しかし、不要な機能の開発に投入したコストは捨て金であるため、顧客ではなく、開発側が責任を負うことになるだろう。
顧客との折衝ができること
対人能力、調整能力のことを指す。相手はお金を頂くお客様であるから、多少のキツイ言葉で激怒するようなビジネスマンには到底務まらない。理解できていない要件をその場で理解できるように努力し、顧客が納得できるように要件を調整することが求められる。個人の人間性に依存する側面もあり、他の能力のようにトレーニングや経験によって定量的に補完できるものでもなく、極めて重要な能力と言える。
要件定義を行いながら、外部設計をイメージできること
論理的思考能力が求められる。最近で言う、ロジカル・シンキングである。顧客は一方的にシステム化したい要件を伝えてくるが、実現できないものをそこで気付けることが重要である。 極端な例ではあるが、勤怠管理システムを開発するとしよう。毎日の出社・退社時刻を記録していないのに、毎月の労働時間を画面表示したい、という要件は実現できない。この場合、毎日の出社・退社時間を記録するような新しい仕組みを提案したり、あるいは毎月の労働時間の算出自体が本当に必要なのかどうかを、顧客企業と検討しなければならない。外部設計を行う前に、要件定義フェーズで仕様の矛盾に気付ける能力は、非常に重要な能力である。