Skip to content

요구사항 작성

효과적인 요구사항 작성 방법을 안내합니다.

요구사항 구조

markdown
### REQ-01: 요구사항 제목

- 시스템은 [동작]을 [조건]에서 [결과]해야 한다(SHALL)

ID 형식

REQ-XX
  • REQ: 요구사항 접두사
  • XX: 2자리 숫자 (01, 02, ...)

좋은 요구사항의 특성

1. 명확함 (Clear)

❌ 나쁜 예:

markdown
시스템은 빠르게 응답해야 한다

✅ 좋은 예:

markdown
시스템은 95%의 요청에 200ms 이내로 응답해야 한다(SHALL)

2. 검증 가능 (Verifiable)

❌ 나쁜 예:

markdown
시스템은 사용하기 쉬워야 한다

✅ 좋은 예:

markdown
시스템은 3단계 이내로 주요 기능에 접근할 수 있어야 한다(SHALL)

3. 독립적 (Independent)

각 요구사항은 독립적으로 구현/테스트 가능해야 합니다.

4. 추적 가능 (Traceable)

코드와 테스트에서 요구사항 ID를 참조합니다:

typescript
/**
 * @spec REQ-01
 */
function login() {}

카테고리별 요구사항

기능 요구사항

markdown
### REQ-01: 사용자 로그인

- 시스템은 이메일/비밀번호 로그인을 지원해야 한다(SHALL)

보안 요구사항

markdown
### REQ-02: 비밀번호 저장

- 시스템은 비밀번호를 bcrypt로 해시하여 저장해야 한다(SHALL)
- 시스템은 평문 비밀번호를 로그에 기록해서는 안 된다(SHALL NOT)

성능 요구사항

markdown
### REQ-03: 응답 시간

- 시스템은 API 응답을 500ms 이내로 반환해야 한다(SHALL)
- 시스템은 1000 동시 사용자를 지원해야 한다(SHOULD)

접근성 요구사항

markdown
### REQ-04: 키보드 접근성

- 시스템은 모든 기능을 키보드로 사용할 수 있어야 한다(SHALL)

우선순위 표시

markdown
### REQ-01: 로그인 [HIGH]

### REQ-02: 소셜 로그인 [MEDIUM]

### REQ-03: 생체 인증 [LOW]

의존성 표시

markdown
### REQ-03: 비밀번호 재설정

- 시스템은 이메일로 재설정 링크를 발송해야 한다(SHALL)
- **의존성**: REQ-01 (로그인)

검증 체크리스트

  • [ ] RFC 2119 키워드 사용?
  • [ ] 검증 가능한 조건?
  • [ ] 구체적인 수치/기준?
  • [ ] 명확한 주어와 동사?
  • [ ] ID 형식 준수?

MIT License