소프트웨어 요구사항 명세서(SRS) 워드 양식
요구사항 명세서는 소프트웨어를 원하는 사람과 만들고 테스트하는 사람 사이의 약속이에요. 요구사항 하나하나가 ID, 우선순위, 충족을 증명할 방법이 있는 테스트 가능한 문장이어야 해요. 이 양식은 가상의 여객선 예약 앱으로 채운 7쪽 완성 예시로, ISO/IEC/IEEE 29148(IEEE 830의 후속 표준)이 권하는 구성을 따라요. 소개, 전체 설명, 기능별 요구사항, 품질 목표, 인터페이스, 추적표. 영문 문서예요. 구조와 서식, 콘텐츠 컨트롤은 그대로 두고 내용만 한국어로 바꿔 써도 돼요.
- 쪽 수:
- 7
- 지원 버전:
- Microsoft 365용 워드, 워드 2016 이후 버전, Mac용 워드 (웹용 워드는 입력만 가능)
- 업데이트:
이 템플릿으로 할 수 있는 일
- 상태 드롭다운, 문서 날짜 선택, 개정 이력 표가 있는 문서 관리 블록
- 번호가 저절로 붙는 3단계 제목(3.1.2)과 세 단계를 모두 보여주는 목차
- 행마다 MoSCoW 우선순위와 검증 방법 드롭다운이 있는 요구사항 표
- 비기능 목표, 외부 인터페이스, 상태가 있는 추적표, 승인 서명 4개

구성
문서는 7쪽이에요. 아래 각 부분은 파일 안의 제목이라 탐색 창(보기 > 탐색 창)에서 바로 이동할 수 있어요.
| 부분 | 다루는 내용 | 쓰는 것 |
|---|---|---|
| 표지·문서 관리 | 어떤 문서의 어떤 버전인지 | ID, 버전, 상태, 날짜, 작성자, 책임자, 개정 이력 |
| 1. 소개 | 문서의 목적과 범위 | 목적, 범위, 용어 정의, 참고 문서 |
| 2. 전체 설명 | 제품이 놓인 환경 | 제품 관점, 사용자 유형, 제약과 가정 |
| 3. 기능 요구사항 | 시스템이 해야 할 일 | 기능(제목 2)과 세부 기능(제목 3)으로 묶고 요구사항마다 한 행 |
| 4–5. 품질·인터페이스 | 얼마나 잘, 무엇과 연결되는지 | 성능, 가용성, 접근성, 보안 목표, 외부 시스템 |
| 6–7. 추적·승인 | 빠짐없음의 증거와 합의 | 목표-테스트 추적표와 상태, 서명 4개 |
시작하기 전에
- 사업 목표부터 적어요. 모든 요구사항은 목표 하나로 거슬러 올라가야 해요. 그렇지 않으면 이번 릴리스에 필요 없는 요구일 가능성이 커요.
- 우선순위 척도를 제품 책임자와 합의해요. 이 양식은 MoSCoW(Must, Should, Could, Won’t)를 써요.
- ID 규칙(FR-, NFR-)을 정하고 지운 ID는 다시 쓰지 않아요.
단계별 사용법
문서 관리 채우기
ID, 버전, 작성자, 책임자를 입력하고 상태와 날짜를 고른 뒤 배포한 버전마다 개정 이력 행을 추가해요.
범위와 용어 쓰기
범위에 들어가는 것과 빠지는 것을 평범한 문장으로 쓰고, 테스터가 두 가지로 읽을 수 있는 용어는 모두 정의해요.
기능별로 묶기
기능은 제목 2, 그 안의 세부 기능은 제목 3으로 써요. 번호와 목차가 저절로 따라와요.
한 행에 요구사항 하나
필수 동작은 "~해야 한다"로 쓰고 행마다 새 ID를 준 뒤 드롭다운에서 우선순위와 검증 방법을 골라요.
측정 가능한 품질 목표
비기능 요구사항마다 숫자와 조건을 줘요(동시 사용자 500명에서 요청의 95%를 2초 안에). "빠르게" 같은 형용사는 안 돼요.
추적, 업데이트, 승인
추적표를 채우고 목차를 업데이트한 뒤 상태를 승인으로 바꾸고 서명을 받아요.
필드·컨트롤 지도
문서 안의 모든 콘텐츠 컨트롤과 필드를 나오는 순서대로 정리했어요. 워드에서 회색 테두리 칸이 콘텐츠 컨트롤이에요.
| 이름 | 종류 | 위치 | 예시 값 |
|---|---|---|---|
| Product name header | 텍스트 | 머리글 | TideTicket Mobile Booking |
| Version header | 텍스트 | 머리글 | 1.2 |
| Product name | 텍스트 | 본문 | TideTicket Mobile Booking |
| Client | 텍스트 | 본문 | Harborline Ferries |
| Document ID | 텍스트 | 본문 | SRS-TT-001 |
| Version | 텍스트 | 본문 | 1.2 |
| Document status | 드롭다운 | 본문 | In review (Draft / In review / Approved / Superseded) |
| Document date | 날짜 선택 | 본문 | November 4, 2026 |
| Author | 텍스트 | 본문 | Priya Raman, Business Analyst |
| Product owner | 텍스트 | 본문 | Marcus Dale, Head of Digital |
| Rev 1.0 date | 날짜 선택 | 본문 | September 15, 2026 |
| Rev 1.1 date | 날짜 선택 | 본문 | October 8, 2026 |
| Rev 1.2 date | 날짜 선택 | 본문 | November 4, 2026 |
| Priority FR-01 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-01 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-02 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-02 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-03 | 드롭다운 | 본문 | Should (Must / Should / Could / Won't (this release)) |
| Verification FR-03 | 드롭다운 | 본문 | Demonstration (Test / Inspection / Analysis / Demonstration) |
| Priority FR-04 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-04 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-05 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-05 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-06 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-06 | 드롭다운 | 본문 | Inspection (Test / Inspection / Analysis / Demonstration) |
| Priority FR-07 | 드롭다운 | 본문 | Could (Must / Should / Could / Won't (this release)) |
| Verification FR-07 | 드롭다운 | 본문 | Demonstration (Test / Inspection / Analysis / Demonstration) |
| Priority FR-08 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-08 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-09 | 드롭다운 | 본문 | Should (Must / Should / Could / Won't (this release)) |
| Verification FR-09 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-10 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-10 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-11 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-11 | 드롭다운 | 본문 | Analysis (Test / Inspection / Analysis / Demonstration) |
| Priority FR-12 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-12 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Priority FR-13 | 드롭다운 | 본문 | Must (Must / Should / Could / Won't (this release)) |
| Verification FR-13 | 드롭다운 | 본문 | Demonstration (Test / Inspection / Analysis / Demonstration) |
| Priority FR-14 | 드롭다운 | 본문 | Won't (this release) (Must / Should / Could / Won't (this release)) |
| Verification FR-14 | 드롭다운 | 본문 | Inspection (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-01 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-02 | 드롭다운 | 본문 | Analysis (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-03 | 드롭다운 | 본문 | Inspection (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-04 | 드롭다운 | 본문 | Test (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-05 | 드롭다운 | 본문 | Inspection (Test / Inspection / Analysis / Demonstration) |
| Verification NFR-06 | 드롭다운 | 본문 | Demonstration (Test / Inspection / Analysis / Demonstration) |
| Trace FR-01 | 드롭다운 | 본문 | Covered (Not started / Covered / Passed / Failed) |
| Trace FR-04 | 드롭다운 | 본문 | Covered (Not started / Covered / Passed / Failed) |
| Trace FR-08 | 드롭다운 | 본문 | Covered (Not started / Covered / Passed / Failed) |
| Trace FR-12 | 드롭다운 | 본문 | Not started (Not started / Covered / Passed / Failed) |
| Trace NFR | 드롭다운 | 본문 | Covered (Not started / Covered / Passed / Failed) |
| Approver owner | 텍스트 | 본문 | Marcus Dale, Head of Digital |
| Signed date | 날짜 선택 | 본문 | 4개: Click or tap to enter a date. |
| Approver delivery | 텍스트 | 본문 | Jon Okoro, Delivery Manager |
| Approver QA | 텍스트 | 본문 | Ana Lucero, QA Lead |
| Approver ops | 텍스트 | 본문 | Glen Hart, Operations Director |
{ TOC \o "1-3" \h \z \u } | 필드 | 본문 | 목차 |
{ PAGE } | 필드 | 바닥글 | 1 |
{ NUMPAGES } | 필드 | 바닥글 | 7 |
{ SEQ Table \* ARABIC } | 필드 | 본문 | 1, 2, 3 |
모든 필드, 컨트롤, 스타일 설명
카드의 코드는 .docx 파일에서 그대로 읽은 것(워드가 저장하는 XML 또는 Alt+F9로 보이는 필드 코드)이라 양식에 들어 있는 내용과 정확히 같아요.
<w:lvl w:ilvl="0">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading1"/>
<w:lvlText w:val="%1."/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:ind w:left="440" w:hanging="440"/>
</w:pPr>
</w:lvl>
<w:lvl w:ilvl="1">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading2"/>
<w:lvlText w:val="%1.%2"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:ind w:left="660" w:hanging="660"/>
</w:pPr>
</w:lvl>
<w:lvl w:ilvl="2">
<w:start w:val="1"/>
<w:numFmt w:val="decimal"/>
<w:pStyle w:val="Heading3"/>
<w:lvlText w:val="%1.%2.%3"/>
<w:lvlJc w:val="left"/>
<w:pPr>
<w:ind w:left="880" w:hanging="880"/>
</w:pPr>
</w:lvl>1., 2., 6.1 같은 번호는 직접 입력한 게 아니에요. 다단계 목록이 제목 1·제목 2·제목 3 스타일에 연결돼 있어서 어떤 단락이든 제목 1로 바꾸면 다음 번호가 붙고 목차에도 들어가요.
부분별 설명
<w:pStyle w:val="Heading1"/>- 목록 1수준을 제목 1 스타일에 연결해요(2수준은 제목 2).
<w:lvlText w:val="%1."/>- 1수준은 번호와 마침표: 1., 2., 3.
<w:lvlText w:val="%1.%2"/>- 2수준은 상위 번호.자기 번호: 6.1, 6.2.
<w:ind w:left="440" w:hanging="440"/>- 내어쓰기라 제목이 두 줄이 돼도 번호 뒤에 맞춰져요.
<w:lvlText w:val="%1.%2.%3"/>- 3수준(제목 3)은 세 번째 번호를 붙여요: 3.1.1, 3.1.2. 새 제목 2마다 다시 시작해요.
예시에서: 1. Introduction, 1.1 Purpose, 1.2 Scope … (제목 21개)
어떻게 쓰이나: 구역을 추가하려면 제목을 입력하고 홈 탭에서 제목 1(Ctrl+Alt+1), 제목 2(Ctrl+Alt+2), 제목 3(Ctrl+Alt+3) 중 하나를 고르세요. 뒤 번호가 저절로 바뀌어요.
바꾸는 방법: 홈 > 다단계 목록 > 새 다단계 목록 정의에서 형식을 바꿔요(예: "제1조"). "수준에 연결할 스타일"은 제목 1·제목 2로 두세요.
배우기: 워드로 긴 문서 설계하기: 개요 보기와 다단계 번호 매기기 →{ TOC \o "1-3" \h \z \u }TOC 필드가 제목 1·제목 2·제목 3 단락으로 목차를 만들어요. 파일에는 항목과 쪽 번호가 미리 채워져 있어서 열자마자 제대로 보여요.
부분별 설명
\o "1-3"- 제목 1~3 수준을 넣어요.
\h- 항목마다 해당 제목으로 가는 링크(워드에서 Ctrl+클릭).
\z- 웹 모양 보기에서는 쪽 번호를 숨겨요.
\u- 단락의 개요 수준을 써서 스타일이 목차 항목을 정해요.
예시에서: 항목 21개. 첫 항목: 1. Introduction … 3쪽
어떻게 쓰이나: 구역을 추가하거나 이름을 바꾼 뒤 목차를 오른쪽 클릭 > 필드 업데이트 > 목차 전체 업데이트를 눌러요.
바꾸는 방법: 참조 > 목차 > 사용자 지정 목차에서 "수준 표시"를 2로 바꾸면 제목 3이 목록에서 빠져요.
배우기: 워드에서 목차, 캡션, 상호 참조 넣기 →Page { PAGE } of { NUMPAGES }바닥글은 두 필드로 쪽을 세요. PAGE는 현재 쪽, NUMPAGES는 전체 쪽 수예요. 인쇄하거나 PDF로 저장할 때 다시 계산돼요.
부분별 설명
PAGE- 필드가 있는 쪽의 번호.
NUMPAGES- 문서 전체 쪽 수.
예시에서: 첫 쪽에 Page 1 of 7
어떻게 쓰이나: 쪽을 추가하거나 지워도 번호가 따라가요.
바꾸는 방법: 바닥글을 두 번 클릭해 필드 주변 글자를 고쳐요. 삽입 > 페이지 번호 > 페이지 번호 서식에서 시작 번호를 정해요.
배우기: 워드 페이지 설정하기: 여백, 나누기, 머리글, 바닥글, 쪽 번호 →{ SEQ Table \* ARABIC }표 캡션마다 표를 순서대로 세는 SEQ 필드가 들어 있어요. 중간에 캡션 있는 표를 넣으면 뒤 캡션 번호가 모두 바뀌어요.
부분별 설명
SEQ Table- "Table"이라는 이름의 카운터. SEQ Table 필드마다 1씩 늘어요.
\* ARABIC- 1, 2, 3 형식으로 표시해요.
예시에서: 캡션 3개: Table 1~Table 3
어떻게 쓰이나: "표 2 참고" 같은 상호 참조가 가리키는 대상이 캡션이에요(참조 > 상호 참조).
바꾸는 방법: 참조 > 캡션 삽입으로 새 캡션을 넣어요. 번호가 이상하면 Ctrl+A 후 F9로 모든 필드를 업데이트해요.
배우기: 워드에서 목차, 캡션, 상호 참조 넣기 →<w:sdtPr>
<w:alias w:val="Product name"/>
<w:tag w:val="product_name"/>
<w:text/>
</w:sdtPr>매번 바뀌는 이름, 번호, 세부 내용은 일반 텍스트 콘텐츠 컨트롤이에요. 클릭하고 입력하면 예시 글자가 바뀌고 서식은 그대로 유지돼요.
부분별 설명
<w:alias w:val="…"/>- 컨트롤을 클릭하면 탭에 보이는 제목.
<w:tag w:val="…"/>- 프로그램이 읽는 이름(편지 병합이나 코드에 유용).
<w:text/>- 일반 텍스트: 한 줄, 한 서식이라 붙여 넣은 글이 레이아웃을 깨지 않아요.
<w:showingPlcHdr/>- 값 대신 회색 안내 글자가 보일 때 들어 있어요.
예시에서: Product name = TideTicket Mobile Booking
어떻게 쓰이나: 이 양식에 12개: Product name header, Version header, Product name, Client, Document ID, Version, Author, Product owner, Approver owner, Approver delivery, Approver QA, Approver ops. 개발 도구 > 디자인 모드로 모든 컨트롤을 한눈에 보거나, 선택 창으로 컨트롤 사이를 이동해요.
바꾸는 방법: 개발 도구 > 속성에서 제목, 태그, 안내 글자를 바꿔요. 개발 도구 탭은 파일 > 옵션 > 리본 사용자 지정에서 켜요.
배우기: 워드 콘텐츠 컨트롤로 작성 가능한 양식 만들기 →<w:sdtPr>
<w:alias w:val="Document date"/>
<w:tag w:val="document_date"/>
<w:date w:fullDate="2026-11-04T00:00:00Z">
<w:dateFormat w:val="MMMM d, yyyy"/>
<w:lid w:val="en-US"/>
<w:storeMappedDataAs w:val="dateTime"/>
<w:calendar w:val="gregorian"/>
</w:date>
</w:sdtPr>날짜는 날짜 선택 콘텐츠 컨트롤이에요. 화살표를 눌러 달력에서 고르거나 아무 형식으로 입력해도 "November 2, 2026" 형식으로 보여요.
부분별 설명
w:fullDate- 보이는 형식과 상관없이 저장되는 날짜.
<w:dateFormat w:val="MMMM d, yyyy"/>- 표시 형식: 월 이름, 일, 네 자리 연도.
<w:lid w:val="en-US"/>- 월 이름에 쓰는 언어(영문 문서라 en-US).
<w:storeMappedDataAs w:val="dateTime"/>- 데이터에 연결하면 실제 날짜 값으로 저장해요.
예시에서: Document date = November 4, 2026
어떻게 쓰이나: 이 양식에 8개: Document date, Rev 1.0 date, Rev 1.1 date, Rev 1.2 date, Signed date. 달력에서 고르면 문서의 날짜 형식이 모두 같아져요.
바꾸는 방법: 개발 도구 > 속성 > 날짜 표시 형식에서 바꿔요(예: yyyy-MM-dd). 한국어 표시는 언어를 한국어로 바꾸세요.
배우기: 워드 콘텐츠 컨트롤로 작성 가능한 양식 만들기 →<w:sdtPr>
<w:alias w:val="Document status"/>
<w:tag w:val="document_status"/>
<w:dropDownList>
<w:listItem w:displayText="Draft" w:value="Draft"/>
<w:listItem w:displayText="In review" w:value="In review"/>
<w:listItem w:displayText="Approved" w:value="Approved"/>
<w:listItem w:displayText="Superseded" w:value="Superseded"/>
</w:dropDownList>
</w:sdtPr>정해진 답 중에서 고르는 칸은 드롭다운 목록 콘텐츠 컨트롤이라 모두 같은 단어를 써요(나중에 문서를 검색하거나 셀 때 편해요).
부분별 설명
<w:dropDownList>- 목록에서만 고를 수 있어요(직접 입력 불가).
<w:listItem w:displayText="…" w:value="…"/>- 선택지 하나: 보이는 글자와 저장되는 값.
예시에서: Document status = In review (Draft / In review / Approved / Superseded)
어떻게 쓰이나: 이 양식에 40개: Document status, Priority FR-01, Verification FR-01, Priority FR-02, Verification FR-02, Priority FR-03, Verification FR-03, Priority FR-04, Verification FR-04, Priority FR-05, Verification FR-05, Priority FR-06, Verification FR-06, Priority FR-07, Verification FR-07, Priority FR-08, Verification FR-08, Priority FR-09, Verification FR-09, Priority FR-10, Verification FR-10, Priority FR-11, Verification FR-11, Priority FR-12, Verification FR-12, Priority FR-13, Verification FR-13, Priority FR-14, Verification FR-14, Verification NFR-01, Verification NFR-02, Verification NFR-03, Verification NFR-04, Verification NFR-05, Verification NFR-06, Trace FR-01, Trace FR-04, Trace FR-08, Trace FR-12, Trace NFR. 칸을 클릭하고 목록에서 골라요.
바꾸는 방법: 개발 도구 > 속성 > 추가·수정·제거로 선택지를 바꿔요. 직접 입력도 허용하려면 콤보 상자를 쓰세요.
배우기: 워드 콘텐츠 컨트롤로 작성 가능한 양식 만들기 →<w:trPr>
<w:cantSplit/>
<w:tblHeader/>
</w:trPr>머리글 행은 표가 다음 쪽으로 넘어가면 쪽마다 위에 반복되고, 행은 쪽 사이에서 나뉘지 않게 설정돼 있어 긴 표도 인쇄하면 읽기 쉬워요.
부분별 설명
<w:tblHeader/>- 이 행을 쪽마다 맨 위에 반복해요.
<w:cantSplit/>- 한 행을 한 쪽에 유지해요.
예시에서: 표 13개 중 10개가 머리글 행을 반복해요
어떻게 쓰이나: 마지막 칸에서 Tab을 누르면 행이 추가되고 머리글은 계속 반복돼요.
바꾸는 방법: 머리글 행 클릭 > 테이블 레이아웃 > 머리글 행 반복. 짧은 표는 다음 단락과 함께 유지하게 설정돼 쪽이 나뉘지 않아요.
배우기: 워드에서 읽기 쉬운 표 만들고 서식 지정하기 →<w:style w:type="paragraph" w:styleId="Guidance">
<w:name w:val="Guidance"/>
<w:basedOn w:val="Normal"/>
<w:pPr>
<w:spacing w:after="100"/>
</w:pPr>
<w:rPr>
<w:i/>
<w:iCs/>
<w:color w:val="6B7280"/>
<w:sz w:val="19"/>
</w:rPr>
</w:style>양식을 채우는 사람을 위한 안내는 Guidance 스타일(회색 기울임)이에요. 보내기 전에 지우세요. 스타일이라 찾기 및 바꾸기로 한 번에 지울 수 있어요.
부분별 설명
<w:i/>- 기울임.
<w:color w:val="6B7280"/>- 회색 글자.
예시에서: 제목 블록 아래 안내 글 1개.
어떻게 쓰이나: 홈 > 바꾸기 > 자세히 > 서식 > 스타일 > Guidance로 모든 안내 글을 찾아요.
바꾸는 방법: 스타일 갤러리의 Guidance 오른쪽 클릭 > 수정.
배우기: 워드에서 스타일과 탐색 창 사용하기 →팁과 한계
- 검증할 수 없는 요구사항은 희망 사항이에요. 테스트, 검사, 분석, 시연 중 하나를 고를 수 없다면 다시 써요.
- 설계 결정은 빼요. "앱은 표를 오프라인으로 저장해야 한다"는 요구사항이고 "SQLite를 쓴다"는 설계예요.
- 이번 릴리스에서 일부러 빼는 것은 Won’t로 표시해요. 같은 요청이 스프린트마다 돌아오지 않아요.
- 승인 후에는 변경 관리로만 요구사항을 바꾸고 그때마다 개정 이력 행을 추가해요.
- 애자일 팀도 같은 구조를 살아 있는 문서로 쓸 수 있어요. ID는 고정하고 사용자 스토리를 ID에 연결해요.
이 템플릿에 쓰인 기능 배우기
도움이 되었나요? 잘못된 내용이 있나요? 의견 보내기 · admin@arumsoft.com