Architecture 一个真实的领域模型——谬论?

Architecture 一个真实的领域模型——谬论?,architecture,Architecture,我刚刚为一个客户完成了工作,这个客户在一个项目上花费了数百万美元,为他们的业务提出了“一个真正的领域模型”。这是该项目的唯一可交付成果 你对此有何看法?单一版本的真理现实吗 这里的关键词是“模型”。任何领域模型都是系统模型中关键实体和行为的抽象 例如,交通管理系统可能有一个实体车,它是不可分割的。驾驶模拟将有更多的结构:部件、重量、颜色、乘员等等 这里的要点是,没有汽车的全球定义。您只关心特定应用程序(甚至应用程序的一部分)的状态和行为。不,这不现实。是的,这是一个谬论;-) 在我看来,这是众所

我刚刚为一个客户完成了工作,这个客户在一个项目上花费了数百万美元,为他们的业务提出了“一个真正的领域模型”。这是该项目的唯一可交付成果

你对此有何看法?单一版本的真理现实吗

这里的关键词是“模型”。任何领域模型都是系统模型中关键实体和行为的抽象

例如,交通管理系统可能有一个实体车,它是不可分割的。驾驶模拟将有更多的结构:部件、重量、颜色、乘员等等


这里的要点是,没有汽车的全球定义。您只关心特定应用程序(甚至应用程序的一部分)的状态和行为。

不,这不现实。是的,这是一个谬论;-)

在我看来,这是众所周知的可重用性和可维护性之间的权衡。如果说可维护性有一个最重要的方面,那就是:最小化依赖性。整个业务的“一个真正的领域模型”显然会产生很多依赖性,不管它设计得多么巧妙


我会寻求更好的可维护性。

嗯,域模型。建模是一种抽象技术,在这种技术中,我们创建真实对象的表示,它将从(忽略)不必要的细节中抽象出来(因此通常我们必须事先指定重要的方面)。域名是一个特定的业务领域。问题是,即使在一个组织中,对该领域也可能有不同的观点和不同的观点,因此很难定义重要方面并因此建模。更糟糕的问题是,tis域和那些视点会随着时间而变化,因此模型可能会随着时间而变化——这在我们谈论业务敏捷性时很重要。我个人认为,领域模型,特别是当它们需要用于特定目的时,太流畅了。最好根据需要捕获域的当前状态和视图,以用于给定目的。

没有帮助的一件事是,您没有指定建模语言

你可能指的是一个数据模型:关系类,呃,UML类,或者类似的东西。可能不会。 在任何情况下,我们都希望所使用的语言足够清晰,至少能够就模型中应该包含什么样的信息以及如何表示这些信息达成共识。画各种形状和装饰的盒子和线条,如果没有明确的含义,就不会给你提供好的模型

话虽如此,我的投票支持马库斯的答案:你包含的信息越多,你需要拖的时间就越多。此外,您需要什么样的信息以及如何对其进行最佳建模取决于您需要信息的目的、获取和存储信息的方便性和可靠性、可能的访问控制考虑因素(每个人都能看到一切吗?)以及无数其他考虑因素。如果不知道这些需求以及它们在未来可能如何变化,就没有好的模型,更不用说完美的模型了。除此之外,当然还有内在质量方面的考虑因素——例如,信息的冗余表示通常是一个坏主意,除非您有使其具有吸引力的特定要求

<>这并不意味着对现有模型进行建模或重新考虑是浪费时间:相反,当你尝试设计一个模型并考虑它的含义时,往往只会意识到现有的需求或设计限制。努力实现一致的表示是很好的,使每件事都适合于每件事的一个可能的通用模型。但这肯定不是建模的目标


也许企业需要长期而认真地思考他们拥有什么信息,他们需要它在哪里,谁维护它,如何以及如何改进所有这些。在这种情况下,我认为设定一个目标,设计一个大的、一致的、完整的通用信息模型,是实现这一目标的好方法。但这种模式可能不会成为主要结果

因为这是一个讨论点,这应该是社区维基,IMHO