기능정의서 작성방법은 문서를 예쁘게 만드는 기술이 아닙니다. 개발자와 디자이너, QA가 “이 기능은 여기까지 만들면 된다”라고 같은 기준을 갖게 만드는 일입니다.
처음에는 기능정의서 작성방법이 되게 거창해 보입니다. 표도 있어야 할 것 같고, 화면 번호도 있어야 할 것 같고, 예외 케이스도 다 넣어야 할 것 같죠. 그런데 너무 크게 시작하면 오히려 문서가 안 끝납니다.
결론부터 말하면 기능정의서 작성방법은 “누가, 어떤 조건에서, 무엇을 하면, 어떤 결과가 나오는가”를 작게 적는 순서로 보면 됩니다. 이 네 가지가 보이면 개발자 질문이 줄고, QA 기준도 훨씬 빨리 잡힙니다.
개발자 질문 줄이려면 먼저 볼 기준
기능정의서 작성방법에서 제일 큰 문제는 용어가 아니라 기준입니다. 기획자는 “회원 상태 변경”이라고 쓰고, 개발자는 “어떤 상태에서 어떤 상태로 바뀌는지”를 묻습니다. QA는 “실패하면 어떤 문구가 나오는지”를 또 묻습니다.
이 질문이 나쁘다는 뜻은 아닙니다. 오히려 꼭 필요한 질문입니다. 다만 기능정의서에 기준이 없으면 같은 질문이 회의마다 반복됩니다. 그래서 문서에는 기능 이름보다 판단 기준이 먼저 들어가야 합니다.
예를 들어 “결제 취소”라고만 쓰면 너무 넓어요. 결제 완료 후 몇 분까지 취소되는지, 부분 취소가 되는지, 쿠폰은 복구되는지, 실패하면 어떤 문구가 나오는지까지 나눠야 실제 개발 범위가 보여요.
기능정의서 작성방법은 결국 말로 하던 약속을 문장으로 고정하는 일입니다. “대충 이런 느낌”을 줄이고, 팀이 같은 장면을 보게 만드는 쪽에 가깝습니다.
기능은 왜 작게 쪼갤수록 덜 꼬일까
기능정의서 작성방법을 처음 잡을 때는 큰 메뉴 이름을 그대로 쓰지 않는 게 좋습니다. “회원 관리”, “결제 관리”, “알림 관리”는 너무 큽니다. 이 상태로 쓰면 표가 커지고, 예외가 뒤엉키고, 일정도 같이 흔들립니다.
작게 쪼개면 훨씬 편합니다. “회원 검색”, “회원 상태 변경”, “관리자 메모 추가”, “결제 취소 요청”, “환불 상태 변경”처럼 한 번에 판단되는 단위로 나눠보세요.
| 큰 표현 | 기능으로 쪼갠 예 | 확인할 질문 |
|---|---|---|
| 회원 관리 | 회원 검색 | 어떤 조건으로 찾나 |
| 회원 관리 | 회원 상태 변경 | 누가 변경할 수 있나 |
| 결제 관리 | 결제 취소 요청 | 취소 가능 조건은 무엇인가 |
| 알림 관리 | 실패 알림 발송 | 언제 누구에게 보내나 |
요구사항이 아직 흐릿하면 요구사항 정의서 작성법부터 보는 편이 낫습니다. 요구사항은 왜 필요한지, 기능정의서는 어떻게 움직일지를 적는 문서라고 보면 됩니다.
표에는 조건·동작·결과부터 확인하세요
기능정의서 작성방법을 보면 템플릿부터 찾는 분들이 많습니다. 이해돼요. 빈 문서를 보면 막막하거든요. 그런데 처음부터 열을 너무 많이 만들면 작성이 느려집니다.
처음에는 조건, 동작, 결과만 넣어도 됩니다. 조건은 기능이 실행되는 상황이고, 동작은 사용자가 하거나 시스템이 처리하는 일입니다. 결과는 성공했을 때 바뀌는 값이나 화면입니다.
| 항목 | 적을 내용 | 예시 |
|---|---|---|
| 조건 | 기능이 가능한 상태 | 로그인한 관리자만 가능 |
| 동작 | 사용자 또는 시스템 처리 | 상태 변경 버튼 클릭 |
| 결과 | 저장되거나 표시되는 변화 | 회원 상태가 휴면으로 변경 |
여기에 예외가 생기면 표 아래에 짧게 붙입니다. “권한이 없으면 버튼을 숨긴다”, “이미 처리된 건은 변경할 수 없다”, “실패하면 사유를 보여준다”처럼 쓰면 돼요.
기능정의서 작성방법에서 중요한 건 멋진 표현이 아니라 동사예요. “관리한다”보다 “검색한다”, “변경한다”, “저장한다”, “발송한다”가 더 좋아요. 동사가 선명해야 개발 범위도 선명해집니다.
화면설계서와 떨어지면 왜 회의가 길어질까
기능정의서 작성방법은 화면설계서와 따로 가면 금방 헷갈립니다. 기능정의서에 있는 규칙이 어느 화면에서 보이는지 연결돼야 하고, 화면설계서의 버튼이 어떤 기능 규칙을 따르는지도 보여야 합니다.
가장 쉬운 방법은 화면 이름이나 화면 ID를 같이 적는 것입니다. “회원 상세 화면”, “결제 취소 모달”, “관리자 메모 영역”처럼 연결점을 남기면 회의 때 바로 찾을 수 있습니다.
화면이 먼저 나온 프로젝트라면 화면의 버튼 하나씩 보면서 기능을 거꾸로 뽑아도 돼요. 버튼을 누를 수 있는 조건, 누른 뒤 처리, 실패 문구, 권한 제한을 순서대로 적으면 기능정의서가 채워져요.
구글 스프레드시트 WBS 작성처럼 일정으로 넘길 때도 이 연결이 중요합니다. 기능 단위가 흐릿하면 일정도 같이 흐려집니다.
QA가 바로 테스트로 바꾸는 문장
기능정의서 작성방법을 잘 잡으면 QA가 편해집니다. QA는 문서에서 테스트 케이스를 뽑아야 하니까요. “정상 처리된다”보다 “필수값이 비어 있으면 저장 버튼을 누를 수 없다”처럼 쓰는 게 좋습니다.
예외도 숨기지 말고 적어야 합니다. 권한이 없는 사용자, 이미 처리된 데이터, 네트워크 실패, 중복 요청, 입력값 오류처럼 실제로 많이 터지는 상황을 문서에 넣으면 개발 뒤 수정이 줄어듭니다.
체크리스트는 이렇게 짧게 보면 됩니다.
- 기능을 쓸 수 있는 권한이 보이는지 확인합니다.
- 필수값과 선택값이 나뉘어 있는지 봅니다.
- 성공 결과와 실패 결과가 모두 있는지 확인합니다.
- 실패 문구 뒤 사용자가 뭘 해야 하는지 적습니다.
- QA가 테스트 케이스로 바꿀 수 있는 문장인지 봅니다.
QA 단계까지 생각한다면 서비스 기획자 QA 체크리스트와 같이 보는 게 좋습니다. 기능정의서 작성방법은 문서 작성에서 끝나는 게 아니라 테스트 기준으로 이어져야 합니다.
자주 묻는 질문
기능정의서 작성방법은 화면설계서보다 먼저 봐야 하나요?
프로젝트마다 다릅니다. 기능 범위가 아직 흐릿하면 기능정의서를 먼저 얇게 잡는 게 좋고, 이미 화면이 있다면 화면을 보면서 기능 규칙을 뽑아도 됩니다. 중요한 건 둘이 따로 놀지 않게 연결점을 남기는 것입니다.
처음부터 순서를 완벽하게 정하려고 하면 더 막힙니다. 기능이 먼저 보이면 기능부터, 화면이 먼저 보이면 화면 버튼부터 시작해도 됩니다. 대신 나중에 서로 연결되는 번호나 화면 이름을 꼭 남겨두세요.
기능정의서에는 예외를 얼마나 적어야 하나요?
처음부터 모든 예외를 완벽하게 적기는 어렵습니다. 다만 권한, 필수값, 중복 요청, 실패 문구, 처리 불가 조건은 먼저 보는 게 좋습니다. 이 정도만 있어도 개발자와 QA가 묻는 질문이 꽤 줄어듭니다.
예외가 많아 보이면 우선 자주 터지는 것부터 적으면 됩니다. 권한 없음, 값 누락, 이미 처리된 데이터, 네트워크 실패처럼 실제 서비스에서 자주 나오는 상황이 먼저입니다. 나머지는 회의 중 나온 질문을 문서에 바로 붙이면 됩니다.
기능정의서 작성방법에서 제일 먼저 고칠 문장은 뭔가요?
“관리한다”, “처리한다”, “지원한다”처럼 넓은 동사입니다. 이 표현은 듣기에는 편하지만 구현 범위가 흐립니다. “검색한다”, “저장한다”, “변경한다”, “발송한다”처럼 실제 행동이 보이는 말로 바꾸면 문서가 바로 선명해집니다.
문장을 바꿀 때는 개발자가 바로 질문할 지점을 상상해보면 편합니다. 누가 하는지, 언제 가능한지, 실패하면 무엇이 보이는지까지 붙이면 됩니다. 이 정도만 해도 기능정의서 작성방법이 훨씬 덜 무섭게 느껴집니다.







이메일로 보내드렸어요^^
안녕하세요, 업무에 도움되는 글 잘 봤습니다!
신입 서비스기획자인데 저도 오픈톡방 초대 부탁드려도 될까요?
안녕하세요^^ 포스팅한 글 보시면 오픈톡방 주소 있습니다 얼릉오세요
안녕하세요! 업무 중에 도움되는 포스팅을 봐서 댓글 남깁니다. 🙂
저도 카카오톡방 참여하고 싶은데 입장코드 받아볼 수 있을까요?
메일로 보내드렸습니다
안녕하세요, 업무에 도움되는 글 잘 봤습니다!
저도 카카오톡방 참여하고 싶은데 입장코드 받아볼 수 있을까요?
메일 보내드렸습니다^^
안녕하세요! 업무 중에 도움되는 포스팅을 봐서 댓글 남깁니다 😆
저도 카카오톡방 참여하고 싶은데 입장코드 받아볼 수 있을까요?
메일 보내드렸습니다^^