领域驱动设计
报名详情
时 间:2012年10月21-23日 地 点:上海 费 用:3000元/人(包含听课、讲义、教学设施使用、两天的午餐、学习用具等) 培训证书:培训结束,对理论、实践双项考核成绩合格者,颁发中国信息产业培训网的培训证书。 参加对象:业务架构师、软件架构师、软件详细设计师与开发者 学员基础:熟悉面向对象分析与设计,熟悉uml工具,掌握一种编程语言如c,c++,java,.Net 联 系 人:于毅 先生 电 话: 0755-36529027
课程背景
软件系统面向对象的设计思想可谓历史悠久,20世纪70年代的Smalltalk可以说是面向对象语言的经典,直到今天我们依然将这门语言视为面向对象语言的基础。随着编程语言和技术的发展,各种语言特性层出不穷,面向对象是大部分语言的一个基本特性,像C++、Java、C#这样的静态语言,Ruby、Python这样的动态语言都是面向对象的语言。但是面向对象语言并不是银弹,如果开发人员认为使用面向对象语言写出来的程度本身就是面向对象的,那就大错特错了,实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不鲜,代码的复用性和扩展性无法得到保证。为了解决这样的问题,领域驱动设计提出了清晰的分层架构和领域对象的概念,让面向对象的分析和设计进入了一个新的阶段,对企业级软件开发起到了巨大的推动作用。 课程目标: 领域驱动设计的关注重心是领域,尤其在面对复杂的领域逻辑时,它总能够帮助我们很好地分析领域。领域驱动设计的基础是领域建模。Eric认为需要和领域专家良好地合作,从交谈中发现通用语言,找到领域的关键词。领域建模是迭代的过程,根据逐渐深入的领域知识来精化模型。不过,领域驱动设计并不排斥其他的分析技术,例如分析模式,或者通过测试驱动开发来引导我们找到问题域的领域模型。领域建模并非领域驱动设计所独有。在RUP中,领域建模就是一个非常重要的环节。它是一种用例驱动的开发方法,通过获得的用例来帮助分析和设计人员寻找对象,以及对象之间的关系。根据我个人的经验,我喜欢采用两种截然不同的方式来获得模型。一种是用例驱动,一种则是测试驱动。在得到初步的领域模型中,我会尝试利用领域驱动设计的思想为对象分类,找到实体、值对象、聚合以及服务对象,并通过分析对象的生命周期,为不同类型的对象建立资源库和工厂对象。
课程大纲:
1. 面对对象设计基础 1) 面对对象的含义 2) 统一建模语言 3) 面对对象设计的原则 4) 设计模式
2. 领域模型驱动的作用
1) 捕获业务模型 2) 业务专家与开发人员的语言 3) 设计与实现的绑定 4) 应对软件的复杂性
3. 如何获取领域模型
1) 从业务概念、业务规则和业务逻辑中获得 2) 从用例模型的各个流程中提取名词或名词短语获得 3) 形成领域模型的概念类 4) 建立通用语言形成通用语言术语表
4. 如何建立领域模型
1) 关联 2) 实体 3) 值对象 4) 服务 5) 模块 6) 范型
5. 领域对象的生命周期
1) 聚合 2) 工厂 3) 资源库 4) 关系型数据库对象
6. 领域驱动设计模式
1) 事务脚本 2) 表模块 3) 领域模型 4) 服务层
7. 领域模型柔性设计
1) 释意接口 2) 无副作用的函数 3) 断言 4) 概念轮廓 5) 孤立的类 6) 声明式设计
8. 精炼领域模型
1) 维护模型完整性 2) 提取核心领域 3) 核心领域的隔离与抽象 4) 大比例结构
9. 重构领域模型
1) 贯穿整个“开发—维护—再开发”的过程中 2) 与领域专家参与的、反复讨论与整理的过程 3) 隐式概念转化为显式概念 4) 运用面向对象分析设计原则重构领域模型
10. 领域模型在软件框架中扮演的是什么角色
1) 用户界面层(表示层) 2) 应用层(Service层) 3) 领域层(模型层-业务逻辑层) 4) 基础结构层(DAO、工具类以及其它的技术支持类)
11. 领域模型与上层映射
1) 实现业务逻辑接口和持久化接口(Domain Model) 2) 领域服务于应用的区别 3) 设计应用框架 4) UI框架与领域对象绑定
12. 领域模型映射到数据层
1) ORM模式(行为模式、结构模式、元数据模式) 2) ORM Framework 3) DTO 与 DAO 4) 数据库结构扩展设计适应领域变化
13. 领域服务化与SOA
1) 领域对象发布成发布 2) 领域服务分布设计 3) 基于消息中间件的核心领域与边缘领域交互 4) 领域对象服务并行性能调度算法
14. 领域模型与云计算
1) 领域模型与编程语言 2) 领域服务池化设计 3) 领域数据存储分布化 4) 云端UI展现(AJAX、HTML5和CSS3)
讲师简介
韩老师 曾多次作为项目负责人、系统架构师领导并直接负责完成了多个国家级大型电子政务项目的规划与实施工作,具备丰富的实战经验和项目管理经验。投身IT行业14年,历经电子商务、大型网站、远程教育、ERP、电子政务、智慧城市、云计算的云起云落,从对Asp、Jsp、ActionScript、VB、VC、Java等开发语言的使用与深入理解,再到对Struts、Spring、Hibernate、ibatis、JSF、Webwork、Seam、EXT、DOJO、jQuery等各种开源框架的研读与灵活驾驭,直至对EJB、Webservice、SOA、Web2.0、网格计算、移动计算、普适计算、云计算、BigData等各种组件及概念的深入应用与思考,始终享受着IT技术带来的激情与成功。 对于带领团队运用设计模式、OOA、OOD、敏捷、测试驱动、XP、架构驱动、用例驱动、领域模型驱动、RUP等各种思想进行业务分析、架构设计、软件开发、项目实施有着丰富的经验和独到的见解。特别重视从实战到理论、从理论到实战、从技术到管理、从管理到技术的综合运用及各种方法论的融会贯通。精通J2EE架构设计,熟悉TOCAF方法论,精通Java设计模式,对Java设计模式在软件开发过程中的使用有独到的见解,精通StrutsMVC、HibernateORM、SpringAOP技术,对RUP、XP、TDD、DMD软件工程管理概念在实际的软件工程管理中的运用具有丰富的经验,对CMMI有着深刻理解,具有国家级“金字号”大项目管理及系统架构设计的实战经验。 |