如何写出让用户信任的产品?首先要写出坚实可靠的代码才行。测试驱动开发与软件重构, 它能让你的产品代码更坚实。
【课程形式】
本课程将会采用全程Code Kata的学习方式。每 2 名成员会自发形成一个作战单元,每个作战单元都会有自己指定的“作战区域”和“武器装备”。我们将共同穿越那些危险重重的“编程陷阱”和“开发沼泽”,这包括“场景再现”、“Code Kata”、“复盘总结”三个部分:
“场景再现”环节。由教练扮演“驾驶员”和“领航员”角色,模拟演练在实际开发场景中的编程实践。
每2位开发者,共同组建结对伙伴(其间2位教练会作为开发者参与随机分配),完成一个“番茄钟”的“Code Kata”练习。
“复盘总结”,绘制知识体系雷达图。
让那些真正来自第一线的编程实践(ATDD + TDD + TOOLS +PAIR PROGRAMMING + REFACTOR + DESIGN PATTERNS)融入我们的血液,成为我们身体中的一部分。
我们来自开发实战第一线,我们是“ Programming Samurai”。
【培训对象】
注重实效的开发人员、开发工程师、开发团队负责人等。
【培训内容】
时间 | 场景再现 | Workshop/Code Kata |
第一天 | 面向对象编程与实战方法 | |
面向对象的知识地图 | 面向对象的原则 ① ISOLD原则(Single Responsibility原则,Open Closed原则,Liskov Substitution原则,Interface Segregation原则,Dependency Inversion原则) ② DRY原则 ③ … 面向对象的模式与方法 ④ 模式(架构模式、分析模式、设计模式、实现模式) ⑤ 方法:TDD、UDD、DDD、FDD、BDD… 面向对象的实践与工具 ⑥ 实践(Pair Programming、Unit Test、Refactor…) ⑦ 工具(XUnit、Mock、Git、Maven、Jenkins…) | |
三个基本元素 | 角色、职责、协作 | |
用例驱动开发 | 面向对象的软件开发 角色、职责、协作 UML与OOAD 设计画布 四色建模法 健壮性分析图法 CRC卡片法 | Workshop:E-learning 绘制用例图 用户故事 粒度与层次 场景 设计画布 角色、职责、协作 |
验收测试驱动开发 | 实例化需求 场景驱动设计 行为驱动开发 使用Cucumber 确定角色、职责、协作 | Kata_01:Order Payment 从故事开始 基于文本的自动化 基于Gherkin语法 Given、When、Then、And、But 富有表现力的场景 组织代码 角色、职责、协作 |
测试驱动开发 | 基本匠艺实践 红色 绿色 蓝色 TDD三项法则 F.R.I.S.T | Kata_02:Currency 寻找结对伙伴 选取用户故事 编写测试用例 红色->绿色->蓝色 伪实现 显明实现 三角法 |
第二天 | 重构与设计模式 | |
三个基本手法 | 抽象、封装、多态 | |
重构工具箱 | 腐烂的代码 识别坏味道 应用重构技法 小步前进 Clean Code | Kata_03:Trainning 实现功能的代码 识别代码坏味道 重构手法运用 重构导向模式 绘制重构地图 |
重构导向模式 | 可读性好的代码 由异味导向的重构 由原则导向的重构 应用设计模式 抽象变化点 封装职责 利用多态进行解耦 | Kata_04:iCourse 重构到策略模式 重构到工厂模式 重构到命令模式 重构到模板模式 重构到职责链模式 重构到适配器模式 重构到MVC框架 |
解构设计模式 | 识别变化点 关注点分离 职责的抽离 封装变化点 三种封装手法 依赖解耦 组合还是多态 | |
设计的原本 |
|
详情请登陆:http://www.tcict.cn
【培训师】
由业界知名的架构师、自称“小程序员”的姜老师亲自授课:
姜老师 线下交流组织“设计匠艺”核心小组成员、线上“产品经理俱乐部”组织者,开源项目AgileUML的提交者,曾拿过IBM两个奖项,于05、09年先后在863国家数字油田的项目中任“架构师”。目前正在抓紧完成在线CodeKata网站iDojo的编码。喜欢线下技术活动的各种交流和分享,热衷于实用主义和敏捷开发技术。span^�?>b�s�n lang=EN-US style='font-size:9.0pt;font-family:"Verdana","sans-serif"; mso-bidi-font-family:宋体;mso-font-kerning:0pt'>1、 演化式设计 Emergent Design
2、演化设计--重构带来了一种新的构设计方法,称为反思性设计(Reflective Design)。除了创建一种设计并用代码实现它之外,你现在还可以分析已有代码的设计并改善它。寻求改进的一种最好的方法是通过代码嗅觉(code smells).
3、在详细设计之中,如何对发现问题的设计进行重构
二、软件设计原则/模式
1、项目系统的演变,以及设计原则的应用效果,通过项目的演化分析这些核心设计原则的应用场景
2、通过一个大型实例,传递Clean Code,设计原则等,包括DIY原则,Tell Don't Ask原则,Soild原则(Single Responsibility原则,Open Closed原则,Liskov Substitution原则,Interface Segregation原则,Dependency Inversion原则)。
三、架构评审与架构重构
1、 现场设计案例系统部署架构模型,并开展ATAM评估;
2、 现场设计案例系统数据架构模型,讨论中间件对架构决策的影响;
3、实操细化架构设计练习,尝试优化分解架构设计,使之适应未来架构变化。
银行、政府等多领域大型核心系统设计最佳实践案例分析
1、结合多个案例项目进行分析,怎样发现和封装变化,如何通过具体的手段来进行适应这些变化
2、很多公司习惯做大量的预习设计,这被证明是风险很高的做法。好的架构和设计是演进出来的,通过这个环节了解演进式设计的方法,包括演进式设计的方法、工具、模式等内容。
3、案例分析,根据课程介绍的坏症状,进行重构合理的设计;
4、如何计划重构活动以实现架构演进,如何从设计方法、技术债务、复杂性等角度看架构演进
Day3
(13:00-16:00)
第六部分 千万级访问量网站架构变迁案例分析与最佳实践
一、用户体验与交互设计
1. 基本概念
2. 6大设计原则
3. 亚马逊网站案例剖析
二、千万级访问量的大型网站架构变迁
1. 物理分离webserver和数据库
2. 增加页面缓存
3. 增加页面片段缓存
4. 数据缓存
5. 增加webserver
6. 分库
7. 分表、DAL和分布式缓存
8. 增加更多的webserver
9. 数据读写分离和廉价存储方案
10. 大型分布式应用和廉价服务器群时代
某Web互联网电子商务系统设计最佳实践和案例分析
1、如何从开源起步
2、随着访问量的增加如何变迁架构;
3、淘宝 VS 12306,两类系统架构的差异性分析;
4、IBM小型机会被大量X86服务器替代吗?各自的应用背景与优势分析;
5、云计算、移动应用等新兴技术的发展意味着什么?创业黄金期的到来。
六、课程目标:
1、了解软件设计基本原理、主要原则和国内外主流方法论。
2、掌握前沿技术的同时,获得解决实际问题的规范和能力。
3、帮助软件企业完善软件架构设计、评审流程,改善软件开发质量和效率。