软件设计模式与软件重构实战训练营暨工信部教考中心软件设计高级工程师认证
培训讲师:范老师 程老师 尹老师
时间地点:
2024年11月27-30日 北京
培训费用:8800元
赠送积分:8800
软件设计模式与软件重构实战训练营暨工信部教考中心软件设计高级工程师认证详细内容
软件设计模式与软件重构实战训练营
暨工信部教考中心软件设计高级工程师认证
培训班
培训服务一览表 | ||
培训地点 | 北京 | 北京 |
培训时间 | 6月 20-23 | 11月 27-30 |
培训方式 | · 现场面授 · 直播授课 · 录播回放 | |
专家授课 | · 4天集中培训学习:每天6课时,实战专家授课 · 理论梳理 · 案例分享 · 实战演练 | |
纸质资料 | 软件设计模式与软件重构实战训练营培训讲义 | |
学习平台 | PC端:http://it.zpedu.com/ 移动端APP:IT云课 | |
社群服务 | · 学员在线交流 · 专家在线答疑 · 班主任教学管理 | |
此课程可根据具体需求定制企业内训解决方案 |
一、 培训简介
无数软件企业及其研发团队都面临着,大量初级程序开发人员低质量软件开发带来的严重问题,即使那些工作多年的高级程序员也存在着对提高软件设计质量认识不深的问题。正是由于以上的问题,造成许多公司对运行了多年的核心业务,运行维护成本越来越高,却不能更换、一直维护下去的恶性循环。如何通过培训,切实有效地提高员工设计开发水平,从而有效地改善软件设计质量,成为越来越多的软件企业迫切需要解决的问题。本课程不仅在讲解高质量软件设计的理论知识,更关键是将这些知识投放到各个真实的设计场景中。在这些场景中,我们可以看到我们要面对的设计难题,通过对设计难题的深入剖析,寻找问题的根源,对症下药,从而制订出正确的设计方案。不仅如此,本课程的案例选取了许多在需求变更中不断变化的设计过程,从而用慢动作的手法展现了,最初的需求与设计是怎样,第一次变更的设计,第二层变更的设计,第三次变更的设计……这样的过程展示了,如何在需求变更的过程中,通过每一次正确的设计,不让软件退化,来保证高质量的软件设计。本课程首先深入剖析软件质量下降的根源,提出重构是软件变更中保持高质量的必然,讲解如何运用“两顶帽子”的方式应对变更,拒绝腐化。站在实战的角度讲解高质量软件设计的“小步快跑”过程。接着,用真实案例讲解已经代码腐化的遗留系统是如何通过“软件重构七步曲”,由简入深、循序渐进地重构一个大系统。课程的最后,更加深层次地讲解软件重构面临的难题,以及有效地解决之道。
本课程注重实战,采用案例贯穿的方式,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总与研讨,并最终形成培训教程。通过大量的真实案例,详细地介绍了软件设计过程需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。本次课程1/3时间讲解核心思想,1/3时间动手重构实践,1/3点评分析总结。
二、 学员基础
学员学习本课程应具备下列基础知识:
l. 目前正在面临复杂遗留系统,必须需要维护和重构
2. 具有面向对象的基本概念,熟悉基本设计模式。
三、 课程对象
初中高级工程师、企业架构师、软件设计师等;
各类软件研发中心的软件设计师、架构师、项目经理、技术总监、质量部门经理。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人,效果最佳。
代码重构 | 设计重构 | 软件腐烂监控 | 重构管理 | |
程序员 | 必须精通 | 需要了解 | 需要了解 | 需要了解 |
设计师 | 必须精通 | 必须精通 | 需要了解 | 需要了解 |
架构师 | 必须精通 | 必须精通 | 必须精通 | 必须精通 |
数据库工程师 | 需要了解 | 需要了解 | / | / |
质量管理 | / | / | 必须精通 | 必须精通 |
管理者 | / | / | 需要监控 | 需要了解 |
四、 课程安排
第1-2天 | 软件设计模式授课内容 |
第一部分 高质量软件设计 | |
第一章 什么是高质量的软件设计 | 情景剧:软件设计焦虑症 1. 上次的设计太糟糕了,痛下决心以后要好好设计 2. 再次进行软件设计时却不知道该怎样设计 1) 思考了很多,不知如何下手 2) 需求一变更,重新回到了糟糕的状态 探讨:如何进行高质量的软件设计 什么是高质量的软件设计 1. 软件的质量保证:内部质量与外部质量 2. 高质量软件设计的标准:易读、易于维护、易于变更 |
第二章 软件设计原则 | 易于阅读: 1. 规范代码、编写注释与表明动机 案例:代码编写范例与简便易行的方法 2. 领域驱动设计
易于维护与变更 1. 互联网+带来的挑战 1) 系统需要不断地技术升级与改造 2) 传统行业必须向互联网转型 3) 但技术变革不是换零件那么简单 4) 剖析应对技术变革的方案 2. 案例讲解软件设计原则 1) 低耦合 a. 依赖反转原则(DIP) 案例:购票业务类与数据访问类 b. 开放-封闭原则(OCP) 案例:需求变更与可扩展点设计 案例:Square/Circle的解决方案 c. 里氏替换原则(LSP) 案例:Rectangle/Square的问题 案例:查询参数传递类的问题 2) 高内聚 案例:评审系统的设计 a. 单一职责原则(SRP) 案例:财务凭证变更带来的问题 案例:超级大函数与大对象的难题 案例:MySQL读写分离的改造过程 b. 信息专家模式 c. 不要重复自己原则(DRY) 典型的代码重复案例 探讨代码复用的难题
探讨软件设计模式: 1. 设计模式的由来 2. 设计模式的发展 3. 设计模式对高质量软件设计的作用 |
第二部分 软件设计模式 | |
第三章 适配器模式 | 什么是适配器模式 1. 软件设计中外部接口的难题 2. 第三方框架带来的设计难题 3. 适配器模式及其概念
适配器模式的应用 1. 适配器模式解决第三方框架带来的难题 案例:Hibernate适配器的设计 2. 适配器模式解决外部接口的设计难题 案例:第三方支付接口的设计 案例:财务数据接口的设计
|
第四章 策略模式 | 什么是策略模式 1. 工资发放功能遇到的难题 1) 工资发放功能最初的设计及其问题 2) 对问题的分析过程及其新的设计思路 2. 策略模式及其概念
策略模式的应用 1. 案例:工资发放功能设计改进的过程 1) 工资发放功能的Java实现 2) 工资发放功能的C++实现 2. 案例:数据导出功能的设计实现 1) 深入理解开放-封闭原则 2) 数据导出功能的变更与改进过程 3. 案例:财务凭证生成功能的设计过程 1) 财务凭证生成功能的初始需求与设计 2) 财务凭证生成功能的扩展与分析过程 3) 财务凭证生成功能的最终设计 4) 深入理解单一职责原则 5) 学习“两顶帽子”的设计方式 练习:财务凭证生成功能的设计与实现 |
第五章 工厂模式 | 探讨软件设计中遇到的难题 1. 依赖反转原则的设计难题 2. 开放-封闭原则的设计难题 3. 探讨工厂模式的本质
简单工厂模式 1. 简单工厂模式的C++实现 2. 基于配置的简单工厂模式 3. 剖析简单工厂如何实现依赖反转原则 案例:剖析Spring的beanFactory 4. 解读工厂模式对设计的重大意义 5. 讲解如何创建一个工厂 1) 创建工厂的步骤与关键点 2) 利用Spring框架简化工厂类的设计 案例:数据导出功能的工厂实现
工厂方法模式 1. 工厂方法模式的概念 2. 工厂方法模式的应用 案例:SAX框架的工厂类设计
抽象工厂模式 1. 抽象工厂模式的概念 2. 抽象工厂模式的实现 案例:标签库的设计改进过程 1) 最初的标签库设计 2) 运用简单工厂的标签库设计 3) 运用工厂方法的标签库设计 4) 运用抽象工厂的标签库设计 5) 最终基于配置的标签库设计 |
第六章 单例模式 | 什么是单例模式 1. 设计工厂类面临的问题 2. 单例模式及其概念 3. 如何实现单例模式
单例模式的应用 1. 单例模式带来的设计变革 1) 充血模型vs.贫血模型 2) 探讨单例模式与性能问题 2. 单例模式改变了很多软件的设计
|
第七章 原型模式 | 什么是原型模式 1. 工厂类在提供产品时遇到的设计问题 2. 原型模式及其概念
原型模式的设计实现 案例:函数调用的无副作用问题 案例:JavsScript中的原型模式 |
第八章 模板方法模式 | 什么是模板方法模式 1. 煮咖啡给我们的启示 2. 设计工厂类的新思路 3. 模板方法模式及其概念
模板方法模式的作用与技巧 案例:一个工厂模板的设计与实现 深入理解不要重复自己原则 1. 重复代码带来的严重后果 2. 散弹式修改及其解决思路 3. 探讨实现代码复用的难题 4. 代码复用在不同场合采用的方法 5. 模板方法模式在代码复用中的作用
|
第九章 装饰者模式 | 什么是装饰者模式 1. 业务量增长带来的多数据源问题 2. 运用装饰者模式巧妙解决多数据源问题 3. 装饰者模式及其概念
装饰者模式的应用 案例:多数据源的设计实现 1. 多数据源问题的分析设计过程 2. 多数据源的设计与实现 案例:商城收银系统的设计变更过程 1. 商城收银系统期初的设计 2. 混合策略的设计与实现 3. 多层装饰者的设计与实现 重新理解里氏替换原则 1. 透明的功能扩展 2. 里氏替换原则 练习:商场收银系统的2种设计与实现 |
第十章 桥接模式 | 什么是桥接模式 1. 对象继承的泛滥 2. 桥接模式及其概念
桥接模式的应用 案例:员工管理与工资发放的设计 1. 员工管理与工资发放带来的继承泛滥问题 2. 采用桥接模式的设计与实现 案例:查询支持类的设计 1. 查询支持类遭遇的继承泛滥问题 2. 查询支持类的解决方案 3. 单例模式下查询支持类的设计 深入体会单一职责原则 |
第十一章 享元模式 | 什么是享元模式 1. Hibernate是怎样访问数据的 2. 享元模式及其概念
享元模式的应用 案例:数据缓存的设计实现 案例:享元模式在大数据中的应用 |
第十二章 其它设计模式 | 观察者模式:JobHunter的情景剧 代理模式:老板与秘书的差异 命令模式:像工作流一样处理业务 外观模式:超级家庭影院的烦恼 构建器模式:SQL Builder的设计 组合模式:如何构建一棵树 中介者模式:QQ在沟通中的作用 迭代器模式:如何顺序访问一个集合 |
第2-4天 | 软件重构实战授课内容 |
第一部分 为什么软件需要及时重构 | |
第一单元 剖析软件质量不断下降的根源 | 质量不断下降的表现: 1. 程序代码越来越乱 2. 软件维护成本越来越高 3. 软件变更越来越困难 4. 无法进行新技术的改造 以往采取的措施: 1. 头痛医头,脚痛医脚 2. 抛弃掉重新编写 3. 因担心未来变化而做的过度设计 带来的问题 1. 团队成员越来越多但效率却越来越低 2. 测试变得越来越困难而任务繁重 3. 软件系统越来越笨重而不适应未来变化 分析与反思
案例分析:一个遗留系统的演化过程 1. 起初的设计 2. 随后的变更 3. 质量不断下降的过程 软件质量下降的根源: 1. 软件总是因变更而变得越来越复杂 2. 软件结构已经不再适应复杂的软件需求 3. 必须要调整软件结构以适应新的软件需求
软件是因需求变更而质量下降吗? 案例分析:推演软件变更的设计过程 应对软件变更的最佳方式:两顶帽子 1. 重构原有代码以适应新的需求 2. 实现新的需求 案例:演示两顶帽子的设计过程 案例:财务凭证生成程序的设计过程 |
第二单元 高质量的软件设计过程 | 案例讲解软件设计原则 1. 低耦合 1) 依赖反转原则(DIP) 案例:购票业务类与数据访问类 2) 开放-封闭原则(OCP) 案例:需求变更与可扩展点设计 案例:Square/Circle的解决方案 3) 里氏替换原则(LSP) 案例:Rectangle/Square的问题 案例:查询参数传递类的问题 2. 高内聚 1) 单一职责原则(SRP) 案例:财务凭证变更带来的问题 案例:超级大函数与大对象的难题 案例:MySQL读写分离的改造过程 2) 信息专家模式 3) 不要重复自己原则(DRY) 4) 典型的代码重复案例 5) 探讨代码复用的难题
以往软件设计的过程: 3. 演示以往软件设计的过程 4. 剖析以往软件设计的问题与风险
小步快跑模式的开发过程: 1. 用最快的速度开发一个最核心的功能 2. 让第一个版本运行起来并可以验证 3. 在第一个版本的基础上不断添加功能: a. 每次只添加一个很简单、很单一的功能 b. 每次以两顶帽子的方式添加新功能 c. 运行、调试与验证 d. 重复这个过程添加下一个功能 4. 复杂的系统就是由一次次正确开发的不断积累而成
案例:演示小步快跑的开发过程 小步快跑解决的问题: 1. 复杂功能有效地解耦 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) 面向物联网的架构演进
练习:重构一个小程序并编写测试脚本 |
第四单元 关于重构的讨论 | 什么时候重构 1. 重构是一种习惯 2. 重构让程序可读 3. 重构,才好复用 4. 先重构,再扩展 5. 紧急任务时的重构
测试的困境 1. 重构初期的困局 2. 解耦与自动化测试 3. 建立自动化测试体系
重构的评价 1. 评价软件质量的指标 2. 评价软件质量的工具 |
五、 授课专家
范老师 独立咨询顾问,畅销书籍《架构真意》与《大话重构》的作者,规模化敏捷SPC。曾任航天信息首席架构师,哈工大软件工程硕士,软件架构及重构的客座讲师。从事软件研发工作近二十年,并且现在一直坚守在大型软件架构设计一线工作。从需求分析、软件开发到项目管理、架构设计都有丰富的从业经验。先后参与了数十个国内大型软件项目,涉及国家财政、军工、税务、医疗等领域的大数据中台建设、风险防控与人工智能研究。互联网转型、微服务转型及大数据转型的实践者与倡导者。同时,还是大型遗留系统改造专业户,多次参与大型遗留系统改造、软件系统重构等重大项目,长期关注大型业务系统的品质保证、防止腐化以及技术改造等困扰软件企业的问题,在遗留系统优化与改造方面有丰富的经验。
程老师 中国科学院软件研究所硕士,主要研究方向:架构设计、项目管理实践、大型高可用高并发架构设计、微服务架构、软件测试等等。熟悉网络分布式计算、数据库、网络操作系统,精通J2EE、SQL、中间件服务器。在J2EE技术领域具有理论功底和实践经验。在J2ME商务应用和基于J2ME游戏开发领域具有深厚的理论功底和丰富的实战经验。主要授课方向:DevOps落地实践、微服务架构、软件构架设计、UML、GO语言、OOAD、J2EE企业级高级应用开发等。 擅长架构企业级应用;有独立工作流引擎开发、企业系统应用集成方面的丰富经验;在企业门户(Portal)、报表、工作流引擎和企业服务总线(ESB)等应用领域有深入的理论研究和充分的实践;对软件开发的整个流程有深刻认识,有很好的协作精神和学习能力。在架构下的系统设计和开发方面均有丰富经验。能够结合实际,在复杂的应用环境中选择适合的技术组合并合理利用开源中间件来降低项目开发风险、缩短开发周期、提高应用系统的可维护性和可扩展性。
尹老师 《Spring Cloud微服务-全栈技术与案例解析》,《Spring Cloud微服务入门实战与进阶》作者。简单的技术爱好者,先后就职于京东和阿里巴巴。一直从事Java服务端开发工作,前端开发工作。主要关注分布式,高并发,后端服务,目前重心在微服务这块。
个人成就出书:《Spring Cloud微服务-全栈技术与案例解析》《Spring Cloud微服务入门实战与进阶》GitChat: 微服务中的短信服务如何设计?演讲:极部落Java开发者大会,iTechPlus Java开发者大会分享嘉宾。
六、 培训费用
培训费:8800元/人(含培训费、资料费、学习期间午餐以及录播视频回放一年)食宿可统一安排,费用自理。
参加培训并通过考试学员,由工业和信息化部教育与考试中心统一颁发《软件设计模式与重构工程师》工业和信息化职业能力证书,证书可作为专业技术人员职业能力考核的证明,以及专业技术人员岗位聘用、任职、定级和晋升职务的重要依据。
推荐课程
AI大模型全栈工程师实战训练营暨工信部教考中心大模型工程师认证 2024-11-24
AI大模型全栈工程师实战训练营暨工信部教考中心AI大模型全栈工程师认证培训服务一览表培训地点北京南京广州北京培训时间4月21-237月29-319月22-2411月24-26培训方式· 现场面授· 线上授课· 录播回放专家授课· 3天集中培训学习:每天6课时,实战专家授课· 理论梳理 · 案例分享 · 实战演练纸质资料AI大模型全栈工程师实战训练营讲义学习平...
讲师:邹老师 张老师详情
百炼成金——经验萃取与案例开发 2024-11-24
《百炼成金——经验萃取与案例开发》【报名详情】场次:2024年费用:5980/元人(差旅费用请自理)【课程背景】对业务绩效提升有直接的促进作用,并且实用且落地的学习效果一直是培训管理者和业务管理者追求的目标,VUCA时代企业面临着更加挑战和不确定的市场环境,员工面临的工作任务也复杂。经验萃取以业务问题的解决作为始终贯穿的诉求,以工作中遇到的挑战场景和痛点场景...
讲师:元老师详情
CDSP数据安全认证专家 2024-11-24
CDSP数据安全认证专家培训班培训服务一览表培训地点南京上海培训时间2天录播+7月27-28集中学习2天录播+11月24-25集中学习培训方式· 现场面授· 线上授课· 录播回放专家授课· 2天集中培训学习:每天6课时,实战专家授课· 理论梳理 · 案例分享 · 实战演练纸质资料CDSP数据安全认证专家知识讲义考试系统500道左右练习题覆盖知识点95学习平台...
讲师:袁老师 贺老师 商老师详情
机械结构设计与规范 2024-11-25
机械结构设计与规范培训时间/地点:2024年5月2122日(星期二星期三)/上 海2024年11月2526日(星期一星期二)/上 海收费标准:¥4800/人Ø含授课费、证书费、资料费、午餐费、茶点费、会务费、税费Ø不包含学员往返培训场地的交通费用、住宿费用,早餐及晚餐课程简介:机械结构设计包含从产品从概念设计到量产涉及到的研发管理、材料和工艺选择,图纸设计、...
讲师:王老师详情
产品需求分析与需求管理 2024-11-25
产品需求分析与需求管理【培训课时】2天(12课时)【参加对象】企业CEO/总经理、研发总监、研发经理/项目经理/技术经理/产品经理、产品规划专家等【培训费用】3980元/人,6600元2人。(含指定教材、茶点、证书,含午餐) 课程背景通过和众多国内科技企业接触,发现这些企业中普遍存在:1. 技术很牛,但最终倒闭的公司一大推;被技术人员嗤之以鼻的公司,反而活的...
讲师:董老师详情
SQE-供应商质量管理高级研修班 2024-11-25
SQE-供应商质量管理课程安排2024年03月18-19日上海 07月08-09日苏州 09月09-10日 合肥 11月25-26日 上海课程费用¥4,800/人(含授课费、证书费、资料费、午餐费、茶点费、会务费、税费)课程对象 SQE,品质工程师/经理、IQC来料检验主管、体系工程师/主管、采购工程师/经理、供应商辅导项目工程师/经理、研发经理、市场经理等...
讲师:马老师详情
用数据说话——职场数据化沟通和呈现(Excel+PPT) 2024-11-25
用数据说话——职场数据化沟通和呈现(Excel+PPT)培训时间/地点:2024年5月2223日(星期三 星期四)/上 海2024年11月2526日(星期三 星期四)/苏 州收费标准:¥4000/人Ø含授课费、证书费、资料费、午餐费、茶点费、会务费、税费Ø不包含学员往返培训场地的交通费用、住宿费用、早餐及晚餐课程收益:1、通过实例,让学员掌握正确组织经营...
讲师:张老师详情
如何有效开展复盘 2024-11-25
如何有效开展复盘【时间/地点】1月2月3月4月5月6月18-19北京20-21北京25-26北京25-26北京27-28北京24-25北京7月8月9月10月11月12月18-19北京19-20北京26-27北京28-29北京25-26北京19-20北京【培训费用】3580元/人(包括会费,讲义,证书)【课程收益】通过学习让学员了解并熟悉复盘的基本概念和流程;...
讲师:张老师详情
产品平台与CBB技术管理——加速产品研发速度的利器 2024-11-25
产品平台与CBB技术管理——加速产品研发速度的利器上课时间:2023年11月23日 - 2023年11月24日 上海 课程费用:3980讲 师:James■【课程背景】 随着产品生命周期越来越短,市场竞争日趋激烈,能否快速地推出客户/市场需要的产品将直接关系到一个企业能否保持持续赢利的能力。 作为企业的领导者及研发管理者,您一定面临着以下问题或挑战: ...
讲师:James详情
SQE-供应商质量管理 2024-11-25
培训时间/地点:2024年3月1819日(星期一 星期二)/上 海2024年7月89日(星期一 星期二)/苏 州2024年8月1213日(星期一 星期二)/长春2024年9月910日(星期一 星期二)/合 肥2024年11月2526日(星期一 星期二)/上 海收费标准:¥4800/人Ø含授课费、证书费、资料费、午餐费、茶点费、会务费、税费Ø不包含学员...
讲师:马老师详情
- [潘文富] 中小企业招聘广告的内容完
- [潘文富] 优化考核方式,减少员工抵
- [潘文富] 厂家心目中的理想化经销商
- [潘文富] 经销商的产品驱动与管理驱
- [潘文富] 消费行为的背后
- [王晓楠] 辅警转正方式,定向招录成为
- [王晓楠] 西安老师招聘要求,西安各区
- [王晓楠] 西安中小学教师薪资福利待遇
- [王晓楠] 什么是备案制教师?备案制教
- [王晓楠] 2024年陕西省及西安市最