RFC 2119 Meets Agile: Using INITIALLY, EVENTUALLY and ONCE to Prioritize Requirements

RFC 2119 is a widely used standard for defining the level of importance of requirements in a project. It employs key words such as “MUST“, “SHOULD“, and “MAY” to indicate the level of requirement.

But these keywords don’t always fit perfectly in agile environments where things move quickly and change is a constant. They formulate a rigid structure that can create conflicts and impede progress.

Architects in agile projects can face difficulties in aligning the long-term goals and vision of the system with the current requirements of the project. Agile development often involves frequent changes, which can lead to conflicts between the architect’s technical vision and the immediate needs of the project.

Introducing the key words “INITIALLY“, “EVENTUALLY” and “ONCE” to the standard can provide a more flexible approach, allowing for the prioritization of requirements based on the development stage of a project.

The inclusion of the key words “INITIALLY“, “EVENTUALLY” and “ONCE” in requirements can aid in addressing these challenges by providing clarity on the relative importance of requirements in the context of the project’s lifecycle.

This approach allows architects to maintain a focus on the long-term vision of the system while also addressing the immediate needs of the project and delivering value to stakeholders in the short-term.

It helps teams focus on delivering the most important features first, while also keeping in mind the long-term goals of the project. With this approach, teams can avoid unnecessary delays and better deliver value to the end-user

Here is their definition and an example how to use them:

The key words “INITIALLY”, “EVENTUALLY” and “ONCE” when used on the own or in conjunction with the key words RFC 2119 or RFC 6919, indicate the time relevance of a requirement in the context of a project or system lifecycle, or when implementing requirements incrementally and are to be interpreted as follows:

INITIALLY: This word, or the noun INITIAL, means that the requirement is valid from the beginning.

EVENTUALLY: This word, or the noun EVENTUAL, or the adverb LATER, means that the requirement becomes valid at some point in the future.

ONCE: This word, or the phrase  AS SOON AS, means that the requirement becomes valid at some point in the future immediately after some condition is fulfilled.

For example: “The system INITIALLY MUST be configured with a firewall enabled and configured to block all incoming traffic. This requirement is INITIALLY REQUIRED to secure the system during its initial deployment, but EVENTUALLY MUST be supplemented with additional security measures such as intrusion detection and prevention. The rule that blocks all incoming traffic MUST be removed ONCE the additional security measures are activated”

This example implies that when system is first deployed, it needs to have a firewall enabled and all incoming traffic blocked. However, this requirement alone is not enough to guarantee security and the system must implement additional security measures over time. Finally, that remnants rules from the first deployment, may interfere the system and should be taken care.