聊一聊对领域驱动设计中“领域”这个词语的理解与分析方法

1. 什么是领域

百度百科对领域的解释:领域具体指一种特定的范围或区域

领域一般指的是业务的问题域,领域是有边界的,边界内,规定了我们要做什么,要做的范围,软件项目从开始到交付的过程中, 所有涵盖的业务,每个业务模块或者方向都有自己的业务范围和问题

  • 比如做家装行业的公司进行软件系统研发,那么公司的业务的范围都是跟家装相关的,大的领域就是家装领域

2. 什么是子域

想一想面对复杂问题时,如何去解决的,会想到一个常用的方法,把一个复杂的问题,按照一定的关系,逐步分解,逐步的解决问题

做软件工程也是这样,面对一个复杂的领域,也需要对领域进行划分,划分出来的领域就叫做子域

核心思想就是将问题域逐步分解,降低业务理解和系统实现的复杂度

  1. 把复杂的领域,根据业务模块,业务方向等划分,划分为一个个小的,且能解决的子域,每个子域都有自己的业务范围和边界,以及需要解决的问题
  2. 子域也可以继续划分和细化

在领域逐步划分成子域的过程中,子域可以根据自身重要性,功能属性,商业价值等,划分为三类子域,它们分别是:核心域、通用域和支撑域

核心域、通用域和支撑域 其实就是子域上的一个标签属性识别核心域比较重要,通用域和支撑域 看起来就是依赖关系

为什么要划分核心域,通用域,支撑域

  1. 核心域、支撑域和通用域的主要目标是:通过领域划分,区分出子域的功能属性和重要性,从而公司可对不同子域采取不同的资源投入和建设策略,其关注度也会不一样
  2. 划分核心域:重要性很高,是系统成功失败的关键指标,投入优质的资源,重点建设,一些系统的核心域可能包含很高的商业价值
  3. 划分通用域:是为了更好的复用
  4. 划分支撑域:支持其他子域的建设

3. 进行领域分析可能有用的方法(更偏向于B端)

领域和领域的划分,都是属于问题空间,更偏向于业务侧,必须要掌握一定的业务知识,或者能全面的了解到业务

业务侧存在很大的信息差距,尽量取得领导的支持,多参与业务的讨论和分析,多与产品沟通

  1. 很空的一个词语 “商业模式”,就是要搞清楚,企业是怎么赚钱的,途径有哪些,用户群体,给用户提供的服务以及产品,成本结构是怎样的,重要的合作伙伴,做这个项目准备投入多少资源等 可以使用商业模式画布来整理

    • 这里存在很大的信息差距,除非是高级的管理人员,或者外部咨询师,不然很难了解全貌(需要一定的软实力)
    • 一般开发人员接触的信息比较少,尽量和产品或者leader沟通,获取更多的信息,这一步还是比较重要,至少知道公司大概是做啥的,主要业务是那些
  2. 了解项目的背景,愿景和目标,为什么要做,价值是什么

    • 这里存在很大的信息差距,除非是高级的管理人员,或者外部咨询师,不然很难了解全貌(需要一定的软实力)

    • 了解项目的愿景和目标,以及价值 ,提供方向,可以粗略的定位项目的范围,以及那些是要做的,提供决策的依据

    • 建设项目,需要大量的成本,那么公司为什么要做,肯定有必要的原由,能给公司带来一定的价值,具体的价值是什么

  3. 进行干系人的整理和分析,制定相应的访谈计划,了解业务,以及获取干系人的期望和目标

    • 输出干系人分析地图,可视化的展示干系人的信息,关系,联系方式等
    • 针对干系人制定访谈计划,了解业务流程,以及现在的痛点和期望
    • 输出业务流程图 ,也可以根据对干系人的了解,输出角色卡片
  4. 根据业务流程图,组织结构,项目资源,以及项目的愿景和目标,评估要做的范围和内容,大概会涉及到的模块和功能,以及评估时间

    • 带有泳道的业务流程图,可以表达出大概的业务流转情况,一起分析和筛选要做的内容,调整流程图
    • 根据业务流程和对业务的了解,对要做的内容,进行评估,需要那些功能,那些能力的支持,评估每个功能的时间
    • 结合项目的资源,组织结构,评估出大概的时间,以及迭代计划,领导比较关心这个

通过这几个步骤,了解业务的全景,这样就可以根据 组织结构,资源,业务模块,业务方向等划分领域,根据商业模式和项目的愿景与目标,以及价值,定位 核心的业务模块与方向,核心的业务模块与方向 就是核心域

posted @ 2023-04-14 09:21  往事随灬锋  阅读(732)  评论(0编辑  收藏  举报