领域建模的重要性 以数据为中心的应用程序开发,面向过程分析方法的核心在于对数据库的设计。 而现在以面向对象的方式进行分析(OOA,OOD)时,领域建模就替换了上述方法的地位。 (需求和领域建模,是相互促进的两个过程。) 如何建模 1.首先应该以画图的形式进行建模。 2.对各个模型进行准确的定义。 定义时,可以使用interface+comment的形式(定义清晰的接口,可以当作文档看待。)。
随着业务的变化、系统设计也要演进升级。好的架构设计一定演化来的,不是一开始就设计出来的,但系统演进过程中的成本,一定是最开始的设计决定的。一个健康公司的成长,业务横向、纵向会发展的会越来越复杂,支持业务的系统也一定会越来越复杂。在领域驱动设计中,域模型对应的是业务模型,是系统架构的内核,通过域模型来驱动与外界的交互。
我们一提及领域建模,就好像回到了石器时代。然而这个谜题至今还未解决,就好像穴居人的生存方式,我们只能猜测、推测以及演绎,却不能真实复现。 没有教会领域建模的方法,只有可意会不可言传的感觉。之所以还要提方法,不过是事后诸葛亮而已。 故而,我无法解答这是否“真相”,或许我以为找到了,其实不过是火堆将领域建模的方法投影到墙上,而我凑巧是那个被锁着的囚犯。 行文至此,其实我仅仅提出了问题。
在运行性能方面:围绕数据库分析设计容易导致软件运行时负载集中在数据库端,系统性能难于扩展(走上集中式、昂贵的、高风险的大型机模式), 闲置了中间件J2EE服务器分布式集群处理能力,就是使用了集群,也分担不了负载 以EJB2为例子,在EJB2过去大部分系统中,我们常常以数据库为中心,实体Bean因为特殊技术原因,僵硬一块,变成数据库 的代名词,我们围绕实体Bean编制出大量的值对象Vale Obejct,或称为DTO 现在,要彻底改变过来,OO就是以对象为主,数据库是从属对象设计的,如果说EJB2的实体bean技术让你不得不走上传统过程化编程歧路,那么 EJB3已经更正了实体Bean设计缺陷,从EJB发展可以看到一个侧面 领域建模属于与具体.NET或Java技术无关的设计思想,有人总是说:.NET比Java简单,其实这又是一个大误区,如果都达到同样设计水准,无论使用.NET或Java,都需要付出同样的努力;那为什么有人觉得 基本三层:表现层、业务层和持久层 ;J2EE中表现层和持久层有成熟框架支持,应用重点在业务层。
modeling-languages.com/sysml-extension-ecad-electrical-cable-design/ 作者 Jordi Cabot 对ECAD(计算机辅助电子设计)的核心概念做了领域建模 图2 ECAD元模型 ? 图3 SysMLe Profile类图 ? 图4 SysMLe Profile语法和图形演示 该扩展机制已经在建模工具Papyrus中实现。 ?
领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系。概念比较深奥,其实说白了就是我们把基于对业务的理解画成一个类图,并画出这些类之间的关系(面向对象)。
逸言 | 逸派胡言 本文是函数式编程思想与领域建模的第一部分,重点讲解代数数据类型与领域模型之间的关系。
领域建模的过程,是模型驱动设计的过程,也是迭代建模的过程。 不可妄求一蹴而就能获得完整的领域模型,也不可殚精竭虑地追求领域模型的尽善尽美。 领域建模的分析、设计和实现是循序渐进的增量建模,建模目标与侧重点也不尽相同。 领域分析模型负责捕捉表示领域知识的领域概念,明确它们之间的关系,形成反映现实世界的对象概念图。 聚合是领域建模阶段的基本设计单元。 ❀❀❀ ☼ 屐痕处处:摄于2021年2月3日,成都新津。
简而言之,威胁建模是一个围绕假想敌开展的领域建模活动。 一些常见的威胁(攻击向量)就像领域建模里最细粒度的组件一样,共同组成了假想敌的攻击树。 因此,相应地,威胁建模也是一个长期且需要坚持的过程,威胁建模本身所需时间并不长(通常来说,一个产品的威胁建模活动大概需要2个小时),但是其产出的威胁需求列表,常常需要上月甚至多个迭代的补足。
pdf文件下载:http://umlchina.com/training/umlchina_ddd_02_domainmodeling_structure.pdf
(2)识别对象 Note: 复用或者修改已有模型(比如:运输需求、计划、询价单、对账单、财务账单等); 行业、公司内概念列表(比如:社区团购、分拣、调度、询价、计费等); 名词。 -> 预排线包括多个团单,预排线 VS 团单= one vs many "如果有新增的商品则添加团单下的商品数据" -----> 团单下有多个商品,团单 VS 商品 = one vs many 图2.
2. 雪花模型,在星型模型的基础上,维度表上又关联了其他维度表。这种模型维护成本高,性能方面会差一些。 3. 星座模型,是对星型模型的扩展延伸,多张事实表共享维度表。 它可以直接描述 1:1、1:2和n:n的关系,而不需要做任何变更。它由 Hub的代理键、装载时间、数据来源组成。
pdf文件下载:http://umlchina.com/training/umlchina_ddd_03_domainmodeling_behavior.pdf
Tech 导读 DDD领域建模被各个大小厂商提起并应用,而每个人都有自己的理解,本文就是针对小白,系统地讲解DDD到底是什么,解决了什么问题,及一些建议和实践。 20多年前,顶尖的软件设计人员已经意识到领域建模和设计的重要性。尽管没有被清楚的表述出来,在对象社区涌动着一种新的思潮,Eric Evans把它称为领域驱动设计。 胀血模型优缺点: 该模型优点:1、简化了分层 2、也算符合OO 。 在面向过程,面向函数,面向对象的编程语言中,面向对象无疑是领域建模最佳方式。 2.9 领域驱动在中台业务分析中的实践 1、业务中台DDD领域 应用架构规范 2、业务中台使用DDD领域建模的愿景(架构分层) 3、现有系统使用DDD进行领域分析 4、数据结构模型边界的构建
操练题目:微信朋友圈权限领域建模操练 题目描述:为了提升开发人员编写正确的代码和用正确的方法编写代码的实践能力,可以使用逆向工程的思路和面向对象的分析、设计和编程(Object-Oriented Analysis , Design and Programming, OOADP)方法,为微信朋友圈权限(设置->朋友权限->朋友圈)中的“不让他(她)看”和“不看他(她)”两个功能进行领域建模,设计出包括属性和方法的领域类及其之间的关系 第2版,合译《混沌工程》动物书,撰写《软件研发效能权威指南》混沌工程章节。 软件开发过程中的科目和阶段与“领域建模7步法” 1 需求启发:微信朋友圈权限控制功能 2 系统愿景:识别价值和痛点 3 系统上下文:识别用户和依赖系统 4 责任风暴:梳理服务、责任和业务规则 5 领域模型
本训练强化分析和设计(领域建模和领域驱动设计)的技能,使软件组织迈向基于核心域的复用,降低开发维护成本。 以下是UMLChina参与(书上有UMLChina标记)的分析和设计(领域建模和领域驱动设计)相关的书籍。 ※训练费用※ 线下(现场)训练: 整个团队2天的训练总费用为48000元,讲师差旅费用和税费已包含在内。 线上(通过腾讯会议等)训练: 整个团队2天的训练总费用为36000元,税费已包含在内。 分析(领域建模) --建模方法学选择和基本概念 --提炼领域概念的要点 --核心域透镜 --DDD“新词”祛魅(通用语言、实体……) --提炼领域概念之间的关系 --不变式和对象约束语言OCL --彩色建模架构型介绍和应用 ) 《软件方法》 《Head First设计模式》第2版
背景 之前有同事在分享DDD在闲鱼商品详情页的实践时,大家对闲鱼团队领域建模关于商品详情页的聚合根建模表示不认同。 因为这是面向页面建模,不是面向领域建模,将微服务拆分和领域建模混为一谈了 于是我以聚合根定义作为引子,结合组内在实践DDD过程中,聚合根随着业务查询复杂而导致聚合根不断膨胀的问题,提出借鉴CQRS读写分离的理念 通常我们说领域建模不应该去考虑微服务架构,工程结构,应该专注于业务。 但在实践过程中发现这并不是一个好的方式,或者说是可落地的。 所以店铺是一个聚合根 case 2: 门店与门店商品 门店商品有自己的价格,返佣。需要单独编辑,是一个实体。脱离了门店后没有生命终结。 下期问题 目前我们只讨论了实体类型的聚合根,没有讨论业务过程的聚合根,比如转账 引用 https://www.jianshu.com/p/e6c2fdef8db6
用一句话讲领域建模的根本目的就是统一认识、减少沟通成本。 这句话听起来很简单,但其实有两个层面的含义:一是工程技术规范,指的是业内规范;二是业务认识,指统一业务、开发、测试、产品的认识。 然而要做到统一与规范是很难的,开发喜欢从技术层面去描述问题,产品习惯从业务层面描述问题,双方沟通成本较大,此时领域建模就能够起到“一图胜千言”的作用。 领域建模的关键是找到业务的流程节点,找到业务流程节点就成功了一半。正如在小学做阅读理解一样,重要的是概括文章中心思想和段落划分。 比如商品领域建模、优惠券领域建模等。 其次,模是模型,反映到业务上,模就是业务场景的映射,换言之,通过模型就能推导出业务场景,反之也一样,通过业务场景也能推导出模型,所以,不懂业务无法建模。 以上就是领域建模的三步方法,没有任何高深的理论,都是简单朴素的方法,但重要的是了解业务,因为领域建模源于业务,又服务于业务。
pdf文件下载:http://umlchina.com/training/umlchina_ddd_02_domainmodeling_structure.pdf
pdf文件下载:http://umlchina.com/training/umlchina_ddd_02_domainmodeling_structure.pdf