TDD (Test)
- 테스트를 먼저 작성하고 해당 테스트 케이스를 통과하는 코드를 작성
- 그 후 상황에 맞게 리팩토링 과정을 거침
- 코드 생산성에 문제가 있고, 러닝커브가 크다.
BDD (Behavior)
- TDD에서 한발 더 나아가 테스트 케이스 자체가 요구사항이 되는 개발 방식
- TDD에서는 유닛 테스트로 작성 된 테스트 케이스에 대한 문서를 작성했지만, BDD는 이것을 결합 테스트와 시나리오 테스트까지 확장하여 각각에 해당하는 문서를 대체했다.
DDD (Domain)
- 도메인 그 자체와 도메인 로직에 초점을 맞춘다.
- 일반적으로 사용하는 데이터 중심의 접근법을 탈피하여 순수한 도메인의 모델과 로직에 집중한다.
RDD (Responsibility)
- 책임을 찾고 책임을 수행한 적절한 객체를 찾아 책임을 할당하는 방식으로 협력을 설계하는 방법
- 객체의 구현이 아닌 책임에 집중
[참조]