系统性的分析 架构需求
结构化的设计 架构方案
沉淀可复用的 架构经验
TOGAF:强调企业架构全生命周期治理
现代企业架构框架设计原则
- 战略与业务价值驱动(业务驱动 over 技术 驱动)
- 轻量敏捷化(持续改进 over 一次做对)
- 可落地(从实践出发 over 从理论推导)
业务架构
业务架构整体上包括“业务”、“流程”、“组织”、 “服务”、“领域”和“模式”六大部分
其中“模式”部分是我们为“平台型”企业架构设计的核心解决方案,包括:
- 流程建模
- 领域建模
- 业务身份建模
- 能力建模
- 基础能力建模
- 扩展点与扩展实现建模
- 能力组件建模
- 解决方案建模
如何识别和构建能力
识别构建能力的过程分为“业务梳理”和“模式设计” 两个阶段。
在业务梳理阶段:对企业业务、流程、组织、业务 服务和业务规则进行细致完整地梳理,作为后续模 式设计的基础和输入。 而在模式设计阶段:则会通过流程建模、领域建模、 业务身份建模和能力建模 4 个步骤完成企业能力的 识别构建。
• 流程建模:负责识别共性业务,并抽取通用流程, 设计可变点,作为可复用性分析的基础。 • 领域建模:负责基于流程建模结果,识别领域 事件和领域对象,并划分子域的边界;领域对 象构成了提供可复用能力的基本单元,对领域 对象的操作即是基础能力。 • 业务身份建模:负责定义业务身份识别的要素 和业务身份解析规则,用于给可复用的能力区 分不同的业务身份要素。 • 能力建模:负责最终完成平台三类可复用能力 的设计,即“基础能力”设计、“能力组件” 设计和“解决方案”设计。
提炼通用流程后的可变性分析,旨在找出“什么在变”、“为什么变”和“怎么变”,因此可变性模型主要由: “可变点”、“可变点实现”以及“可变点、可变点实现之间的关系”三部分组成。
领域战略层级建模的过程
领域事件识别
领域事件对系统常见的影响有: 对内 - 产生了某种数据 - 触发了某种流程或事情 - 状态发生了某种变化
对外 - 发送了某些消息
领域事件识别的示例:
在领域驱动设计(Domain-Driven Design)(参考 文献 7)中一般存在三类领域对象: 聚合根:是领域对象的根节点,具有全局标识,对象其它的实体只能通过聚合根来导航;如订单可以 分为订单头和订单行,订单头是聚合根,它包含了 订单基本信息;订单行是实体,它包含订单的明细 信息,聚合跟所代表的聚合实现了对于业务一致性 的保障,是业务一致性的边界。 实体:是领域对象的主干,具有唯一标识和生命周 期,可以通过标识判断相等性,并且是可变的,如 常见的用户实体、订单实体; 值对象:实体的附加业务概念,用来描述实体所包 含的业务信息,无唯一标识,可枚举且不可变,如 收货地址、合同种类等等。
业务架构只负责初步和整体识别领域对象,而对领 域对象的分类(聚合根、实体、值对象)和战术层 级的详细设计将在应用架构设计部分完成。
子域划分
核心域(Core Domain):是当前产品的核心差 异化竞争力,是整个业务的盈利来源和基石,如果 核心域不存在那么整个业务就不能运作。对于核心 域,需要投入最优势的资源(包括能力高的人), 和做严谨良好的设计。
支撑域(Supporting Subdomain):解决的是支 撑核心域运作的问题,其重要程度不如核心域,但 具备强烈的个性化需求,难以在业内找到现成的解 决方案,需要专门的团队定制开发。
通用域(Generic Subdomain):该类问题在业 内非常常见,所以很可能有现成的解决方案,通过 购买或简单修改的方式就可以使用。
子域划分示例:
业务身份建模
能力建模
基础能力:是对领域对象的原子操作,完成一个领 域对象上单一且完整的职责。比如:创建售后单、 修改商品库存量等,是能力组合和复用的最小单元。
能力组件:能力组件是对基础能力的进一步封装, 目的是方便业务的使用。 按封装粒度不同分为两类: 第一类能力组件是根据业务服务的需要编排封装的一组关联的基础能力,从而提供完整的服务。比如: 订单创建能力组件。第二类能力组件是平台针对一系列紧密关联的业务活动,设计的能力模板,可基于该模板快速定制某个具体业务的特定流程和能 力,从而达到复用全部关联能力的目的。比如:“组合支付”、“快速建站”等能力组件。能力组件加快了业务接入平台的速度,让业务侧专注业务本身, 不再需要耗费精力在理解平台大量的基础能力上。
解决方案设计
解决方案:是平台针对一类共性业务的端到端过程 设计的能力模板;可基于该模板快速定制某个具体 业务的特定能力,从而达到业务模式复用的目的。 比如:虚拟物品交易解决方案。
解决方案的核心是对共性 业务进行识别提取和对业务全部能力进行模板化 封装。
如何复用能力,实现新业务快速上线? (多层级复用)
应用架构
4.2.2.2 应用组件建模
子步骤一:功能和数据识别
子步骤二:功能与数据关联,识别应用组件
子步骤三:识别、调整各应用组件之间的依赖关系