2.2 概念模型的构建
BizDevOps概念模型必须支持主要的价值交付链路,如需求的交付、缺陷的处理等,这样模型才可能实用和完备。 因此,我们决定从识别价值交付链路开始,逐步构建BizDevOps概念模型。
理解构建过程,可以帮助大家理解模型的本质,并在实际场景中更好地应用它。接下来,我们将通过还原模型的动态构建过程来介绍整个模型。
步骤1:识别主要价值交付链路及它的作业对象
构建模型的第一步是识别BizDevOps的主要价值交付链路。价值交付链路对应一类价值的完整实现过程,例如:业务的交付和反馈就是一个典型的价值交付链路。它包含从收集或产生业务需求,到分析、规划、实现,再到验收、发布,直至反馈调整的整个过程。
本质上,每个价值交付链路都是一个作业过程,被交付的价值单元是它的作业对象。在上面的例子中,业务的交付和反馈链路的作业对象是业务需求。作业对象随作业过程发生状态迁移和流转,最终实现价值的交付。
下图表达了BizDevOps最核心的价值交付链路,其中,橙色矩形框代表的是该链路的作业对象。各个价值交付链路之间可能会存在关联,如:业务交付和反馈链路会派生出产品交付链路。价值链路间的关联会体现到作业对象之间。上例中对应的就是业务需求分解为1到多个产品功能需求。图中作业对象间的连线表示这种关联。BizDevOps典型的价值交付链路可分为两大类。
第一是协作类的,除业务交付和反馈链路外还包括:产品设计和交付链路以及缺陷的处理链路等。其中,产品设计和交付链路的作业对象是产品功能需求;缺陷的处理链路的作业对象是缺陷。
第二是工程类的,包括:应用的变更链路和系统或版本的发布链路等。其中应用的变更指的是针对某个产品功能而要做的技术改动的交付过程,包括:设计、编码、提交和部署的过程,它的作业对象是变更请求(Change Request);系统或版本的发布,指对外的一次需求或版本的发布,它的作业对象是发布(Release)
图2-1:BizDevOps模型的核心⸺各个价值交付链路上的核心作业对象
需要说明的是,以上作业对象的命名,选取了最典型的命名。在现实中,因具体企业或业务特征的不同,命名可能不同。如,在标准产品售卖为商业模式的组织中,业务需求更可能被产品特性取代,变更请求在不同组织中可能被称为变更、变更单或技术任务等。产品功能需求,可能被称为开发需求或Story等。本白皮书对作业对象的命名,在实际应用中可以也需要被适配。相互关联的作业对象是BizDevOps概念模型的内核,模型将围绕这一内核展开,而检验模型设计完整性和有效性的基本标准是:能否高效支撑各个作业链路的有效运作。在这一前提下,模型应该尽可能简洁明了。
接下来,将从作业链路和作业对象出发,逐步构建BizDevOps概念模型。为了避免重复,在后面的模型中将省略价值交付链路的名称,它们已经蕴含在作业对象当中了。
作业要在特定空间内完成,我们称其为作业空间。
步骤2:为各个流程确定作业空间,并划分模型的领域
作业空间是一类或多类角色为了共同的目的,作业和协作的功能区域。作业空间提供特定的功能集合,可以进行配置、数据和权限的管理,同时还应该提供或链接完成作业所需要的资源,存放或链接作业过程和最终的产物。
如下图所示,蓝色的矩形框是作业空间,包括:产品线、交付团队、应用、发布单元等,作业对象隶属于这些空间,在其中完成作业。下表列出了各作业空间,它们管理的作业对象以及具体作业链路等。
图2-2:BizDevOps概念模型的核心⸺作业对象和作业空间
明确作业对象和作业空间,为划分模型的子领域提供了依据。各个领域本身应该是内聚的,由紧密关联的概念构成。领域之间应该尽可能解耦,减少不必要的交互。围绕作业对象和作业空间划分子领域,让每个领域都有共同的目标,保证各个子领域的高内聚、低耦合。
图2-3:BizDevOps模型的核心⸺子领域的划分
上图中灰色的框是我们对模型领域的划分,以及各个领域的参考命名。领域的划分对组织的协同、机制实践的落地、工具平台的建设都有指导意义。
为作业空间添加作业规则和作业计划
图2-4:BizDevOps模型的核心⸺作业规则和作业计划
划分了子领域,接下来的建模是围绕作业空间和和作业对象去完善各个子领域。
如上图所示,为规范作业行为,首先各个作业空间都需要有自己的作业规则,也就是作业所要遵循的流程、规范和束,下面是两个实例。
1.产品交付团队中的需求管理和交付流程,我们称之为需求工作流,通常包括:需求交付要经历哪些阶段,这些阶段是否必选,各个阶段的入口或出口条件等。具象到工具平台,它对应看板或需求列表中的需求状态和状态迁移规则的设定。
2.产品或应用中的研发变更流程规则,包括:变更包含的阶段,以及每个阶段由哪些步骤构成,每个阶段和步骤的入口、出口条件等。具象到工具平台中,它们通常体现为持续集成交付流水线的设计和编排。其次是作业计划,它是在空间中对作业对象交付时间或顺序安排,如:产品线中版本规划,交付团队的迭代计划,产品发布单元的发布计划等。
步骤4:完成各个子领域的模型设计
模型设计的最后一步是,完成各个子领域的模型设计,典型的还需关注的概念有:
1.作业过程需要的输入,如:产品线在规划业务需求时需要有 业务的输入作为依据;
2.作业过程用到的资源,如:完成应用变更要用到的环境和流水线;
3.作业过程的最终或阶段性产出,如:发布链路会产生发布版本,并包含对应的制品,制品则是集成和交付过程的产出。在模型中,规划和协同域里还对业务部分做了补齐,作为产品规划的输入和依据。此时,模型在其抽象层次上已经足够完整,也就是涵盖了各个价值交付链路完成作业所需要的主要概念。
正如前面所述,模型完备性的金标准是它能否支持价值交付链路的高效运作。关于各个子领域的具体概念,我们将在第三部分介绍实践时展开。
下图所示是完整的BizDevOps模型的设计,除完善了各个子领域外,底部加上了基础能力域,如文档管理、代码管理、系统运维监控域等。它们中的大部分在DevOps体系中都会涉及,本白皮书不再做介绍
图2-5:BizDevOps整体概念模型