4006-998-758
3000+课程任你选择
研发骨干进阶架构师的15项修炼训练营
研发学院 开课时间:2021-07-02
温昱

温老师具有金融、军工电子、通讯、移动互联网等行业开发和代码重构经验;另外,有长期嵌入式软件研发和重构咨询经验,尤其擅长嵌入式软件的架构优化和代码重构,客户包括大厂华为、以及烽火和康尼等上市公司。

十五年系统规划、架构设计和代码重构经验,在金融、航空、多媒体、电信、中间件平台等领域负责和参与多个大型系统的规划、设计、开发与重构。

产品涉及银行核心系统、航空专用操作系统、网管系统、中间件平台等。为众多知名企业提供了卓有成效的培训与咨询服务,并在中国软件技术大会、中国软件工程大会、C++技术大会、IBM开发者大会、CSDN技术英雄会、软件开发2.0大会上交流架构设计与重构经验,反响强烈。在《程序员》杂志、IBM DeveloperWorks等媒体发表《图论思想与UML应用》、《拥抱变化:敏捷设计从理论到实践》、《运用RUP 4+1视图方法进行软件架构设计》、《随需而变的RUP》、《见山只是山 见水只是水──提升对继承的认识》、《浅谈模式的正交分类》等文章数十篇


查看老师详情
课程内容


课程目标


本课致力于提高一线设计、开发人员的研发胜任力和实战快捷度。这一目标,沿着架构设计的过程,被分解为六个细化目标,并与15个进阶修炼项对应。


目标细化

进阶修炼项

变被动理解需求,为主动分析需求

【1】文档理解力

如何快速分析《需求规格说明书》?

【2】需求大局观

需求=功能+质量+约束。 质量=场景+定量

【3】重点识别力

领域特点、技术难题,往往决定设计走向

高层架构,重在选型合理、长期稳定

【4】架构选型

抓三方面:逻辑分层/物理分布/前后台划分

【5】技术选型

如何做到开发技术、运行环境选型合理

细化架构,是并行开发的基础

【6】静态设计维

模块化的代码模块划分结构设计

【7】动态设计维

如何运用消息循环、多任务等技术,为前端系统、后台系统设计合理的控制结构

设计松耦合、可扩展的接口

【8】前端与后台接口设计

【9】外部集成接口设计

表结构设计好

(信息系统最常见的性能瓶颈)

【10】为功能扩展而设计表结构

【11】为高性能而设计表结构

架构关键点设计好

(能提升开发效率、避免重复返工)

【12】UI层/业务层/数据层,层间接口设计

【13】DAL层设计,缓存及回写设计

【14】外部接口层,如何适配多种外部系统

【15】硬件控制层,如何封装细节?

 

课程对象


各类软件企业的设计人员、初级架构师、资深程序员

2年以上开发经验,经历过完整项目开发的程序员

希望通过强化架构、设计环节提高研发效率的团队

必须使用C/C++、Java或C# 2年以上


课程内容


内容上,紧扣上面“右列”所列的15项“进阶修炼”。

形式上,采用案例贯穿方式,讲解、实战、体会与反思三条线索三箭齐发。本课要求每位学员带笔记本电脑、和U盘。随着一个个实际案例的展开,学员们组成的虚拟团队将和老师一起,领命在手、分析权衡、领会方法、实践技巧、验证结果。

学员们践行架构设计之旅的途中,将领略设计思路、设计技巧、设计结果之“美”。不仅如此,大多数“进阶修炼”环节,也有识别设计之“丑”的反例案例分析。


课程效果


本课认为“当堂夯实的技能,可用于实际工作”。所以,要求学员必备电脑和U盘,借大量实例研习,师生一起分析、设计、思考、验证 架构方法与技巧的实际应用之道。

新课推出半年来,客户给予了非常好的评价。其中包括:

评价一:技能实用、且体系化,U盘材料丰富真实,使“实战”有真实感。

评价二:实战结尾,老师提供《架构设计书doc》有多个版本,便于对比体会。



课程大纲


【模块一】 Big Picture(大局观)


架构设计,如何干?


架构选型阶段:粗线条架构 + 技术选型

架构细化阶段:划分模块 + 定义接口

关键点的详设:……


架构设计,何时停呢?


标准一:覆盖了功能 + 应对了质量 + 支持了分头开发

标准二:粗粒度设计要多视角,细粒度设计要少而精

放在课程最后的“总结”环节——分布式架构设计的“实战法”

设计的节奏

产出物、产物链

技能点、技能链


【模块二】 立足设计,分析需求


需求大局观


需求 = 功能 + 质量 + 约束

质量 = 场景 + 定量

功能 = 系统边界 + 系统功能 + 操作流程


文档理解力


《需求规格书》案例

《需求规格书》结构


功能需求 及 变更规律


上下文图 & 功能树&功能框图 & 用例图

系统能力列表 & 用户故事 & 用例规约

功能分解 & 步骤分解 & 情境构想思维


案例分析


案例1:CRM (偏管理)

案例2:音乐下载门户(Web)

案例3:电梯监控(偏控制)

重点1:识别功能变化和进化点

重点2:如何定义质量需求

重点3:识别领域特点、需求重点

 

实战演练


贯穿案例设计推进……

《需求文档》分析


 

 

 

分析结束时:

了解了领域特点

掌握了功能范围

识别了重点需求

注:重点需求影响设计走向

【模块三】 架构选型


架构定型


逻辑分层设计

物理分布设计

前后台划分

ü角度:层、子系统、物理部署

技术选型

开发技术选型

系统运行环境

思维:技术选型的依据、脉络

案例分析

例子:电力测控系统

例子:医院管理系统

示范三个视角的高层架构

示范开发、运行两类技术选型


实战演练


贯穿案例设计推进……

任务1:架构定型

任务2:技术选型

设计合理性 and 正反例分析 【1】

案例:组织级项目管理系统

重点:对大系统三视角缺一不可

总结à只切功能子系统,问题?

总结àC/S、B/S都不定,问题?

设计合理性 and 正反例分析 【2】

90年代沿用至今的设计方式

总结à和本课方法的对比

总结à加深对方法原理的领悟


 

 

 

 

 

设计产物:

逻辑分层

物理分布

前后台划分

技术选型

模块四】 细化架构


方法要点


代码模块划分【静】

控制结构设计【动】

从动、静两方面设计的好处


案例分析


案例:电力测控后台 + 管理前端

步1à明确前端、后台的开发技术

步2à入口思维,消息、多任务等模式及入口代码模块识别

步3à封装思维,提炼五种通用模块

步4à分解思维,分解出功能模块


实战演练


贯穿案例设计推进……

任务1:前端结构设计

任务2:后台结构设计

设计合理性 and 正反例分析

案例:代码模块结构糟糕例

案例:代码模块结构优秀例

总结à合理的源码划分原则


 

 

 

设计产物:

代码模块结构

前端控制结构:
从入口点到消息循环

后台控制结构:

从入口点到多线程

 

 

【模块五】 设计松耦合、可扩展的接口


接口设计


接口是松耦合的关键

步1à交互机制设计

同步 or 异步 or 回调……

步2à接口技术选择

报文 or Remoting or Json等

步3à接口格式定义

确定操作名、参数格式

案例分析

通公司,某接口规范分析

实战演练

贯穿案例设计推进……

任务1:前端与后台接口设计

任务2:外部集成接口设计

设计合理性 and 正反例分析 【1】


案例:数据项同步接口设计

 

重点:提高接口的可扩展性

总结à接口可扩展的技术策略

总结àXML格式 or 带元信息的二进制格式

设计合理性 and 正反例分析 【2】

案例:基于GPS的前端与后台接口设计

重点:提高接口的抽象程度

总结à基于原始信息模型通信?

ü总结à基于抽象应用模型通信?


 

 

 

设计产物:

前端、后台间接口

与外部系统的接       口

 

 

内容包括:

(接口)交互机制

(接口)技术选型

(接口)格式定义

(接口)出错处理

 

 

 

【模块六】 表结构,为功能、性能与扩展性而设计


接口设计


接口是松耦合的关键

步1à交互机制设计

        同步 or 异步 or 回调……

步2à接口技术选择

        报文 or Remoting or Json等

步3à接口格式定义

        确定操作名、参数格式


案例分析


联通公司,某接口规范分析


实战演练


贯穿案例设计推进……

任务1:前端与后台接口设计

任务2:外部集成接口设计

设计合理性 and 正反例分析 【1】

案例:数据项同步接口设计

重点:提高接口的可扩展性

总结à接口可扩展的技术策略

总结àXML格式 or 带元信息的二进制格式

设计合理性 and 正反例分析 【2】

案例:基于GPS的前端与后台接口设计

重点:提高接口的抽象程度

总结à基于原始信息模型通信?

总结à基于抽象应用模型通信?


 

 

 

设计产物:

前端、后台间接口

与外部系统的接口

 

 

内容包括:

(接口)交互机制

(接口)技术选型

(接口)格式定义

(接口)出错处理

 

 

 

【模块七】 表结构,为功能、性能与扩展性而设计


表结构设计


Table操作的开销特点

合并法设计Table模型

质疑法设计Table模型


案例分析


例子:有、无索引下的IO开销

例子:SQL引起全表扫描的优化

例子:并发SQL查询的性能表现


实战演练


贯穿案例设计推进……

任务:表结构设计

设计合理性 and 正反例分析 【1】

案例:电商系统Table设计

案例:储蓄系统Table设计

案例:HR管理系统Table设计

重点:表结构影响功能扩展性

总结à从分析功能,到设计Table?

总结à设计支持功能扩展的Table?

设计合理性 and 正反例分析 【2】

案例:手机银行table设计

重点:从设计、到性能权衡

总结à需求进、设计出,中间如何分析?

总结à索引,何时用?何时别用?

总结à低范式,何时用?何时别用?


 

 

 

设计产物:

DB表结构

 

【模块八】 架构关键点的详细设计


分层架构成功的设计关键点

管理类系统

界面层-业务层-实体层-数据层

控制类系统

        界面层-控制层-数据层-接口层

后台服务系统

        接口层-调度层-服务层-数据层

 

关键点的详细设计

UI层/业务层——消息与接口设计

DAL层设计——缓存及回写设计

外部接口层——如何适配多种外部系统

硬件控制层——如何封装细节

案例分析……


实战演练


贯穿案例设计推进……

设计合理性 and 正反例分析 【1】

案例:当ORM遇上报表

案例:大量SQL语句的 IS 系统

重点:常见问题与解决

总结à分层架构的DB访问设计

设计合理性 and 正反例分析 【2】

案例:两级观察者模式应用

案例:内部接口基于XML好吗

案例:轮询 与 回调

重点:常见问题与解决

总结à分层架构的接口设计

 

 

 

设计产物:

架构关键点的设计

 

 

 

 

收官:

形成《架构文档》

 

 


返回上一级