要件を書く時の MUST, SHALL, SHOULD, MAY, WILL

Photo by Brett Jordan from Pexels

文章による要件記述

要件を文書化する時、ビジネスプロセス図やユースケース図ようなダイアグラムを描くこともありますが、以下のように文章で書くこともあります。

  • システムは、顧客データを日本国内に保存するものとする。
  • システムは、週次で年初来売上のレポートを作成するものとする。
  • システムは、すべての画面でユーザが表示言語を切り替えられるものとする。

このように文章で要件を書く時に、英語ではどのように表現すれば良いでしょう。今回は、要件記述に使う助動詞の must、shall、should、may、will について考えてみます。

RFC 2119 "Key words for use in RFCs to Indicate Requirement Levels"

助動詞の使い方の指針として、RFC 2119 "Key words for use in RFCs to Indicate Requirement Levels" が参考になります。RFC 2119 では、要件がどの程度満たされなければいけないかによって次のような言葉の使い分けを提唱しています。

  1. MUST, SHALL
    MUST (しなければならない)SHALL (することになる) は、絶対に満たさなければいけない要件を表す場合に使います。
    REQUIRED (要求されている) も同じ使い方をします。

  2. SHOULD
    SHOULD (すべきである)、は、正当な理由により例外を認めることがあるものの、異なる選択をする際にも要件が意図しているところを十分に理解した上で、慎重に判断する必要がある場合に使います。
    RECOMMENDED (推奨される) も同じ使い方をします。

  3. MAY
    MAY (してもよい) は、選択的な要件を表す場合に使います。
    OPTIONAL (選択してもよい) も同じ使い方をします。

なお、RFC 8174 "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words" では、MUST、SHOULD、MAY などが大文字で書かれている場合にのみ RFC 2119 で定められた意味で解釈し、小文字の場合は通常の英語の意味で解釈すると再定義しています。

Key words for use in RFCs to Indicate Requirement Levels, MARCH 1997

Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words, MAY 2017

英語圏のブログ記事が解説する要件文書における助動詞の使い方

RFC 2119 は、RFC の技術仕様における言葉の使い方を定義していますが、要件文書についてはその他の見解もあります。助動詞の使い方について書かれた英語圏のブログ記事を3つ見てみたいと思います。

Using the correct terms – Shall, Will, Should

例えば、Using the correct terms – Shall, Will, Should というブログ記事では、shall、will、should、must について、次のような使い方を推奨しています。

  1. shall
    shall は、契約上拘束力のある要件を示します。要件は必ず実装しなければならず、実装は検証されなければいけません。

  2. will
    will (する) は、要件ではなく事実を示します。will で示された記述は検証の対象になりません。

  3. should
    should は、設計において取り組むものの、正式な検証の対象にはならない目標を示します。開発者に向けて重要な問題を伝えたいが、それを検証可能な要件として提示できないような場合に使います。

  4. must
    must は、shall との明確な区別がつけられないため、使いません。shall は、裁判でも使われる言葉ですが、must は使われません。

shall は、RFC 2119 とほぼ同じ意味で使いますが、must は使うべきでないとしています。should は、「推奨」の意味を示していた RFC 2119 とは異なり、検証しない、もしくはできない目標を記述するために使うとしています。また、要件ではない事実を伝えるために will を使うことを提唱しています。

argondigital.com

The Language Of Requirements Documents - When To Use Shall, Will & Should.

The Language Of Requirements Documents - When To Use Shall, Will & Should. では、shall、will、should について、次のような使い方を提唱しています。

  1. shall
    shall は、優先度の高い要件を表現するために使い、must と同じ意味になります。shall で書かれた要件は検証可能で、その内容を満たさない限り、プロジェクトは先に進めません。

  2. will
    will は、目的を宣言したり、機能や仕様を表現したりするのに使います。

  3. should
    should は、プロダクトやサービスの開発者にとっての目標を伝えるために使います。例えば、デザインチームが知るべきプロダクトをより魅力的にする機能があったとして、それが必須の要件ではないような時に使います。他にも、例えば 0.5秒以下の応答時間が必須の要件の時に、より速い応答時間を求めるために 0.25秒という開発チームにとっての目標を記述するのに should を使います。

shall は、RFC 2119 とひとつめのブログとほぼ同じ使い方になっています。should は、必須ではない目標を伝えるという点で、ひとつめのブログと同じです。ただし、検証するかしないかということには言及していません。will は、目的の宣言の他に、機能や仕様を表現するという独自の使い方をしています。

www.businessanalystlearnings.com

You Must Not Write “The System Shall…”

You Must Not Write “The System Shall…” では、本来英語の should と must が同じく必須であることを示す言葉であるとしているものの、特にグローバルチームにおいては shall を必ずしも必須と解釈しない場合もあるという経験を伝えています。一方、must は、グローバルチームでもほぼ必ず必須の意味で解釈されるとしています。

さらに、Google 翻訳で shall と must を 41 の言語に翻訳し、再度英語に翻訳し直してみたところ、shall は半分以上の言語で shall に戻らなかったのに対して、must はすべての言語で must に戻ったという検証結果が得られたとあります。

そのため、shall ではなく、must を使うことを推奨しています。

tynerblain.com

must, shall, should, may, will の使い分け方

RFC 2119 と3つのブログ記事をふまえ、各助動詞についてのおすすめの使い分け方をまとめました。

助動詞 意味 使い方
must しなければならない 必須の要件に使います。
must を使って提示した要件の実装は必ず検証し、満たされない場合、そのシステム / プロダクト / サービスはリリースできません。
must を使う場合は、後述の shall は使いません。
読み手に英語を第一言語としない人がいる場合は、必須であることがより明確に伝わるように、日常的な言葉である must を使います。
shall することになる 必須の要件に使います。
shall を使って提示した要件の実装は必ず検証し、満たされない場合、そのシステム / プロダクト / サービスはリリースできません。
shall を使う場合は、前述の must は使いません。
フォーマルな英語表現にする必要がある場合は、shall を使います。
should すべきである 必須ではないが、実装を求めたい要件に使います。
可能な場合に要件の実装は検証しますが、満たされていない場合も、そのシステム / プロダクト / サービスのリリースを止めることにはなりません。
may してもよい 任意の要件に使います。
may で示された要件を実装してもよいですが、実装しなくても構いません。
will する will は要件を提示するためには使いません。
開発する対象のシステム / プロダクト / サービス以外の何か、例えば別のシステムについての事実や、要件を提示する発注者が行うことを示す際に will を使います。

要件文書の中で各助動詞を上記の意味で使う場合は、要件文書に次のような表を書き加えて、意図を明確にするのが良いでしょう。

Keywords How the keywords are used in this document
MUST / SHALL *1 This term means that the requirement is mandatory.
The implementation of the requirement represented using this keyword will be verified.
If the requirement is not met, the system / product / service cannot be released. *2
SHOULD This term means that the requirement is recommended but not mandatory.
The implementation of the requirement represented using this keyword will be verified wherever possible.
However even if the requirement is not met, it will not be a reason to block the system / product / service from being released.
MAY This term means that the requirement is optional.
The developer can choose whether to implement the requirement or not.

The keywords are to be interpreted as above when, and only when, they appear in all capitals. When these words are not capitalized, they have their normal English meanings.

上記の使い分けに従って冒頭の3つの要件を英語にすると、次のように表現できます。

  • The system MUST (SHALL) store customer data in Japan.
  • The system SHOULD create a weekly year-to-date revenue report.
  • The system MAY enable the users to switch the display language in all pages.

今回は、要件を文章で書く時の助動詞の使い方を見てきました。英語圏の人でも意見が分かれる難易度の高いテーマですが、英語で要件文書を書く際の参考になればと思います。

*1:MUST と SHALL は、使う方を残します。

*2:system、product、service は、要件文書の対象に合わせていずれかひとつを残します。