본문 바로가기
IT 기술/개발환경_유틸 관련 팁

[RFC 2119] MAY, MAY NOT, SHALL, SHOULD 의 사용

by 땅뚱 2017. 3. 3.

IETF Network Working Group 에서 1997.3 월에 공개한 2장짜리 문서로 스펙 문서를 적을 때 사용하는 조동사의 의미에 대해서 명확하게 기술해놓은 내용이다.

흔히 우리나라 개발자들은 이런 것에 스펙 문서에 신경을 잘 쓰지 않는 편인데, 한번 알아두면 나쁠 것은 없을 테고, 서로가 사용하는 동일한 단어에 대한 명확한 의미를 정해 놓으면 커뮤니케이션 잘못으로 인한 문제를 최소화할 수 있다는 장점이 있다.

그리고 영어로 된 스펙 문서를 볼 때, 이런 부분을 참고하면 좋을 것 같아 정리해본다.

번역참조 : https://techhtml.github.io/rfc/RFC2119.html

원본참조 : https://www.ietf.org/rfc/rfc2119.txt

 

RFC 2119 한국어 번역본

감사의 말 The definitions of these terms are an amalgam of definitions taken from a number of RFCs. In addition, suggestions have been incorporated from a number of people including Robert Ullmann, Thomas Narten, Neal McBurnett, and Robert Elz.

techhtml.github.io

 용어 설명 
 Must / Required / Shall  스펙에서 요구하는 절대적인 요구사항으로 반드시 준수해야 한다. 
 Must Not / Shall Not  스펙에서 절대 해서는 안되는 금지사항이다.
 Should / Recommended  특별한 상황(particular circumstances)에서 특별한 아이템을 무시할 타당한 이유가 있을 수도 있지만, 다른 방법을 선택하려고 할때, 함축된 의미를 완전하게 이해해야하고, 신중하게 고려되어야 함을 의미한다
 Should Not / Recommended Not  특별한 상황에서 특별한 동작이 가능하거나 유용한, 타당한 이유가 존재할 수 있지만, 다른 방법을 선택하기전에 함축된 의미를 완전하게 이해해야하고, 신중하게 고려되어야 함을 의미한다.
 May / Optional  아이템이 옵션임을 의미한다. 어떤 벤더는 다른 벤더가 동일한 아이템을 삭제했다고 하더라도, 제품을 향상시킬 수 있다고 생각하거나, 특정한 시장에서 요구된다고 생각할 때, 아이템을 포함하도록 선택할 수 있다. 특정 옵션을 포함하지 않는 구현은 기능이 줄어들 망정, 반드시 다른 구현과 상호작용이 가능해야 한다. 동일한 맥락에서 특정 기능을 포함하는 구현은 그 옵션을 포함하지 않는 다른 구현과 반드시 상호작용이 가능해야한다(물론 그 옵션이 제공하는 기능은 제외한다)

위에 정의한 단어들은 남발하면 안된다. 반드시 이해가 필요한 부분이나, 잠재적으로 해를 끼치는 동작을 제한할 경우에만 사용하는 것이 좋다.