Skip to content

RFC 2119 키워드

RFC 2119는 요구사항 문서에서 사용하는 키워드를 정의한 표준입니다.

키워드 목록

키워드의미사용 시기
SHALL절대 필수핵심 기능, 보안 요구사항
MUSTSHALL과 동일법적/규정 요구사항
SHOULD권장 (예외 허용)사용자 경험 개선
MAY선택적부가 기능
SHALL NOT절대 금지보안 위반, 안티패턴
SHOULD NOT권장하지 않음레거시 방식, 비효율적 패턴

사용 예시

SHALL (절대 필수)

markdown
- 시스템은 비밀번호를 해시하여 저장해야 한다(SHALL)
- 시스템은 HTTPS만 허용해야 한다(SHALL)

SHOULD (권장)

markdown
- 시스템은 로딩 인디케이터를 표시해야 한다(SHOULD)
- 시스템은 에러 메시지를 사용자 친화적으로 표시해야 한다(SHOULD)

MAY (선택)

markdown
- 시스템은 다크 모드를 지원할 수 있다(MAY)
- 시스템은 키보드 단축키를 제공할 수 있다(MAY)

SHALL NOT (절대 금지)

markdown
- 시스템은 평문 비밀번호를 저장해서는 안 된다(SHALL NOT)
- 시스템은 사용자 데이터를 제3자에게 공유해서는 안 된다(SHALL NOT)

한글 표기

키워드한글 표기
SHALL~해야 한다(SHALL)
SHOULD~해야 한다(SHOULD)
MAY~할 수 있다(MAY)
SHALL NOT~해서는 안 된다(SHALL NOT)

검증 방법

SDD Tool은 RFC 2119 키워드 사용을 검증합니다:

bash
sdd validate

키워드가 없으면 경고를 표시합니다.

모범 사례

  1. 핵심 기능에는 SHALL 사용

    • 없으면 시스템이 동작하지 않는 기능
  2. UX 개선에는 SHOULD 사용

    • 없어도 동작하지만 있으면 좋은 기능
  3. 실험적 기능에는 MAY 사용

    • 향후 추가될 수 있는 기능
  4. 보안 위반에는 SHALL NOT 사용

    • 절대 하면 안 되는 행위

MIT License