기능 명세서

기능 명세서(functional specification, functional spec, specs, functional specifications document (FSD), functional requirements specification)는 시스템 공학 및 소프트웨어 개발에서 시스템 또는 구성 요소가 수행해야 하는 기능을 명시하는 문서이다(종종 요구사항 명세의 일부이기도 함)(ISO/IEC/IEEE 24765-2010).ISO/IEC/IEEE 24765:2010 Systems and software engineering — Vocabulary

이 문서는 일반적으로 시스템 사용자에게 필요한 사항과 입출력(예: 소프트웨어 시스템)의 요청된 속성을 기술한다. 기능 명세는 제품 요구 문서 "PRD"와 같은 일치하는 요구사항 문서에 대한 보다 기술적인 응답이다. 따라서 요구사항 분석 단계의 결과를 이어받는다. 더 복잡한 시스템에서는 일반적으로 시스템 수준, 모듈 수준 및 기술적 세부 사항 수준에서 여러 수준의 기능 명세가 서로 중첩된다.

개요
기능 명세는 제안된 시스템의 내부 작동 방식을 정의하지 않는다. 시스템 기능이 어떻게 구현될지에 대한 명세는 포함하지 않는다.

기능 명세의 기능 요구사항은 다음과 같이 명시될 수 있다.

사용자가 OK 버튼을 클릭하면 대화 상자가 닫히고 포커스는 이 대화 상자가 표시되기 전의 상태로 메인 창으로 돌아간다.

이러한 요구사항은 외부 에이전트(사용자)와 소프트웨어 시스템 간의 상호 작용을 설명한다. 사용자가 OK 버튼을 클릭하여 시스템에 입력을 제공하면 프로그램은 OK 버튼을 포함하는 대화 창을 닫음으로써 응답한다(또는 응답해야 한다).

기능 명세 주제

목적
기능 명세에는 많은 목적이 있다. 팀 프로젝트의 주요 목적 중 하나는 소스 코드 및 테스트 케이스 작성과 이어지는 디버그 기간이라는 시간 소모적인 노력을 기울이기 전에 프로그램이 달성해야 할 목표에 대해 일종의 팀 합의를 이루는 것이다. 일반적으로 이러한 합의는 소프트웨어가 충족해야 할 요구사항을 달성하기 위한 비용 효율적인 방법을 협상한 후 해당 프로젝트의 이해관계자가 한 번 이상 검토하여 도달한다.

 프로그래머가 무엇을 구축해야 하는지 알게 한다.
 테스터가 어떤 테스트를 실행해야 하는지 알게 한다.
 이해관계자가 무엇을 얻게 될지 알게 한다.

과정
체계적인 산업용 소프트웨어 공학 수명 주기(폭포수 모델)에서 기능 명세는 무엇을 구현해야 하는지를 설명한다. 다음 단계인 시스템 아키텍처 문서는 선택된 소프트웨어 환경을 사용하여 기능이 어떻게 구현될지를 설명한다. 비산업적, 프로토타입 시스템 개발에서는 기능 명세가 일반적으로 요구사항 분석 이후 또는 그 일부로 작성된다.

팀이 기능 명세 합의에 도달했다고 동의하면 기능 명세는 일반적으로 "완료" 또는 "서명"으로 선언된다. 이후 소프트웨어 개발 및 테스트 팀은 기능 명세를 참조하여 소스 코드와 테스트 케이스를 작성한다. 테스트가 수행되는 동안 프로그램의 동작은 기능 명세에 정의된 예상 동작과 비교된다.

방법
기능 명세 문서를 작성하는 인기 있는 방법 중 하나는 간단한 와이어프레임이나 정확하고 그래픽으로 디자인된 UI 스크린샷을 그리거나 렌더링하는 것이다. 이 작업이 완료되고 모든 이해관계자가 화면 예시를 승인하면 그래픽 요소를 번호 매기고 화면 예시의 각 번호에 대해 서면 지침을 추가할 수 있다. 예를 들어, 로그인 화면에는 사용자 이름 필드에 '1', 비밀번호 필드에 '2'가 표시될 수 있으며, 각 번호는 소프트웨어 엔지니어의 사용 및 나중에 베타 테스트 목적으로 기능이 의도한 대로 작동하는지 확인하기 위해 서면으로 선언될 수 있다. 이 방법의 장점은 수많은 추가 세부 정보를 화면 예시에 첨부할 수 있다는 것이다.

기능 명세의 예시
 어드밴스트 마이크로컨트롤러 버스 아키텍처
 확장 펌웨어 인터페이스
 멀티부트 명세
 자바를 위한 실시간 명세
 단일 유닉스 규격

소프트웨어 개발 명세 유형
 비트 명세 (동음이의)
 설계 명세서
 진단 설계 명세
 제품 설계 명세
 소프트웨어 요구 명세

 같이 보기 
 벤치마킹
 소프트웨어 개발 프로세스
 시방서
 IEEE 1012

 각주 

 외부 링크 
 Painless Functional Specifications, 4-part series by Joel Spolsky

분류:시스템 공학
분류:소프트웨어 설계
분류:소프트웨어 문서화