문제

도메인 별 언어 (DSL)와 도메인 구동 설계 (DDD)의 차이점과 유사점은 무엇입니까?

도움이 되었습니까?

해결책

DDD (Domain Driven Design)는 문제와 솔루션에 대해 사고하고 의사 소통하는 방법입니다.

도메인 특정 언어 (DSL)는 코드를 작성하는 방법입니다.

둘 다 "도메인"이라는 단어로 시작하기 때문에 비슷합니다. 그게 다야. :-)

다른 팁

도메인 중심 디자인은 설계중인 시스템에 대한 기본 어휘, 개념 및 객체 모델을 생성 할 때 문제 도메인의 역할을 강조합니다.

도메인 별 언어는 해당 도메인에서 실무자의 요구에 맞춰 시스템의 특정 부분을 지정하거나 구현하기위한 표기법입니다 (즉, 대부분의 프로그래밍 또는 사양 언어의 "프로그래머"측면을 최소화 함).

나는 그들이 "도메인"이라는 단어에 의해서뿐만 아니라 어떻게 든 관련되어 있다고 주장한다. 우수한 (도메인 중심) 디자인이 있으면 확실한 DSL을 만드는 데 도움이됩니다.

"DDD는 DSL을 정의하는 데 도움이 될 수 있지만 DSL을 구체적으로 사용하지는 않습니다." - 위키 백과

나는 둘 다 프로그래밍의 소음을 줄이는 주요 초점을 가지고 있다고 생각합니다. DDD는 시맨틱 노이즈와 구문 소음의 DSL에 작용합니다.

이것들은 내 의견을 이해하는 데 도움이 될 수 있습니다.

http://fragmental.tw/2009/03/12/expeassive-design-slides/

http://fragmental.tw/2008/04/20/Domain-pecific-languages-and-video-games/

DDD의 한 요소는 도메인에 대해 이해 관계자와 대화하기위한 유비쿼터스 언어를 개발하는 능력으로 볼 수 있습니다. 모호하지 않고 잠재적으로 실행 가능한 UL의 하위 집합의 경우 내부 또는 외부 DSL을 사용하여 구현할 수 있습니다.

다음은 DomainDriven 사이트에서 이것을 논의하는 비디오입니다.

http://domaindrivendesign.org/library/bell_gitlevich_2009

최고의 소원, 피터

Wikipedia는 매우 명확한 정의를 가지고 있습니다 DSL:

DSL (Domain-Specific Language)이라는 용어는 최근 소프트웨어 개발에서 인기를 얻었으며 특정 문제 도메인, 특정 문제 표현 기술 및/또는 특정 솔루션 기술에 전념하는 프로그래밍 언어 또는 사양 언어를 나타냅니다.

이것은 일관된 패턴, 멋진 C ++ 템플릿 매직 또는 무료 텍스트 입력을 해석하여 원하는 작업을 수행하는 컴파일러/파서에 따라 일련의 클래스로 구현할 수 있습니다.

나는 그들이 어떻게 든 관련되어 있다고 생각하지만 (Christophe가 말한 것처럼) 완전히 다른 두 가지 측면. 나는 JOP의 진술을 무시하지 않을 것입니다.

DSL에 대한 매우 잘 작성된 정보는 참조하십시오 DSL에 대한 Martin Fowler의 페이지 세트 (진행중인 작업), 당신은 예시, 아니면 그 정의. 또 다른 좋은 읽기는 그의 것입니다 Qanda.

DDD는 도메인 모델을 기반으로하며 일반적으로 DSL보다 적어도 하나의 추상화 수준이 높습니다. 둘 다 다른 사람 없이는 존재할 수 있으며 Christophe가 이미 말했듯이 둘 다 같은 프로젝트에서 사용할 수 있습니다.

차이점은 범용 언어 대신 도메인 별 언어 (DSL)를 사용하여 시스템을 구축하는 접근 방식이고 다른 하나는 시스템 설계 및 구축 시스템에 대한 건축 접근법 (DDD)입니다.

유사성은 둘 다 특정 도메인에 초점을 맞추는 것입니다.

Wikipedia (https://en.wikipedia.org/wiki/domain-driven_design) 좋은 답변이 있습니다.

DDD는 DSL의 사용을 구체적으로 요구하지는 않지만 DSL을 정의하고 도메인 별 멀티 모드 링과 같은 지원 방법을 정의하는 데 사용될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top