| f | Identify requirements within plain-text specifications | f | Identify requirements within plain-text specifications |
| | | |
| Status of This Memo | | Status of This Memo |
| | | |
| This document is not an Internet Standards Track specification; it is | | This document is not an Internet Standards Track specification; it is |
| published for examination, experimental implementation, and | | published for examination, experimental implementation, and |
| evaluation. | | evaluation. |
| | | |
| Abstract | | Abstract |
| | | |
| Plain-text specifications are readable and many follow [RFC 2119] | | Plain-text specifications are readable and many follow [RFC 2119] |
| when phrasing requirements. This specification introduces a syntax | | when phrasing requirements. This specification introduces a syntax |
| to augment such requirements with identifiers for easy reference. | | to augment such requirements with identifiers for easy reference. |
| | | |
| §1 Introduction | | §1 Introduction |
| | | |
| Being able to reference a requirement within a large document aids | | Being able to reference a requirement within a large document aids |
| n | many stakeholders within projects. Author and reviewer while the | n | many stakeholders. Author and reviewer while the specification is |
| specification is being written and discussed. The developer during | | being written and discussed. The developer during implementation and |
| implementation and testing. Customer while accepting the final | | testing. Customer while accepting the final product. |
| product. | | |
| | | |
| A test suite could e.g. use the wording of a requirement verbatim if | | A test suite could e.g. use the wording of a requirement verbatim if |
| it fails, by parsing the referenced requirement. Having a way to | | it fails, by parsing the referenced requirement. Having a way to |
| easily index all requirements and reference them elsewhere keeps the | | easily index all requirements and reference them elsewhere keeps the |
| requirements at it's source. | | requirements at it's source. |
| | | |
| §1.2 Requirements | | §1.2 Requirements |
| | | |
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", |
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this |
| document are to be interpreted as described in [RFC 2119]. | | document are to be interpreted as described in [RFC 2119]. |
| | | |
| §2 Requirement Identifier Syntax | | §2 Requirement Identifier Syntax |
| | | |
| Requirement identifiers MUST(R1) be placed directly after keywords as | | Requirement identifiers MUST(R1) be placed directly after keywords as |
| defined by [RFC 2119]. Requirement identifiers SHOULD(R2) be written | | defined by [RFC 2119]. Requirement identifiers SHOULD(R2) be written |
| within parenthesis and start with 'R' followed by a number. This | | within parenthesis and start with 'R' followed by a number. This |
| combination is less likely to conflict with normal wording and use of | | combination is less likely to conflict with normal wording and use of |
| parenthesis within a document. Requirement identifiers MUST(R3) be | | parenthesis within a document. Requirement identifiers MUST(R3) be |
| unique within one specification. | | unique within one specification. |
| | | |
| Example; | | Example; |
| | | |
| "... MUST NOT(R1) .." ok | | "... MUST NOT(R1) .." ok |
| n | | n | "... SHOULD\nNOT(R1)" ok, keyword split over two lines |
| | | |
| | | the following examples are wrong |
| | | |
| "... SHOULD ..." missing identifier | | "... SHOULD ..." missing identifier |
| "... MAY (R1) ..." error spacing after keyword | | "... MAY (R1) ..." spacing after keyword |
| "... SHOULD\nNOT(R1)" ok when keyword split over two lines | | "... MAY\n(R1) ..." new line between keyword and identifier |
| | | |
| | | |
| | | |
| It is RECOMMENDED(R4) that authors do not use identifier series for | | It is RECOMMENDED(R4) that authors do not use identifier series for |
| grouping, e.g. identifiers within the R100 series are used for | | grouping, e.g. identifiers within the R100 series are used for |
| feature X and R200 series for feature Y. It is also RECOMMENDED(R5) | | feature X and R200 series for feature Y. It is also RECOMMENDED(R5) |
| t | that authors not change identifiers for one requirement over time. | t | that authors not change identifiers for one requirement once a |
| This is however likely to happen more during authoring and reviewing | | specification is published. This is however likely to happen during |
| phase but should be avoided once a specification is published. | | authoring and reviewing phase. Assign identifiers late in the |
| | | process. |
| | | |
| | | |
| | | |
| [RFC 2119]: https://www.ietf.org/rfc/rfc2119 | | [RFC 2119]: https://www.ietf.org/rfc/rfc2119 |