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.
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. |
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.
MAY nem törhető, a MUST nem kerülhető meg.SHOULD-ot MUST-ként vagy fordítva értelmeznek.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.