解释:
这个标题遵循了您的要求,既通俗易懂,又符合中文的口语表达习惯。文中提到的“元模型”在实际表达中简化为“模型”,更符合中文口语习惯。同时,标题准确地反映了文章讨论的主要内容,即一种新的、受C4模型、敏捷方法论和TOGAF框架启发的软件架构模型。
在这篇文章中,我将介绍一种我找到的有用的软件架构框架,它对于复杂企业的敏捷数字化转型非常有用。该框架借鉴了TOGAF和C4的理念,并提供了一种既简单又强大的方法来跨业务、数据、系统和部署四个架构层面创建软件架构模型,这四个层面。
如果这里提出的元模型能激励其他公司的其他人,这篇文章的目的就达到了。
一个元模型是什么呢? 一个元模型是一种描述模型的模型。首先,我们需要先明确一下我们所说的_元模型_是指什么,以及为什么这对软件架构师来说很重要。我们可以先看看Wikipedia上的元建模是怎么说的。
模型是对现实世界现象的一种抽象;元模型是对模型本身的另一层抽象,突显模型的某些特性,就像放大镜放大细节一样。模型与其元模型的关系就像计算机程序与其使用的编程语言的语法规则一样。
我通常这样解释:
一个软件架构模型告诉我们某个特定的软件系统是怎么被设计出来的,而一个元模型(meta-model)则是告诉我们这个模型(model)是怎么被设计和构建的。
元模型通常由企业架构师创建,而模型则通常由软件架构师(也就是解决方案架构师)创建。该模型也常被称为软件架构或解决方案架构。
下图展示了它。
在某些组织中,术语可能略有不同,但核心思想相同。
在大多数我工作过的地方,都没有一个成熟的元模型。事实上,许多人根本没有意识到软件架构需要一个元模型,结果我们陷入了巴别塔式的混乱中,在这种混乱中,很难有意义地讨论软件架构,因为连最基本的术语都没有统一,难以达成共识。
确实,企业架构师经常被招聘,但我很少看到他们在最基本的部分:定义元模型并开发我们用来讨论软件架构的语言上取得成功。
TOGAF架构元模型为了更好地理解本文后面将要介绍的模型,让我们来看看[TOGAF v9.2 第 30.3 节]中的元模型概念:
在TOGAF v9.2中介绍的这个元模型(Meta-model)
阅读该图有点难,因为图里信息量很大。我们可以只关注一些细节,忽略其他部分来提取信息。我更喜欢这么看。
TOGAF元模型的简化版本
即使简化了这个,我觉得这个元模型还是过于复杂。
例如,它假设我们可以真正地明确界定诸如业务服务、功能、流程和业务能力等概念,为它们赋予恰当的名称,清晰地描述并区分。接下来,我们需要将它们关联起来,并追踪哪些流程是由哪些功能实现的。我认为,如果任何组织曾经成功地完成这样复杂的业务分析,那么这家企业的业务要么极其简单,要么这个模型只有少数高度专业的架构师才能理解。
我可能错了,也非常希望能看到一个实际案例,在敏捷数字化转型中TOGAF企业模型确实有用。
我们提出的元模型现在我们已经见识了TOGAF元模型的复杂性,让我们来考虑我提出的作为替代的元模型。
针对大型复杂企业的敏捷数字化转型新元模型框架提案
需要注意的是:
- 元模型涵盖了业务、数据、系统和部署。
- 我假设我们正在为一个深刻理解和使用精益思想中价值流概念的业务工作。我也假设将价值流分解为业务能力(Capability)是有意义的。如果这种术语不符合该业务,应使用其他概念。
- 我假设我们是在某种敏捷方法论下工作,在这种情况下,史诗、故事和角色的概念应该是清晰的。如果不是这种情况,其他概念如功能、需求和角色可能更合适。
- 故事之间可以以各种方式相关。例如,一个故事可以“跟随”另一个故事,或者它是另一个故事的“变体”。这些关系可以更正式地建模。如果这种关系过于抽象,可以将其从元模型中移除。
- 我假设整个业务可以分解为一些数据区域,每个区域包含多个实体(Entity)。实体可以被看作是_数据表_或其他形式的数据集群。在领域驱动设计术语中,这被称为聚合(Aggregate)。
- 实体之间的关系可以被视为传统的实体关系,如多对多关系等。
- 系统与数据区域之间的关系是指系统拥有或使用数据的概念。当我们在构建软件架构模型时,这种情况往往被忽视,这是非常遗憾的。创建系统(或应用程序)与其拥有或使用的数据之间的映射非常有用。
- 系统的概念有时被称为解决方案或应用。在C4模型中,它通常被称为软件系统。
- 组件的概念在C4模型中被称为容器(Container),代表软件系统的组成部分,如前端、后端和数据库等。
- 组件集成的自引用关系表示例如后端连接到数据库,或前端调用后端的REST接口。
- 部署节点可以代表基础设施中的任何概念,如服务器、集群、主机、容器、IaaS、PaaS、资源组、订阅、VLAN等。
- 部署节点之间的关系可以代表基础设施中的任何拓扑结构,如服务器连接到VLAN或主机机器是Kubernetes集群的一部分。
- 部署节点与组件之间的关系表示组件在运行环境中的部署情况。
为了理解模型的每个部分是如何创建的,以及它是如何使整个组织可以一起协作模型,下图显示了每个部分通常由哪些角色负责。
模型的不同部分通常由组织中的不同岗位负责,如图所示。
这与C4模型有何关联?最后,我们来比较一下C4模型的元模型版本。C4模型通常不以元模型的形式呈现,但如果你研究一下c4网站,你可以从中提取出类似的元模型。
一个受C4模型启发的模型——参见C4模型网址https://c4model.com/
这个受C4启发的元模型与我提出的模型有明显的交集,具体差异如下:
- 如前所述,C4 中称为 Container 的,在提议的模型中称为组件。
- 提议的模型不包括系统区域中的第 3 层和第 4 层(如图红色标记)。并不是因为它们在某些情况下没有用处(它们确实有用),而是因为这些层级在处理单个系统的内部软件架构时更为相关。请记住,元模型的目的是在大型复杂企业中促进沟通和协作,因此真正重要的是这四个领域(业务、数据、系统和部署)之间的关系。如果您需要系统区域中的第 3 层和第 4 层(如图红色标记),只需将其添加到您的模型中即可。
- 在提议的元模型中,我们将 DATA 和 BUSINESS 作为模型的核心部分。C4 并没有意图对这些内容特别说明——这考虑到 C4 的目标,是有道理的。但是为了创建一个能够满足所有数字转型需求的有用元模型,我扩展了元模型以包含 BUSINESS 和 DATA。
在之前的章节中,你可能已经注意到了,TOGAF 以及所提出的元模型(以下简称元模型)都划分成了名为“领域(如业务、数据等)”。这种划分是为了在元模型中创建一个高层次的结构。
以下图表展示了提出的模型、TOGAF 和 C4 覆盖的架构领域之间的差异。
本模型与TOGAF及C4相比,所涵盖的架构领域(或称领域)更为广泛。
以下需要注意的是:
- C4 并没有具体说明如何对数据和业务领域进行建模。因此,在上面的图片中没有包含这些部分。
- TOGAF 中的“应用程序”在 C4 和提议的模型中称为“系统”,而“技术”被称为“部署”。
- 盒子之间的线条表示模型在这些领域之间存在的交叉链接。
- 在提议的模型中,数据和系统领域像是兄弟关系,而不是在 TOGAF 中应用程序次于数据的下属关系。这一点很重要,因为我们需要在故事和数据之间,以及故事和系统之间建立连接,从而更好地理解和建模业务功能、系统和数据之间的互动。
请注意:关于“架构区域”的概念,您可以在维基百科上找到相关介绍,称之为“领域架构”。
结论部分一个新的元模型被提出了,目的是为复杂企业的数字化转型提供一个通用的元模型框架。据我个人的观点和经验,这个元模型提供了一种简单而强大的思考和讨论大型复杂企业架构的方法。它基于TOGAF和C4这两个常用框架中的普遍接受的理念,但仍然有很大的区别。
我不是说这种形式的元模型应该被直接使用。而是说,每一家公司都应该理解建立元模型作为数字化转型基础的重要性,而且它需要简单到能在实际操作中运行。同时,元模型应涵盖四个架构领域:业务、数据、系统和部署。
如果这里提出的元模型能作为此类项目的一个起点,本文的目的就达到了。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章