2010-02-24 7 views
4

질문은 실제로는 일치하지 않지만 느슨하게 연결된 도메인 모델을 모델링하는 방법이 있는지 알고 싶습니다. 그게 무슨 뜻이야? 저는 소프트웨어 HR 에디터에서 일하고 있으며 처음부터 새로운 어플리케이션을 시작할 계획입니다. 우리는 150 명의 고객을 대상으로 수행 한 모든 프로젝트에 대한 감사를 수행했으며 DDD의 관점에서 볼 때 하나의 유효한 도메인 모델이 있다고 말할 수는 없습니다.느슨하게 결합 된 도메인 모델 모델링

왜? 회사가 얼마나 큰가에 따라 각기 다른 방식으로 HR을 처리하기 때문에

물론 HR 도메인의 통신 엔티티를 직업, 오퍼, 공동 작업자, 기술 등으로 식별 할 수 있지만 클라이언트 A와 클라이언트 B에 대해 동일한 방식으로 연결되어 있지 않습니다. 도메인 모델의 관점에서 볼 때, 엔터티 A는 엔터티 B에 대한 참조를 가지고 있다고 말할 수 없습니다. 다른 고객에게 적용됩니다.

고객의 80 %가 우리가 필요로하는 것의 90 %를 차지하는 모델을 설계 할 수 있다고하더라도 나머지 고객은 희생시키지 않을 것이며 다른 한편으로는 특정 개발을 통해 제품을 해결하고자합니다 differents 우려.

BPM 솔루션을 살펴 보았지만 이것이 우리의 요구에 부합하지 않습니다. 다른 한편으로 나는 우리가 필요한 것을 어떻게 처리 할 수 ​​있는지 상상할 수 없습니다. 실제로 엔티티 간의 링크는 각 클라이언트에 대한 일종의 매개 변수, xml 등으로 런타임에 "완료"되어야합니다. 도메인 모델이 약간 변경되었으므로 다른 응용 프로그램을 코딩 할 필요가 없습니다. 이것은 프로퍼티 도메인 모델을 가지지 않는 것은 완전히 미친 짓일 수 있지만 메시징을 기반으로 한 어떤 것이 우리에게 도움이 될 수 있습니다.

그 점에 대해 알고 싶습니다. 그런 상황을 어떻게 처리 했습니까?

감사합니다,

답변

4

도메인 모델의 목적은 공통적 인 동작과 관계을 캡슐화하는 것입니다. 구현을 느슨하게 결합 할 수는 있지만 (또는 그렇게해야합니다), 구성 중심에서 어떻게 구현할 수 있는지에 대한 제한이 있습니다.

더 많은 설정 가능성을 향해 계속 나아가면 특정 시점에서 도메인 모델이 아니며 대신 프레임 워크이됩니다. 그런 다음 프레임 워크를 사용하여 특정 도메인 모델을 정의 할 수 있습니다.

프레임 워크를 작성하는 것은 정말 어렵습니다. 따라서 명시적인 목표를 가진 프로젝트를 시작하는 것이 타당한 계획이라고 생각하지 않습니다. 당신이 플러그인으로 고객의 기능을 구현할 수 있도록

당신이, 공통 코드 기반 및 고객 별 요청을받을 때마다 함께 시작할 수 있으면

는 커널을 리팩토링. 도메인 특정 프레임 워크에 커널 진화 시간, 행운과 기술 많은

, 당신은 할 수 있습니다.

+0

구성을 통해 모든 작업을 수행한다는 것은 불가능하다는 것을 알고 있습니다. 문제는 처음부터 끝까지 프로세스/워크 플로를 볼 수있는 소프트웨어를 만드는 것입니다. 플러그인을 사용하면 150 명이 넘는 큐머가있을 때 문제가됩니다. 그래서 각 고객을위한 플러그인 버전을 유지하는 것이 좋습니다. pluging이 시간의 저주에서 개선 된 응용 프로그램의 나머지 부분과 호환되는지 확인합니다. 근원을 다루기. 우리의 경우에는 지금 가지고있는 것이고 그것은 지옥입니다. 각 고객마다 도메인 논리가 응용 프로그램 및 플러그인에 확산되는 다른 문제가 있습니다. –

+0

플러그인과 관련된 호환성 문제는 Continuous Integration과 많은 자동화 테스트에서 가장 잘 처리됩니다. –

1

"마법 제품의 문제", 우리 모두가 그 :) 중 하나를 찾고 있습니다. SOA를 사용하여 성공한 것입니다. 우리는 서비스를 확인한 좋은 직장을 만들었고 나중에 우리는 오케스트레이션이나 비즈니스 서비스를 조금 변경했습니다.

내가 말하고자하는 것은 구성을 통해 모든 차이점을 해결할 수 없다는 것이고, 쉬운 적응력으로 생각하는 좋은 코드를 작성하는 노력을 기울여야하지만, IMHO는 "마술 제품" 불가능하다.

관련 문제