领域建模:分清问题域和问题解决域(上)

简介: 领域建模:分清问题域和问题解决域(上)

领域建模刍议(一):

分清问题域和问题解决域


领域与领域模型

俗话说,人人心中有一个Hamlet,人人心中也都有一个领域模型的定义。


常见的有:


说法1:我理解的领域是对业务工作进行归类划分,归类的方式是业务工作具有相关的知识,这些所需要的知识构成一个领域,这些知识是业务工作的背景,通过对领域的分析,可以帮助我们挖掘、分析、理解业务工作的本质。 也就是说,领域是为需求分析工作服务的,它的目的是挖掘、分析、理解业务工作的本质。


说法2:领域模型就是对领域内的概念类和现实世界中对象的可视化表示。

说法3:企业应用架构模式中明确提出了三种领域逻辑组织模式:事务脚本、领域模型和表模块。领域模型同时将行为和数据作为领域逻辑的核心。


从上面可以3种说法,可以看到不同上下文不同的观点,甚至未必是同一个表达对象。企业应用架构模式中的领域模型是设计到实现层的一个概念,而说法1,说法2种的领域是业务层面及分析阶段的一个概念。因此,本文特指[领域模式]为业务视角的模型,引用定义如下:


•     领域: 是相对于系统而言的,是系统要解决的现实问题。

     领域模型是对领域内的概念类或现实世界中对象的可视化表示(百度)

    领域模型是针对某个特定问题的所有相关方面的抽象模型(Wikipedia)


微信图片_20220121143315.jpg


思考,如何对上图的元素建模?

 

领域建模的好处

领域建模的好处,有哪些呢?


不同角色统一语言、统一认知


微信图片_20220121143338.jpg



如上图所示,客户需求历经演变之后已经面目全非,每一个加工制造环节都以为在[正确的做事]。君不见这样的生动局面一再上演:


产品经理宣讲prd,产品经理需要分别把名词翻译给业务方和开发人员,一则业务语言,一则技术语言。


几个架构师在小黑屋吵了半天,为了争论一个名词定义。比如什么是支付?百度百科的解释:社会经济活动所引起的货币债权转移的过程。包括:交易、清算、结算。

那么对于下列情况是否属于支付范畴就是可以根据其内涵来比照了。

  • 用户A转账给B。
  • 用户通过某某网站还信用卡。
  • 用户在天猫购买了一个东西,使用花呗付款。

由此可见,显性的统一语言很重要,让干系人明白讨论的是一件事情。


对业务本质描述,抓到主旨

比如在支付宝渊源的发展过程中,我们先后使用有红包、实时优惠、商户优惠券等产品。这是烟囱式架构发展下的产物。


微信图片_20220121143354.jpg


行业也有其它类似券的东东,如下图所示:


微信图片_20220121143409.jpg


这3个产物我们锊一下:

1、     对于商户或者机构而言,这些是否可称之产品,可以面向商户售卖包括收费。

2、     对于用户而言,是否需要理解这3个东西不同的?这些认知对于营销,对于交易促成,对于品牌的好处是什么?

3、     对于支付宝平台而言,他们的管理模式有何区别?

4、     对于技术团队而言,他们是否可以抽象?

后来,我们在产品上形成了如下定义:

 

券定义:


是一种票据,作为券发行方和拥有方之间凭证,具有一定的价值和法律效应。


相关干系方:


券的发放方[提供权益]


券的拥有方[享受权益]


劵的发放工具[是券发行方向拥有方发放券凭证的工具]


券形式:


以介质分类:纸质券,电子券


以使用方式分类:入场券,礼品券,提货券,代金券、红包,打折卡,满减卡等


可以把券作为基础产品,在业务形态上可以包装为打折卡,满减卡等用户感知的[产品]或者是[营销工具]。

相关文章
|
缓存 前端开发 中间件
DDD 领域驱动设计落地实践系列:工程结构分层设计
前面几篇文章中,笔者给大家阐述了 DDD 领域驱动设计的三大过程,重点围绕如何通过战略设计与战术设计进行 DDD 落地实践进行了详细的讨论,但是还没有涉及到工程层面的落地。实际上所有的这些架构理论到最后都是为了使得我们代码结构更加清晰,从而开发出 bug 少、扩展性强、逻辑清楚的应用。因此本文就是为了解决 DDD 领域驱动落地实践最后一公里问题,将我们分析出来的领域模型通过与工程结构的映射实现真正的落地。
DDD 领域驱动设计落地实践系列:工程结构分层设计
|
12月前
|
缓存 NoSQL Java
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
为每个子领域定义限界上下文(bounded context),限界上下文是一个清晰定义了领域模型的边界的范围。在限界上下文内,领域模型的概念是一致的,但不同限界上下文之间可以有不同的模型和语言。界限上下文,基本可以对应到 落地层面的 微服务。这就是 DDD 建模和 微服务架构, 能够成为孪生兄弟、 天然统一的原因。具体的方法论和落地实操,请参考 《第34章视频 DDD学习圣经》DDD 战略设计的第一步就是统一语言,也叫通用语言(UBIQUITOUS LANGUAGE),用于定义上下文。
阿里面试:DDD 落地,遇到哪些 “拦路虎”?如何破局?
|
云安全 存储 安全
带你读《阿里云安全白皮书》(二十二)——云上安全重要支柱(16)
在全球化背景下,阿里云高度重视云平台的安全合规建设,确保客户在不同地区和行业能够满足监管要求。阿里云通过140多项安全合规认证,提供全面的专业安全合规服务和便捷高效的安全合规产品,帮助企业高效且低成本地实现安全合规目标。更多详情可参见阿里云官网“阿里云信任中心 - 阿里云合规”。
|
JavaScript Java 数据库
企业微信接入系列-扫码绑定/登录
讲述在企业后台管理平台账号绑定企业微信以及企业微信扫码登录企业管理平台
企业微信接入系列-扫码绑定/登录
|
架构师 数据安全/隐私保护
深入探索领域分析:从问题空间到核心域
深入探索领域分析:从问题空间到核心域
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
226 0
|
机器学习/深度学习 人工智能 自然语言处理
💡思维碰撞新纪元:AI如何激发职场创新灵感,让创意无限飞?
【8月更文挑战第1天】在科技飞速发展的当下,人工智能(AI)正深刻变革职场创新模式。本文对比传统与AI赋能的创新思维,展现AI如何突破界限,激发无限创意。从数据驱动的洞察到跨领域融合,再到自动化提升效率,AI让创新变得更加科学与系统。通过概念性示例,展示AI辅助下的创意生成过程,呈现AI助力下职场人士探索未来的无限可能。
452 0
|
移动开发 HTML5
HTML5中的audio在手机端和微信端的不能自动播放
再做H5页面的时候,发现audio在手机端和微信端添加了autoplay以后还是不可以自动播放,这是因为手机端为了节约流量所设置的
|
机器学习/深度学习 人工智能 算法
这篇科普让你Get所有大模型的基础核心知识点
本文介绍了AI大模型的概念和发展历程。AI大模型是指具有1亿以上参数的机器学习模型,通过在大规模数据集上进行预训练,可以直接支撑各类应用。大模型的发展经历了从萌芽期到AI1.0时期,再到AI2.0时期的飞跃,目前最新发布的大模型参数已经达到了千亿甚至万亿级别。国内外的公司都在积极研发和应用大模型,如OpenAI、Google、Facebook、Microsoft等。国内也有百度、阿里巴巴、万维、商汤科技等公司发布了自己的大模型产品。大模型的建造离不开算力资源、算法人才、数据积累等核心要素。此外,文章还列举了一些与大模型相关的专业名词,如算法、模型参数、训练数据、Token等。