上海品茶

您的当前位置:上海品茶 > 报告分类 > RAR报告下载

2019年领域驱动设计峰会嘉宾演讲PPT资料合集.rar

编号:97281 RAR 87.47MB 下载积分:VIP专享
下载报告请您先登录!

2019年领域驱动设计峰会嘉宾演讲PPT资料合集.rar

1、By?Experience?模?01?A?02?B?03?04?模?模?05?DDD?模?THANK YOUDDD和功能解耦京东7FRESH阎华1.2.3.4.5.为什么选择DDDDDD和系统解耦DDD和统一语言总结我们为什么选择DDDY轴扩展性成为瓶颈低内聚高耦合领域模型不合理影响Y轴扩展的两个因素这意味着Y轴的扩展要灵活我们为什么选择DDD问题一:领域模型不合理错误的数据结构错误的业务约束缺乏业务语义的模型没有发现隐式的概念产品经理关注上层的业务流程和交互程序员关注技术实现我们为什么选择DDD问题二:系统功能间的各种耦合ABA的数据AB全局数据Content CouplingCommon

2、CouplingABB不需要Stamp CouplingB需要ABData CouplingB需要数据格式由B来定义耦合的类型但是DDD落地很难让整个团队弄清楚复杂而抽象的方法论,太难了那怎么办?简化,小步,例子多而是面向对象分析和设计最先要普及的不是DDD|二十多年前人们就推崇用值对象了|那时DDD还没有诞生Primitive Obsession|基本类型偏执|2000年这种坏味道是指用基本类型来表示领域概念,比如用字符型来表示电话号码、邮政编码等解决办法是定义明确ValueObject。https:/riehle.org/computer-science/research/1998/ubi

3、lab-tr-1998-10-1.html丰富的表达力降低认知负担提升可读性集中的合集中的合法性校验法性校验和易测试和易测试性性比如电话号码的比如电话号码的校验校验不可变性带来的线程安全封装带来封装带来的设计柔的设计柔性性后面会有实际的后面会有实际的例子例子|Since|1997年|实体和聚合早就被广泛认可了富血模型贫血模型|很多原则和模式在系统级别依旧有效设计原则依赖倒置开放封闭单一职责信息隐藏设计模式工厂适配器策略状态架构模式分层架构整洁架构/洋葱模型端口适配器架构CQRS|面向对象富血模型没落史|1980s,Smalltalk/C+带领下面向对象广泛流行|1991,Visual Basi

4、c 出现属性和属性列表功能|1992-1995,可视化工具和IDE遍地开花|1996,JDK1.0发布|1997,JavaBean规范发布|1998-,Java和.NET平台出现大量的通过反射|机制处理对象属性的工具和框架FROM实现领域驱动设计|背后的驱动力专业的单机软件向以数据为中心的网络软件的演变理论上,使用DDD并不一定要通过面向对象,但实战中,使用面向对象进行分析设计是最务实的。那么,DDD在面向对象之外还带来了哪些新的东西?首先要理解的是限界上下文该了解些DDD最核心的概念了|案例分析1:概念不能穿透上下文123除了更好的表意性外有更好的扩展性|案例分析1:变化控制在局部APICo

5、ntroller数据库领域层业务逻辑代码不用变企业客户适配器企业客户适配器用户适配器API适配器u 只有适配器部分的代码需要变化,包含业务逻辑的领域层代码不需要变化u通过编译器的静态类型检查,适配器的变化点很容易识别u适配器充当防腐层(ACL),起到了概念隔离和功能解耦的作用RPCRPC|案例分析2:上下文关系和Common Coupling订单订单生产控制中心WMS餐饮TMS购物卡读取订单上的标记读取订单上的标记读取订单上的标记读取订单上的标记交易服务按各系统的需要生产订单时在订单上打标记“订单标记委员会”分布式大泥团系统的守护神标记太多位,含义二义性,新增需求改动的系统太多,影响范围难以界

6、定,沟通成本非常高|案例分析2:上下文关系和Common Coupling订单订单生产控制中心WMS餐饮TMS购物卡交易服务UDUUUUUUDDDD自己领域的守护神自己领域的守护神自己领域的守护神自己领域的守护神自己领域的守护神清晰的上下文映射关系,下游理解上游的领域概念,上游不理解下游的领域概念,上游制定标准,下游适配标准。*在DDD的上下文映射中,我们优先使用这种“客户-供应商”的模式。D,下游;U,上游|案例分析2:进一步要避免的问题WMSTMSUDWMS产品研发TMS产品研发WMSTMSUDWMS产品研发TMS产品研发下游要保持独立性,需要使用适配器/防腐层TMS不需要TMS需要数据上

7、游“老好人”,边界没守住,造成Stamp Coupling|案例分析1&2:系统间的依赖倒置/ACL保证Data Coupling数据库领域层业务逻辑用户适配器RPCAPIController领域层业务逻辑API适配器(D)下游(U)上游下游定义的接口适配上下游接口的实现|案例分析3:上下文级贫血和Control Coupling订单生产控制中心订单订单生产控制中心订单外部调用或消息1.获取订单数据做逻辑判断2.设置订单状态3.操作其它系统外部调用或消息1.给订单状态机输入可枚举的事件2.监听得到订单状态的变化3.操作其它系统|案例分析4:聚合根的作用聚合根是一组实体和值对象的一致性边界。在这

8、个边界之内维护不变条件,即业务规则。这不是DDD引入的新原则,聚合就该如此。DDD的新原则包括:n 通过唯一标识引用其他聚合n 在边界之外使用最终一致性(比如通过领域事件),一个事务只能修改一个聚合聚合的识别很难,领域事件、领域服务和CQRS的正确应用可以减少技术因素对聚合根识别的干扰。这样做的好处是能更好地支持架构的演进其次要理解的是统一语言该了解些DDD最核心的一些概念了|领域太复杂,只有在分割的上下文内|才可能形成统一的语言|物理世界在不同上下文代表着|不同的概念店仓厨房拣货打包车间让开发者做回正常人控制节奏,慢下来很难但很重要学会问问题,挖掘隐形概念命名很难,那就随便给个名字先达成一致

9、统一语言的形成|使用事件风暴形成统一语言隐形概念的挖掘,聚合根的识别等都非常难且难以达成一致,仅仅在方法论上达成一致还不够,我们需要一种容易执行的工具|代码和分析模型的低表示差异聚合根值对象领域事件普通实体Repository接口Repository实现应用服务业务模型和业务逻辑都在这里业务模型和业务逻辑都在这里应用服务应该很“薄”和技术相关的实现|没有一个完美的ORM可以用JPA/Spring-Data-JDBC 富血,但性能不可控JDBC/MyBatis 性能可控,贫血RoR/Domain注入Repo(AspectJ),貌似解决以上问题,但污染领域模型|用JPA来实现,好处/坏处:富血模型

10、 聚合根的原则 但带来了糟糕的或不可控的性能|权衡应用层的方法聚合根助手的方法聚合根的方法应用层尽可能薄,不包含领域层的业务逻辑每个聚合根配一个无状态的助手,和聚合根一起体现所有的领域业务逻辑如果开始分不清代码放在哪一层,可以先实现然后通过重构渐进下沉界定上下文并明确其间的关系挖掘领域知识,识别隐型概念,定义聚合根,形成团队理解一致的统一语言让代码尽可能和分析模型保持一致未必能尽善尽美,但可以不断趋近THANKSDDDDDD?DDD?“?”?DDD?DDD?D?D?DDD?D?D?DDD?D?D?CRUD?VS?VS?B2C?APP?APP?CodeCodeUMLCodeCodeCodeCod

11、e?CRM?CRM?CRM?BC?p?e?p?e?-?-?g?g?p?B-?e?-?a?e?g?e?-?p?B-?e?-?a?e?g?e?-?t?g?t?g?Cn?Cn?B?A?O?O?A?B?A?B?A?B?I?e?rI?e?r?re?p?re?p?“Two Pizza”?UL?hold?AGRDO1DO2?=?AGR?XDO1?YDO2?Z?X=F(Y?Z)E-R?ACID?BASE?ACID?AGRDODOVO?AGRDODOVO?ACID?ACID?ACID?ACID?BASE?product.getPrice()?n+1?select?product?n+1?select?SQL?C

12、QRS?Query?.THANK YOU业务架构 跨领域的统一语言Domain战略目标Core Domain/SubdomainBounded Context领域建模价值流影响分析业务能力影响分析项目组合/项目Domain?Driven Design?Business Architecture业务架构V.S1.2.3.业务架构如何将战略转化为项目业务架构基本概念业务架构与DDD战略设计的关系?50?TasTast te e CoffeeCoffee?+?50%?-?-?-?!?产品?!?务?TC?TC?20?TC?2?50%?1?2?3?撑?Stakeholder?BIZBOK?Guide?7

13、.5?Capabilities?Value?Streams?Organization?Information?StakeholdersMetrics?Policies?Strategies?Products?Initiatives?BIZBOK?Guide?V7.5?VS?务?Human?Resource?历?描述企业为谁(即Stakeholder)提供什么价值,相当于企业级的业务用例 企业是运行中的复杂系统,价值流把不同Stakeholder的关注点分离出来,相当于把复杂系统切分成若干个简单系统Taste Coffee线上下单客户开发产品获取原材料生产产品优化库存执行营销活动获得产品生成订单

14、确认订单交付产品客户接收产品价值流阶段客户产品已获得触发Stakeholder价值主张订单已生成订单已确认产品已发货产品已签收价值项获得产品?Cross?Mapping 价值流与业务能力是两个独立存在的维度,二者之间没有因果关系,只有相关关系,即Cross Mapping 在每个价值流阶段下匹配业务能力,业务能力使能价值流实现价值客户管理消息管理产品管理请求管理产品管理营销活动管理消息管理订单管理产品管理渠道管理财务管理派送管理位置管理订单管理任务管理伙伴管理业务能力获得产品价值流提出需求询价下单验收示意?客户管理上下文客户管理消息管理上下文消息管理伙伴管理上下文伙伴管理财务管理上下文财务管理

15、产品管理上下文产品管理产品管理上下文业务能力获得产品子域(核心)获得产品价值流生产产品子域(支撑)生产产品价值流财务结算子域(支撑)财务结算价值流价值流?不局限于企业内部的组织结构,而是着眼于企业所处的业务生态,把内部组织和外部伙伴在一个模型上呈现出来 价值流、业务能力必须以独立于组织的方式描述业务,跨越组织壁垒往往是业务架构人员面临的最大挑战!企业业务单元伙伴图标财务MKTHR法务采购IT咖啡业务部烘焙业务部周边产品业务部咖啡杯制造商Taste Coffee价值主张交付价值项价值项价值项交付产出产出Outcome产出组织拥有价值项汇聚为价值主张价值流价值流细化为阶段价值流阶段价值流阶段价值流

16、阶段业务能力使能价值流阶段Outcome实现价值项业务能力业务能力业务能力业务概念业务能力使用并修改业务概念来源:BIZBOK Guide V7.5?DDD?执行视角WHYWHATHOW客户视角客户需求合规需求业务干系人需求客户诉求期望的结果战略视角战略客户视角价值流内部Stakeholder(功能领域)视角价值流阶段内部Stakeholder组织对外提供业务能力投资和解决方案视角项目价值(能力)差距视角需求解决方案架构解决方案交付产品&服务组合运营视角产品&服务交付产品&服务支持BU&LOB视角业务单元来源:Leveraging Business Architecture to Improv

17、e Business Requirement Analysis Business Architecture Guild,2014Core Domain/SubdomainBounded ContextDomain?DDD?3-5?THANKS中台规划的七种武器壹战略分解:中台的使命是什么?新零售电商全渠道 垂直品牌站点多元化业务单元多品牌全球化构建态内部能治理构建规模化创新体系供应链全周期打通业务统管理新零售电商全渠道 垂直品牌站点多元化业务多品牌全球化构建态内部能治理构建规模化创新体系供应链全周期打通业务统管理建设态,合作共赢撑实验,业务创新创新态移除孤岛,降本增效提效那作为企业的核战,中台

18、承载的使命和标到底是什么?精益价值树愿景组织为设置的发展愿景,“完成成功的投资之后的未来理想状态”标据竞争策略和发展策略,来定义战略标机会点机会点是为了达成相应标的点或创意;举措落实机会点的具体动机会点机会点标标标愿景举措举措举措关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果机会点机会点标标标愿景举措举措举措关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果关键成效结果举措机会点标愿景举措:构建集团户中台机会点:打通所有渠道的户信息标:提升已有客户粘性和活跃度愿景:让2亿过上健康活问题定义:能否通过构建户中台,

19、打通所有渠道的户信息,提升已有客户粘性和活跃度?贰价值主张:中台的愿景是什么?务?Legacy?务?产品愿景?产品愿景标客户/户是谁?聚焦要解决的问题?产品的外观和形态如何?相关竞品或已有解决案独特价值和优势是什么?产品成功的关键属性?产品愿景标客户/户是谁?聚焦要解决的问题?产品的外观和形态如何?相关竞品或已有解决案独特价值和优势是什么?产品成功的关键属性?前台产研团队?业务板?创新业务?移除孤岛?构建态?低代码/No代码?H5?API?MQ?统账户?稳定?架构前瞻性?当前的解决案是什么?新体验 旧体验+迁移成本?叁 业务现状:中台的切点是什么?影响者预算审批者决策者使者板预算委员会后台 系

20、统CTOCOO硬件 研发客服 中前台应 开发员最终户家庭户前台应 产品设计学校户各产品线 负责管理者和决策者前台产研负责前台开发员最终户澀洺倃暒賒倃繚扜宻壇預彎亶裌輗礪乁厭摲鈮倃泍誒鰢曫預覕穩嬮YYY亶膢!椨乀趨宻慶甂暒預銷暒銷喪扞洺5喪挀師洺4喪!暒鳩鰢BCD宻壇E樹抩趨憼仚暒彎亶慶顣澀鳩鰢慩圶!鉆鯀洍蚘辷嬍!澀蕘匫挀師炞壇汄繞鴇蚘慶壇瞴倃泍誒慶顣乀覰師敧3133瞴氌怇壇!管理者和决策者前台产研负责前台开发员最终户找到不同系价值的结合点产品愿景SYNERGY客户 旅程创造价值传递价值获得价值业务业务业务业务业务业务业务业务价值链找到不同业务的结合点客户 旅程创造价值传递价值获得价值业务业务业

21、务业务业务业务业务业务价值链找到不同系诉求的结合点客户 旅程找到中台的业务切点创造价值传递价值获得价值业务业务业务业务业务业务业务业务价值链?服务中?启动切梳理端到端的客户旅程确定聚焦价值切点梳理系关系,寻找价值结合点根据系诉求确定聚焦业务板块根据愿景和标切分聚焦价值链条肆 业务设计:中台落地的机会点在哪?客户旅程前台应1前台应2前台应3中台服务后台应业务需求 驱动 户需求 驱动 中台能需求线上场景线下场景场景1确定业务 场景范围分析 客户户现状 体验识别跨场景 通能设计服务 需求问题 和痛点归因 分层未来 体验识别场景 关键能场景X分析 客户户现状 体验问题 和痛点归因 分层未来 体验识别场

22、景 关键能伍 架构设计:中台架构案如何定?中台爆发背后体现的是 企业架构向平台型发展的趋势EventStormingDDD微服务+=中台应架构陆 需求全景:如何梳理中台产品的需求全景?业务场景业务户关联的业务场景所针对的业务户需要提供什么能描述所必需的资源和数据是什么资源数据户标业务户想要到达的标是什么服务特性?1?1?1?1?1?1?1?1?数据数据?需求 梳理?API?愿?API?柒 落地计划:如何构建中台的落地交付计划?MVP验证价值假设验证增假设 这个能是否的确是为最终户服务所需要的能?这个能提供的式是否为前台应所接受?前台应是否愿意为这个能“买单”?还有多少前台应想要为这个能“买单”

23、?中台服务是 险的假设外部业务场景和户需求*新业务延迟*已有业务监管政策临时改变规则*前端应因为些原因变发布时间*前段应运营活动分析需要修改户交互流程组织内部都会发很多变化*组织结构调整,需要重新与系谈迁移条件*因为技术框架的某项险评估,所有相关应需要延时等待价值流前台应1前台应2前台应3中台后台应端到端 纵向切分 的薄MVP 划分?333110?愿333211?22239?11136?333312?33219XXX?MVP 划分透明的优先级决策模型发布 计划信号灯详情省内健康度指标动预警信号灯概览本级关注和上级关注业绩报表前端展示消息查看应基础户管理登录登出指标参数分类 数据同步组织渠道数据

24、同步迭代0迭代1迭代2迭代3迭代4迭代5迭代6应监控开发测试环境CI/CD管道云服务域认证集成消息通知 后端服务UI规范省内众业绩报表省内KA业绩报表健康度报表前端展示业绩按组织切分新消息提醒地域品牌品类 数据同步客户层级关系 数据同步业绩按客户层级切分省内健康度报表损益前端展示报表数据 基础服务业绩按地域切分业绩按品类切分业绩按品牌切分健康度按客户层级切分健康度按品类切分损益按组织地域切分省内损益报表单店产出前端展示缓存优化损益按品牌品类切分损益按客户层级切分省内渗透率报表渗透率按组织地域切分客户产出根因类报表预警参数渗透率按品牌品类切分渗透率按客户层级切分客户产出表征类报表餐饮类指标前端展

25、示迭代7客户产出按组织地域切分餐饮类指标按组织地域切分缓存优化客户产出按品牌品类切分客户产出按客户层级切分省内餐饮类指标报表餐饮类指标按品牌品类切分餐饮类指标按客户层级切分关联动计划迭代8省内业绩指标动预警省内单店产出动预警/捷报省内渗透率指标动预警/捷报省内客户产出动预警/捷报告急处理捷报处理定义关注指标系统志省内业绩指标动捷报业绩及健康度动告急单店产出根因类报表单店产出表征类报表驱动指标动告急埋点追踪2户设置迭代9迭代10户组织渠道数据管道省内业绩指标计算业绩数据管道按组织渠道维度切分指标分类组织层级和用户 对应关系客户层级管道健康度数据管道健康指标计算损益数据管道省内渗透率指标计算按客户

26、层级切分省内餐饮指标计算单店产出表征指标计算地域数据管道品牌品类数据管道品牌品类关系地域层级关系客户层级关系省内损益指标计算渗透率数据管道客户层级关系单店产出表征数据管道单店产出根因指标计算单店产出根因数据管道客户产出表征指标计算客户产出根因指标计算客户产出表征数据管道客户产出根因数据管道省内业绩指标预警捷报计算省内餐饮指标管道损益渗透率按所有维度切分单店产出、客户产出按所有维度切分餐饮所有维度切分省内健康度指标预警捷报计算省内损益指标预警捷报计算省内渗透率预警捷报计算省内单店产出预警捷报计算省内客户产出预警捷报计算业绩及健康度指标告急渗透率指标告急单店产出指标告急客户产出指标告急One Mo

27、re Thing 验证指标与运营计划前置阿中台的度量15%20%25%40%服务稳定业务创新服务接量客户满意度?GMV?运营 规划Tier 1Tier 2Tier 3第级别客户专有服务团队积极响应第级别客户共享服务团队,响应需求但优先级低于第级别客户部分户所处的层次,通常采助式服务(Self-Service)的式使中台能,需求响应较第级别和第级别低,但成本低,甚可以免费使。第三级别客户产品愿景明确价值主张组织愿景和战略业务现状找到切点业务设计确定机会点需求全景产品需求范围MVP构建反馈演进客户需要战略分解明确中台使命市场机会业务中台规划的流程架构梳理明确设计案落地演进规划组织愿景和战略MVP构

28、建反馈演进客户需要市场机会业务中台规划的七种武器落地演进规划愿景标标标机会点机会点举措举措举措”精益价值树”“电梯演讲”“客户旅程”“服务蓝图”“事件暴和DDD”“API 旅程”机会点“MVP和演进路线”忘记这些“武器”长剑孔雀翎碧月多情环离别钩霸王枪THANK YOU基于领域设计的企业中台实施方法论北京百拓开源科技有限公司1.2.3.4.5.为什么是中台基于DDD理念的中台的实施方法论中台交付中我们还能做什么?-?-?!?务?-?1.2.3.4.5.为什么是中台基于DDD理念的中台的实施方法论中台交付中我们还能做什么?2004?务?DDD?DDD?务?务?DDD?务?UML?务?DDD?务?

29、DDD?-?-?-?示例?-?角色:用户目的:业务查询?-?cl ass 中台业务领域客户档案表具档案抄表账单用户基本信息用户联系信息用户银行信息用户证件信息特殊用户信息客户基本信息客户联系信息抄表册信息抄表计划信息抄表设备信息抄表记录信息应收燃气费缴费记录燃气表信息表具状态变化信息厂家信息class DDLclass DDLBuyerBuyercolumn*PKbuyerID:INTEGER FKemployeeID:INTEGERPK+PK_Buyer(INTEGER)FK+FK_Buyer_Employee(INTEGER)EmployeeEmployeecolumn*PKemploye

30、eID:INTEGERPK+PK_Employee(INTEGER)MaterialMaterialcolumn MaterialNumber:TEXT*PKmaterialID:INTEGERPK+PK_Material(INTEGER)OrganizationOrganizationcolumn*PKorganizationID:INTEGERPK+PK_Organization(INTEGER)PurchaseRequisitionPurchaseRequisitioncolumn PRId:int PRDate:DATE*PKpurchaseRequisitionID:INTEGER

31、FKbuyerID:INTEGER FKsupplierID:INTEGERPK+PK_PurchaseRequisition(INTEGER)FK+FK_PurchaseRequisition_Buyer(INTEGER)+FK_PurchaseRequisition_Supplier(INTEGER)PurchaseRequistionLineItemPurchaseRequistionLineItemcolumn UnitPrice:Decimal(10)Quantity:Decimal(10)*PKpurchaseRequistionLineItemID:INTEGER FKmater

32、ialID:INTEGER FKpurchaseRequisitionID:INTEGERPK+PK_PurchaseRequistionLineItem(INTEGER)FK+FK_PurchaseRequistionLineItem_Material(INTEGER)+FK_PurchaseRequistionLineItem_PurchaseRequisition(INTEGER)SupplierSuppliercolumn*PKsupplierID:INTEGER FKorganizationID:INTEGERPK+PK_Supplier(INTEGER)FK+FK_Supplier

33、_Organization(INTEGER)SupplierQuotationSupplierQuotationcolumn*PKsupplierQuotationID:INTEGER FKpurchaseRequisitionID:INTEGERPK+PK_SupplierQuotation(INTEGER)FK+FK_SupplierQuotation_PurchaseRequisition(INTEGER)SupplierQuotationLineItemSupplierQuotationLineItemcolumn*PKsupplierQuotationLineItemID:INTEG

34、ER FKpurchaseRequistionLineItemID:INTEGER FKsupplierQuotationID:INTEGERPK+PK_SupplierQuotationLineItem(INTEGER)FK+FK_SupplierQuotationLineItem_PurchaseRequistionLineItem(INTEGER)+FK_SupplierQuotationLineItem_SupplierQuotation(INTEGER)+FK_SupplierQuotationLineItem_PurchaseRequistionLineItemP+PK_Purch

35、aseRequistionLineItem+FK_Buyer_Employee+PK_Employee+FK_SupplierQuotation_PurchaseRequisitionP+PK_PurchaseRequisition+FK_PurchaseRequistionLineItem_PurchaseRequisitionP+PK_PurchaseRequisition+FK_Supplier_Organization+PK_Organization+FK_PurchaseRequisition_BuyerP+PK_Buyer+FK_SupplierQuotationLineItem_

36、SupplierQuotationP+PK_SupplierQuotation+FK_PurchaseRequistionLineItem_MaterialP+PK_Material+FK_PurchaseRequisition_SupplierP+PK_Supplier业务模型业务序列图领域模型业务数模API?目录 1.查询用户基本信息.1 基本信息.1 请求参数.1 返回数据.1 2.查询用户联系信息.2 基本信息.2 请求参数.2 返回数据.3 3.查询用户银行信息.4 基本信息.4 请求参数.4 返回数据.4 4.查询特殊用户信息.5 基本信息.5 请求参数.5 返回数据.6 5.查询

37、用户增值税信息.6 基本信息.6 请求参数.6 返回数据.7 6.查询客户基本信息.7 1.查询用户基本信息 基本信息 Path:/consumerSvr/v1/consumer/basic Method:GET 接口描述:请求参数 Query 参数名称 是否必须 示例 备注 consumerNo 是 用户编号 返回数据 名称 类型 是否必须 默认值 备注 其他信息 consumerId number 非必须 用户标识 consumerNo string 非必须 用户编号 consumerName string 非必须 用户名称 consumerAddress string 非必须 用气地址

38、consumeSortCode string 非必须 用户类型 gasNarure string 非必须 用气性质?-?务?务?务?务?1.2.3.4.5.为什么是中台基于DDD理念的中台的实施方法论中台交付中我们还能做什么?2?6?1?4?CRUD?jsonData?API?json?CRUD?api?controller?service?domain?repository?mapper?+?=?务?THANKS领域驱动的统一广泛使用,是保障大型开发项目的坚实臂膀!?1.2.3.4.5.?IT?7*24?封?封?封?去?RE-HOSTRE-PLACERE-FACTORRE-ARCHITECT

39、?去?去?:?:?去?去?:?封?封?封?封?务?封?封?务?去?去?:?0 0?1 1?;?:?务?封?封?业务:当前对遗留系统满意的点?务?模?去?业务:对系统改造的要求和支持态度演进式架构改造?https:/全球软件咨询公司实战化领域驱动设计工作坊概念讲解(DDD China 2019 Conference)1 ThoughtWorks 2019 讲师团队2 ThoughtWorks 2019 胡皓王岩钟健鑫朱海波王瑞鹏林宁为何需要领域驱动设计?3 ThoughtWorks 2019 现实世界的挑战4 ThoughtWorks 2019 难以理解的代码编程中最难的事情之一就是命名5 Th

40、oughtWorks 2019 混乱不堪的模型拍脑袋建模6 ThoughtWorks 2019 发散式变化&散弹式修改依据变化的边界进行架构和编程最简单也最困难7 ThoughtWorks 2019 模块模块模块业务A业务B业务C业务D模块模块模块业务大泥球架构技术与业务不能匹配的最终结果8 ThoughtWorks 2019 微服务压垮了最后一根稻草从大泥球到分布式泥坑9 ThoughtWorks 2019 https:/maveric- ThoughtWorks 2019 领域驱动设计从低调沉稳到日渐火爆微服务带来的架构复杂度成倍提升,引爆了“技术和经验驱动设计”的顽疾。数字化时代快速变化

41、的典型特征,进一步敲响了低响应力架构的丧钟。01320142015实现领域驱动设计Vaughn Vernon事件风暴Alberto Brandolini ThoughtWorks 2019 微服务架构Martin FowlerJames Lewis领域驱动设计Eric Evans领域驱动设计:模式、原理与实践Scott MilletNick Tune领域驱动设计精粹Vaughn Vernon持续完善影响力持续增加领域驱动设计解决问题的方式12 ThoughtWorks 2019 分解大泥球以子域、限界上下文为参考,通过聚合的方式进行建模13 ThoughtWorks 20

42、19 https:/ ThoughtWorks 2019 需求文档技术实施细节经验建模面向技术进行架构混乱的词汇难以理解的代码协同设计聚焦业务问题领域建模面向业务进行架构统一语言代码即文档角色间相互推诿各角色通力协作大泥球架构松耦合架构DDD是更有套路的设计方式15 ThoughtWorks 2019 核心域支撑域通用域问题域划分领域事件领域名词决策命令业务抽象限界上下文统一语言领域模型上下文依赖关系资源分配策略协作设计基于抽象业务的参考基于概念边界的参考基于投资优先级的参考聚合根实体值对象领域服务工厂仓库服务/模块/包拆分API设计分层架构技术栈选择团队分组/分工开发/集成策略核心原则面向业

43、务进行架构16聚焦核心域协作设计统一语言 ThoughtWorks 2019 澄清问题域,聚焦核心竞争力,优化资源投入领域专家同软件专家通过创造性协作,迭代式的探索和发现模型利用明确且有边界的业务上下文统一语言DDD在产品研发过程中的位置Design Thinking+Domain Driven Design+DevOps17 ThoughtWorks 2019 如何开展领域驱动设计?18 ThoughtWorks 2019 分段式协作设计19 ThoughtWorks 2019 战略设计澄清业务与问题战术设计建立抽象模型技术实现深入实现细节统一语言分段式协作设计三个阶段战略设计战术设计技术实

44、现从问题出发,逐级抽象,层层深入和细化20 ThoughtWorks 2019 分段式协作设计战略设计阶段 业务梳理和抽象 限界上下文识别 子域识别多说问题,少说方案21 ThoughtWorks 2019 分段式协作设计战术设计阶段 领域建模 业务服务识别 业务服务API能力识别持续抽象,忽略技术细节22 ThoughtWorks 2019 分段式协作设计技术实现阶段 API详细设计 UML设计 数据库设计 部署与运维 一切皆是细节23 ThoughtWorks 2019 如何实现领域驱动设计?24 ThoughtWorks 2019 松耦合架构25 ThoughtWorks 2019 微服

45、务设计以业务边界为参考,实现架构与业务对齐26 ThoughtWorks 2019 https:/maveric- ThoughtWorks 2019 https:/ is cheep,show me the code.28 ThoughtWorks 2019 https:/ ThoughtWorks 2019 一个简单粗暴的需求30嘿!我是你们的老板!我很有钱!我需要做一个产品干掉市场上那些倒霉的外卖产品!电梯演讲(Elevator Pitch)Elevator Pitch)使用便利贴在白纸上贴出电梯演讲的结构。每个人为电梯演讲的每一行想象一个内容,通过便利贴的方式进行书写(每个人应该写出7

46、个便利贴)。每个人将自己的7个便利贴放在白纸上相应的位置,共同阅读并讨论以形成共同意见,让电梯演讲看上去更有吸引力,更可行且更通顺,必要的时候可以采取投票等方式达成一致(这只是一个练习,所以大家开心优于纠结)。利用便利贴修改并调整电梯演讲到最终结果,然后每组将自己的电梯演讲分享给大家。31FOR target customer WHO statement of the need or opportunity THE product name IS A product category THAT key benefit,compelling reason to use UNLIKE primar

47、y competitive alternative OUR PRODUCT statement of primary differentiation.数字化架构能力小组咨询 BU|32 ThoughtWorks 2019 ?C?C?C?C?1.2.3.?C?封?撑?封?2001?2003?1994?1972C?1970Pascal1983C+?1995JAVA1991Linux2012?2009DCI?1974MVC?C?够?封务?封?撑?撑?C?DDD?-?DDD?够?-?DDD?C2C3C1?务?-Entity?-Value?Object?Entity?撑?-Aggregate?Entit

48、y?ID?ID?-Factory?Aggregate?Entity?-Repository?务?-Service?C?ConnectionResourceProtocolConnectionSetupServiceBandRepositoryFactoryConnectionSwitchServiceStateManagerMemory?C?C?-?C?C?-?C?C?-?C+?-?C?xUnit?TDD?in?Embedded?C?CreateReplace?AutomaticManualC?-IDE?eclipse-cdt,?clion-Build?cmake?bazel-xUnitTes

49、t:?GoogleTest,?CCTest?MockCpp-?RPM?conan-CI?Pipeline?导?C?撑?撑?封?封?Co-ProcessorCPUPowerConverterFPGAPowerConverterI2CSPI?Co-ProcessorCPUPowerConverterFPGAPowerConverterI2CSPICapability?ServiceAggregateDeviceRepositoryFactory?Q&A?-?https:/当 DDD 遇上 DSL中兴通讯资深软件架构师1.2.3.DSL 简介 DDD 与 DSL 融合三个典型案例DSL 简介命令式

50、vs 声明式命令式编程声明式编程侧重点HowWhat声明式1.程序员声明想要的 What,计算机设计 step-by-step2.归纳和提取完备的 What 并不是件轻松的作命令式1.程序员习惯描述 How,喜欢控制事情的发展2.计算机按照命令执 step-by-step,并不对结果负责DSL 是什么DSL(Domain-Specific Language):领域专语 或 领域特定语DSL 是针对某特定领域,具有受限表达性的种计算机程序设计语DSL 并不会新鲜的技术:SQL,HTML,CSS,正则表达式DSL 是最常的声明式编程形式DSL 的价值提升开发员的产 增进与领域专家的沟通1.领域专家

51、与开发员结对,参与构建 DSL2.领域专家可以评审 DSL,并指出问题所在3.即使不实现 DSL,也可以把它当作沟通的平台1.相命令/查询 API,DSL 更容易理解2.DSL 的受限表达性使得开发员难于犯错3.DSL 的错误很容易被发现和修改DSL 的分类内部 DSL外部 DSLDSL脚本宿主语DSL脚本定义语【宿主语编译器】解析语义模型可选成标代码语法树解析【实现解析器】DDD 与 DSL 的融合向领域DDDDSLDomainDSLULSemantics ModelDomain ModelDDD 和 DSL 字含义都是领域DSL 丰富了 UL语义模型通常是领域模型的集模型组装的式命令/查询

52、 API1.场景较简单2.使 DSL 得不到任何好处的场景3.使 DSL 获得的好处不以抵消它的成本的场景内部 DSL1.单元测试是内部 DSL 的产区2.从 API 的度看,连贯接就是内部 DSL 的同义词3.内部 DSL 感觉像个整句,不是个关命令的序列外部 DSL1.外部 DSL不受限于宿主语的语法,对户很友好,尤其是对于不懂宿主语语法的户2.创造外部 DSL 所需的背景知识要远远少于通语的特定领域在次业务中消息交互较多的领域1.电信领域的控制2.络领域的管理业务场景具有的特征1.对象交互多2.业务流程3.事务操作分层架构关键点1.通过 Transaction DSL 来表达 Trans

53、action 层2.当应层收到消息时,根据关键字找到业务实例,然后投递消息给相应的事务来处理,本质上是事务调度的功能,我们将应层重命名为调度层3.事务模型是横切模型的种实例化三个典型案例内部 DSL 案例:gomonkey APIgomonkey 介绍gomonkey 是作者研的款 Go 语的打桩框架,标是让户在单元测试中低成本的完成打桩,从将精聚焦于业务功能的开发gomonkey 接友好,功能强,前已被很多项使,户遍及世界多个国家领域模型FuncTargetPtrTargetTargetTargetRepoConstDoubleVariableDoubleDoubleDoubleFactor

54、yOutputCell1:nBinaryEntryAddressJmpDirective1:nReflect命令/查询 APIfunc ApplyFunc(target,double interface)*Patchesfunc ApplyMethod(target reflect.Type,methodName string,double interface)*Patchesfunc ApplyGlobalVar(target,double interface)*Patchesfunc ApplyFuncVar(target,double interface)*Patchesfunc App

55、lyFuncSeq(target interface,outputs OutputCell)*Patchesfunc ApplyMethodSeq(target reflect.Type,methodName string,outputs OutputCell)*Patchesfunc ApplyFuncVarSeq(target interface,outputs OutputCell)*Patchesfunc NewPatches()*Patchesfunc(this*Patches)ApplyFunc(target,double interface)*Patchesfunc(this*P

56、atches)Reset()type Params interfacetype OutputCell struct Values Params Times intApplyFunc 使举例特点1.参可校验2.出参可修改3.返回值固定ApplyFuncSeq 使举例特点1.参法校验2.出参法修改3.返回值可变化gomonkey 2.0:内部 DSL关键点1.使表达式成器来隔离两种格的 API2.声明 Target 和 Double3.通过 Factory 创建 Matcher、Constraint 和 Behavior4.DSL 作为外壳显著增强了领域模型的能关键字1.核关键字:stubs/ex

57、pects/with/will/then/end2.扩展关键字:once/eq/return/repeat/out语义模型WithDoubleStubsTargetFuncMethodFuncVarGlobalVarExpectsWillThenEndExactlyOnceConstraintBehaviorEqAnyReturnRepeatMatcher外部 DSL 案例:流程契约流程契约 DSL描述业务流程,构建活档容易上,BA 在 5分钟内就可以学会复 plantUML 语法,动成时序图通过 group 关键字来实现阶语义上下标记包括基本标记和扩展标记流程契约 DSL当户选择 SUT(S

58、ystem Under Test)为 S1,S2 时,模版动成实例语法树rootstartumlendumltitlesessiongroupprocedurecontexttagssession infonote infolabelendsourcearrowtargetmsg namepositionsession typefile typerules语义模型ExecQueueSessionQueueSendMsgReceiveMsgExecUnitSessionSessionInfoNoteInfoGroupInfoInGroupParamAction1:n1:n横切 DSL 案例:事务

59、模型个状态机问题1.嵌套状态2.临时状态从户视看事务模型 In computer science,transaction processing is information processing thatis divided into individual,indivisible operations,called transactions.Each transaction must succeed or fail as a complete unit;it cannot remain in an intermediate state.语义模型SpecificationConcreteSpec

60、NotAllOf/AnyOfLoop/ConcurrentProcedureAction1FragmentRepeat/Retry/WaitOptional1:21:n1:n1:n分层架构?1.?2.?1.?trans-dsl?2.?1.?2.?TransactionSchedulerDomainIdleActiveUnstableReqSuccFailed代码和序列图对应结DSLDDD领域模型集领域模型分层架构演进语义模型向领域分类横切模型特定领域内部外部组装专语统语丰富DomainDomain字含义扩展阅读2017 年 DDD China 峰会上的演讲胶:DDD分层架构的三种模式2019

61、年 ArchSummit 峰会深圳站的演讲胶:当DDD遇上DCIGo 语打桩框架 gomonkey 链接:https:/ 语事务模型框架 trans-dsl 链接:https:/?01什么是设计?design 设计 design,devise,plan 计划 plan,project,design,map out 酝酿 brew,prepare,incubate,prearrange,ideate,design 设想和计划,设想是的,计划是过程安排design 设计 design,devise,plan 计划 plan,project,design,map out 酝酿 brew,prepar

62、e,incubate,prearrange,ideate,design 02数字化带来的新设计式Digital 类学维度的 社会变化Digital Design纸质故事板透过说故事的式 让户了解产品价值乐/彩泥故事板透过乐/彩泥搭建的式 让户了解服务使的场景扮演透过演戏式展示服务的实施流程纸质原型透过作产品原型,让户可以进操作上的模拟可原型透过可使的fake it until you make it03DDD&DT 对设计过程的认知Design Thinking Domain Driven Design?DELIVERY?DISCOVERY?EMPATHY?DEFINE?OPPORTUNITI

63、ES?PROTOTYPE?DESIGN问题域解决案域设计域设计域01不确定性、多种可能02发散和收敛并存03创新发(毁灭)的地04“设计域”带来的冲突和机会冲突 挑战 机遇我有个新的想法,我觉得现在这个案好太多了!#¥%&你是整我们吗?咱们产品都在开发了!你不需要“过早”做出决定,你需要“保持”多种可能Digital DesignTHANK YOUKISS(Keep it Simple,Stupid)数字时代企业架构设计作坊破冰游戏(10分钟)游戏规则:每个组内部每个进个我介绍,限时1分钟,除了的基本情况,每个需要介绍个引以为傲的特,这个特是可以来赚钱的,便利贴把特贴在板上。如果这个组就是个公

64、司,每个的特就是这个公司可以销售的产品,你们公司有这么多有特的产品,那么如何才能清晰的体现出这个公司的业务架构。每个组摇骰决定个来担任公司的CEO,个来担任CFO,根据业务架构来介绍全组的特,标是要打动投资和股东。CONTENTS01数字时代和企业架构设计简史02业务架构设计作坊03领域驱动设计概览04事件暴作坊05微服务技术架构设计数字时代和企业架构设计简史什么是数字时代?数字化和信息化的本质差异是什么?企业为什么要进架构设计?是为了解决技术难题吗?架构设计中的“架构”究竟是指什么?架构设计的本质是什么?DIGITAL AGE所谓的数字化和信息化有什么区别?信息化和数字化的核区别农信息论:信

65、息是来消除随机不定性的东。信息化过程需要来识别信息,再使计算机技术存储,传输信息。数字化过程不需要来识别什么是信息,只需要转换成数字,传输,存储,然后再从中挖掘信息信息化我需要个披萨数字化架构师年前我脑中的架构师年我的常作常态什么是架构?架构设计的本质通过改变(设计)个复杂系统内部要素之间连接结构来让系统更优的存信息系统架构设计简史1987年,John Zachman 创了全球第个企业架构理论,其论信息系统架构框架今仍被业界认为是企业架构设计最权威理论。是其他企业架构框架的源泉。Zachman框架的本质是分类学,通过维表提问的式对企业信息信息系统架构设计简史1996年,美国国防部的US Und

66、ersecretary of Defense for Business Transformation作组推出C4ISR AF 1.0,C4ISR(Command,Control,Communications,Computers,Intelligence,Surveillance and Reconnaissance)是军事术语,意为动化指挥系统。这是DoDAF(Department of Defense Architecture Framework)的前身,2003年8正式推出DoDAF 1.0,2009年推出DoDAF 2.0,DoDAF 2.0体上可由视图与实施法论组成信息系统架构设计简史

67、1995年,国际标准权威组织The Open Group发表了TOGAF(The Open Group Architecture Framework)框架,TOGAF的基础是美国国防部的信息管理技术架构,其中最有名且当下使最泛的为TOGAF,号称福布斯80%的50强都在被HP、IBM、SAP使。我们现在经常说的业务架构,应架构,信息架构,技术架构也都是源这个框架。信息系统架构的共性从不同视去剖析个组织的复杂信息系统DDD和微服务是在解决企业架构的什么问题?Micro ServiceDDD业务架构设计作坊业务架构设计是给谁看的?企业板?中层管理?线业务?产品经理?开发团队?投资?业务架构设计是给

68、谁的?板想看的中层经理想看的线业务想看的开发团队想看的业务架构设计的标中层经理想看的开发团队想看的线业务想看的板,投资想看的业务架构设计的过程户旅程分析服务蓝图分析业务模块划分业务RoadMap企业战略演练案例:增客ABC公司的运营部需要知道每个活动的效果,多少了解到了活动,多少参与了活动,多少获得优惠劵。ABC公司的财务部需要知道活动的成本,这个活动的成本究竟是多少,带来了多少交易,交易带来的利润是多少 A公司运营部希望能够设计出精美直观的活动,通过活动也可以快速进户注册,会给新注册户直接奖励个优惠券,这个优惠劵额可以后台调整,优惠券有时间限制,可以在买单付款时使 B公司运营部希望能够给新户

69、设计些基本任务,为了介绍这些任务会需要多个活动进提示和说明,让户能够熟悉平台些特定功能,让户完成了指定的任务以后,运营部会给户奖励个优惠劵,户可以使优惠券兑换级功能。C公司运营部通过数据分析发现很多在浏览了商品以后很多都没有最终下单,所以运营部梳理出来了个户群体,每个户群体都有偏好的商品品类,要求当这些户在浏览对应品类商品超过时间后能够直接提供个只针对当前商品的幸运中奖,不同群体的户会显示不同的幸运中奖,户领取奖励获得当前商品优惠劵。户旅程地图痛点痒点爽点户旅程地图练习(10分钟)户旅程地图A公司 户活动访问活动说明了解活动完成注册 获得优惠劵查看优惠劵使说明使优惠劵买单结算B公司 户活动完成

70、部分任务访问任务奖励的活动说明显示完成任务后的活动说明完成所有任务显示通关活动说明点击按钮领取级功能C公司 户活动户浏览商品户群体满定条件后提示幸运中奖户领取奖励访问活动说明户查看优惠劵户在付款时使优惠劵业务服务蓝图业务服务蓝图业务服务蓝图交互线可视线内部交互线户活动前台服务后台服务撑流程业务服务蓝图练习(20分钟)A公司户注册奖励活动服务蓝图交互线可视线内部交互线户活动A公司 前台服务增客 后台服务后台 撑流程访问活动说明完成注册 获得优惠劵查看优惠劵使说明使优惠劵买单结算展示活动创建注册奖励活动户注册功能提供活动创建注册奖励活动说明查询户优惠劵信息判断满注册奖励活动参与规则创建注册奖励活动

71、参与规则创建注册奖励活动奖品创建注册奖励活动奖励规则参看优惠劵相关记录户注册为记录户访问活动为记录注册奖励奖品发放信息设置注册奖励活动奖品使规则买单结算功能判断优惠劵满有效性规则设置注册奖励活动有效性规则启动/终注册奖励活动优惠劵使记录返回注册奖励 活动参与结果返回优惠劵使结果查看注册奖励活动运营报表查看注册奖励活动财务报表设置注册奖励活动运营报表设置注册奖励活动运营报表B公司户任务奖励活动服务蓝图B公司 户活动完成部分任务访问任务奖励的活动说明显示完成任务后的活动说明完成所有任务显示通关活动说明点击按钮兑换级功能户交互线可视线内部交互线B公司 前台服务增客 后台服务后台 撑流程展示活动任务相

72、关功能(eg:分享,签到)展示通关活动提供活动记录户访问活动为判断户满任务奖励活动参与规则记录户任务为判断户为满任务要求返回任务奖励 活动参与进度返回任务奖励 活动参与进度判断户已完成所有任务提供通关完成活动判断户满兑换资格记录户兑换为开启级功能展示活动进度任务相关功能兑换资格判断创建任务奖励活动创建任务奖励活动说明主创建任务奖励活动说明进度创建任务奖励活动说明通关创建任务奖励活动参与规则创建任务奖励活动奖品创建任务奖励活动奖励规则设置任务奖励活动奖品使规则设置任务奖励活动有效性规则启动/终任务奖励活动查看任务奖励活动运营报表查看任务奖励活动财务报表设置任务奖励活动运营报表设置任务奖励活动财务

73、报表C公司户幸运中奖活动服务蓝图C公司 户活动户交互线可视线内部交互线C公司 前台服务增客 后台服务后台 撑流程提供浏览商品户信息商品浏览功能判断户满幸运中奖活动参与规则记录浏览商品为返回户幸运中奖创建幸运中奖活动根据参与规则创建幸运中奖活动中奖创建幸运中奖活动参与规则,关联户群体创建幸运中奖活动奖品创建幸运中奖活动奖励规则设置幸运中奖活动奖品使规则设置幸运中奖活动有效性基本规则启动/终幸运中奖活动查看幸运中奖活动运营报表查看幸运中奖活动财务报表户浏览商品户群体满定条件后提示幸运中奖户领取奖励访问活动说明户查看优惠劵户在付款时使优惠劵导脱敏户特征信息列表根据户特征信息设置户群体设置幸运中奖活动

74、运营报表设置幸运中奖活动财务报表显示幸运中奖显示活动说明根据参与规则创建幸运中奖活动说明中奖领取功能参看优惠劵相关买单结算功能查询户优惠劵信息判断优惠劵满有效性规则优惠劵使记录返回优惠劵使结果返回活动说明记录幸运奖励奖品发放信息“增客”业务模块架构图服务蓝图中的服务和流程解决的是什么业务问题?哪些是我们的核心差异化竞争力?哪些是支撑核心竞争力的?哪些是业界内常见的?业务模块划分练习(15分钟)“增客”业务模块架构图活动配置创建XX奖励活动设置活动有效性规则查看户访问活动为创建XX奖励活动说明创建XX奖励活动参与规则判断户满活动参与规则活动奖品创建XX奖励活动奖品判断满奖品使规则创建XX奖励活动

75、奖品使规则查看活动奖品发放记录查看活动奖品使记录导活动参与群体划分活动参与群体查看户参与活动为活动报表查看活动运营效果报表查看活动成本分析报表活动运营管理后台PC创建XX奖励活动奖励规则修改XX奖励活动参与规则修改XX奖励活动奖励规则查看规则修改历史修改XX奖励活动奖品修改XX奖励活动奖品使规则修改活动有效性规则修改XX奖励活动说明查看XX奖励活动说明判断户为满活动奖励规则活动运营服务记录户访问活动为记录活动奖品发放记录记录活动奖品使记录记录户参与活动为访问XX奖励活动说明记录户参与活动奖励成功记录查看户所有奖品详情查看活动运营统计数据查看活动财务统计数据业务模块演进图战略标:提供从渠道引流到

76、奖品供给的端到端企业增解决案201920202021活动运营服务的API活动运营管理后台渠道商接入APP活动配置模块活动奖品模块活动报表模块活动运营管理后台活动渠道管理活动页面设计线下活动运营APP奖品商接入APP活动运营管理后台奖品供应商管理线下活动管理PCPCPC活动审批管理领域驱动设计简介什么是领域驱动设计?为什么要领域驱动设计?领域驱动设计来设计什么?领域驱动有哪些概念?什么是应架构?应架构是与业务架构有强烈关联的架构,应架构描述的是在业务架构中各业务场景、业务组件应该什么样的IT系统或IT组件去撑;应架构不包含IT系统或组件的要实现的技术栈、分层结构等。在应架构设计时需要重点考虑以下

77、两点:IT系统或IT组件是怎么划分的,划分的颗粒度是怎么样的,系统与系统、组件与组件之间是如何解耦的;识别系统、组件的共同部分,让相同或类似的系统和组件可以撑更多的业务场景。应架构设计法-领域驱动设计领域驱动设计是种处理度复杂域的设计思想,试图分离技术实现的复杂性,围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演化等问题。团队应它可以成功地开发复杂业务软件系统,使系统在增时仍然保持敏捷。领域驱动设计概念领域驱动设计战略设计战术设计统语问题空间&解决案空间限界上下聚合实体&值对象领域驱动设计概念-统语设计中的技术技术术语技术设计模式开发员不理解的业务术语每个都使,但不出现在

78、设计中的业务术语领域模型术语限界上下的名称领域驱动开发中提到的很多模式名称统语业务技术领域驱动设计概念-问题空间、解决案空间问题空间:我们想要解决的是什么业务问题,业务会遇到哪些挑战。解决方案空间:一组特定的软件模型组成的解决方案。领域驱动设计概念-问题空间领域域核域撑域通域域的划分域的属性领域核域核域撑域撑域撑域通域领域模型领域驱动设计概念-解决案空间聚合实体值对象限界上下 解决案空间如何领域驱动设计(DDD)来做应架构设计?应架构的例()略应架构的例()略事件暴作坊通过事件暴作坊让您快速理解DDD,让您的设计更简洁、更效。-Event Storming是种领域建模的实践,是种快速探索复杂业

79、务领域的法:-最初由Alberto Brandolini开发,经过DDD社区和TW的很多团队实践验证后,于2015年11进ThoughtWorks技术雷达Powerful:可以让实践者在数时内理解复杂的业务模型Engaging:把带着问题的和拥有答案的共聚堂构建模型Efficient:跟DDD的实现模型度致,并能快速发现Aggregate和 Bounded ContextEasy:标记都很简单,没有复杂的UMLFun简介正确的:业务员,领域专家,技术员,架构师,测试员等关键都要参与其中开放空间:有够的空间可以将事件流可视化,让们可以交互讨论彩即时贴:少三种颜活动准备事件暴作坊介绍事件暴作坊过程

80、介绍事件暴命令暴寻找聚合参考户旅程/业务流程,通过事件的式对过去发的事情进溯源,让领域专家和作坊参与者起明确在业务上究竟是什么领域模型发了什么改变。关注业务过程中发的业务数据的变化。命令以及相应来还原真实的业务场景,掌握业务全局,并可以明确最终的软件会有哪些功能提供给外界使。命令常的三种形式:户从UI界进的操作 外部系统触发 定时任务对事件暴中识别的领域模型进聚合,通过聚合来封装业务的不变性。确保关联关系紧密的领域模型能够内聚在起。聚合强迫家尽可能的简化领域模型之间的关联关系。实现内聚,低耦合的设计。当所有的领域模型的软件代码放在起,软件将变得庞且复杂,代码难于理解聚合是通过业务沉淀出来的,来

81、解决业务中的问题,属于解决案域分析聚合要解决的问题,并基于要解决的问题进限界上下的划分划分限界上下步骤:事件暴介绍事件暴命令暴寻找聚合划分限界上下什么是事件?为什么事件?如何进事件暴?事件:领域专家关的,在业务上真实发的事例1:客户订单已提交例2:对账已完成,每末夜间触发例3:账户已锁定,在3次密码校验失败后1.确定要进事件暴的业务场景,场景需要单且清晰;2.“XXX已XXX”的格式在橙便利贴上写下事件,作坊参与者需要对事件定义达成致;3.根据时间顺序把事件便利贴贴到板上;4.如果个事件有同步发的其它事件,把其它事件放在事件下;5.如果发现了业务中的问题点,橙便利贴记录为什么是个问题;6.以上

82、步骤完成以后,再从最后个事件开始来反向验证事件的完整性(即:查前后事件的关联关系,防有些事件被遗漏)。通过事件的式对过去发的事情进溯源,因为过去所发的对业务有意义的信息都会通过某种形式保存下来。事件暴能够让领域专家和作坊参与者起明确在业务上究竟是什么领域模型发了什么改变,最终的软件系统需要关注业务过程中发的业务数据的变化。步骤:事件暴(A公司示例)命令外部系统时间事件注册奖励活动已创建注册奖励活动已创建注册奖励活动已设置有效性参与规则已创建奖品类别已创建奖励规则已创建奖品类别已添加使规则注册奖励活动已启动注册奖励活动已结束活动访问问记录已创建户注册记录已创建优惠券领取记录已创建优惠券已成优惠券

83、已使运营报表规则已创建财务报表规则已创建参与规则已添加户筛选条件奖励规则已添加户注册为注册奖励活动已添加参与规则注册奖励活动已添加奖励规则事件暴练习(30分钟)事件暴命令暴寻找聚合什么是命令?为什么命令?如何进命令暴?命令:什么活动产了事件例1:提交客户订单例2:启动夜间对账例3:锁定账户事件是业务上的输出,命令是业务上的输。命令以及相应可以明确最终软件系统会有哪些功能给外界使。命令和事件将会在后续的环节中指导API的设计。1.将命令写在蓝即时贴上,可以是:户从UI界进的操作 外部系统触发 定时任务2.将命令贴在所产的事件旁边;3.有的命令可能产多个事件,将它们连接;4.在这个过程中可以识别出

84、触发命令的外部系统(粉即时贴)、persona(即时贴)并进表示;划分限界上下步骤:命令暴介绍命令外部系统时间事件步骤:命令暴(A公司示例)注册奖励活动已创建注册奖励活动已创建注册奖励活动已设置有效性参与规则已创建奖品类别已创建奖励规则已创建奖品类别已添加使规则注册奖励活动已启动注册奖励活动已结束活动访问记录已创建户注册为记录已创建优惠券领取记录已创建优惠券已成优惠券已使运营报表规则已创建财务报表规则已创建参与规则已添加户群体奖励规则已添加户注册为注册奖励活动已添加参与规则注册奖励活动已添加奖励规则创建活动活动运营员创建活动活动运营员设置有效性活动运营员创建参与规则活动运营员添加户群体活动运营

85、员添加参与规则活动运营员添加参与规则定时任务创建奖励规则活动运营员添加户为活动运营员创建奖品类别奖品管理员添加使规则奖品管理员添加奖励规则活动运营员创建运营报表规则活动运营员创建财务报表规则活动运营员结束活动活动运营员定时任务活动运营员创建访问记录A公司系统创建注册为记录A公司系统创建优惠券增客系统创建奖品领取记录增客系统使优惠劵A公司系统命令暴练习(25分钟)步骤三:寻找聚合1.找出领域模型通过分析前步产的领域事件寻找领域模型:识别事件中有业务含义的名词将含有相同名词的事件合并确保名词代表的业务概念清晰完整且没有歧义即时贴进标记2.内聚成聚合通过前的领域模型来分析模型之间关系:领域模型是否可

86、以独访问如果可以独访问就是个聚合如果不能独访问就应该属于它依赖的聚合最后留下聚合即时贴,所有命令在左,事件在右商品已创建添加商品产品运营订单已创建提交订单买家库存已增加编辑库存产品运营聚合是组相关领域模型的集合,是来封装业务的不变性。通过定义对象之间清晰的所属关系和边界确保关联关系紧密的领域模型能够内聚在起。从避免错综复杂的对象关系的形成,确保业务规则在领域对象的各个命周期都得以执:聚合保证边界内的领域对象的业务不变性(invariant)聚合内部的领域对象具有致的命周期。什么是聚合步骤三:寻找聚合-什么是聚合?步骤三:寻找聚合步骤3-聚合Digitalization is the use o

87、f digital technologies to change a business model and provide new revenue and value-producing opportunities;it is the process of moving to a digital business.如果没有清晰的边界和简单的关联关系你愿意在这个项中作么?步骤三:寻找聚合-聚合的规则个聚合会包含个聚合根、若个实体或值对象,聚合根是个聚合的,要访问/消费聚合内的任何资源都必须通过聚合根来进;聚合内部需要封装业务逻辑、保障业务逻辑的完整性,聚合外部不关注聚合内在逻辑;可以通过以下个规

88、则来指导聚合的划分:聚合内由聚合根负责执业务规则聚合根有全局标识(边界内的实体只有局部标识,在聚合内唯)聚合边界外的对象只能引聚合根,不能持有聚合内对象的引边界内的对象可以持有对其他聚合根的引删除操作必须全部删除边界内的对象聚合边界内任个对象发改变,整个聚合的所有业务规则都不能违反只有聚合根能直接从持久化系统查询得到,边界内对象只能从聚合根导航步骤三:寻找聚合-找出领域模型(A公司示例)注册奖励活动已创建注册奖励活动已创建注册奖励活动已设置有效性参与规则已创建奖品类别已创建奖励规则已创建奖品类别已添加使规则注册奖励活动已启动注册奖励活动已结束活动访问记录已创建户注册为记录已创建优惠券领取记录已

89、创建优惠券已成优惠券已使运营报表规则已创建财务报表规则已创建奖励规则已添加户注册为注册奖励活动已添加参与规则注册奖励活动已添加奖励规则创建活动活动运营员创建活动活动运营员设置有效性活动运营员创建参与规则活动运营员添加参与规则活动运营员添加参与规则定时任务创建奖励规则活动运营员添加户为活动运营员创建奖品类别奖品管理员添加使规则奖品管理员添加奖励规则活动运营员创建运营报表规则活动运营员创建财务报表规则活动运营员结束活动活动运营员定时任务活动运营员创建访问记录A公司系统创建注册为记录A公司系统创建优惠券增客系统创建奖品领取记录增客系统使优惠劵A公司系统参与规则已添加户筛选条件添加户筛选条件活动运营员

90、命令外部系统时间事件步骤三:寻找聚合(A公司示例)注册奖励活动已创建注册奖励活动已创建注册奖励活动已设置有效性参与规则已创建奖品类别已创建奖励规则已创建奖品类别已添加使规则注册奖励活动已启动注册奖励活动已结束活动访问记录已创建户注册为记录已创建优惠券领取记录已创建优惠券已成优惠券已使运营报表规则已创建财务报表规则已创建奖励规则已添加户注册为注册奖励活动已添加参与规则注册奖励活动已添加奖励规则创建活动活动运营员创建活动活动运营员设置有效性活动运营员创建参与规则活动运营员添加参与规则活动运营员添加参与规则创建奖励规则活动运营员添加户为活动运营员创建奖品类别奖品管理员添加使规则奖品管理员添加奖励规则

91、活动运营员创建运营报表规则活动运营员创建财务报表规则活动运营员结束活动活动运营员定时任务活动运营员创建访问记录A公司系统创建注册为记录A公司系统创建优惠券增客系统创建奖品领取记录增客系统使优惠劵A公司系统参与规则已添加户筛选条件添加户筛选条件活动运营员命令外部系统时间事件注册奖励活动活动访问记录户注册为记录优惠券优惠券领取记录运营报表规则财务报表规则奖品类别奖励规则参与规则注册奖励活动定时任务聚合练习(25分钟)实体的定义 是类对象,它拥有全局唯标识符,且标识符在历经软件系统的各种状态、命周期后仍能保持致。我们把这样的对象称为实体。实体的特点般是名词不以其属性作为区分表示模型中可以只关标识和关

92、键属性具有命周期技术上往往需要持久化,如存数据库下的座位哪个是实体?步骤三:领域模型细化 实体值对象的定义 我们对某个对象是什么不感兴趣,只关它拥有的属性。来描述领域的特殊、且没有唯标识符的对象叫做值对象。值对象的特点般是名词以属性作为区分表示般创建后不再改变完即丢下的座位哪个是值对象?步骤三:领域模型细化 值对象实体:是一类对象,它拥有全局唯一标识符,且标识符在历经软件系统的各种状态、生命周期后仍能保持一致。我们把这样的对象称为实体。值对象:我们对某个对象是什么不感兴趣,只关心它拥有的属性。用来描述领域的特殊方面、且没有唯一标识符的对象叫做值对象。步骤三:领域模型细化 实体与值对象区别步骤三

93、:领域模型细化细化领域模型 详细分解前步产的领域模型,提取该领域包含的领域对象,并画出之间的关系。细化领域模型的核属性与为订单买家订单地址1NN11166值对象实体聚合根聚合订单订单-Id-币种-汇率-总价-数量订单-Id-订单 Id-产品型号-单价-数量-总价-买家Id-状态(发货、签收、退货)地址信息-收获-联系式-国家-省-市-区-街道-详细地址+创建+付+签收+确认收货+签收+总额+获得地址1:N1:1步骤四:划分限界上下-划分域 基于业务架构来划分域,基本上我们可以认为业务架构中的个模块就是个域;并分析每个域的属性,即核域、撑域、通域。划分域属性的参考标准是什么?领域核域核域撑域撑域

94、撑域通域对于 目标用户 他们想 有什么样的需求 这个 产品名称 是一个 产品类型 它可以 核心价值 不同于 竞争对手 这个产品 独特卖点产品愿景销售域客服域仓储域商品商品上下投诉单投诉上下物流回调物流上下订单退货单订单上下付上下付宝回调仓库库存库存上下出库单库单出库上下补货申请单补货上下物流域什么是限界上下?限界上下可以分为限界和上下两个词来理解,限界:指个界限,具体的某个范围。上下:场景、环境;所以限界上下是在某个场景或环境下的业务边界。该边界就是业务上的职责。步骤四:划分限界上下-什么是限界上下步骤四:探索限界上下(例)以上“Product”,在不同的领域中:1.意思样吗?2.既然意思不同

95、,如何保证当我们谈论“Product”时,所谈论的是同个“Product”?步骤四:探索限界上下(例)事件暴命令暴寻找聚合划分限界上下什么是限界上下?如何探索限界上下?业务的扩展会产越来越多的领域模型,任何型项都会存在很多的领域模型。当不同领域模型对应的软件代码被放在起后,软件就变得庞且复杂,代码难于理解、且容易出现bug,所以需要通过限界上下来明确定义领域模型的范围和职责。为什么使限界上下?限界上下可以分为限界和上下两个词来理解,限界:指个界限,具体的某个范围;上下:场景、环境;所以限界上下是在某个场景或环境下的业务边界。该边界就是业务上的职责。1.基于前输出的聚合和领域模型,判断这些领域模

96、型要解决的业务问题,这些问题是否为同个问题,如果是则放到个限界上下中(个问题对应个限界上下),如果为否则拆分到不同的限界上下中;2.如果个聚合(领域模型)同时解决多个问题时,则需要根据限界上下的划分原则(对聚合(领域模型)进拆分,拆分后对应的领域模型划分到不同的限界上下中;3.问题的(需考虑问题的变化原因、内在逻辑等)需与领域专家共同讨论完成。步骤四:划分限界上下步骤四:探索限界上下-限界上下映射通过定义不同上下之间的关系,创建的个所有模型上下的全局视图,以帮助更直观的掌握全局,识别上下的依赖关系,为安排开发计划提供参考。两个上下之间的联系是有向的:“上游”(UUpstream)“下游”(DD

97、ownstream)订单退货单订单上下商品商品上下投诉单投诉上下物流回调物流上下付上下付宝回调仓库库存库存上下出库单库单出库上下补货申请单补货上下UDUDUUUUUUDDDDDD步骤四:探索限界上下-限界上下映射(示例)限界上下练习(25分钟)回顾事件暴命令暴寻找领域模型寻找聚合细化领域模型划分域划分限界上下限界上下映射与应架构有什么关系?活动基础信息上下活动上下报表活动接上下活动规则上下注册奖励活动任务奖励活动幸运中奖活动注册奖励活动任务奖励幸运中奖活动奖励规则参与规则活动访问记录户注册为记录任务运营报表规则财务报表规则户特征信息商品浏览为记录限界上下映射UDUDUDUDUD优惠券优惠券领取

98、记录奖品类别奖品/优惠券上下外部系统增客应架构户服务活动运营管理后台活动基础信息活动规则奖品/优惠券活动接报表集成平台A公司会员注册系统A公司商城B公司任务系统B公司商品交易系统C公司商城系统运营报表规则财务使规则注册奖励活动任务奖励活动幸运中奖活动户注册为记录任务商品浏览为记录优惠券优惠券领取记录奖品类别奖励规则参与规则户特征信息活动注册奖励活动任务奖励幸运中奖活动活动访问记录微服务技术架构设计技术架构的的是什么?技术架构应该要怎么呈现?为什么要使微服务?除了微服务技术架构还需要关注什么?微服务究竟能给我带来什么好处?使微服务的成本是什么技术架构设计的宏观和微观视从微观层,技术架构设计要能够

99、说明个应系统应该如何精益地开发从宏观层,技术架构设计要能够说明多个应系统应该如何精益地拼装微服务的特征通过服务进组件化围绕业务能组织做产品不是做项智能端点与傻管道去中化地治理技术去中化地管理数据基础设施动化容错设计演进式设计微服务的误解 构建HTTP服务,使Docker容器运它,并且使Kubernetes做集群管理,这就是微服务。使API Gateway和服务发现以及服务registry,这就是微服务。使Spring Boot框架构建HTTP服务,并且使Netflix OSS,这是微服务。使Azure Service Fabric构建并且运应程序,这是微服务。构建轻量的RESTful API,

100、这是微服务。有很多框架声称是微服务框架。使这些框架的任意种来构建应程序,这就是微服务。会具不代表理解微服务架构的精髓和意图微服务技术架构的宏观视微服务如何集成如何做到弹性如何做到可如何管理微服务如何发现微服务如何保证安全如何实现服务间异步通信如何跟踪请求调宏观微服务技术架构示例应用层服务层设备接入层MQ服务集群 技术基础设施 微服务活动运营管理后台 前端微服务 XX云iOS渠道商应 ios客户端 机XX公司业务系统线下活动程序 H5前端服务 XX云屏幕应 H5前端服务 XX云内部关活动基础 业务微服务 XX云活动奖品 业务微服务 XX云活动规则 业务微服务 XX云硬件资产 业务微服务 XX云活

101、动页面 java微服务 XX云设备指令 业务微服务 XX云渠道管理 业务微服务 XX云报表数据 数据微服务 XX云安全认证 技术微服务 XX云服务注册 技术微服务 XX云工作流 技术微服务 XX云任务调度 技术微服务 XX云服务日志 技术微服务 XX云服务监控 技术微服务 XX云设备状态上报指令关资产信息 缓存服务 业务微服务 XX云售货机设备适配器设备信息查询机设备适配器系统接入层X付系统适配器Y渠道系统适配器设备操作指令TCPTCP外部关微服务技术架构的微观视使了什么开发语使了什么开发框架代码结构是怎么分层的使了什么持久化技术如何构建如何集成如何部署个微服务的六边形架构从DDD到代码落地聚

102、合&模型Domain ModelAPI列表Controller事件&命令ClassDDD代码落地作坊回顾企业架构设计业务架构设计的过程户旅程分析服务蓝图分析业务模块划分业务RoadMap企业战略领域驱动设计概念领域驱动设计战略设计战术设计统语问题空间&解决案空间限界上下聚合实体&值对象事件暴作坊过程介绍事件暴命令暴寻找聚合参考户旅程/业务流程,通过事件的式对过去发的事情进溯源,让领域专家和作坊参与者起明确在业务上究竟是什么领域模型发了什么改变。关注业务过程中发的业务数据的变化。命令以及相应来还原真实的业务场景,掌握业务全局,并可以明确最终的软件会有哪些功能提供给外界使。命令常的三种形式:户从U

103、I界进的操作 外部系统触发 定时任务对事件暴中识别的领域模型进聚合,通过聚合来封装业务的不变性。确保关联关系紧密的领域模型能够内聚在起。聚合强迫家尽可能的简化领域模型之间的关联关系。实现内聚,低耦合的设计。当所有的领域模型的软件代码放在起,软件将变得庞且复杂,代码难于理解聚合是通过业务沉淀出来的,来解决业务中的问题,属于解决案域分析聚合要解决的问题,并基于要解决的问题进限界上下的划分划分限界上下微服务技术架构的宏观视让你从容对复杂系统THANK YOU构建领域驱动设计知识体系关于我架构编码实践者 领域驱动设计布道师 数据平台架构师 敏捷转型咨询师 逸 AGENDA01领域驱动设计的历史回溯 程

104、碑之 程碑之 程碑之三 程碑之四03领域驱动设计参考过程模型02对领域驱动设计的新定位 领域驱动设计魔 丰富领域驱动设计法 04领域驱动设计能评估模型01领域驱动设计的历史回溯程碑之 诞Domain-Driven Design Tackling Complexity in Software 2004年 程碑之 领域事件的引程碑之 领域事件的引Domain Event CQRS Event Sourcing Event StoreEDA Reactive Programming Functional Programming建模范式的改变对象范式 以“对象”为中 Entity Value Obje

105、ct Aggregate Domain Service Repository Factory 事件范式 以“事件”为中 Domain Event Event Soucing Event Store Application Event Publisher-Subscriber 函数范式 以“函数”为中 Algebraic Data Type Pure Function Combinator Monad 架构格的改变对象范式 分层架构 事件范式 事件驱动架构 CQRS 函数范式 响应式架构 程碑之三 微服务的引A microservices architecture puts each eleme

106、nt of functionality into a seperate service and scales by distributing these services accross servers,replicating as needed.设计理念的改变数据模型驱动设计 不适合微服务设计理念的改变限界上下的边界可以是微服务的边界 聚合的边界更加稳定,通过ID引聚合,有利于限界上下边界的调整,改变通信式ARARARARARARARIDIDIDIDIDACLACLACLOHSOHSOHSdomaindomaindomaindomaindomainDBMQUI设计理念的改变维护好限界上下边界

107、,有利于从单体架构迁移到微服务架构设计理念的改变领域模型与数据模型的分离,有利于从单体架构迁移到微服务架构领域驱动设计带来价值领域驱动设计的模式与实践降低了从单体架构迁移到微服务架构的险天作之合Domain Driven DesignMicroservices Architecture程碑之四 中台战略的引企业级能复平台 企业级:定义了中台的范围,区分开了单系统的服务化与微服务;能:定义了中台的主要承载对象,能的抽象解释了各种各样中台的存在;复:定义了中台的核价值;平台:定义了中台的主要形式。企业级与能Bounded Context核领域:企业核价值Solution SpaceProblem

108、Space限界上下:业务能Core SubdomainCore SubdomainGeneric SubdomainSupportingSubdomainBounded ContextBounded ContextBounded Context领域模型的复边界控制与平台沉淀探索Domain Driven DesignZhongTai Strategy?02对领域驱动设计的新定位新的定位Domain Driven Design Technology Philosophy领域驱动设计魔X轴:限定领域驱动设计的内容 Y轴:分离领域驱动设计的层次 Z轴:蕴含了领域驱动设计的实践微观层次宏观层次纳层次业

109、务法模式件技术管理Y轴Z轴X轴宏观层次宏观层次 全局分析阶段业务法模式件技术管理业务架构核领域架构全局 分析档RAID暴整洁架构业务全局 分析档精益 需求管理康威定律 特性团队需求 管理体系宏观层次 战略设计阶段业务法模式件技术管理事件暴限界上下 上下映射架构战略 设计档RUP 4+1视图微服务 架构格业务战略 设计档SCRUM项先启 故事地图发布计划宏观层次是针对整个软件系统开展的战略宏图规划与战略概要设计,通常分为两个阶段:全局分析阶段 战略设计阶段微观层次微观层次是承上启下的关键环节,是领域驱动设计在团队中落地的重要前提,这个层次输出的件可以为团队成员提供直接的指导与参考价值。事件暴 场

110、景驱动设计构造型服务接 定义档服务模型 驱动设计分层架构模型 设计档Scrum户故事 看板迭代计划业务法模式件技术管理微观层次纳层次纳层次对应于软件开发过程的实现阶段。业务法模式件技术管理纳层次测试驱动开发简单设计基础设施代码框架应开发ORM 事务处理领域模型代码Scrum迭代实践燃尽图 燃烧图引-业务架构业务架构(Business Architecture)呈现全的、多维度的业务视,包括:业务能、端到端的价值交付、信息和组织结构,以及这些业务视之间的关系,还包括它们与战略、产品、政策、项和Stakeholder之间的关系。引-C4模型的System Context引系统上下(System C

111、ontext)确定系统的边界,了解当前系统与利益相关之间的关系,并确定它的外部环境,包括与其集成的第三系统与基础设施。引-事件暴引-架构模式引-RAID暴引-RUP 4+1视图领域驱动设计并没有明确给出架构的设计过程与设计交付物,限界上下、分层架构、上下映射仅仅作为战略设计的模式存在。可以引RUP 4+1视图与领域驱动设计的战略设计结合。Organizations which design systems.are constrained to produce designs which are copies of the communication structures of these or

112、ganizations.引-康威定律引-精益需求管理与敏捷过程管理引-场景驱动设计与测试驱动开发引-测试策略领域驱动设计架构的每个逻辑层都定义了的控制边界,领域驱动设计的构造型位于不同层次。不同的设计元素,决定了它们不同的职责和设计的粒度。层次、职责和粒度的差异,恰好可以与测试策略形成对应的关系。03领域驱动设计参考过程模型参考过程模型-固化与简化固化领域驱动设计的过程,提供简单有效的实践法,建具有的性和可操作性的研发过程领域驱动设计参考过程模型全局分析阶段价值链 Value Stream核领域 Core SubdomainC4模型 C4 Model系统上下 System Context险驱动

113、设计 Risk Driven DesignRAID Risks,Assupmtion,Issue,Dependency精益需求管理 Lean Requirement Management需求故事 Epic-Feature-User Story领域驱动设计参考过程模型战略设计阶段事件暴 Event StormingRUP 4+1敏捷项管理 Agile Project Management限界上下 Bounded Context上下映射 Context Map架构视图 Architectural ViewMVP&故事地图 MVP&Story Map事件流 Event Stream领域驱动设计参考过

114、程模型领域模型 驱动设计阶段事件暴Event Storming场景驱动设计Scenario Driven Design测试驱动开发迭代实践模式Iteration Pratice Pattern领域分析模型Domain Analysis Model领域设计模型Domain Design Model领域实现模型Domain Implement ModelUser Story|Kick Off|Desk Check04领域驱动设计能评估模型能评估模型介绍DCAM敏捷迭代能架构设计能整洁编码能领域建模能领域驱动设计能评估模型 Domain-driven design Capability Assesm

115、ent Model,DMAMDCAM是套评估模型,提供了对软件产品实施领域驱动设计的评估指标,指导团队进能的培养和提升。前,DCAM仅限于对象范式的领域驱动设计。能评估模型介绍DCAM并个标准或套认证体系,更事先制定和强制执的评估框架。建这套模型的的仅仅是为了更好地实施领域驱动设计,它是个能够不断演化的评估框架。根据能平,分为三个等级层次。初始级成级成熟级等级团队需求过程初始级组件团队,缺乏定期的交流制度没有清晰的需求管理体系每个版本的开发周期,法快速响应需求的变化成级全功能的特性团队,每站会议定义了产品待办项和迭代待办项采了迭代开发,定期交付版本成熟级组织的特性团队,团队成员定期轮换,形成知

116、识共享建了故事地图、建了史诗故事、特性与户故事的需求体系建了可视化的看板,由下游拉动需求的开发,消除浪费评估维度敏捷迭代能等级领域建模初始级采数据建模,建以数据表关系为基础的数据模型成级采领域建模,建模作只限于少数资深技术员,并凭借经验完成建模成熟级采事件暴、四建模等建模法,由领域专家与开发团队起围绕核领域开展领域建模评估维度领域建模能等级架构设计初始级采传统三层架构,未遵循整洁架构,整个系统缺乏清晰的边界采贫领域模型,业务逻辑主要以事务脚本实现成级领域层作为分层架构的独层,并为领域层划分了模块采了富领域模型,遵循向对象设计思想,但未明确定义聚合和资源库成熟级建了系统层次与限界上下层次的系统架

117、构,遵循了整洁架构,建了清晰的限界上下与领域层边界建了以聚合为核的领域设计模型,职责合理地分配给聚合、资源库与领域服务评估维度架构设计能等级编码动化测试初始级编码以实现功能为唯的没有任何动化测试成级法和类的命名都遵循了统语,可读性为核的领域产品代码提供了单元测试成熟级采测试驱动开发编写领域代码,遵循简单设计原则具有明确的测试战略,单元测试先评估维度整洁编码能与我交流架构分层模型适配 有效防止架构腐化实践CONTENTS01DDD分层参考架构02严纪律 防腐化 分层模型适配03分层模型适配实例DDD分层参考架构DDD分层参考架构给用户提供界面,关注用户交互和体验前端应用API服务业务领域基础设施

118、为前端应用提供API服务,关注事务和分布式等技术性问题领域模型和领域逻辑,关注业务概念。访问外界系统(调用外界系统)的技术相关实现。后台服务前端应用分层依据:干系人和技术点DDD分层参考架构-前端应用DDD重点关注后台业务服务,不解决前端交互问题前端界面API服务业务领域基础设施前端应用前端应用干系人:终端用户 诉求:良好的用户体验 技术点:人机交互设计和实现UX关注的层DDD分层参考架构为前端和第三方应用提供API服务,关注服务编排,事务和分布式等前端应用应用服务业务领域基础设施干系人:应用开发人员 诉求:灵活易使用的API 技术点:性能,事务,分布式,安全等非功能性需求API服务工作内容:

119、接收外部请求并响应:如HTTP请求,消息处理 事务管理 认证 缓存 日志 异常处理 配置 Session技术人员关注的层腐化案例:大量业务逻辑堆积模型:View Object Resource ModelDDD分层参考架构领域模型和领域逻辑,关注业务概念。前端应用API服务领域模型基础设施干系人:业务领域专家,业务领导 诉求:表现业务概念和实现业务价值 要点:业务建模和复杂性管理工作内容:建立业务模型,并体现在代码上 管理模型复杂度,适度拆分模块 实现业务逻辑业务人员关注的层业务领域腐化案例:亏空 大量技术术语业务人员完全看不懂 模型:应用服务 跨Bond Context DTO 领域服务 跨

120、聚合 聚合 实体 仓库 事件DDD分层参考架构访问外界系统(调用外界系统)的技术相关实现。前端应用API服务业务领域基础设施干系人:外界系统 诉求:稳定调用外部系统 技术点:使用和适配外部系统模型,隔离和快速诊断错误工作内容:学习和使用外部系统,如数据库,邮件系统 适配外部系统模型,如SQL映射到模型对象 技术人员关注的层基础设施腐化案例:业务逻辑和外部调用逻辑混合 如一个方法里即处理业务逻辑又调用SQL模型内容:PO 第三方Protobuffer 第三方SDKDDD分层参考架构 Java技术视角前端应用API服务业务领域基础设施技术人员关注的层技术人员关注的层业务人员关注的层UX关注的层We

121、b,Spring Boot,Kafka,Redis,JTA,两阶段提交,SSO,服务注册ORM,SQL DB,NoSql,服务发现尽量少依赖技术框架,让业务人员也看得懂代码参考架构对比https:/ DDD NLayered.NET 4.0 Architecture 前后端分离,完全剥离曾现层为了简便,合并Web Service和Application层Controller概念下移到Application层参考架构对比微服务架构https:/ Gateways,HTTP Client和ORM领域层对应 Service Layer,Domain和RepositoriesDDD分层架构对比前端应用

122、API服务领域模型基础设施业务领域DDD分层架构对比Clean Architecture前端应用API服务领域模型基础设施业务领域https:/ Architecture前端应用API服务领域模型基础设施业务领域https:/en.wikipedia.org/wiki/4%2B1_architectural_view_modelclass diagrams,and state diagramsactivity diagramPackage diagramuse casesdeployment diagramDDD分层架构对比 Enterprise architecture framework

123、前端应用API服务领域模型基础设施业务领域如何有效防止架构腐化架构腐化是系统开发过程中非常头疼的事情。使用DDD分层架构参考实践,可以在系统初始设计的时候领域明确出来。但问题是开发过程中不知不觉层次模糊,架构师有没有实践能有效阻止架构腐化?分层模型适配如何从一盘散沙到百万雄师百万雄师的铸造秘密 踢正步 叠被子知行合一 每个人日常就能做到 在日常最细微处抵抗懒散腐化 坚持塑造纪律DDD分层架构 不同模型适配(名词)资源模型:应用想要一把查询获取所有信息,一个操作做完业务前端应用API服务业务领域基础设施业务模型:精确表达一个业务概念,分治管理复杂度存储模型:性能最优化DDD分层架构 不同模型适配

124、(动词)HTTP方法:POST GET PUT DELETE前端应用API服务业务领域基础设施业务操作:注册 注销 登录 退出 修改 撤销存储动作:INSERT UPDATE DELETEDDD分层架构治理HTTP方法:POST GET PUT DELETE前端应用API服务业务领域基础设施业务操作:注册 注销 登录 退出 修改 撤销存储动作:INSERT UPDATE DELETE资源模型:应用想要一把查询获取所有信息,一个操作做完业务业务模型:精确表达一个业务概念,分治管理复杂度存储模型:性能最优化不同层级的模型坚决隔离,严格一对一翻译映射,不准复用DDD分层架构治理HTTP方法:POST

125、 GET PUT DELETE前端应用API服务业务领域基础设施业务操作:注册 注销 登录 退出 修改 撤销 查看 查询 验证码 激活存储动作:INSERT UPDATE DELETE动词翻译映射create retrieve update deletesavefindDDD分层架构治理前端应用API服务业务领域基础设施名词翻译映射资源模型:用户想要一把查询获取所有信息,一个操作做完业务业务模型:分解的业务概念存储模型:性能最优化HTTP字符文本Json视图对象一个用户请求一个视图对象多个固定的业务概念表达业务规则SQL:无冗余字段设计,主外键关联 NoSQL:冗余字段设计,无Schema宽列

126、DDD分层架构治理前端应用API服务业务领域基础设施名词翻译映射View ObjectHTTP字符文本JsonData Transfer ObjectDomain Object(Entity,Value Object)Persist Object/Protobuffer Object/View ObjectProtobuffer ObjectBinaryHttp Restfull APIRPCDBRPCJsonHTTP字符文本Http Restfull APIData Transfer Object分层模型适配实例架构治理中的踢正步用户账户注册和激活案例-用户注册和激活填写注册信息HTTP P

127、OST 注册信息处理注册信息保存注册信息发送注册激活码填写激活码HTTP POST 激活码验证激活码保存激活信息案例-用户注册-1前端应用API服务业务领域基础设施POST /usersmobile:“”,password:29WLV742createUser(registerInfo)register(account,parterId)CREATE TABLE account(uid varchar(32)NOT NULL,login_id varchar(128)DEFAULT NULL,password_hash varchar(128)DEFAULT NULL,n

128、ame varchar(100)DEFAULT NULL,activated bit(1)DEFAULT NULL DEFAUT 0,created_timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,password_expiration timestamp DEFAULT NULL,PRIMARY KEY(uid);class RegisterInfo(mobile:String,password:OptionString)class Account(uid:OptionUUID,mobile:String,password:Opt

129、ionPassword,activated:Boolean=False)class Password(passwordPlain:String)def passwordHash()=encode(password)def passwordExpiration()=save(account)一对一字段映射翻译到业务模型从业务业务模型 翻译出存储模型案例-用户注册-2前端应用API服务业务领域基础设施register(account,parterId)CREATE TABLE verification_token(verification_id bigint(20)unsigned NOT NUL

130、L AUTO_INCREMENT,account_uid varchar(32)NOT NULL,token varchar(128)NOT NULL,expiry_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,verify_type varchar(32)NOT NULL,PRIMARY KEY(verification_id),CONSTRAINT account_uid_fk FOREIGN KEY(account_uid)REFERENCES account(account_uid)ON DELETE CASCADE);save(v

131、erificationToken)从业务业务模型 翻译出存储模型通过短信发送注册激活码verify(account)save(account)notifyVerificationToken()class VerificationToken(account:Account expireToken:String,expiryTime:Date,verifyType:String)案例-用户注册-动名词个数总结前端应用API服务业务领域基础设施动词名词应用服务11领域模型13基础设施32案例-用户激活前端应用API服务业务领域基础设施PUT /users/activate uid:“d219-xww

132、0-13af-b021”,token:“23u3$z4o6799updateActivate(activateInfo)activate(VerificationToken)class ActivateInfo(uid:String,token:String)一对一字段映射翻译到业务模型从业务业务模型 翻译出存储模型save(account)UPDATE account SET activated=account.activated delete(verificationToken)class VerificationToken(account:Account expireToken:Stri

133、ng,expiryTime:Date,verifyType:String)案例-用户激活-动名词个数总结前端应用API服务业务领域基础设施动词名词应用服务11领域模型12基础设施22原则即使不同层的模型字段完全一样,也要求各自创建。架构师职责提炼概念 管理复杂性坚持原则 但不增加工作量import mons.beanutils.BeanUtils;UserBean newObject=new UserBean();BeanUtils.copyProperties(newObject,oldObject);public class SystemUser private String firstN

134、ame;private String lastName;private String phone;private String addressLine1;private String addressLine2;private String city;private String state;private String zip;/getters and setters /.public class User private String first;private String last;private String address;private String city;private St

135、ring state;private String zip;private String phone;/getters and setters /.坚持原则systemUser.setFirstName(user.getFirst();systemUser.setLastName(user.getLast();systemUser.setPhone(user.getPhone();systemUser.setAddressLine1(user.getAddress();systemUser.setAddressLine2(user.getAddress();systemUser.setCity

136、(user.getCity();systemUser.setState(user.getState();systemUser.setZipcode(user.getZip();看似工作量多 其实降低了复杂度(纠结)保持User模型的纯洁 降低了复杂度如果从概念上User模型就是只有一个address守护原则-CI检查 分层架构单元测试https:/www.archunit.org/import com.tngtech.archunit.junit.AnalyzeClasses;import com.tngtech.archunit.junit.ArchTest;import com.tngte

137、ch.archunit.lang.ArchRule;import static com.tngtech.archunit.library.Architectures.layeredArchitecture;AnalyzeClasses(packages=com.tngtech.archunit.example)public class LayeredArchitectureTest ArchTest static final ArchRule layer_dependencies_are_respected=layeredArchitecture().layer(“Applications).

138、definedBy(com.tngtech.archunit.example.applications.).layer(“Domain).definedBy(com.tngtech.archunit.example.domain.).layer(Infrastructure).definedBy(com.tngtech.archunit.example.infrastructure.).whereLayer(Applications).mayNotBeAccessedByAnyLayer().whereLayer(Services).mayOnlyBeAccessedByLayers(Appl

139、ications).whereLayer(“Infrastructure).mayOnlyBeAccessedByLayers(Services);守护原则-CI检查 分层模型单元测试https:/www.archunit.org/import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noClasses;AnalyzeClasses(packages=com.tngtec

140、h.archunit.example)public class DaoRulesTest ArchTest static final ArchRule DAOs_must_reside_in_a_dao_package=classes().that().haveNameMatching(.*Dao).should().resideInAPackage(.dao.).as(DAOs should reside in a package.dao.);ArchTest static final ArchRule entities_must_reside_in_a_model_package=clas

141、ses().that().resideInsideOfPackage(“.domains.model.).should().resideInAPackage(.model.).as(“Domain models should reside in package.model.);ArchTest static final ArchRule only_DAOs_may_use_the_EntityManager=noClasses().that().resideOutsideOfPackage(.dao.).should().accessClassesThat().areAssignableTo(

142、EntityManager.class).as(Only DAOs may use the +EntityManager.class.getSimpleName();THANK YOU欢迎一起探讨大规模系统架构设计、治理和演进面对面建群:1201 ?1.2.3.4.5.?Whats evolutionary architectureAn evolutionary architecture supports incremental,guided changeas a first principle across multiple dimensions.?OfflineCouponCoupon S

143、erviceSales CouponAftersales Coupon?THANKS认知能力:创新的核心域Snowden教授和他的Cynefin框架 1 2锤子和钉子的问题 3锤子和钉子的问题 4BLOCKCHAIN 5“胜兵先胜而后求战,败兵先战而后求胜”Every battle is wonBEFOREit is foughtSun Tzu“”7CARGO CULT AGILE 8Cynefin /knvn/“habitat”9这个质量问题太明显了!IS TDD DEAD?Join Martin Fowler,Kent Beck and David Heinemeier Hansson(D

144、HH)for a friendly debate on the pros and cons of the practice known as Test Driven Development(TDD).SENSE-MAKING 10SENSEMAKING“意会”指在高度复杂或不确定的情况下,为了做出决策,建立情境意识(situational awareness)和达到理解的过程。我们如何理解世界,以便我们能够在其中开展行动。11数据先于框架创新的策略 13连续性创新 非连续性创新Cynefin /knvn/“habitat”14连续性创新 非连续性创新同时试验 延迟决策Cynefin /knvn

145、/“habitat”15“If I had an hour to solve a problem Id spend 55 minutes thinking about the problem and 5 minutes thinking about solutions”THANKS!?持久化在分层架构中的演进户界层业务逻辑层数据访问层数据库户界层应层领域层基础设施层经典三层架构DDD分层架构以聚合为单元进持久化?(Aggregate)?(Root)?(?Boundary)?Eric?Evanspublic interface OrderRepository public Order findB

146、yId(String id);public void save(Order order);public void remove(Order order);个典型的资源库(Repository)接定义问题?问题NoSQL?Aggregate-PersistenceOrderRepositoryServiceOrderfindByIdOrderorder.pay()OrderOrdersave回归问题本源OrderRepositoryServicefindByIdorder.pay()saveAggregateOrderSnapshotAggregateOrderSnapshotAggregate

147、OrderSnapshotAggregateOrderSnapshotAggregate-Persistence回归问题本源public interface OrderRepository Aggregate findById(String orderId);void save(Aggregate orderAggregate);void remove(Aggregate orderAggregate);public class OrderService public void checkout(String orderId,CheckoutRequest request)Aggregate

148、aggregate=orderRepository.findById(orderId);Order order=aggregate.getRoot();Payment payment=new Payment(request.getAmount();order.checkout(payment);orderRepository.save(aggregate);Aggregate-Persistence示例代码?Version?Aggregate?Order?OrderItem?/?Aggregate-PersistenceTHANK YOU设设计计中中台台技术化快速推动设计致性体验设计中台是将前

149、台中,量可复的功能和场景进梳理,并且将之规范化、组件化,为全球化业务的速增做好准备02解决策略03总结01设计困境01设计困境国际化业务场景三端支持体验差异一些通用的功能,若由每条业务线自己去设计和研发,就无法保证设计的一致性,最终导致C端产品存在用户体验不一致甚至是困难的情况成本增加重复的设计和研发造成资源浪费,决策成本和时间成本也相应增加02解决策略03总结01设计困境02解决策略搭建套完整的体验设计中台体系协作搭建标通过体验设计中台,来促进各业务线各职能间的协作,无论是产品层面、设计层面、还是技术层面致搭建标用户使用C端产品时的体验是一致的影响搭建标通过体验设计中台,可以沉淀出一套相对成

150、熟的方法和模式,赋能到更多的业务,从而提升影响力,让更多的人理解和参与进中台产品的使用和建设中来业务布局产品化沉淀反哺全球化包容性设计本地化设计规范化流程机制化设计规范化中台产品Fox PageFox BannerFox ViewFox 周边Fox DesignFoxFamilyFox Page运营、设计、开发三协作的搭建平台Page requirementUEDFe-DevelopBe-DevelopTestTestPage requirementUEDFe-DevelopBe-DevelopTestOperationFox PageTestUED设计反复低效设计效复Develop3.5/1

151、时/Operation依赖性强赋能运营项总时5天数时A类常产线活动B类旅游局活动C类银卡活动Foxpage中活动模版分类A类-常产线活动A类-常产线活动模块组件层(优惠券、介绍、产品等)背景层(氛围渲染)B类-旅游局活动B类-旅游局活动C类-银卡活动设计师只需要在这三大类页面模板的基础上,根据具体业务需求,进行图片和色彩的设计和调整即可,能够释放出更多的资源去做一些有更高价值的项目APP、H5、PC多端持平台特点多语翻译实时预览Sketch导键成代码平台现状应类型5种接组件70余项发布706张未来发展引BI算法分析,实时分析上线效果Foxpage 改变了线性的工作模式,提升各职能之间的协作能力

152、,同时也提成了效率,缩短活动页面制作总时间跨度,最后赋能运营,降低对UED和研发团队的依赖Fox Design基于T的前中台效解决平台品牌设计原则与设计理念运设计素材及插件集成沉淀设计规范及开发指南延展延展不断成及持续发展Title bar组件Dialog组件Picker组件Text Fields组件服务电话组件帮助中心分享组件语言选择组件货币选择组件Lottie动画组件定制化多语言组件?This unique experience,which combines classical charm and modern elegance,extends from the Pork Restaura

153、nt where you can enjoy international cuisine to the Pork Bar where you can enjoy good wine.In addition,the hotel is adjacent to a number of tourist attractions located on the Macau Peninsula and Macau Fishermans Wharf.Hong Kong Sunset Cruise plus Dinner at the Jumbo Floating Restaurant!(),34573ABC4E

154、HJKABB4LMN4O!QLRSUVWYZ4S4abceEfgh iklmk&*+-25 8:=:?Foxdesign 提供了各类通用功能的组件,解决了内部协作一致性的问题,解决了各类文档更新迭代的问题,最终解决了用户体验一致性的问题Fox BannerBanner在线编辑平台Fox View集成化在线预览平台02解决策略03总结01设计困境03总结Fox PageFox BannerFox ViewFox 周边Fox DesignFoxFamily将各个职能对中台产品的需求进行提炼,通过协作打破职能边界设立核心区域,运用各自的专业知识,共同分析和解决该区域内的核心问题,最终落地Univer

155、salityA thoughtful and inclusive design tailored to the needs of a wide range of users.Universality设计跨界协同 赋能产业创新THINKING TECHNOLOGY INDUSTRY印 隽14年从业经验,擅长复杂系统的逻辑构建和设计建模,先后就职于CBSi、PPTV、分众传媒等企业,任职用户体验、产品设计团队Leader,跨界经历丰富,对用户体验体系的搭建和设计管理有深厚的累积和认知。GLODON广联达 用户体验设计中心总监中国传媒大学 新媒体设计系 客座硕导UCDCHINA上海、MOX创新智库发

156、起人之一IXDC、UXPA、RSG CHINA、Top100 Summit、台湾MIX等行业级设计峰会、技术峰会主讲人全国高等院校计算机基础教育研究会,网络科技与智能媒体设计委员会专家委员2018年,一个12岁女孩和抖音的故事3000粉内容运营200元流量变现删内容掉粉安全和数据验证2018年,一个12岁女孩和抖音的故事技术的革命场景的叠加渠道的多元社会的变迁来源:腾讯研究院构建智能+时代数字生态新图景中国经济40年高速发展成绩斐然,但面临增长放缓的压力持续加大新旧动能转换,包括传统产业升级和新兴产业规模化。产业互联网构建新型的、产业级的数字生态,打通各产业间、内外部连接,以新兴产业的技术提高

157、传统产业效率、以传统产业的市场带动新兴产业规模。2019年政府工作报告,提出中国未来重点发展目标之一:来源:波士顿咨询、阿里研究院、百度发展研究中心,解读中国互联网新篇章:迈向产业融合消费侧倒逼供给侧,拉动产业升级消费互联网货Products场Occasions人Consumers产业互联网人Manpower机Machinery料Materials法Methods环Mother-nature测Measurement来源:腾讯研究院构建智能+时代数字生态新图景产业互联网是互联网发展模式的深化逆境时抬头是一种韧劲,顺境时低头是一种冷静。Gartner Hype Cycle for Emerging

158、 Technologies20182019https:/ ART ONLINE Alicization 视频片段人工智能数字孪生物联网176713.4180757.47193566.78213943.56235085.53685992.9685992.9740060.8820754.3900309.50200000400000600000800000000200172018产值(亿元)国民生产总值建筑总产值2018年全国建筑业总产值23.5万亿元,同比增长9.9%,占全国国民生产总值的26.2%。2010201958亿400亿2019年7月统计IPO

159、时点0869320393723563929040020072008200920001620172018单位:万元营业收入广联达市值建筑行业的转型消费结构品质逻辑升级居住和使用的品质升级从标准到定制化和个性化47%中国建筑能耗占比95%高能耗建筑政府提出降低能耗要求BIM+云、大、物、移、智的发展与成熟,数字技术渗透入各领域、产业,新产业生态体系正孕育颠覆传统产业建筑行业利润远低于其他产业,研发投入低于1%,近20%项目超进度,近80%项目超投资,工人短缺。92%人

160、类在建筑空间时间50%建筑能耗占全球总能耗BIM+云大物移智技术成熟1-3%建筑行业整体利润消费拉动环境推动技术驱动产业倒逼60,00050,00040,00030,00020,00010,0000制造业建筑业+35%+19%20002016平均每位工人使用的机械价值5,0004,0003,0002,0001,0000制造业建筑业+55%+107%20002016平均每位工人使用的软件价值数字化对建筑行业的影响用数字建筑驱动建筑产业转型升级新设计新建造新运维虚体建筑全数字化样品工业化建造智慧化运维数字孪生数字建造实时在线数字驱动实体建造设备空间人员服务通过软件和数据打造数字化的生产线,把建筑行

161、业提升到现代 工业级精细化水平把建筑业提升至工业级精细化水平二氧化碳排放减少50%进度加快50%成本降低1/3质量缺陷安全事故00强者失去了对力量的敬畏,而弱者才懂得力量的价值。A strong man who has known power all his life,But a weak man who values of strength.https:/ Effects Editor&RendererVR RenderingLightweight algorithmEffect Show广联达图形引擎平台几何造型与计算约束求解场景数据对接场景浏览Geometric Modeling and

162、 ComputationConstraint SolutionScene data dockingScene Browsing设计师到底能做些什么?广联达工具型产品RIBBON设计规范广联达空间设计TRIGGERTRIGGERSOLUTIONSOLUTIONDouble Diamond Design ProcessDISCOVERDISCOVERDEFINEDEFINEDEVELOPDEVELOPDELIVERDELIVERThe Discover stage is where the initial idea or inspiration needs to be further develo

163、ped and expanded upon.The main problems and opportunities are also identified in this phase.The Define stage is where the brainstormed ideas are narrowed down and defined.These ideas are filtered through a process of review and selection where the ideas are analyzed,made sense of,then prototyped.The

164、 Develop stage is where the solutions to the identified problems are created,prototyped,and tested in a trial and error process to continuously refine initial ideas.The Deliver stage is the final stage where the refined product or service is finalized and launched.Designing the right thingDesigning

165、the right thingDesigning things rightDesigning things rightDouble Diamond Design ProcessTRIGGERTRIGGERSOLUTIONSOLUTIONDECISIONDECISIONPLANPLANDont knowCould beDo knowShould beRESEARCHRESEARCHSYNTHESISSYNTHESISIDEATION&IDEATION&IMPLEMENTATIONIMPLEMENTATIONQA&IMPROVEQA&IMPROVEDISCOVERDISCOVERDEFINEDEF

166、INEDEVELOPDEVELOPDELIVERDELIVERQuestion,ChallengeUnstructured research findingsFinal briefIdeasAnswer,ProductDouble Diamond Design ProcessTRIGGERTRIGGERSOLUTIONSOLUTIONPROTOTYPEPROTOTYPEDISCOVERDISCOVERDEFINEDEFINEDEVELOPDEVELOPDELIVERDELIVEREVALUATE CONCEPTSEVALUATE CONCEPTSFEATURE COMPLETEFEATURE

167、COMPLETEREFINEREFINESCOPESCOPESYNTHESIZESYNTHESIZEDECISIONDECISIONPLANPLANStakeholderBusiness CanvasMarket ResearchUser ResearchKANOSWOTExpert interviewsExperience MapPersona ModelInformation ArchitectureDomain ModelUse CaseSequence DiagramUser StoryVisualModelMECEA/B TestHEART ModelUser Walkthrough

168、Behavior AnalyticsUsability Test全链路设计Full Process Design产品&研发Product&Development商业&运营Business&Operation关注线上到线下全角色全触点的完整闭环商业链路中相邻节点间所有关系及互动by Gao Qiweiby Gao Qiweiby Gao Qiwei能力越大责任越大With great power comes great responsibility.多感官体验Sensory Experiences共同创造Co-Creation构件The Building Blocks为复杂世界准备的沉浸流畅的设

169、计系统An eloquent design system for a complex world抬头看天是一种方向,低头看路是一种清醒。Multimodal Interaction来源:百度AI交互设计院多模态交互将成为趋势人脸识别的广泛运用空中手势的交互多模态交互融合在不同领域中的应用https:/ iDrive 7.0人机交互系统融合五维交互界面,iDrive旋钮、方向盘多功能按键、触屏、声音及手势控制,实现人与车的自然沟通Multimodal Interaction人格情感与声学属性对应逻辑https:/ MBIT16型人格中的ESFJ型善意、爱家庭、重和谐https:/ are not

170、 the only one cursed by knowledge.可 能 有 人 会 问 我 建 议 看 什 么 书但是我建议大家多看片攻壳机动队刀剑神域红辣椒心理测量者底层劳动力必须向上转型生产力必须集中在高附加值工作上在不确定的未来 寻找确定的自己THANKSTHANKS领域驱动的协作设计1.2.3.4.5.13:30-14:10 协同设计中的 新语 汪志成&钱冰沁14:10-14:50 设计中台-技术化快速推动设计致性 李悦14:50-15:30 数字化的 协同赋能平台 万学凡&笪磊15:30-16:10 领域驱动的 组织能建设 张硕16:10-16:50 设计跨界协同 赋能产业创新

171、印隽What is your IT Department look like now?PRIESTHOODKeep computer systems functioningManaging within the functionAll required knowledge to located IT unitCIO as functional managerHave you ever heard Running IT as a business Expected benefits from IT investments elusive Focus on service delivery Int

172、ernal Customer=Customer Limited digital innovationPARTNERSHIPUnderstanding of business requirementsManaging around boundary of IT unitBuilding relationships to facilitate knowledge accessCIO as boundary spannerPRIESTHOODKeep computer systems functioningManaging within the functionAll required knowle

173、dge to located IT unitCIO as functional managerWhat Next for your IT Department?from Hierarchy to NetworkStarling Banking A bank with no technology function A digital-only bank 2.5 years to get regulatory approval Mobile retail account 2017 Business account 2018.Euro account this year Platform as co

174、mpetitive advantage Data(with AI)used to improve customer experience Customers control their data Ecosystem ready Banking as a serviceCASE STUDYStarling Banking Organizing for IT without an IT organization Not having an IT department means that you should never need the phrase”the business”Embrace s

175、hadow IT Organize around platforms for focus Autonomy with accountability Velocity over detailed planning Planning without estimation A tolerance for mistakes Product not project mentality Flipping bi-modalCASE STUDYto coordinating and integrating knowledgefrom managing ITORGAINZING FOR IT IS NOT TH

176、E IT ORGAINZATIONOrganizing LogicOrganizing ObjectiveOrganizing PhillosophyDesign CriteriaDigital Strategy ProcessRole of CIOCorral knowledge to manage IT in a dedicated orgaizational unitUnderstand business requirementsEnsure efficiency and effectivenessBuild relationships to facilitate knowledge a

177、ccessDeliver servicesAlign with“the business”Be a strategic partner and boundary spannerCoordinate and integrate distributed knowledge to build capabilitiesOptimize opportunities from technologyPursue learning,innovation and customer impactBuild capabilities to deliver products and servicesCo-create

178、 valueCo-evolve with customers and ecosystemDrive change and orchestrate peopleDesign FocusPARTNERSHIPPERVASIVE协同设计中的新语钱冰沁&汪志成感性思维 Emotional Thinkingnot a DVD distribution company.理性思维Rational Thinking30 多种本样式 各种格的图标 20 多种不同的卡投影 10 种不同的按钮 20 种不同边距的模态框 成千上万定义 CSS产品经理 我要品牌化得以沉淀户体验设计师 我要UI 与交互模式统前端程师 我

179、要在需求频繁变动时减少浪费“If your enterprise has 25 teams each making buttons,then it costs your enterprise$1,000,000 to have good buttons.”Nathan Curtis个典型的设计负债例Etsy需要改变其button的Style,这是份变更档,红是删除的代码,绿是添加的代码Design System(设计系统)32014NOW前端程师 Brad Forst 提出 Atomic Design,提出种分层级、有条理地创建设计系统的法1977Google 推出Mat

180、erial,是设计系统更进步数字化的实践与创新20062013Airbnb,Salesforce,Atlasssian,Spotify,AntDesign,Fusion Design 先后对外公布产品的设计系统Christopher Alexander 在A Pattern language中次提出模式 的概念Jenifer Tidwell 的Designing Interfaces则以设计模式的形式总结处理界设计法则2014NOW 设计系统包括完整的 设计价值观 和 原则、设计标准、场景定义,以及 套具包(UI 模式库 和 代码),于搭建和组合产品与服务。设计系统DESIGN GUIDELI

181、NEDESIGN SYSTEMDESIGN LANGUAGEDESIGN COMPONENTSDESIGN PATTERNSDESIGN PRINCIPLEDEV LIBRARYTOOLSOthers:Voice&Tone/Motion/Sound/illustration/icon DESIGN GUIDELINEDESIGN SYSTEM决定 要 做什么价值观原则标准定义决定 不 做什么第阶段:构建设计语语法、语素、语句、语意、语境、语、语速、响度DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGE01.语法设计原则,可以理解为设计语中的语法,是构建设计

182、语系统的起点,于传达 品牌主张 或 设计理念,它将指引 业务设计 执的向业务型 SAP抽象型 Material Design、FluentABC 理论DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGEABC 理论DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGEABC 理论DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGE设计 拟化输字【技术先】语转字【趣味活泼】写动效【效率第】动完成、联想DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGE 统

183、性:每块设计,都是更整体中的部分,因此必须站在更范围的度上,给予系统积极正的贡献。设计功能不应该是孤的,也不能是离群的 普遍性:Airbnb 在全世界使,户更是个全球性的社区。我们的产品和可视化语应该受到户欢迎,同时也要易于访问 标志性:我们专注于设计和功能,因此在这两,我们要既胆清晰 对话性:呼吸对命如此重要,我们要把同样的设计理念融到产品,通过更容易理解的式与我们的户进交流、沟通DESIGN SYSTEMDESIGN PRINCIPLEDESIGN LANGUAGEDESIGN SYSTEMDESIGN COMPONENTSDESIGN LANGUAGE02.语素视觉基础是构成设计语的最单

184、位,就像语素是语中最的义结合体。在原设计理论中,它属于最粒度的元素,通常包括:颜、字体、图标、格等DESIGN SYSTEMDESIGN COMPONENTSDESIGN LANGUAGE03.语句组件就像由若个语素组成的语句,如个基础按钮,通常就是由颜、字体、边距等元素组成。我们平时所说的组件库,其实就是部词典,其中包含了设计系统中所需的基础组件与法,在界设计中也具有较的通性DESIGN SYSTEMDESIGN COMPONENTSDESIGN LANGUAGE04.语义符号是语的载体,但符号本身没有意义,只有被赋予含义的符号才能够被使,这时候语就转化为信息,语的含义就是语义。在视觉传达设

185、计中也样,使的图标或图形,需具备正确的语义属性DESIGN SYSTEMDESIGN PATTERNSDESIGN LANGUAGE05.语境流程意义上的上下,产品属性中的语境,户当下所处的环境 例如:当户发起个删除数据的请求时,界会弹出个次确认的模态会话,户点击确认之后才会执删除操作DESIGN SYSTEMDESIGN PATTERNSDESIGN LANGUAGE06.语交互界中所使的说明或提示案07.语速界的信息密度DESIGN SYSTEMDESIGN PATTERNSDESIGN LANGUAGE08.响度梯级响度的按钮、字重等组件来满不同场景的表达需求汤姆奥斯本(Tom Osbo

186、rne)的视觉响度指南(visual loudness guide)中提出如何系统地处理按钮和链接的量DESIGN SYSTEMDESIGN PATTERNSDESIGN LANGUAGE质模式建属于你的系统设计语,或 系统画像DESIGN COMPONENTSDESIGN PRINCIPLE第阶段:落地协同实施明确架构设计,设计范围与体验策略新的敏捷能涵盖新的作 法 和 流程,同时也需要配套的数字化 平台 撑,形成规模化的作战能法流程平台数字化的新协作式Seed 种期Collect 搜索Categorize 分类Discovery 探索Framing 定义中有设计系统的概念搜集现有产品UI元

187、素将现有UI元素分类设计探索所有可能性收敛定义设计系统基本架构Solution&Collaboration 开发合作与开发者进开发6 步骤搜索-分类Collect -Categorize探索-定义Discovery -Framing开发&协作Solution&CollaborationSketchZeplinStorybookDESIGN SYSTEMDEV LIBRARYTOOLSOthers第三阶段:常维护与使产品经理 V.S.户体验设计师 V.S.前端程师Modal DialogsTooltipsNotification BarsProduct ButtonsIcon ButtonsSM

188、ALLMEDIUMQUITE LARGEButton Drop DownsEditDuplicateShareRemoveOptionOptionOptionOptionDefaultDisabledHoverPressedFocusedDefaultDisabledHoverPressedFocused DefaultDisabledHoverPressedFocusedDefaultDisabledHoverPressedFocused DefaultDisabledHoverPressedFocusedDefaultDisabledHoverPressedFocused Buttons4

189、567892320282303112345SuMTWThFSaSEPTEMBER9/17/2016CalendarFruitsVegetablesProteinsGrainsTwitterFacebookInstagramPinterestAlabamaAlaskaArizonaArkansasAAlabamaAlaskaArizonaText.AlabamaAlaskaArizonaText.AlabamaAlaskaArizonaSample Menus产品经理圣诞节要来啦,我们要将 站装饰新,主题改成

190、 红绿,再给我加点 欢快的动效,地图上 落落雪花ReportsLibraryTeamProjectsCalendarOverviewVisualizationIllustrationMarketingDesignAuto LayoutSketch AppUI DesignUIUXDribbbleInstagramFacebookTwitterView Antonio FMark GDorothy ROlive WalshMessageFollowThe smartest and most advanced Sketch design systems ever made.uxpowertools

191、UX Power Tools3 Members15 TasksProject NameVestibulum rutrum quam vitae fringilla tincidunt.Suspendisse nec tortor urna.Ut laoreet sodales nisi,quis iaculis nu.Completed3 Members15 TasksProject NameNam porttitor blandit accumsan.Ut vel dictum sem,a pretium dui.In malesuada enim in dolor euismod,id c

192、ommodo mi.Draft3 Members15 TasksProject NameCurabitur lobortis id lorem id bibendum.Ut id consectetur magna.Quisque volutpat augue enim,pulvinar lobortis nibh.Completed3 Members15 TasksProject NameLorem ipsum dolor sit amet,consectetur adipiscing elit.Ut pretium pretium tempor.Ut eget imperdiet nequ

193、e.Draft3 Members15 TasksProject NameDonec facilisis tortor ut augue lacinia,at viverra est semper.Sed sapien metus,scelerisque nec pharetra id,tempor.Past Due3 Members15 TasksProject NameIn hac habitasse platea dictumst.Vivamus adipiscing fermentum quam volutpat aliquam.Integer et elit eget elit fac

194、ilis.ActivePrevious PeriodCurrent PeriodCompleted Projects24 Tasks12/11/17 at 9:00amClient Location15 ClientsFranceCompleted67Awaiting Approval13Active Projects25YTDQTDMTDALL1M1W1D1H12/01/17-12/25/17Marketizor,LLCMedialinkAcmecorp Ltd.AllShow allClientsOnly MineAll ProjectsVisibilityShow allMark Gri

195、ffinDorothy RobertsOlive WalshAllTeam MemberCompletedPast DueDraftActiveProject StatusNew Feature:Export team metrics by clicking the download icon in the dashboard toolbar.主题改成 红绿,再给我加点 欢快的动效,地图上 落落雪花效/严瑾 的作台界ReportsLibraryTeamProjectsCalendarOverviewVisualizationIllustrationMarketingDesignAuto Lay

196、outSketch AppUI DesignUIUXDribbbleInstagramFacebookTwitterView Antonio FMark GDorothy ROlive WalshMessageFollowThe smartest and most advanced Sketch design systems ever made.uxpowertoolsUX Power Tools3 Members15 TasksProject NameVestibulum rutrum quam vitae fringilla tincidunt.Suspendisse nec tortor

197、 urna.Ut laoreet sodales nisi,quis iaculis nu.Completed3 Members15 TasksProject NameNam porttitor blandit accumsan.Ut vel dictum sem,a pretium dui.In malesuada enim in dolor euismod,id commodo mi.Draft3 Members15 TasksProject NameCurabitur lobortis id lorem id bibendum.Ut id consectetur magna.Quisqu

198、e volutpat augue enim,pulvinar lobortis nibh.Completed3 Members15 TasksProject NameLorem ipsum dolor sit amet,consectetur adipiscing elit.Ut pretium pretium tempor.Ut eget imperdiet neque.Draft3 Members15 TasksProject NameDonec facilisis tortor ut augue lacinia,at viverra est semper.Sed sapien metus

199、,scelerisque nec pharetra id,tempor.Past Due3 Members15 TasksProject NameIn hac habitasse platea dictumst.Vivamus adipiscing fermentum quam volutpat aliquam.Integer et elit eget elit facilis.ActivePrevious PeriodCurrent PeriodCompleted Projects24 Tasks12/11/17 at 9:00amClient Location15 ClientsFranc

200、eCompleted67Awaiting Approval13Active Projects25YTDQTDMTDALL1M1W1D1H12/01/17-12/25/17Marketizor,LLCMedialinkAcmecorp Ltd.AllShow allClientsOnly MineAll ProjectsVisibilityShow allMark GriffinDorothy RobertsOlive WalshAllTeam MemberCompletedPast DueDraftActiveProject StatusNew Feature:Export team metr

201、ics by clicking the download icon in the dashboard toolbar.不要把双看做界限分明的 两个,要相互了解对的领域不要把设计与实现看做界限分明的 上下游步骤,要不断迭代,有讨论、验证的过程户体验设计师前端程师互动原则1.解读需求2.讲解 Design System3.选择基础 CSS 框架4.完成布局拆分5.使基础 CSS 框架完成内容和交互6.逐应 Style Guide7.当遇到设计中疑似违反 Design System 的地时,找 UX 讨论8.(变更时)通过 UX 的变更理由,更深刻理解 Design System实现的过程当 协同设

202、计中的新语 被使后新的作模式 将被定义!THANKS Image from:https:/ from:https:/www.elsetge.cat/pngvi/hTJJRm_westworld-wallpaper-united-states-national-arboretum/01分智Bicameralism(the condition of being divided into two-chambers)is a hypothesis in psychology that argues that the human mind once operated in a state in whic

203、h cognitive functions were divided between one part of the brain which appears to be speaking,and a second part which listens and obeys a bicameral mind.https:/en.wikipedia.org/wiki/Bicameralism_(psychology)A concept of space in prepositions,A concept of matter in nouns,A concept of time in tenses A

204、 concept of causality in verbs Steven Pinker02语即建模“She is underwater”企业的 统语成分信念和价值观基本的 潜在假设埃德加沙因化模型 某企业的语上下供应商A的语上下供应商B的语上下供应商C的语上下某企业的语上下供应商D的语上下供应商B的语上下供应商C的语上下Pidgins are languages that grow out of necessity when groups of people that dont share a common language must interact with each other.Pid

205、gins are a mixture of words from different languages,and feature a simpler grammatical structure and smaller vocabulary.With extended use over time,a pidgin language develops and becomes a common mode of communication.Pidgins,which start as a simpler form of communication,can evolve over generations

206、 into a creolized language,which features a much more extensive vocabulary and more well-defined grammatical structures.The most widely used form of a creole language is Haitian Creole,with over seven million speakers throughout the world.Ref:https:/ a ferry landing in the Pacific island nation of Vanuatu,a sign in Bislama(an English-lexifier pidgin-creole)can be translated as,If you want the ferry to come,strike the gong.Anders Ryman/Getty Images03协作设计Heuristic over algorithmicEvolutionary over comprehensiveExploratory over theoretic

友情提示

1、下载报告失败解决办法
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站报告下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。

本文(2019年领域驱动设计峰会嘉宾演讲PPT资料合集.rar)为本站 (云闲) 主动上传,三个皮匠报告文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三个皮匠报告文库(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
会员购买
客服

专属顾问

商务合作

机构入驻、侵权投诉、商务合作

服务号

三个皮匠报告官方公众号

回到顶部