RFC 2119 (MUST, SHOULD, MAY – követelményszavak)

Az RFC 2119 ("Key words for use in RFCs to Indicate Requirement Levels") az IETF szabványa (1997), amely definiálja a specifikációkban használt követelményszavakat: MUST, MUST NOT, SHOULD, SHOULD NOT és MAY, valamint mellékformáikat (REQUIRED, SHALL, RECOMMENDED, NOT RECOMMENDED, OPTIONAL). A szavak nagybetűvel, szabványos "Requirements Language" szekcióban írva normatív jelentést hordoznak: ezzel mondja meg a dokumentum, mi kötelező, mi ajánlott és mi csak megengedett. Az így hivatkozott szabályokat a BCP 14 gyűjti össze, amely az RFC 2119-et és annak pontosítását, az RFC 8174-et (2017) foglalja magában.

Mi az az RFC 2119?

A specifikációk (RFC-k, szabványok, API-dokumentációk) gyakran közérthető angol mondatokban fogalmazzák meg a követelményeket — például: "a kliens must küldje el a token-t". A gond az, hogy a köznyelvi szavak pontatlanok: ami az egyik szerzőnek kötelező, az a másiknak csak jó tanács.

Az RFC 2119 (szerző: Scott Bradner) ezt szünteti meg azzal, hogy a következő szavaknak — kizárólag nagybetűvel írva, normatív kontextusban — pontos, egyértelmű jelentést ad:

Szó Jelentés Rövid magyarázat
MUST, REQUIRED, SHALL Kötelező A definíciót be kell tartani; nemlétük hibát/inkompatibilitást okoz.
MUST NOT, SHALL NOT Tiltott A viselkedés kizárt, végrehajtása hibának minősül.
SHOULD, RECOMMENDED Ajánlott Alapértelmezés szerint be kell tartani, de indokolt esetben, a következmények ismeretében el lehet térni tőle.
SHOULD NOT, NOT RECOMMENDED Nem ajánlott Alapértelmezés szerint kerülni kell, de indokolt esetben megengedhető.
MAY, OPTIONAL Választható A viselkedés megvalósítható vagy kihagyható; a két változat egyaránt megfelel a specifikációnak.

Mit jelent a nagybetűs írásmód?

Az RFC 2119 szavai csak nagybetűvel hordoznak normatív jelentést. A pontos szabály — hogy a különleges jelentés kizárólag a nagybetűs, normatív kontextusban érvényes — külön cikkben, az RFC 8174-ben szerepel.

Kisbetűvel ugyanezek a szavak (pl. must, should, may) nem technikai követelményt, hanem közönséges angol szöveget jelentenek. Ezért a specifikáció-szerzőknek különösen figyelniük kell: a normatív kijelentés MUST, a magyarázó mondat meg must.

Miért fontos a gyakorlatban?

  • Interoperabilitás: a megvalósító és a specifikáció egyértelműen tudja, mely sarkokon van mozgástér — a MAY nem törhető, a MUST nem kerülhető meg.
  • Egyeztetések és auditálás: a követelményelemzés során a "MUST vs. SHOULD" különbség dönti el, mi az elvárt funkcionalitás és mi a "nice to have".
  • API- és protokoll-dizájn: hibás implementációk gyakran onnan indulnak, hogy egy SHOULD-ot MUST-ként vagy fordítva értelmeznek.
  • Jó példa rá a RFC 9457 „Problem Details for HTTP APIs" is: a szabvány 2. szekciója szó szerint a BCP 14-re hivatkozik a követelményszavak pontosítása érdekében.

Gyakran ismételt kérdések (FAQ)

Mi az az RFC 2119? Az IETF 1997-es szabványa, amely a specifikációk követelményszavainak (MUST, SHOULD, MAY és változataik) pontos jelentését rögzíti.

Mi az a BCP 14? A Best Current Practice 14 az RFC 2119-ből és az RFC 8174-ből áll: az utóbbi (2017) finomítja, mikor és hogyan értelmezendők ezek a szavak.

A MUST mindig kötelező? Igen, de csak akkor, ha nagybetűvel, normatív szekcióban áll. Kisbetűs (must) alakban köznyelvi szöveg, kötelezőség nélkül.

Mi a különbség a SHOULD és a MAY között? A SHOULD ajánlást jelent (alapesetben be kell tartani, indokolt eltérés megengedett), a MAY pedig választhatóságot (bármelyik döntés megfelel a specifikációnak).

Milyen szavak tartoznak hozzá? MUST, REQUIRED, SHALL, MUST NOT, SHALL NOT, SHOULD, RECOMMENDED, SHOULD NOT, NOT RECOMMENDED, MAY és OPTIONAL.

Hivatkozások