TDD 입문하기 - 테스트 주도 개발 기초: 코드 기능 명세
코드 기능 명세
모든 프로그램 코드는 입력과 출력을 갖고 특정 입력에 대해 기대하는 출력이 있습니다. 이런 기대 동작들을 코드의 명세 또는 요구사항이라고 부릅니다.
도메인
- 소프트웨어는 문제를 푸는 도구
- 도메인은 소프트웨어가 풀어야 할 문제가 정의되는 공간(비즈니스 시스템의 도메인은 비즈니스)
- 문제를 충분히 이해하지 못하면 문제를 푸는 도구를 잘 만들수 없다.(틱택토 게임을 이해하지 못하면 틱택토 컴퓨터 게임을 만들 수 없다.)
비즈니스 시스템의 도메인 지식 흐름
비지니스 전문가 -> 분석가 -> 프로그래머 -> 컴퓨터
<- 목적/추상적 ———- 수단/구체적->
프로그래머와 기능 명세
- 컴퓨터는 스스로 설계를 결정하지 않기 때문에 프로그래머가 도메인 지식을 컴퓨터에 전달할 때엔 모든 요소들이 명확히 결정될 수 밖에 없음.
- 충분히 명확한 도메인 지식을 확보하지 못한 프로그래머는 지식 흐름 상류에 지식 보강을 요청해야 함
단위 테스트 작성 실습
분산(Variance) 계산하는 프로그램 작성
- statistics variance 검색하면 공식 나옴
- 전달받은 요구사항대로 구현
- 버그 리포트로 추가 요구사항 대응
- 입력값이 없으면 분산을 계산할 수 없다.
- 데이터는 2개 이상되어야 계산할 수 있다.
느낀점
- 도메인 지식을 잘 이해 하는것이 가장 중요하고 이해가 정확하지 않다면 질의응답을 통해서 정확하게 이해를 할때까지 커뮤니케이션을 해야한다.