班级规模及环境--热线:4008699035 手机:15921673576( 微信同号) |
每期人数限3到5人。 |
上课时间和地点 |
上课地点:【上海】:同济大学(沪西)/新城金郡商务楼(11号线白银路站) 【深圳分部】:电影大厦(地铁一号线大剧院站)/深圳大学成教院 【北京分部】:北京中山学院/福鑫大楼 【南京分部】:金港大厦(和燕路) 【武汉分部】:佳源大厦(高新二路) 【成都分部】:领馆区1号(中和大道) 【沈阳分部】:沈阳理工大学/六宅臻品 【郑州分部】:郑州大学/锦华大厦 【石家庄分部】:河北科技大学/瑞景大厦 【广州分部】:广粮大厦 【西安分部】:协同大厦
最近开课时间(周末班/连续班/晚班):2020年3月16日 |
实验设备 |
☆资深工程师授课
☆注重质量
☆边讲边练
☆合格学员免费推荐工作
★实验设备请点击这儿查看★ |
质量保障 |
1、培训过程中,如有部分内容理解不透或消化不好,可免费在以后培训班中重听;
2、培训结束后,授课老师留给学员联系方式,保障培训效果,免费提供课后技术支持。
3、培训合格学员可享受免费推荐就业机会。 |
课程大纲 |
主题内容
第一单元
领域建模的方法1、领域建模与设计的关系
优秀的软件系统与好的软件设计息息相关,但最关键的还是在于对需求的理解。如果 不能正确的理解软件需求,那么再好的设计也不能设计出好的软件。正确的做事情固然重要,更重要的是要做正确的事。然而,需求到设计存在巨大的鸿沟,因为需 求是站在业务角度来考虑,而设计往往会站在实现角度。领域建模就是为这二者搭建一个沟通与转换的桥梁。
2、领域建模从需求开始
为了更好的理解需求,我们可以从需求画布开始,充分理解参与软件系统的角色、功能、价值等内容,以便于整个团队更为深入地理解需求,达成一致认识。
演练:绘制商业需求画布
3、场景驱动设计模型
场景驱动设计的核心在于识别场景,它需要设计者结合具体的业务场景,分析业务流 程,以此驱动出用例;再以用例驱动对业务逻辑的建模。场景驱动设计的核心模型为6W模型,即Who,Why,When,What,Where与hoW。它 将对应职责模型的业务价值、业务功能与业务实现,并从角色的角度思考对象之间的协作以及设计边界。
演练:绘制场景图
第二单元
领域驱动设计的战略设计1、限界上下文
若要进行领域建模,并将业务需求逐步演化为架构设计,则需要引入DDD(领域驱 动设计)的战略设计作为指导。场景图与限界上下文可以很好地结合,帮助架构师很好地识别各个子领域的概念边界与设计边界。如此则可以运用“分而治之”的思 想识别出整个系统的业务逻辑边界与物理边界。
可视化演练:识别电子商务系统的限界上下文
2、领域模型
通过限界上下文,可以帮助我们分析系统的领域模型,包括系统的核心领域与子领 域。确定系统的核心领域与子领域可以帮助架构师合理分配资源(包括时间资源与人力资源)。而对子领域的进一步识别,可以帮助架构师更好地识别可重用资源, 包括可重用的功能模块,确定技术栈,决定构建还是购买的架构战略。
3、四色建模法
首先以满足管理和运营的需要为前提,寻找需要追溯的事件。根据这些需要追溯,寻找足迹以及相应的时标性对象。寻找时标对象周围的人/事/物。从中抽象角色,把一些信息用描述对象补足。
案例分析:配送管理系统的四色建模
4、上下文映射图
本部分内容会讲解限界上下文之间主要存在的组织模式与集成模式,这其中包括防腐层,开放服务调用等。利用上下文映射图,有助于识别上下文之间的关系,思考处于上下文内领域模型之间的通信方式,从而帮助架构师驱动出最终的应用逻辑架构。
可视化演练:电子商务系统的应用逻辑架构
第三单元
领域驱动设计的架构设计1、分层架构
分层架构模式是应用最为广泛的架构模式,它根据关注点分离的架构原则,针对表现层、领域层和基础设施层进行层次分离。本次培训将以全新视角审视分层架构,针对大型软件系统分析该如何进行分层架构设计。
案例分析:网上银行的分层架构,根据最基本的业务流程对系统进行关注点分离,绘制系统的分层架构,并通过时序图展现各层之间的协作。
2、六边形架构
虽然分层架构仍然是运用最为广泛的架构模式,同时更是诸多架构模式的基础,但它 已不足以描述越来越复杂的分布式系统架构。由Cockburn提出的六边形架构(Hexagonal Architecture)是一种具有对称性特征的架构风格。在这种架构中,不同的客户通过“平等”的方式与系统交互。该架构中存在两个区域,分别是“外 部区域”和“内部区域”。这种界定了明确内外边界的架构风格,更有利于架构师实现关注点分离,并将关注重心放在适配器与通信端口上。
演练:六边形架构的通信边界
案例:大型金融系统的客户管理
3、CQRS
CQRS风格,即命令查询职责分离(Command Query Responsibility Segregation),它结合了消息处理、事件处理的架构风格,是对多种设计模式的综合运用,适用于处理读写比例高,需要支持可伸缩性的大型系统。
案例:AxonFramework对CQRS的支持
4、事件驱动架构
事件驱动架构(Event-Driven Architecture,EDA)是一种用于处理事件生成、发现和处理等任务的软件架构。事件往往对应于软件系统的状态机,状态的迁移就是用事件来触发的。因而,事件能够很好地体现这样的业务模型。同时,基于事件的软件架构可以帮助我们更好地建立松散耦合的模块化架构。
第四单元
领域驱动设计的战术设计1、领域驱动设计的专用术语
领域驱动设计的一个特点是针对领域层,提出了统一的设计术语,包括关联、实体、值对象、聚合、服务、模块。注意区分它与传统业务层设计在概念上的区别。甄别这些概念之间的区别,有利于我们正确地运用领域驱动设计。
整体而言,领域驱动设计的这些术语涵盖了领域对象的整个生命周期,包括领域对象从创建、存储、重建、归档、修改到删除的整个生命周期。
2、实体与值对象
这两个概念都是领域对象的体现,二者的主要区别在于对“标识”的运用。本部分的内容深入展开对实体标识的讨论,揭示实体的本质特征,挖掘实体的关键行为。通过识别角色与职责对实现进行分析。
本部分内容还将通过深入讲解值对象的特征帮助我们分辨值对象与实体,使得我们可以在领域驱动设计中有效地运用实体与值对象。本部分内容还包括持久化值对象,以及领域驱动设计与ORM之间的关系。
3、领域服务
通过讲解什么是领域服务,什么不是领域服务理清领域服务的概念,并讲解如何建模领域服务。讨论领域服务和面向接口设计思想。
4、领域事件
事件驱动架构的主要对象即为领域事件,我们要分清在何时以及为什么要使用领域事件,并对领域事件进行建模。通过讲解发布者-订阅者模式讲解如何在领域模型和限界上下文中发布领域事件。同时,针对事件进行存储的Event Source也与CQRS架构风格直接相关。
5、模块
模块化设计是优良架构的保障,同时也是软件复用最重要的单元。领域驱动设计将模块视为与对象相等的一等公民,这使得整个设计在微观层面符合面向对象的思想,同时也能够为宏观层面的架构设计提供有力地支持。本部分将结合限界上下文讲解基本的模块设计原则与设计模式。
6、聚合
聚合是领域驱动设计最为重要的领域概念。本部分内容将深入探讨聚合的设计原则,并辨别在聚合设计中可能出现的坏味道,并提出针对性的解决方案。这些原则和方案包括:在一致性边界之内建模真正的不变量,设计小的聚合,通过唯一标识引用其他聚合,在边界外满足最终一致性。
7、工厂和资源库
工厂和资源库都是管理领域对象(实体、值对象和服务)生命周期的对象。工厂主要针对内存中对象从无到有的创建过程,与设计模式的工厂模式基本相似。
资源库则分为面向集合的资源库与面向持久化的资源库。本部分内容将重点讲解与资源库直接相关的技术细节,包括如何选择资源库的方式,如何针对聚合持久化资源库,如何管理事务,以及分辨资源库与数据访问对象(DAO)之间的异同。
8、应用层设计
作为为UI提供的应用服务,其目的在于管理和协调领域对象,并为领域对象提供横 切关注点的内容。好的应用服务设计不应该承担任何与领域逻辑有关的职责。应用层是架构层面的外观与适配器模式的体现。它可以提高软件系统架构的可用性与简 单性,也能够更好地与面向服务架构或RESTful架构风格结合。
第五单元
实战演练1、 基于多租户的社交网络系统以及项目管理系统的领域驱动设计
这是领域驱动设计过程的完整案例分析,从需求开始着手,开展对整个系统的架构分析、领域概念识别与分析,并对建立的领域模型进行迭代与演化,核心领域概念的演进,扫清领域设计过程中的认知障碍,并总结了领域驱动设计过程的一些经验教训。
本实战演练包含了真实的案例需求,以及符合领域驱动设计各种知识点的案例病症分析,从对比入手来探讨好的领域驱动设计方法。同时,还将引入大量的可视化图形、设计图与代码帮助学员理解如何在真实项目中运用领域驱动设计的思想,指导设计人员进行良好的设计。 |
|
|
|
|
|
|