求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
 
 
全部课程 | 技术学院 | 管理学院 | 嵌入式学院 | 在线学院  
成功案例   品质保证  电话 English
追随技术信仰

随时听讲座
每天看新闻
 
   
成功案例
某核电企 软件设计重构与代码
某集成电 多核体系的软件仿真
某电力能 设计模式原理及应用
南方航空 软件设计方法与实践
某跨国公 软件设计原理与实
爱立信( 软件设计
Moto 设计模式

 

卓越软件设计    
张铭益
曾任HP中国资深架构师,连续四届荣获微软最有价值专家
报名课程       
地点时间:北京,上海,深圳根据报名开班
课程费用:4500元/人,详见 公开课学习手册
企业内训: 可以根据企业需求,定制内训,详见 内训学习手册
 
课程亮点:
1、全真案例,借助案例与设计模式知识的原理,借助最佳实践,帮助您提高设计能力,从而提高开发效率和设计质量
2、以新视角,揭示模式的本质、思想方法,剖析出模式之“道”,跳出“为模式而模式”的“陷阱”
3、提升设计能力,使开发人员由“编程小工”到设计专家
4、结合测试驱动开发与重构,提高软件设计质量,实现卓越软件设计
5、关注业界内设计模式,以实战训练驱动对设计模式的理解与运用
 
在课程中要逐一解决的问题:
1、员工无法接手遗留系统,原因是代码杂乱,可读性差
2、团队成员没有设计模式知识与经验,无法实施敏捷开发
3、系统难以重构,不利于产品的重用与二次开发
4、开发效率得不到保障,因为详细设计人员不能理解架构文档与详细设计方案
5、设计方案难于应对需求变更
6、设计的系统架构缺乏可扩展性、可维护性和可测试性,不能合理地重用
7、架构、设计、开发三个环节中各个角色不能理解设计意图,很难沟通
培训对象:软件开发工程师,软件设计师
学员基础:具有一定的开发和设计经验。
授课方式: 定制课程 + 案例讲解 + 小组讨论,60%案例讲解,40%实践演练
培训内容:2天
卓越软件设计的五个指标
简单性
  • 简单设计的四个要素
  • 通过所有测试
  • 无重复代码
  • 体现设计意图
  • 较少的类、方法
可重用性
  • 面向对象的继承与组合
  • 关注点分离原则
可读性
  • 软件的成本
  • 体现设计意图
  • 体现业务价值
  • 代码的命名与格式
可测试性
  • 测试驱动开发
  • 合理的职责分配
可扩展性

  • 抽象
  • 面向接口设计
案例实践:
  • Hadoop的版本变迁看简单设计:
    通过比较两个版本的Hadoop实现,讲解如何保证设计的简单性(对Context模式的分析)
  • Email Server代码分析:
    从面向过程式代码分析设计问题,然后运用简单设计的四个要素对代码进行改进(对Observer模式与Chain Of Responsibility模式的探讨、分析与比较)
  • 权限认证系统:
    通过抽象达到可重用设计,并简化客户端调用,协作合理,形成可扩展的认证机制(对Chain Of Responsibility、Template Method模式的探讨与分析)
设计匠艺的提炼与修行
职责的分配原则
  • DRY原则
  • 程序等于数据加逻辑
  • 高内聚低耦合
  • 如无必要勿增实体
职责的合理分配
  • 单一职责原则
  • 信息专家模式
识别代码的坏味道
  • Chain Method
  • Feature Envy
  • Shotgun Surgery
  • Divergent Change
  • Large Class
  • Middle Man
职责分配的本质
  • 职责驱动设计
  • 时序图与职责分配
  • 如何识别对象的职责
探索式方法
  • 方法分组
  • 观察隐藏的方法
  • 寻找变化点
  • 寻找方法和内部变量的关系
  • 寻找主要职责
架构层级的职责分离
  • 识别包图的坏味道
  • 包的共同复用原则
  • 如何划分组件或包
  • 架构质量属性的考虑
职责分离的好处
  • 高内聚松耦合
  • 稳定
  • 细粒度
  • 变化可独自演化
  • 避免类爆炸
案例

  • 代码坏味道识别
    提供多个代码案例,讲解如何识别代码坏味道,并针对代码坏味道进行重构,从而改善代码的设计与结构
  • Web参数处理:
    分析如何寻找对象的职责,讲解如何合理分配对象职责,了解职责分配对设计的改善
  • 报表引擎
    分析如何划分系统模块
    内容:双向依赖与循环依赖和包或模块的重用(对包重用原则的探讨分析)
  • 培训系统
    培训系统对票处理的方式,分析职责的变化与分离(对Bridge模式的探讨与分析)
抽象的本质
  • 抽象的分类
  • 抽象的层次
抽象需要遵循的原则
  • 开放封闭原则
  • 依赖倒置原则
抽象对设计的改善
  • 抽象对设计的简化
  • 抽象能避免重复
  • 抽象保证对设计的一致性
扩展式设计
  • 分离职责各司其职
  • 利用抽象统一接口
  • 引用接口预留空白
案例实践:

  • 项目管理系统
    通过对业务模型的分析,理解抽象对于建模的重要性,从而提高设计的质量,内容包括:
    • 软件开发生命周期
    • 领域建模
  • 消息队列
    通过分析JMS、MSMQ、RabbitMQ和NServiceBus的设计,理解抽象的含义,内容包括:
    • 抽象与接口
    • 接口隔离原则
    • 按意图设计
    • Fa?ade模式
    • 企业集成模式
  • CIMS基于消息的分布式架构
    通过对服务的统一抽象,以及对消息处理的职责分配,建立一个协作合理的分布式架构,内容包括:
    • Command模式
    • Publisher – Subscriber模式
    • Message Bus模式
    • Message Translator模式
    • Lookup模式
    • ORM
  • 订单系统
    进一步理解职责分离与抽象应对变化,逐步改善设计。内容包括: Specification模式,Simple Factory模式,Chain Of Responsibility模式
场景驱动设计
场景驱动设计的6W原则
  • Who:角色
  • When:时序与协作
  • Where:边界与上下文
  • Why:价值
  • What:功能
  • HOW:实现
职责的三层图
  • 业务价值:服务层
  • 业务功能:领域层
  • 业务实现:基础设施层
场景驱动设计过程
  • 识别与分析场景
    • 场景的三个目标层次
    • 概要目标
    • 用户目标
    • 子功能
    • 场景的角色入口
    • 场景的边界与上下文
    • 业务场景的活动流程
  • 识别职责
    • 通过业务的三层图建立职责层级
    • 名词动词法
    • 模型分类
  • 领域建模
    • 构建面向对象的虚拟世界
    • 识别现实世界:业务目标、业务价值与用户意图
    • 抽象:概念分类、统一概念、抽象模型、共性分析与可变性分析
    • 领域驱动设计
案例实践:多租户服务订阅系统 根据一个真实案例,通过对需求进行分析以及编写用户故事,完整而统一地讲解了场景驱动设计过程中,如何识别场景与职责,如何进行领域建模与设计。
  • 第一次迭代:租户的服务订阅,内容包括:
    • 合理的职责分配
    • 领域驱动设计中的实体与聚合根
    • 时序图
    • Repository模式与Factory模式辨析
  • 第二次迭代:特定用户的服务订阅,内容包括:
    • 抽象的运用
    • Template Method模式
  • 第三次迭代:需求发生变化,需要引入服务套餐。此时应该如何更改之前的设计,使得变化对设计的影响降到最低。内容包括:
    • Change Name重构
    • Extract Interface重构
    • Composite模式
  • 第四次迭代:需要实现如下功能:
    • 订阅者使用服务
    • 使用第三方服务
内容包括:
如何合理地运用面向对象设计与设计模式对以上功能进行设计:
  • 抽象接口
  • Command模式
  • Adapter模式
 
其他人还看了课程
数据分析与挖掘  
红帽认证  
企业战略与变革管理  
软件架构设计方法  
定制内训




最新活动计划
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
LLM大模型应用与项目构建 12-26[特惠]
UML和EA进行系统分析设计 12-20[线上]
数据建模方法与工具 12-3[北京]
SysML建模专家 1-16[北京]