云巧工坊蓝图绘制简介

简介: 根据领域驱动设计引子,引出事件风暴建模方法,划分限界上下文等战略设计方法。介绍云巧工坊提供的蓝图设计工具,帮助开发者将业务模型落地为代码架构。

PBC和业务建模

问题是什么

在软件行业,我们都知道一个经典的故事:用户想要一匹跑的更快的马,福特发明了汽车。

之前看到过一个段子,面对这个需求的时候,二逼产品经理已经开始喂马和给马制定健身计划了。那么面对客户直接的需求福特是怎么挖掘和定义问题的呢,我们可以想象下面的对话:

产品经理:你为什么需要一匹更快的马呢?

用户:因为我想跑的更快

产品经理:为什么想跑的更快

用户:这样我就可以更快的到达目的地了

所以,通过一定的分析和挖掘,用户想要一匹跑的更快的马的真实诉求是“更快,更短时间的到达目的地”,于是福特发明了汽车。

                       

从PBC看组件的业务价值

Gartner在2021年10月19日,正式发布了2022年重要战略趋势。其中包括了“可组装式应用”这一战略。关于可组装式应用,Gartner提出了“PBC”(Packaged Business Capability)这个概念作为组装式应用的核心。

与微服务架构不同的是,前者交付的依然是封装应用,而基于PBC的组装式应用交付的是一个数字化的平台。在这个平台中,PBC更像一个个原子,而组装式应用是把这些原子重新组合起来的一个个分子。


对于业务问题的定义和理解直接决定了我们在解决用户问题时所采用方案。

通过领域建模PBC式可组装应用,可以把我们对业务的理解、和技术架构的实施结合起来。

领域驱动设计

领域驱动设计(DDD:Domain Driven Design)是一种处理高度复杂域的设计思想,它试图分离技术实现的复杂性(Technical Concern),围绕业务概念构建领域模型,来控制业务复杂性,以解决软件难以理解,难以演化等问题。领域驱动设计思想较其他建模方法更系统全面,其涵盖面包括战略上的模块拆分和战术上的应用内部架构。

领域驱动设计为达成业务建模目标提供了基础。

DDD设计思想

DDD核心是通过划分业务领域的边界,将复杂的问题,拆分为不同的领域,分而治之。

战略设计和战术设计

DDD提供了两种策略,战略设计和战术设计。

战略设计:通过划分边界(限界上下文)的过程,以及探讨不同边界的性质,实现策略的过程

战术设计:找出具体的业务概念,并且在特定架构约束下完成技术实现的过程

通过战略设计和战术设计,我们逐步分析,分解,获得解决方案中的领域模型,限界上下文及其映射关系。

事件风暴和领域建模

领域建模是比较常见的定义问题的方法,我们以“事件风暴”工作坊来梳理:旅行中“购买机票”的模型,感受一下面对业务场景,领域建模师如何帮助我们梳理问题的。

1)首先邀请领域专家参与进来,通过用户旅程图呈现整体业务流程。我们可以看到核心的步骤包括三部分:配置航班,预定,旅行,在每一个步骤中又有很多子步骤。将这些步骤列出来,并且标记处每一步对应的状态。

2)面对流程中我们会发现有很多的名词概念,和动词操作。我们把名词的部分找出来,就是“业务概念”,比如“航班”,“预定”,“机票”,“旅客”;同时,我们把对应的动词和产生动作的操作者也找出来,这些称为“命令”,通过命令对业务概念的操作,最终使得业务概念的状态变化,从而完成我们的业务。产生的结果我们通过状态描述,如:航班已创建。

命令的方式有多种:用户操作,系统行为,第三方系统行为,定时任务等等。感兴趣的朋友可以通过了解更多事件风暴的内容。

3)当我们梳理好一个个业务概念之后,接下来,把一个核心流程里相关的业务概念划分为一个限界上下文。不同限界上下文通过上下文映射相互调用。 划分上下文没有标准答案,根据具体的业务场景和业务方向,可以是一个上下文,也可以是多个。并且,限界上下文的边界在业务的不同时期可能会发生变化。这些都可以帮助我们更好的理解业务。

4)接下来,在限界上下文中,不同的业务概念会存在对应关系,如上图中一个航班对应多个旅客,而一个航班对应一个超卖策略。

面对这样的业务模型和对应关系。云巧工坊提供了蓝图绘制工具,可以在线进行模型设计,将业务模型准确的设计为软件模型,并且自动生成可供开发人员维护的代码。

云巧工坊蓝图绘制

蓝图绘制

云巧工坊模型设计器:可以根据梳理好的业务模型,设计每个业务概念中的属性,不同的业务概念设计整合为一个限界上下文(聚合)。

通过业务概念之间的对应关系,模型设计器可以准确表达业务。同时,设计器会自动为当前模型生成代码,方便研发人员进行开发工作。


最后

两句话分享给大家,路漫漫其修远。

“It’s developers understanding, not your knowledge that becomes software!”

软件产品的效果和功能是基于开发人员的理解,而不是你的知识

Building a software is a learning process, working code is a side effect

软件开发是一个学习的过程,而可工作的软件只是众多学习成果中的一个

Alberto Brandolini

相关文章
|
数据可视化 IDE 安全
云巧-让开发更简单,更高效,更方便
近年来,快速迭代的新需求将引导企业改变其开发方式,进而转向使用支持快速、安全和高效的技术架构,组装式应用便成为了企业重要的战略技术趋势。组装式应用引入模块化的理念,使得各企业可以更敏捷、更有效地复用能力模块,提高商业的韧性和效率。云巧平台应运而生,能极大的改善开发环境,节省开发工作量,让开发更简单,更高效,更方便。
2336 0
|
开发框架 监控 安全
webshell检测方法归纳
webshell检测方法归纳
1143 0
|
缓存 运维 安全
云巧组件标准
可组装式应用的理论,结合了云原生的理念和交付质量要求,云巧对云巧组件设计了六大维度的标准。根据这六大维度名称的英文首字母组成单词ACCORD
2791 0
|
Linux 开发工具 Windows
CentOS8 64位系统 搭建内网穿透frp
【10月更文挑战第23天】本文介绍了如何在Linux系统上搭建frp内网穿透服务,并配置Windows客户端进行访问。首先,通过系统信息检查和软件下载,完成frp服务端的安装与配置。接着,在Windows客户端下载并配置frpc,实现通过域名访问内网地址。最后,通过创建systemd服务,实现frp服务的开机自动启动。
1140 20
|
自然语言处理 搜索推荐 算法
UniMS-RAG:用于个性化对话的统一多源RAG框架
RAG领域已经取得了相当大的发展,这篇论文的是如何分解RAG过程,加入多文件检索、记忆和个人信息等定制化的元素。
511 1
|
关系型数据库 API Apache
Flink CDC:基于 Apache Flink 的流式数据集成框架
本文整理自阿里云 Flink SQL 团队研发工程师于喜千(yux)在 SECon 全球软件工程技术大会中数据集成专场沙龙的分享。
22891 11
Flink CDC:基于 Apache Flink 的流式数据集成框架
|
算法 数据可视化 数据挖掘
算法金 | 一个强大的算法模型:t-SNE !!
**t-SNE算法简介** t-SNE(t-Distributed Stochastic Neighbor Embedding)是一种非线性降维技术,用于高维数据的可视化和结构保留。它通过保持高维数据点间的局部相似性来创建低维表示,尤其适用于揭示复杂数据集的模式。算法的关键在于使用高斯分布计算高维相似性,而用t分布计算低维相似性,并通过最小化Kullback-Leibler散度来优化低维空间的位置。t-SNE在图像、文本和生物信息学等领域有广泛应用,但计算复杂度高,不适合大规模数据。
507 6
算法金 | 一个强大的算法模型:t-SNE !!
|
运维 前端开发 Java
云巧组装式交付介绍
Gartner在2021年10月19日,正式发布了2022年重要战略趋势。其中包括了“组装式应用”这一战略。 云巧是“组装式应用”理念的落地,是围绕生态,面向产业的首个产业数字组件中心。 你可以从本文了解组装式开发的理念,以及阿里云GTS通过组装式理念交付项目的最佳实践:云巧。 如果你是阿里及阿里云生态合作伙伴的开发者,可以进一步访问云巧首页:https://gts.work/portal/yunqiao ,进一步了解云巧的能力。 即使你不是阿里及阿里云生态合作伙伴的开发者,也可以在自己的日常的开发过程中通过运用可组装式理念提升业务交付效率。
6473 1
云巧组装式交付介绍
|
缓存 监控 安全
Linux top命令详解:持续监听进程运行状态
Linux top命令详解:持续监听进程运行状态
632 3