2008-09-19 2 views
46

제 팀의 개발자 중 한 명인이 질문을 받았습니다. 도메인 중심 디자인이란 무엇입니까? 물론 Evans의 책을 지적 할 수는 있지만 사실은 대답입니까?도메인 기반 디자인이란 무엇입니까?

팀의 중급 소프트웨어 엔지니어에게 DDD를 몇 문장으로 설명하겠습니까?

+0

> 중재자 참고 : 링크는 더 이상 관련이 방문하지 않을 수 있습니다 [http://dddcommunity.org] (http://dddcommunity.org/)/ – cvs

답변

42

이 연습은 '솔루션 공간'보다는 '문제 공간'에 집중하는 데 도움이됩니다. 공부하고 실제로 도메인을 알고 이해함으로써 창 발적 솔루션 (설계)을 유도하십시오. 실천 중 하나 (XP에서 가져옴)는 문제 영역에서 일어나는 이야기를 쓰는 것입니다. 이것들로부터 디자인을위한 유스 케이스와 객체를 식별 할 수 있습니다. 그들은 '등장하여 해결책에 있어야 할 것'과 어떻게 상호 작용할 필요가 있는지를 알려줍니다.

3

DDD의 중요한 부분은 소위 유비쿼터스 언어입니다. 즉 비즈니스 전문가와 동일한 언어로 말하십시오. 그리고 임피던스 문제를 피하기 위해이 언어를 반영하도록 코드/아키텍처를 만드십시오.

+3

AAS가 이해하는 한, 도메인 전문가가 말하는 언어가 아니라 공통 언어를 개발하는 프로그래머는 아닙니다. – sumek

+0

사람들이 * 공통 언어 *에 동의하게하려는 @sumek은 아마도 그럴만 한 가치가 없습니다. 비즈니스에 ** 아무 것도 ** 동의하는 데는 많은 시간이 필요합니다. 내 경험에 의하면, 기존의 용어에 맞추는 것이 가장 좋습니다. 즉, 시간에 맞춰 배송하고 싶다면 ... – MattDavey

9

"도메인"을 발견하는 과정에서 개발자와 프로젝트의 다른 모든 이해 관계자 모두가 공통 언어를 형성합니다.

완성 된 제품의 소스 코드에서 도메인 모델과 그 "용어"는 꽤 잘 보입니다. 그건 적어도 내 경험이다

4

당신이 쓰고있는 소프트웨어가 무엇인지를 이해하려고하고 그 이해를 모델에 반영한다.

Domain Driven Design Quickly

그것은 많은 예와 좋은 읽기는 다음과 같습니다

17

InfoQ 무료 전자 책이있다.

+0

아주 훌륭하고 간결합니다. 우리 팀의 새로운 개발자는 요즘 그것을 읽어야합니다. – Hace

2

도메인 기반 디자인은 가장 쉽게 증류 할 수있는 도메인 모델에서 응용 프로그램의 복잡성을 관리하는 것에 관한 것입니다.

몇 문장으로 설명하는 것은 매우 어렵지만 좋은 소개로 InfoQ 권을 권하고 싶습니다. 나는 Evans의 DDD 서적을 가지고 책 클럽을 운영하는 많은 사람들이 그것을 이해하는데 많은 도움을 주었다고 들었다.

+1

DDD는 10 년 전에 청서가 쓰여진 이후로 많이 움직였습니다. 당시 풍부한 도메인 모델은 비즈니스 복잡성을 일관된 방식으로 파악할 수있는 유일한 방법이었습니다. 요즘 우리는 CQRS와 이벤트 소싱과 같은 몇 가지 옵션이 있으므로 'DDD == rich domain model'이라는 오래된 개념은 사실이 아닙니다. 이 답변 자체는 5 년 전에 작성되었습니다. – MattDavey

1

내게는 사용자가 설명하고 이해 한대로 캡슐화가 모두 문제 공간에 관한 OOD/OOP의 다음 단계이며 기술 구현에 대해서는 그다지 중요하지 않습니다. DDD에 대한 빠른하지만 자세한 도입