其它技能培训


当前位置: 企业公开课 > 职业技能 > 其它技能

设计匠艺实战精要


时间地点: 2015-1-24 至 2015-1-25  北京      授课讲师姜志辉    学习费用: 5800 元/位

2015-01-24至2015-01-25【北京】  
 
培训对象: 对此课程感兴趣的学员

课程费用:5800元/人


课程简介:

本课程培训周期为2天
设计匠艺对每一位软件开发人员都应该掌握的核心技能和技术进行了深入的探讨,总结出了大量的最佳实践,提供了一整套最精炼的技术集合,通过接近于“近身肉搏”的方式“手把手”传递,可以帮助开发者在开发中变得游刃有余,极大地提高开发效率和软件质量。该模块可以帮助团队成员掌握以下关键实践:
用例驱动开发(UDD)
基于UML的体验式设计
验收测试驱动开发(ATDD)
测试驱动开发(TDD)
领域驱动设计(DDD)
掌握CleanCode的核心原则与实现方法
熟练使用结对编程、单元测试、重构与设计模式的良性闭环
对模式的了解更加深入
如FrederickP.Brooks,Jr.所说,我们可以将设计分为结果、过程和手法三个部分。
以我个人的经历而言,软件的设计结果可以总结为三个词:角色、职责、协作。设计的手法同样可以总结为三个词:抽象、封装、多态。主流的设计过程则可以总结为三个方法:UDD、TDD、DDD。
作为入行15年的总结,这大概就是我对于设计了解的全部了。


课程大纲:

设计三要素
1.设计的过程
2.设计的手法
3.设计的结果

设计知识体系图
1.道(设计的世界观)
2.法(原则)
a)ISOLD原则(SingleResponsibility原则,OpenClosed原则,LiskovSubstitution原则,InterfaceSegregation原则,DependencyInversion原则)
b)DRY原则
c)GRASP原则
d)…
3.术(模式与方法)
a)模式(架构模式、分析模式、设计模式、实现模式)
b)方法:TDD、UDD、DDD、FDD、BDD…
4.器(实践与工具)
a)实践(PairProgramming、UnitTest、Refactor…)
b)工具(XUnit、Mock、Git、Maven、Jenkins…)

设计的过程
各种设计风格
1.散弹式设计
2.撞大运式设计
3.防御式设计
4.屠宰式设计

用例驱动设计
1.UML统一建模语言
2.UP与OOAD
3.用例与场景
4.ICONIX方法
5.6个W
6.设计其实可以很简单
7.可视化设计画布
8.用例与场景
9.一起设计
10.角色、职责、协作

WorkShop:设计画布实战演练
行为驱动设计
1.学会讲故事
2.活的文档
3.用正确的方法做正确的事
4.可运行的用户故事
5.正确的格式
6.基于文本的自动化
7.使用ATDD满足客户需求
8.演化出文档系统

CodeKata:Cucumber
测试驱动设计
1.用户故事与场景
2.怎么固定需求
3.代码未动、测试先行
4.结对编程、简单设计、重构
5.保持节奏
6.可视化设计
7.角色、职责、协作

CodeKata:TDD
领域驱动设计
1.分离领域
2.一个团队,一种语言
3.模型属于领域层
4.领域对象的生命周期
5.领域设计模式
6.保持可视
7.角色、职责、协作

WorkShop:DDD实战演练
设计的结果
设计的三个结果
1.角色
2.职责
3.协作
职责
1.职责是核心
2.职责的抽象
3.职责的封装
4.职责的粒度
5.职责分类

角色与职责
1.GRASP
2.信息专家
3.构造者
4.服务提供者
5.协调者
6.控制器
角色的表现形式
1.函数
2.对象
3.类
4.包
5.子系统
6.构件

协作
1.协作的表现形式
2.由协作决定的职责
3.协作与角色划分
设计的附产品
1.经验的总结:模式
2.方法的沉淀:OOAD方法
设计的手法
设计的三种手法
1.抽象
2.封装
3.多态

抽象
1.职责的抽象
2.识别变化点
3.关注点分离
封装
1.封装不那么简单
2.封装职责
3.封装的层次
4.三种封装手法
多态
1.依赖解耦
2.组合还是多态
3.多态的示例:行为型模式

解构模式
1.创建型模式的抽离
2.行为型模式中的封装与多态
3.结构型模式与协作
设计的原本



演讲嘉宾:姜志辉

中国杰出讲师
顾问团队成员。2005年开发者大会最佳讲师、最佳讲义获得者;2007年度开源项目之AgileUML的主架设计师。更重要的是他是一位快乐的实用主义程序员。虽然他热衷于软件开发技术与敏捷开发实践。但是能真正吸引他的是程序与使用者交流和沟通的能力。Jobs是实用开发的“永久消费者”,几乎在任何地方,都可以找到软件开发哲学的灵感。当不沉浸在编程之乐时,他喜欢在DotA世界里充当一名战队的组织者,在那里,人们叫他Rails!

------分隔线----------------------------