도메인에서 발생하는 문제를 해결하는 소프트웨어의 각 요소는 그것의 중요성에 어울리지 않게 전체 소프트웨어 시스템의 극히 작은 부분을 구성함

→ 이러한 요소에 가장 적절한 생각을 반영하려면 모델의 구성 요소를 살펴보고 그것들을 하나의 시스템으로 바라볼 수 있어야 함.

우리는 시스템에서 도메인과 관련이 적은 기능으로부터 도메인 객체를 분리할 필요가 있으며, 그렇게 해서 도메인 개념을 다른 소프트웨어 기술에만 관련된 개념과 혼동하거나, 또는 시스템이라는 하나의 큰 덩어리 안에서 도메인을 전혀 바라보지 못하는 문제를 방지할 수 있음

→ 이러한 격리를 위한 기법이 있음

→ 이를 성공적으로 적용하기 위해서는 도메인 주도 관점에서 간략하게나마 검토해봐야 함

LAYRED ARCHITECTURE(계층형 아키텍처)


image.png

도시 목록에서 화물의 목적지를 선택하는 것과 같이 간단한 사용자 행위를 지원하는 해운 애플리케이션

  1. 위젯을 화면에 그림
  2. 선택 가능한 모든 도시 목록을 데이터베이스에서 조회
  3. 사용자가 입력한 내용을 해석하고 유효성을 검증
  4. 선택된 도시를 화물과 연결
  5. 변경내역을 데이터베이스에 반영하는 프로그램 코드가 들어 있어야 함

→ 이러한 모든 코드가 동일한 프로그램의 일부를 차지하더라도 그중 일부만이 해운 업무와 관련돼 있음

→ 각 프로그램의 기능과 관련된 코드의 양은 상당히 많을 수 있음

객체지향 프로그램에서는 종종 사용자 인터페이스와 데이터베이스, 가타 보조적인 성격의 코드를 비즈니스 객체 안에 직접 작성하기도 함. 부가적인 업무 로직은 UI 위젯과 데이터베이스 스크립트에 들어감