课程目标
本课致力于提高一线设计、开发人员的研发胜任力和实战快捷度。这一目标,沿着架构设计的过程,被分解为六个细化目标,并与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好吗 案例:轮询 与 回调 重点:常见问题与解决 总结à分层架构的接口设计 |
设计产物: 架构关键点的设计
收官: 形成《架构文档》
|