📍 TDD (Test Driven Development)
- 테스트 주도 개발
- 매우 짧은 개발 서클의 반복을 갖는 소프트웨어 개발 프로세스
- 새로운 기능에 대한 자동화된 테스트케이스를 작성하고 해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성
- 뛰어난 코드를 작성
- 실패하는 테스트 케이스 먼저 작성 후 통과하는 코드를 작성하고 그 이후 리팩토링
장점
- 요구사항 이해도 향상
- 기존 기능 정상 동작 확인 가능
- 코드 리팩토링
단점
- 코드량 증가
- 진입장벽
- 주객전도
📍 DDD (Domain Driven Design)
- 도메인 주도 개발
- 소프트웨어의 복잡성 최소화
- 데이터 중심의 접근법을 탈피하여 순수한 도메인의 모델과 로직에 집중
- 모든 문서와 코드에 동일한 표현과 단어로 구성된 단일화된 언어체계 구축
- 분석, 설계, 구현까지 통일된 방식으로 커뮤니케이션 가능
- DDD의 핵심 목표는 "Loosly coupling", "High cohesion"
- 기술보다 도메인이 더 높은 우선순위를 가져야함
- 분석 모델링부터 코드까지 항상 같이 움직이는 모델 구조를 지향
📍 BDD (Behavior Driven Development)
- 행동 주도 개발
- TDD에 DDD의 스타일을 적용하여 탄생
- 테스트 케이스 자체가 요구사양이 되도록 개발하는 방식
- TDD에서는 단위 테스트로 작성된 테스트 코드의 가독성을 높고 테스트 케이스에 대한 문서를 작성했으나, BDD는 이것을 통합테스트와 시나리오 테스트까지 확장하여 각각에 해당하는 문서를 대체