前回は以下のようなことを書いた:
- 開発は「Why(要求)→What(要件)→How(設計)」の順にブレークダウンしていく必要がある
- ブレークダウンでは複数の選択肢が考えられるので取捨選択が必要
- 選択した方針が間違ってないかのコミュニケーションが必要で、そのために要件定義書や設計書を書くといい
- コミュニケーションが不要なら文書はなくてもいい(ただし要件定義や設計自体は必要)
今回は、要件定義を考えていくために、要求と要件について深く考えてみる。
要求と要件の違い
要件定義について考える前に、そもそもの話として「要求」と「要件」の違いが何なのかをハッキリさせておいた方がいい。 「要求と要件の違いって何?」ってあらためて聞かれると、ちゃんと答えられない人は多いと思う。
かく言う自分も、昔はこの違いでかなり悩んだ。 というのも、会社で用意されていた要件定義書のテンプレートで、要求を書く章と要件を書く章が分かれてたから。 要求も要件も同じじゃね?ってなってると、それぞれに何を書いたらいいのか分からないとなる。
要求と要件の違い、それは何かというと、「主語」が違う。
要求の主語は基本的に「顧客」となる。 「顧客は〜〜したい」「顧客は〜〜がほしい」のように、「顧客が」望んでいることが要求であり、その要求を満たすために開発は行われる。
一方で、要件の主語は常に「開発者」となる。 要求を満たすために「開発者は〜〜する」のように、「開発者が」やること(および守るべき条件)が要件となる。
ここで少し補足しておくと、要求の主語は「顧客」以外の場合もある。 たとえば「リファクタリングしたい」とか「ログを出せるようにしたい」とかは顧客ではなく開発者の要求なので。 もちろん、そのさらに奥には「顧客は新規機能の開発速度を上げてほしい」「顧客はバグを踏みたくない」「顧客は問題が起きたときに早く修正が入ってほしい」などの顧客の要求があるわけだけど。
それに対して、要件の主語は常に「開発者」であることに気をつけたい。 要求が何であれ、それを満たすために手を動かすのは「開発者」以外にありえないから。
いずれにせよ、「主語」を意識することがすごく重要。 そしてそれは、要求を考えるときと要件を考えるときでは、視点を変える必要があるということにも繋がる。
その話はまた次にしたい。
今日はここまで!