为什么我们能从行话术语中发现领域模型? - mathiasverraes


系统中的信息是人们之间交流过程的一部分。思想在头脑中流动;沿途有翻译,从概念到自然语言到形式语言(机器系统中的构造),然后再返回。
— Bill Kent
从人们交流的语言中发现客观世界已经是一种默认方法,包括机器学习的NLP或大数据分析都是这种情况,领域建模也是这种情况,复杂性系统中的信息会透过人们谈论它的言语表现出来,这就是无所不在的通用语言UL,也就是行话或专业术语,通过建立术语字典能够建立一种统一语言UL,这就是从概念到自然语言的表达,进一步严谨约束变成形式语言,适合机器系统执行解释,当然,机器学习还可以自己发现和生成一种形式模型,然后自己执行解释。
 
术语在整个组织中传播或淡出。意义转变。人们将旧术语改编成新的含义,或者术语获得了多重、模棱两可的含义。它的存在是因为它有效,至少对于人与人之间的交流来说足够好。
这种领域语言是在该领域工作的人使用的语言。这是一种自然语言,因此很混乱。它是有机的:概念是出于必要而引入的,没有经过深思熟虑,没有达成一致,没有精确性。
对于我们系统设计师来说,杂乱无章的语言是不够的。我们需要具有易于理解的概念和明确的上下文的精确语言。
这就是通用语言UL(字典):一种构建的、形式化的语言,得到利益相关者和设计师的认可,以满足我们设计的需求。
任何通用语言UL的形式和精确程度都取决于其环境上下文(这个环境是有边界的:有界上下文/界限上下文/限制上下文)
 
既然建模是一种语言游戏(维特根斯坦认为:世界就是语言游戏,见:上下文为王),那么我们可以使用人类语言分析方法(注意,文科中的语文知识)提取模型,隐喻发现是一种有效的方法。(当然,还有其他方式:例如将你的DTO数据对象改变成事件,从事件DTO的流向来分析沿途涉及的术语或上下文,这是事件风暴)
 
一个好的模型可以帮助你推理一个系统的行为。一个好的隐喻可以帮助你推理出一个系统的_期望的行为。