IT PM/PMP 공부

기능명세서 작성법: IT PM의 실무 중심 가이드!

Tomitom 2024. 11. 21. 15:27
반응형

 

요즘 내가 매일 같이 작성하고 있는 것은 기능명세서! 

프로젝트의 규모를 한눈에 파악할 수 있고, 전체적인 작업의 공수를 확인할 수 있는 문서이기 때문에 

작성 단계에서 상당한 이해와 노력을 가져야만 한다. 

 

잘 쓰여진 기능명세서 하나만 있어도, 관리자와 작업자 둘 다 편안하게 프로젝트를 진행할 수 있기 때문에 

번거롭더라도 꼭꼭 신경써서 작성하기로 하자! 

 

기능명세서는 소프트웨어 개발 프로젝트에서 가장 중요한 문서 중 하나이다.
기능명세서는 개발자, 디자이너, 테스트 엔지니어 등 팀 구성원이 같은 방향을 향하도록 돕는 기술적 설계서이다.
이 글에서는 IT PM이 작성할 수 있는 실무 중심의 기능명세서 작성법을 구체적으로 소개한다.


1. 기능명세서란 무엇인가?

기능명세서(Function Specification Document)는 시스템의 동작, 사용자 요구사항, 비즈니스 논리를 정의한 문서이다.
주요 목적은 개발 과정에서의 오해와 혼선을 방지하고, 명확한 개발 목표를 제공하는 것이다.

기능명세서의 주요 역할:

  • 명확한 요구사항 전달: 이해관계자 간의 의사소통 간소화
  • 개발 기준 제시: 개발 범위와 우선순위 명확화
  • 테스트 기준 제공: QA 팀이 테스트 케이스를 설계하는 기반
  • 문제 예방: 사전에 불명확한 부분을 해소하여 개발 리스크를 줄임

2. 기능명세서의 구성 요소

다음은 기능명세서의 기본 구성 요소이다. 필요에 따라 항목을 조정할 수 있다.

섹션 주요 내용
1. 개요 시스템 또는 기능의 목적과 개요 설명
2. 범위 기능의 포함 범위와 제외 범위를 정의
3. 요구사항 기능 요구사항(FR)과 비기능 요구사항(NFR) 명시
4. 기능 흐름 프로세스 흐름, 사용자 시나리오, 주요 인터페이스 정의
5. UI 설계 화면 설계와 사용자 인터페이스(UI) 상세 설명
6. 데이터 설계 데이터 구조와 연관성을 정의 (ERD 등 포함)
7. 시스템 동작 입력, 처리, 출력 조건과 시스템 간 연동 방법 설명
8. 예외 처리 오류 발생 시 처리 방식 정의
9. 테스트 기준 기능 검증 방법과 성공/실패 기준 명시
10. 변경 관리 변경 요청과 버전 관리 방법 설명

3. 기능명세서 작성 프로세스

1) 요구사항 수집

기능명세서를 작성하기 전, 철저한 요구사항 분석이 필요하다.

  • 방법:
    • 이해관계자 인터뷰
    • 킥오프 진행
    • 사용자 스토리 및 사례 수집
  • 결과물:
    • 기능 요구사항(FR): 시스템이 반드시 수행해야 할 기능
    • 비기능 요구사항(NFR): 성능, 보안, 확장성 등 품질 요건

2) 우선순위 설정

모든 요구사항이 동일한 중요도를 가지는 것은 아니다.
비즈니스 가치와 개발 가능성을 기준으로 우선순위를 설정한다.

  • 우선순위 매트릭스 예시:
요구사항 비즈니스 가치 개발 난이도 우선순위
로그인 기능 높음 낮음 1
데이터 분석 중간 높음 3

3) 구조화된 문서 작성

기능명세서는 단순히 내용을 나열하는 문서가 아니라, 구조화된 설계 문서여야 한다.

  • Tip:
    • 가능한 간결하고 명확하게 작성
    • 이해하기 쉽도록 다이어그램과 표 활용
    • 섹션별로 목적과 책임자 명시

4. 기능명세서 작성 가이드

1) 개요와 범위 정의

  • 개요:
    • "이 시스템은 사용자 로그인을 관리하며, 소셜 로그인 연동을 포함합니다."
    • 프로젝트 전체의 목적과 비전을 간단히 서술
  • 범위:
    • "포함: 이메일/비밀번호 로그인, 소셜 로그인(Google, Facebook)."
    • "제외: 비밀번호 복구 기능."

2) 프로세스 흐름

기능의 동작을 시각적으로 나타내는 다이어그램을 포함한다.

  • 예시: 사용자 로그인 흐름

A[사용자 로그인 페이지 접속] --> B[이메일/비밀번호 입력]
B --> C{정보 유효성 확인}
C -->|유효| D[메인 화면으로 이동]
C -->|유효하지 않음| E[오류 메시지 표시]

3) 화면 설계(UI 상세화)

사용자가 상호작용할 화면의 UI를 정의한다. 기능명세서에서 UI 설계는 사용자 경험(UX)을 고려한 상세 정보를 포함해야 한다.

  • 필수 요소:
    1. 화면 이름: 화면의 용도와 역할을 명확히 명시한다.
      • ex) "로그인 화면", "상품 목록 화면"
    2. UI 컴포넌트: 화면에 포함될 구성 요소를 설명한다.
      • ex) "이메일 입력 필드, 비밀번호 입력 필드, 로그인 버튼"
    3. 동작 설명: 각 UI 요소의 동작과 처리 과정을 기술한다.
      • ex) "로그인 버튼 클릭 시 입력된 이메일과 비밀번호를 서버로 전달한다."
  • UI 상세화 템플릿:
    UI 요소 설명 동작
    이메일 입력 필드 사용자 이메일 입력 사용자가 값을 입력하고 검증됨
    비밀번호 입력 필드 사용자 비밀번호 입력 비밀번호 입력값이 마스킹 처리됨
    로그인 버튼 사용자 인증 요청 입력 데이터를 API로 전달
  • 추가 고려 사항:
    • 반응형 설계: 다양한 디바이스(모바일, 태블릿, 데스크톱)에서 UI가 정상 동작하도록 설계한다.
    • 접근성 고려: 색상 대비, 글자 크기, 스크린 리더 호환성 등을 준수한다.

4) 데이터 설계

데이터 구조를 정의하여 개발팀이 데이터베이스 설계를 참고하도록 돕는다.
기능명세서에서는 데이터 모델을 간단히 표현하되, 필요한 경우 ERD(Entity Relationship Diagram)를 추가한다.

  • 데이터 설계 예시: 사용자 테이블
컬럼 이름 데이터 타입 설명
user_id INT 사용자 고유 ID
email VARCHAR 사용자 이메일
password_hash VARCHAR 암호화된 비밀번호
created_at TIMESTAMP 계정 생성 일시
  • 고려 사항:
    • 데이터 유효성 검사: 이메일 형식 검증, 비밀번호 최소/최대 길이 등 명시
    • 보안 요건: 암호화된 데이터 저장 방식과 접근 제어 정책 설명
    • 인덱싱: 조회 성능 최적화를 위한 주요 컬럼 인덱싱 여부 포함

5) 시스템 동작

입력, 처리, 출력 과정을 상세히 정의하여 개발팀이 정확히 구현할 수 있도록 돕는다.

  • 시스템 동작 정의 예시:
    • 입력: "이메일, 비밀번호"
    • 처리:
      • 비밀번호를 해시화하고 데이터베이스에서 매칭 검증
      • 유효하지 않을 경우 에러 메시지 생성
    • 출력: "로그인 성공/실패 메시지"
  • 시스템 동작 플로우 다이어그램 예시:

A[사용자 로그인 페이지 접속] --> B[이메일/비밀번호 입력] B

--> C{정보 유효성 확인} 

--> |유효|    D[메인 화면으로 이동] 

--> |유효하지 않음|    E[오류 메시지 표시]

 

이런 구조를 활용하면 팀 구성원이 명세서를 통해 필요한 정보들을 직관적으로 확인할 수 있다!

반응형