요구 사항을 코드로 작성하기
사용자 스토리나 이벤트 스토밍 같은 경량 기술을 사용하는 데 반대할 수도 있는데, 한 가지 이유는 이런 절차를 끝마쳐도 문서가 많이 남지 않는다는 점이다. 개발자로서 우리는 작업 중인 모든 코드가 완전하고 정확하게 문서화되어 있기를 바란다. 적어도 문서가 항상 최신 상태로 유지되길 바라고, 직접 작성하지 않아도 된다면 더욱 좋다.
그러나 불행히도 전통적인 문서화에는 몇 가지 잠재적인 문제가 있다. 전통적인 문서화는 제작 비용이 많이 들고, 아주 빠르게 쓸모 없어지며, 불완전하거나 불명확한 경우가 많다. 요구 사항을 애플리케이션에 맞춰 컴파일할 수 있는 어떤 형태로 변환하면, 요구 사항을 코드와 함께 작성하고 커밋을 할 때마다 요구 사항이 최신 상태로 갱신되도록 보장할 수 있다. 또 코드가 이런 요구 사항을 얼마나 많이 포함하는지 측정함으로써 소프트웨어와 요구 사항의 완성도에 대한 지표를 가질 수 있다.
따라서 우리는 개발자나 이해 당사자가 무시하거나 잊어버릴 수 없게 애플리케이션을 문서화해야 한다. 애플리케이션이 문서에 작성된 대로 동작하지 않을 때, 애플리케이션의 동작을 변경하거나 문서를 수정하게 할 수 있게 우리에게 알려줄 어떤 수단이 필요하다. 너무 많은 것을 요구하는 것 같아 보이는가? 다행히 이런 수단에 대한 답이 존재한다. 바로 테스트 주도 개발이 그 답이다.