システム開発において避けることのできない「要件定義」。
でも、システム開発をしていると「要望」やら「要求」やら「要件」やら、似たような単語が出てくる上に、プロジェクトメンバー同士で、それぞれの単語に対する認識にずれが生じることも多いですよね。
今回はそんな「要望」「要求」「要件」について、言葉の定義の違いについて、まとめたので、ぜひご参照ください。
※なお、この定義については、各書籍ごとで異なることが多いため、必ずしも業界で統一化された定義とは限りません。
言葉の定義を使用する際には、必ずプロジェクトメンバーと認識のすり合わせをするようお願いいたします。
概要
「要望」「要求」「要件」の定義はざっくり下記のとおりです。
- 要望
- システム利用者からヒアリングした内容をそのままリストアップしたもの
- 要求
- 「要望」を整理して、システム利用者の業務や利用シーンの背景を深堀りした上でまとめたもの
- 要件
- 「要求」を詳細化して、開発するシステムを定義したもの
つまり「要望」「要求」「要件」の関係を示すと下記のようになります。
「要望」を整理、構造化したものが「要求」
「要求」を詳細化し、優先順位付けしたものが「要件」
要望とは?
システムを利用する人(またはシステムを利用する予定の人)が「こうなったらいいな」と思う機能のこと。
営業のメンバーや経営のメンバーがユーザーにヒアリングしてリストアップしたものはここに当たります。
ユーザーはシステム開発の専門家ではなく、あくまで利用している段階で不満に思ったことがそのまま、要望としてあがっているだけなので、体系化もされておらず、「本当に必要なのか」という観点も抜けていることが多いです。
ですが、次の「要求」や「要件」をまとめる上で材料として必要になってくるので、あくまで「要望」であることをベースにしてリストアップすることの価値はあります。
要望をまとめる際には、「誰が」「何を要望しているのか」の2点だけ押さえていれば十分です。
内容の精査や深堀りは次の要求整理の段階で行います。
要求とは?
ユーザーから直接、ないし営業メンバーを経由して上がってきた「要求」を構造化して、整理したものが「要求」になります。
要望のときには、ユーザーからヒアリングした事項をそのままリストアップしただけですが、「要求」として整理する際には、ユーザーが「そもそもなぜその機能がほしいのか」「具体的には何を望んでいるのか」といったWhyの部分に踏み込んで分析します。
その後、深堀りした要求は似たようなもの同士でグルーピングを行い、その背景に応じて優先順位付けをしていきます。
要件とは?
最後に「要件」とは、上記で整理した「要求」を満たすための、システムのあるべき形をまとめたものになります。
- システムにはどのような画面があるのか
- ユーザーはシステムをどのように使用するのか(ユースケースはなにか)
- システムで取り扱う「データ」は何か?
※要件と設計の違い
「要件定義」では、「何を作るのか」にフォーカスを当てるため、「どのように実現するのか」には焦点を当てません。
下記のような「どのように実現するのか」については、「設計フェーズ」の領域に当たります。
- プログラミング言語は何を採用するのか
- どのアプリケーションフレームワークを採用するのか
- データベースは何を採用するのか
- インフラの構成はどうするのか
- クラウドにするとしたらどのサービスを利用するのか
- システムアーキテクチャの構成はどうするのか
エンジニアが「要件」の話をするとき、つい上記のような細かい「設計」の話をしてしまい、要件定義をするビジネスサイドの人とのコミュニケーションミスが発生してしまうので、注意しましょう。
まとめ
最初に補足で説明したとおり、上記の「要望」「要求」「要件」の意味はプロジェクトごとによっても使用されているところの意味が違うことがあります。
大事なのは、関係するステークホルダー間(要件定義者、エンジニア、営業など)で、意味の認識のすり合わせを行うことです。