软件重构实战训练营(2天)

时间:该课程暂无课程排期

地点:暂无地点信息

教练:

独立咨询顾问 架构师

航天信息首席架构师,《大话重构》作者,规模化敏捷SPC,软件架构及重构的客座讲师。先后参与了数十个国内大型软件项目,涉及国家财政、军工、税收、医疗等领域的大数据建设、风险防控与人工智能研究。长期关注大型业务系统的品质保证、防止腐化以及技术改造等困扰软件企业的问题,微服务及大数据转型的实践者与倡导者。

| 培训特色 |

本课程注重实战,采用案例贯穿方式完成实践,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总、研讨,并最终形成培训教程。本次培训从程序员的编程思维开始讲解,通过大量的真实案例,详细地介绍了重构需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。
本次课程1/3时间讲解核心思想,1/3时间动手重构实践,1/3点评分析总结。

| 目标收益 |

随着不同产品的推出,不同客户、不同版本的发布,需要维护的遗留代码越来越多,重构也就在所难免。不仅如此,所有的软件系统,经过一段时间的维护,都会逐渐变成遗留系统,并且都遭遇了缓慢而不可抗拒的腐化。因此,软件开发人员不得不面对既有系统的混乱代码。而本课程正是告诉你如何重构既有的遗留系统,如何重构代码、重构设计、重构架构。

| 培训对象 |

各类软件研发中心的软件设计师、架构师、项目经理、技术总监、质量部门经理。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人,效果最佳。

| 学员基础 |

学员学习本课程应具备下列基础知识:
l. 目前正在面临复杂遗留系统,必须需要维护和重构
2. 具有面向对象基本概念,熟悉基本设计模式

| 课程大纲 |

主题

内容

第一部分 为什么软件需要及时重构

第一单元 剖析软件质量不断下降的根源

质量不断下降的表现:
1. 程序代码越来越乱
2. 软件维护成本越来越高
3. 软件变更越来越困难
4. 无法进行新技术的改造
以往采取的措施:
1. 头痛医头,脚痛医脚
2. 抛弃掉重新编写
3. 因担心未来变化而做的过度设计
带来的问题
1. 团队成员越来越多但效率却越来越低
2. 测试变得越来越困难而任务繁重
3. 软件系统越来越笨重而不适应未来变化
分析与反思

案例分析:一个遗留系统的演化过程
1. 起初的设计
2. 随后的变更
3. 质量不断下降的过程
软件质量下降的根源:
1. 软件总是因变更而变得越来越复杂
2. 软件结构已经不再适应复杂的软件需求
3. 必须要调整软件结构以适应新的软件需求

软件是因需求变更而质量下降吗?
案例分析:推演软件变更的设计过程
应对软件变更的最佳方式:两顶帽子
1. 重构原有代码以适应新的需求
2. 实现新的需求
案例:演示两顶帽子的设计过程

第二单元 高质量的软件设计过程

以往软件设计的过程:
1. 演示以往软件设计的过程
2. 剖析以往软件设计的问题与风险
小步快跑模式的开发过程:
1. 用最快的速度开发一个最核心的功能
2. 让第一个版本运行起来并可以验证
3. 在第一个版本的基础上不断添加功能:
a. 每次只添加一个很简单、很单一的功能
b. 每次以两顶帽子的方式添加新功能
c. 运行、调试与验证
d. 重复这个过程添加下一个功能
4. 复杂的系统就是由一次次正确开发的不断积累而成
案例:演示小步快跑的开发过程
小步快跑解决的问题:
1. 复杂功能有效地解耦
2. 代码编写总是可测试与验证
3. 简化设计与思考的复杂度
4. 适时重构以避免软件退化

测试驱动设计
1. TDD vs. 后测试开发
2. 案例:演示测试驱动设计的过程
3. 测试驱动设计的优势
4. 实践测试驱动设计的难题
讨论:自动化测试脚本应当由谁来写?

练习:运用小步快跑的方式设计一个软件

第二部分 重构的概念

第三单元 何为重构

软件重构的概念
1. 重构是一系列代码的等量变换
案例:一个Hello World重构过程
2. 重构的保险索:自动化测试
案例:Hello World的自动化测试过程
3. 软件修改的四种动机——重构的价值
4. 一个真实的谎言——重构的误区
5. 重构的主要方法与技巧

案例分析:重构一个大型遗留系统
1. 重构第一步:分解大函数
超级大函数及其危害
案例:演示大函数产生的过程
案例:演示抽取方法操作步骤
实践抽取方法会遇到的问题和解决方案
2. 重构第二步:拆分大对象
超级大对象及其危害
案例:演示超级大对象的产生过程
案例:演示抽取类的操作步骤
讲解单一职责设计原则
案例:演示“分久必合,合久必分”的重构过程
3. 重构第三步:提高复用率
讲解顺序编程及其危害
“不要重复代码”原则
案例:提高代码复用的6个方法
案例:演示新增代码时的代码复用过程
用静态检查工具检查重复代码
4. 重构第四步:可扩展设计
过度设计 vs. 恰如其分的设计
讲解“开放-封闭”的设计原则
案例:讲解可扩展设计的4个方法
案例:讲解新增代码的可扩展设计过程
5. 重构第五步:降低耦合度
案例:讲解接口、实现与工厂模式
案例:讲解外部接口解耦与适配器模式
案例:讲解继承泛滥问题与桥接模式
案例:讲解方法解耦与策略模式
案例:讲解过程解耦与命令模式
案例:讲解透明扩展与组合模式、装饰者模式
6. 重构第六步:系统分层
反思软件架构需要怎样的分层结构
遗留系统如何拥抱需求变化
遗留系统如何应对技术变革
7. 重构第七步:领域驱动设计
领域驱动设计的概念
讲解领域模型分析方法
讲解原文分析法与领域驱动设计

讨论:如何制定重构项目计划
练习:重构一个小程序并编写测试脚本

第四单元 关于重构的讨论

什么时候重构
1. 重构是一种习惯
2. 重构让程序可读
3. 重构,才好复用
4. 先重构,再扩展
5. 紧急任务时的重构

测试的困境
1. 重构初期的困局
2. 解耦与自动化测试
3. 建立自动化测试体系

重构的评价
1. 评价软件质量的指标
2. 评价软件质量的工具

国内外知名一线技术专家分享世界级软件研发管理实践,讲述他们在知名企业的成功案例与宝贵经验。
msup与企业深度合作,并为其量身定制个性化学习课程,精心设计内容与形式,提供最高质量的学习体验。

服务热线 : 400-812-8020

邮箱: market@msup.com.cn

官网: www.msup.com.cn