界限上下文识别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

DDD领域驱动设计(领域,子域,界限上下文)_ddd领域上下界限-CSDN博客

目录

 1从业务边界识别限界上下文

1.1语义相关性

1.2功能相关性

1.3为业务边界命名

2从工作边界识别限界上下文

3从应用边界识别限界上下文

3.1质量属性

3.2重用和变化

3.3遗留系统

3.4设计驱动力

4理解限界上下文


限界上下文就是“边界”,这与面向对象设计中的职责分配其实是同一道理。限界上下文的识别并不是一蹴而就的,需要演化和迭代。通过从业务边界到工作边界再到应用边界这三个层次抽丝剥茧,分别以不同的视角、不同的角色协作来运用对应的设计原则,会是一个可行的识别限界上下文的过程方法。整体过程如下图所示:

 1从业务边界识别限界上下文

领域驱动设计围绕着“领域”来开展软件设计。在明确了系统的问题域和业务期望后,开发团队与领域专家经过充分地沟通与交流,可以梳理出主要的业务流程,这些业务流程体现了各种参与者在这个过程中通过业务活动共同协作,最终完成具有业务价值的领域功能。显然,业务流程结合了参与角色(Who)、业务活动(What)和业务价值(Why)。在业务流程的基础上,我们就可以抽象出不同的业务场景,这些业务场景又由多个业务活动组成,我们可以利用前面提到的领域场景分析方法剖析场景,以帮助我们识别业务活动,例如采用用例对场景进行分析,此时,一个业务活动实则就是一个用例。

例如,在针对一款文学阅读产品进行需求分析时,我们得到的业务流程为:

登录读者根据作品名或者作者名查询自己感兴趣的作品。在找到自己希望阅读的作品后,开始阅读。若阅读的作品为长篇,可以按照章节阅读,倘若作品为收费作品,则读者需要支付相应的费用,支付成功后可以阅读购买后的作品。在阅读时,倘若读者看到自己喜欢的句子或段落,可以作标记,也可以撰写读书笔记,还可以将自己喜欢的内容分享给别的朋友。读者可以对该作品和作者发表评论关注自己喜欢的作品和作者。

注册用户可以申请成为驻站作者。审核通过的作者可以在创作平台上发布自己的作品,发布作品时,可以根据需要设置作品的章节。作者可以在发布作品之前预览作品,无论作品是否已经发布,都可以对作品的内容进行修改。作者可以设置自己的作品为收费或免费作品,并自行确定阅读作品所需的费用。如果是新作品发布,系统会发送消息通知该作者的关注者;若连载作品有新章节发布,系统会发送消息通知该作品的关注者。驻站作者可以为自己的作品建立作品读者群,读者可以申请加入该群,加入群的读者与作者可以在线实时聊天,也可以发送离线信息,或者将自己希望分享的内容发布到读者群中。注册用户之间可以发起一对一的私聊,也可以直接给注册用户发送私信。

通过对以上业务流程进行分析,结合在各个流程环节中需要的知识以及参与角色的不同,可以划分如下业务场景:

       阅读作品创作作品支付社交消息通知注册与登录可以看到,业务流程是一个由多个用户角色参与的动态过程,而业务场景则是这些用户角色执行业务活动的静态上下文。从业务流程中抽象出来的业务场景可能是交叉重叠的,例如在读者阅读作品流程作者创作流程中,都牵涉到支付场景的相关业务。

       接下来,我们利用领域场景分析的用例分析方法剖析这些场景。我们往往通过参与者(Actor)来驱动对用例的识别,这些参与者恰好就是参与到场景业务活动的角色。根据用例描述出来的业务活动应该与统一语言一致,最好直接从统一语言中撷取。业务活动的描述应该精准地表达领域概念,且通过尽可能简洁的方式进行描述,通常格式为动宾形式。以阅读作品场景为例,可以包括如下业务活动:

查询作品

收藏作品

关注作者

浏览作品目录

阅读作品

标记作品内容

撰写读书笔记

评价作品

评价作者

分享选中的作品内容

分享作品链接购买作品

一旦准确地用统一语言描述出这些业务活动,我们就可以从如下两个方面(语义相关性功能相关性)识别业务边界,进而提炼出初步的限界上下文:

1.1语义相关性

从语义角度去分析业务活动的描述,倘若是相同的语义,可以作为归类的特征。语义相关性主要来自于描述业务活动的宾语。例如,前述业务活动中的查询作品、收藏作品、分享作品、阅读作品都具有“作品”的语义,基于这一特征,我们可以考虑将这些业务活动归为同一类。

       识别语义相关性的前提是准确地使用统一语言描述业务活动。在描述时,应尽量避免使用“管理(manage)”或“维护(maintain)”等过于抽象的词语。抽象的词语容易让我们忽视隐藏的领域语言,缺少对领域的精确表达。例如,在文学阅读产品中,我们不能宽泛地写出“管理作品”、“管理作者

限界上下文(Bounded Context ) 领域驱动设计(DDD)及限界上下文(Bounded Context) 阅读详情

相关推荐

限界上下文简析

一 基本概念 核心域:整个业务领域的一部分,是促成业务领域的主要因素,一个产品要有竞争优势需要在核心域上胜人一筹 支撑子域:通常在开发中,我们会创建或购买某个限界上下文来支撑我们的业务,如果这样的限界上下文对应业务的某些重要但非核心方面,这便是一个支撑子域 通用子域:如果一个子域被用于业务整个系统,那么它便是一个通用子域 问题空间:是领域的一部分,在问题空间中,需要思考的是业务所面临的调整。对问题空间的开发将产生一个新的核心域。对问题空间的评估应该同时考虑已有子域和额外所需子域,因此问题空间是核心.

xad669475795的博客 4008

DDD实战(4):战略设计之系统上下文和限界上下文

到上篇《DDD 实战 (3):整体工作框架和全局需求分析》为止,我们已经完成了“群买菜”在“问题空间”的全局分析,本节开始进入“解空间”映射。我将用两节的篇幅来讲解“群买菜”的战略设计。首先,对战略设计的理论知识做一个浓缩性介绍;其次,分三节介绍“群买菜”的 DDD 战略设计,包括:本节介绍系统上下文定义、限界上下文识别;下节介绍“群买菜”限界上下文映射、系统分层架构;最后一节介绍群买菜“战略层技术决策”。

hangsun的博客 2294

【DDD】领域驱动设计中的限界上下文

【DDD】领域驱动设计中的限界上下文 ​ 承接上文,我们知道了,在确定好研究的领域后,我们可以进行粗粒度的拆分,可以将领域拆分成不同的子域,不同的子域又承担着不同的业务职责,根据重要性,可以将子域分为 核心域、支撑域和通用域,一般来说,我们要将重点放到核心域的开发与集成上。 ​ 在DDD中,一个领域被分为若干子域,领域模型是在特定的场景中来设计的,这个场景固定了业务的范...

Old Wang的博客 3159

03 | 限界上下文:定义领域边界的利器

这篇文章重点介绍一下“限界上下文”。

zgz15515397650的博客 1068

领域驱动设计-- 界限上下文

界限上下文 我们怎么去划分界限上下文 我认为通过从业务边界到工作边界再到应用边界这三个层次抽丝剥茧,分别以不同的视角、不同的角色协作来运用对应的设计原则,会是一个可行的识别限界上下文的过程方法。 从业务边界到我们的界限上下文,根据上图的过程展示梳理出来流程: 在明确了系统的问题域和业务期望后,开发团队与领域专家经过充分地沟通与交流,可以梳理出主要的业务流程 — 这一阶段需要梳理和输出...

K-Darker的专栏 2701

领域驱动设计(DDD)【25】之界限上下文:初学指南

领域驱动设计(DDD)之界限上下文:初学指南

缘友一世的博客 1506

ddd中的子域和界限上下文

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33860722的博客 812

《领域驱动设计精粹》读书笔记之第二章《运用限界上下文与通用语言进行战略设计》

一些概念 界限上下文是语义和语境上的边界,这意味着边界内的每个代表软件模型的组件都有着特定的含义并处理特定的事务。 当界限上下文被当作组织的关键举措进行开发时,该上下文即被称为核心域。 核心域的识别是一个持续的精炼过程,把一堆混杂在一起的组件分离,以某种形式提炼出最重要的内容,这种形式也将使核心域更具价值。 PS:核心域的提炼是软件设计中的重中之重。 限界上下文的领域模型往往具有独立的业务价值,...

yongshou614423的博客 538

领域驱动设计实践(4)- 上下文映射图

一个典型的上下文映射图

keep_learn的专栏 838

微服务架构设计模式~根据子域进行服务拆分

子域 领域驱动为每个子域定义单独的领域模型。子域是领域的一部分,领域是DDD中用来描述应用程序问题域的一个术语。识别子域的方式跟识别业务能力一样:分析业务并识别业务的不同专业领域,分析产出的子域定义结果也会跟业务能力非常接近。 限界上下文 DDD把领域模型的边界称为界限上下文(bounded context)。界限上下文包括实现这个模型的代码集合。当使用微服务架构时,每一个界限上下文对应一个或者一组服务。 ...

小强快跑~~ 444

形式语言和自动机

字符串 连接 次方幂 闭包运算 形式语法的类型 正则文法 上下文无关文法 上下文有关文法 无约束文法

江西师范大学-20届-吴悠 277

知识图谱1-序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别

Ref:https://www.cnblogs.com/Determined22/p/7238342.html 命名实体识别(Named Entity Recognition) 命名实体识别(Named Entity Recognition, NER)是 NLP 里的一项很基础的任务,就是指从文本中识别出命名性指称项,为关系抽取等任务做铺垫。狭义上,是识别出人名、地名和组织机构名这三类命名...

qfikh的博客 4591

DDD(领域驱动设计)系列主题:基于DDD微服务架构构建旅程

目录 阶段一:识别业务领域和子域及其类型 阶段二:定义业务界限上下文 阶段三:分析业务界限上下文之间的依赖关系 阶段四:基于子域进行领域建模分析,构建聚合并形成服务 阶段五: 设计微服务和微服务分层架构 DDD分为战略设计和战术设计两个部分,今天我就介绍一下战术设计这个部分。 战术设计就是将战略设计阶段产生的输出进行微服务架构落地的过程。 以下是基于DDD的微服务架构构建旅程,分为五个主要的阶段: 识别业务领域和子域及其类型 定义业务界限上下文 分析业务界限上下文之间的依赖关系 .

Larry的博客 1279

《学习领域驱动设计》软件架构向业务策略看齐(Vlad Khononov)

学习领域驱动设计

sokia007的专栏 267

基于上下文图的策略性领域驱动开发(转自:http://www.infoq.com/articles/ddd-contextmapping)

英文原文:Strategic Domain Driven Design with Context Mapping   作者:Alberto Brandolini 译者:韩锴 发布于 2010年4月6日   简介   当应用程序逐渐变得庞大和复杂后,很多面向对象建模的方法都达不到非常好的可伸缩性。上下文图(Context Mapping)是一种通用目的的技术,作为领域驱动开发大家族

tyb1222的专栏 1367

java 业务界限划分_领域驱动设计: 服务边界划分

DDD是什么?领域驱动设计是一种处理高度复杂域的设计方法,试图分离技术实现的复杂性,围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演化等问题。团队应用它可以成功地开发复杂业务软件系统,使系统在演进时任然保持敏捷。另外一种解读:DDD不是语言,不是框架,不是架构,而是一种思想,一种套路,它可以分离业务复杂度和技术复杂度,DDD也并不是一个新的事物,它是面向对象的拔高,最终目标还...

weixin_39676979的博客 477

中台与DDD

中台与DDD 概念 什么是中台 按照可复用原则,将通用的、可复用的能力沉淀到中台,完成企业级业务模型重构 中台落地的技术实现有很多种,当前微服务架构是公认的最佳实践。 中台本质是业务领域的子域 微服务与DDD是共生关系 微服务提倡将应用进行服务化拆分,通过业务领域边界实现服务边界的划分。 而微服务的拆分困境在于不知道业务或者应用的边界在什么地方 DDD恰好提供一种基于业务界限上下文边界来划分业务的方法 DDD是一种设计方法,微服务是一种架构风格,两者都是为了追求软件的高响应力,从业务视角去分离应用系统

freshrookie的博客 1411

30. 技术专题-‌架构设计-DDD领域驱动设计

DDD(domain driven design)领域驱动设计‌。领域分组识别基于专业知识领域和组织结构的分组识别场景识别业务场景识别流程->识别业务主流程->识别交互级流程->业务状态迁移分析事件->事件风暴输出(角色、上下文、读指令/指令、事件、实体)->做业务聚合->识别聚合根架构推导->架构雏形(聚合根)->架构雏形(领域服务)->架构雏形(应用级别)->重叠度分析->共通演化->模型转数据库微服务落地->工程落地。

princemilo的博客 1155

TID大会学习心得之敏捷软件架构-微服务

敏捷微服务构建 王威: TW咨询师、架构转型教练、敏捷技术教练 敏捷的目标 敏捷的目标是提升效率?降低成本?减员增效? 敏捷:关注价值、快速反馈、快速响应。其的目标是提升响应力,响应力的提升不一定会提升效率、降低成本、减员增效 敏捷追求的是加速度,而不是速度(个人理解)。短期来看加速度不能提升速度,甚至会降低速度,但长期来看加速度可以提升速度! 敏捷的软件架构...

weixin_33898233的博客 209
上一篇: DDD领域驱动设计(领域,子域,界限上下文)
下一篇: kotlin android开发
步基
博客等级 码龄18年 1万+粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值