6 理解业务概念和业务组件
![6 理解业务概念和业务组件](https://static001.geekbang.org/infoq/d3/d3733465129eb230964fe7d4caa87772.jpeg)
架构的本质是研究组件及其关系。业务架构就是研究业务组件及其关系。本文介绍了业务架构设计和业务组件的基本知识。
组件化开发
组件化开发是软件开发中的一个常用方法。组件化开发将原有到系统级的粗粒度控制细化到了组件级别的细粒度控制,一个复杂系统的构建就是组件最终集成后的一个结果。
基于组件化开发带来的好处包括:
每个组件都自己独立的版本,组件可以独立编译、独立打包和部署;
实现完整意义上的按组件进行产品配置和销售,用户可以选择购买哪些组件,组件之间可以灵活进行组装;
从研发的视角,诸如配置管理、开发、测试、打包、发布完全控制到组件层面。例如一个组件进行小版本升级,提供给外部的接口并没有做任何变动,其它组件完全可以不用做任何测试。
![](https://static001.geekbang.org/infoq/24/24efe523a4f80d7c8e57cb0d6f956a8f.png)
TOGAF 中的业务组件
在 TOGAF 并没有给出业务组件的定义,但通过了架构和构建块的定义给出了组件和构建块、架构的关系。
TOGAF 中架构的定义:
1.系统在其环境中的基本概念或属性,体现在其元素、关系以及设计和演进原则中。2.组件的结构、它们之间的相互关系,以及控制其设计和演进的原则和准则。
TOGAF 中构建块的定义:
构建块代表企业功能的一个(潜在可重用)组件,可以与其他构建块结合以提供架构和解决方案。
![](https://static001.geekbang.org/infoq/b6/b690e413b41ed007ca7cce22eda6cee9.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
TOGAF 术语中,构建块和组件的含义是一致的。构建块在不同粒度上抽象了企业的各种概念(元素),包括了业务概念、应用概念、数据概念和技术概念。
借用构建块的定义,我们也可以给出 TOGAF 中业务组件的定义:业务组件是代表企业业务功能的一个(潜在可重用)模块。
TOGAF 中组件的概念代表了我们对组件的理解:
组件是不同颗粒度的独立管理单元;
组件的维度:业务、数据、应用和技术
CBM 中的组件和 TOGAF 里组件是一回事吗?
先来看一下,CBM 组件化建模中业务组件的定义:
业务组件(Business Component,BC)一个可以独立运行的构建企业的系统或功能模块。通俗来说,业务组件就是对达成特定目标,需要完成的一组紧密关联的工作事项的合集。
CBM 中的业务组件实际上对应的是 TOGAF 其中一个业务组件:能力组件。CBM 组件模型本质上是企业能力模型。
![](https://static001.geekbang.org/infoq/ef/ef75895465e0597e46400a8a839df4fd.png)
能力这个组件是 TOGAF 中抽象度比较高的一个组件,笔者认为 TOGAF 是缺乏能力建模方法的,CBM 组件化建模方法补齐了这个不足。
业务架构设计包括两种思路:采用自顶向下,也就是基于企业架构的方法论;也可以自底向上,基于遗留系统分析和重构。如果我们采用是自顶向下的分析过程,我们我可以把 CBM 建模的输出(企业能力视图),作为我们流程建模、服务建模和数据建模的输入。
需要说明的是 CBM 建模自身也可能采用自底向下的分析过程,如果是这样,企业能力视图就是中间产物,而非业务建模的起点,后续将会详细说明这一点。
业务架构和业务组件
架构的本质是研究组件及组件的关系。业务架构设计实际上包含两个过程,
1)识别业务概念及其映射的业务组件;
2)构建组件之间的关系。
![](https://static001.geekbang.org/infoq/ea/ea0db85265c1fbdc1b715522928e4dce.png)
这里我们需要明确业务概念和业务组件的区别:业务概念是对业务比较重要的人、事、物,例如客户、订单、渠道等,比较口语化。业务组件是业务建模中用到的模块,例如角色、业务对象、业务接口等,比较专业化。另外,业务组件对业务概念在不同粒度上进行了抽象。
理论上,你当然可以直接用业务概念直接进行建模,这没有什么不妥之处。但业务组件的好处在于标准化,这有助于后续的组件复用以及团队沟通。
例如以下是我们常用的一些业务概念:
商业模式
组织模式
业务域
数据域
功能
流程
业务场景
渠道
客户
订单
供应商
...
下列是我们常用的业务组件:
角色
业务服务
业务功能
业务流程
业务对象
业务事件
业务接口
...
![](https://static001.geekbang.org/infoq/a0/a069f901c600b4c78e427de2d5a18252.png)
业务概念抽象为业务组件后,名称可能会发生变化,也可能不变化:
名称相同:
流程-》业务流程
功能-》业务功能
名称不相同:
订单-》业务对象
客户-》角色
供应商-》角色
业务架构师第一件事就是要弄清楚业务的基本概念和底层逻辑,而不是建模。从这个意义上,商业模式应该是业务架构师的第一堂课。
业务架构设计
业务架构可以看做由多个高内聚、低耦合的业务组件构成。业务组件的划分方法和粒度和我们建模的视图有关。
由于业务包含的概念比较多,所以业务架构不可能用一张图来表达,这是业务架构很重要的一个特点。业务架构建模第一步是了解需求方意图,也就是你想要表达什么?这个意图就是需求方的关注点,也就是视角。视角决定了需要呈现的内容,也就是视图。
业务组件的划分需要和业务架构视视图对应,可以将业务架构图中的每个业务模块识别和定义为一个业务组件,也可以根据高内聚、低耦合准则将多个业务模块合并为一个业务组件。
如果需求方需要一张企业顶层的业务功能规划图,可以采用 CBM 组件化模型方法,需要的是能力组件。
![](https://static001.geekbang.org/infoq/49/492de80d2b10a7735a9770b3a9a714f5.png)
如果需要的是细粒度的业务功能图,可以使用业务功能、业务服务组件。
![](https://static001.geekbang.org/infoq/be/be79bde1cc327818ee3a1576ccb72906.png)
如果需要一张组织结构图,可以使用业务角色组件。
![](https://static001.geekbang.org/infoq/95/95a6e2461f9cb2757703a2d4c242684d.png)
如果需要分析业务服务和业务渠道的关系,可以使用业务接口、业务功能和业务服务这些组件。
![](https://static001.geekbang.org/infoq/4f/4f01de5dc061d33c4f8659cbf4cd853b.png)
总结
业务组件是代表企业业务功能的一个(潜在可重用)模块。
CBM 中的业务组件对应的是 TOGAF 中的能力组件,能力是 TOGAF 中抽象度很高的一个组件。
业务概念是对业务比较重要的人事物,比较口语化。业务组件是业务建模中用的模块,比较专业化。业务组件是业务概念在不同粒度上的抽象和表达。
业务架构设计实际上包含两个过程,一个是识别业务概念及其映射的业务组件,第二步是就构建组件之间的关系。
业务架构师可以直接用业务概念建模,但业务组件具有标准化和便于团队沟通的优点。
End
欢迎关注涛哥微信公众号“架构领导力”和视频号“数智产品和架构”
版权声明: 本文为 InfoQ 作者【涛哥 数智产品和架构】的原创文章。
原文链接:【http://xie.infoq.cn/article/6c34847e22386c0239e9cc40f】。文章转载请联系作者。
评论