结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。
温昱
3天
6000元/人
课程目标
架构仅仅是一个系统的草图吗?
绝对不是。
架构的内容不是一两张草图能涵盖的,它涉及结构、接口、数据、技术等方面的重要设计决策,对满足功能、支撑质量、支持团队协同开发起着决定性作用。
本课致力于提高一线设计、开发人员的研发胜任力和实战快捷度。这一目标,沿着架构设计的过程,被分解为六个细化目标,并与15个进阶修炼项对应:
目标细化
技能胜任力
变被动理解需求,为主动分析需求
【1】文档理解力
如何快速分析《需求规格说明书》?
【2】需求大局观
需求=功能+质量+约束。 质量=场景+定量
【3】重点识别力
领域特点、技术难题,往往决定设计走向
高层架构,重在选型合理、长期稳定
【4】架构选型
抓三方面:逻辑分层/物理分布/前后台划分
【5】技术选型
如何做到开发技术、运行环境选型合理
细化架构,是并行开发的基础
【6】静态设计维
模块化的代码模块划分结构设计
【7】动态设计维
如何运用消息循环、多任务等技术,为前端系统、后台系统设计合理的控制结构
设计松耦合、可扩展的接口
【8】前端与后台接口设计
【9】外部集成接口设计
表结构设计好
(信息系统最常见的性能瓶颈)
【10】为功能扩展而设计表结构
【11】为高性能而设计表结构
架构关键点设计好
(能提升开发效率、避免重复返工)
【12】UI层/业务层/数据层,层间接口设计
【13】DAL层设计,缓存及回写设计
【14】外部接口层,如何适配多种外部系统
【15】硬件控制层,如何封装细节?
目标学员
n 各类软件企业的设计人员、初级架构师、资深程序员
n 2年以上开发经验,经历过完整项目开发的程序员
n 希望通过强化架构、设计环节提高研发效率的团队
n 必须使用C/C++、Java或C# 2年以上
课程内容
内容上,紧扣上面“右列”所列的15项“技能修炼”。
形式上,采用案例贯穿方式,讲解、实战、体会与反思三条线索三箭齐发。本课要求每位学员带笔记本电脑、和U盘。随着一个个实际案例的展开,学员们组成的虚拟团队将和老师一起,领命在手、分析权衡、领会方法、实践技巧、验证结果。
学员们践行架构设计之旅的途中,将领略设计思路、设计技巧、设计结果之“美”。不仅如此,大多数“进阶修炼”环节,也有识别设计之“丑”的反例案例分析。
也欢迎学员带着实际问题前来参训!
【模块一】 Big Picture(大局观)
架构设计,如何干?
ü 架构选型阶段:粗线条架构 + 技术选型
ü 架构细化阶段:划分模块 + 定义接口
ü 关键点的详设:……
案例分析
ü 通过PM Suite案例的分析,说明设计节奏
架构设计,何时停呢?
ü 标准一:覆盖了功能 + 应对了质量 + 支持了分头开发
ü 标准二:粗粒度设计要多视角,细粒度设计要少而精
案例分析
ü 案例 PM Suite--示范多视角设计的好处 :子系统、C/S、B/S……
ü 案例 物流系统—示范关键点详设:OLTP、OLAP? ORM、JDBC?
【模块二】 立足设计,分析需求
需求大局观
ü 需求 = 功能 + 质量 + 约束
ü 质量 = 场景 + 定量
ü 功能 = 系统边界 + 系统功能 + 操作流程
文档理解力
ü 《需求规格书》案例
ü 《需求规格书》结构
功能需求 及 变更规律
ü 上下文图 & 功能树&功能框图 & 用例图
ü 系统能力列表 & 用户故事 & 用例规约
ü 功能分解 & 步骤分解 & 情境构想思维
案例分析
ü 案例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的前端与后台接口设计
ü 重点:提高接口的抽象程度
ü 总结à基于原始信息模型通信?
ü 总结à基于抽象应用模型通信?
设计产物:
前端、后台间接口
与外部系统的接口
【模块六】 表结构,为功能、性能与扩展性而设计
表结构设计
ü Table操作的开销特点
ü 合并法设计Table模型
ü 质疑法设计Table模型
案例分析
ü 例子:有、无索引下的IO开销
ü 例子:SQL引起全表扫描的优化
ü 例子:并发SQL查询的性能表现
实战演练
ü 贯穿案例设计推进……
ü 任务:表结构设计
设计合理性 and 正反例分析 【1】
ü 案例:电商系统Table设计
ü 案例:储蓄系统Table设计
ü 案例:HR管理系统Table设计
ü 重点:表结构影响功能扩展性
ü 总结à从分析功能,到设计Table?
ü 总结à
【模块七】 架构关键点的详细设计
分层架构成功的设计关键点
ü 管理类系统
界面层-业务层-实体层-数据层
ü 控制类系统
界面层-控制层-数据层-接口层
ü 后台服务系统
接口层-调度层-服务层-数据层
关键点的详细设计
ü UI层/业务层——消息与接口设计
ü DAL层设计——缓存及回写设计
ü 外部接口层——如何适配多种外部系统
ü 硬件控制层——如何封装细节
ü 案例分析……
实战演练
ü 贯穿案例设计推进……
设计合理性 and 正反例分析 【1】
ü 案例:当ORM遇上报表
ü 案例:大量SQL语句的 IS 系统
ü 重点:常见问题与解决
ü 总结à分层架构的DB访问设计
设计合理性 and 正反例分析 【2】
ü 案例:两级观察者模式应用
ü 案例:内部接口基于XML好吗
ü 案例:轮询 与 回调
ü 重点:常见问题与解决
ü 总结à分层架构的接口设计
设计产物:
架构关键点的设计
收官:
形成《架构文档》