개발일기/CS(면접)

TDD와DDD란?

w.llama 2024. 8. 6. 21:01

TDD란?

  • Test Driven Development 는 테스트 주도 개발을 의미하는 소프트웨어 개발 방법론이다 아래와 같은 특징이 있다
    1. 코드 작성 전 테스트 케이스 작성
      - 실제 코드를 작성하기 전에 먼저 테스트 케이스를 작성한다
    2. 반복적인 개발주기
      - "Red-Green-Refactor"주기를 따른다
      • Red : 실패하는 테스트 코드
      • Green : 테스트를 통과하는 최소한의 코드 구현
      • Refactor : 코드 개선 및 중복 제거
    3. 작은 단위의 테스트
      - 큰 기능을 작은 단위로 나누어 테스트한다
    4. 지속적인 테스트와 리팩토링
      - 새로운 기능을 추가할 때마다 테스트를 수행하고 코드를 개선한다
  • TDD의 주요장점
    1. 코드 품질 향상: 초기부터 버그를 발견하고 수정할 수 있다
    2. 설계 개선 : 테스트 작성 과정에서 코드 구조와 설계가 자연스럽게 개선된다
    3. 유지보수 용이성 : 테스트 케이스가 있어 코드 변경시 영향을 쉽게 파악할수 있다.
  • TDD의 단점
    1. 생산성 저하 : 초기 개발 속도가 10~30%정도 느려질 수 있다.
    2. 학습 곡선 : 기존 개발 방식에서 전환 하는데 어려움이 있을 수 있다. 

DDD란?

  • Domain-Driven-Design은 소프트웨어 개발 철학으로, 비즈니스 도메인을 중심으로 소프트웨어를 설계하고 개발하는 방법론
    1. 비즈니스 도메인 중심
      - 소프트웨어 사용자의 지식 영역인 비즈니스 도메인을 이해하고 모델링하는 것에 중점을 둡니다.
    2. 공통 언어 사용
      - 개발자와 비즈니스 이해관계자 간의 소통을 위해' 유비쿼터스 언어'라고 불리는 공통언어를 사용합니다. 이를 통해 코등의 모든 요소가 비즈니스 현실을 반영하고 비즈니스 이해를 촉진합니다.
    3. 모델 중심 설계
      - 잘 정의된 도메인 모델이 비즈니스 도메인을 대표하고 소프트웨어 개발에서 정보를 제공
    4. 반복적 협업
      - 개발자와 비즈니스 이해관계자 간의 지속적인 폅업을 통해 통찰력을 교환하고 피드백을 제공하여 소프트웨어를 지속적으로 개선
    5. 핵심 도메인 집중
      - 비즈니스의 핵심 도메인에 가장 많은 주의,시간,자원을 할당
  • DDD는 객체 지향 프로그램(OOP)과 밀접한 관련이 있으며, 실제 비즈니스 요구사항과 모델에 맞는 애플리케이션을 만드는데 도움을 준다. 또한 모델 주도 개발(MDD),이벤트 소싱, 명령 쿼리 책임 분리(CQRS) 등 다른 개발 철학과도 결합하여 사용될 수 있다.

'개발일기 > CS(면접)' 카테고리의 다른 글

DOCKER?  (0) 2024.08.08
OAuth 란?  (0) 2024.08.07
멀티프로세스와 멀티쓰레드의 특징은?  (0) 2024.08.05
프로세스와 쓰레드에 대해 설명하고 차이점을 설명해라  (0) 2024.08.02
CI/CD란?  (0) 2024.08.01