기능 명세 vs 기술 명세

  • 5장에서 이야기 했던 명세는 기능 명세에 해당한다.

  • 기능 명세(functional specification)

    • 사용자 관점에서 젶무이 어떻게 동작할지를 기술
    • 구현은 신경 쓰지 않는다.
    • 화면, 메뉴, 대화 상자 등
  • 기술 명세(technical specification)

    • 프로그램 내부 구현을 기술한다.
    • 자료 구조와 관계 형 데이터베이스 모델과 프로그래밍 언어, 도구, 알고리즘 선택과 같은 항목을 다룬다.

명세서에 넣는 단골 항목

  • 면책 조항: 현재 명세가 완벽하지 않다는 것을 알리는 방어적 내용.
  • 저자: 명세에서 무엇인가 잘못된다면, 이를 수정할 책임있는 명세서 소유자를 지정해야 하며, 이 사람 이름이 명세서에 찍혀 있어야 한다.
  • 시나리오: 제품을 설계할 때, 사용자가 이 제품을 사용하는 방법에 대한 생생한 시나리오를 염두에 둬야한다.
    • 가공으로 만든 사용자를 한번 상상해봐라.
  • 회피 목표(non-goal): 모든 기능을 허용한다면, 시간과 돈이 무한하게 필요하다.
    • 회피 목표 항목을 추가하여 논쟁을 일어나기 쉬운 기능을 빨리 도마에 올려야된다.
  • 개괄: 목차와 유사하다. 간단한 흐름도이거나 광범위한 아키텍처 관점에서 바라본 토론일 수도 있다.
  • 세부사항: 기능 명세에서 가장 중요한 핵심. 모든 가능한 화면에 기준이 되는 이름을 붙인 다음에, 너무나도 자세해 못 견딜 만큼 따분한 세부사항을 제공해야된다.
  • 미해결 문제 (open issues): 명세의 첫 버전에 미해결 문제를 남겨놓아도 나쁘지 않다. 프로그래머가 작업을 시작할 무렵에, 일너 모든 미해결 사항을 짚어놔야 한다.
  • 방주(side note): 명세를 작성할 때, 특정 그룹에만 유용한 활자화한 사실을 고려하면 좋다.
  • 명세는 지속적으로 개정해야 한다.