温昱 十年系统规划、架构设计和研发管理经验
在金融、军工、电信、平台四个领域有深厚的积淀,并有多媒体、移动互联网实际从业经验;也是《一线架构师实践指南》、及《软件架构设计——程序员向架构师转型必备》畅销书作者。十年系统规划、架构设计和研发管理经验,领域遍布金融、航空、多媒体、电信、中间件等方面。产品涉及银行核心系统、航空专用操作系统、网管系统、中间件平台等;为众多知名企业提供了卓有成效的培训与咨询服务,并在中国软件技术大会、中国软件工程大会、C++技术大会、IBM开发者大会、CSDN技术英雄会、软件开发2.0大会上交流架构设计经验,反响强烈。
温老师著有:《软件架构设计》译著有《应用框架的设计与实现--.NET平台》等。在《程序员》杂志、IBM DeveloperWorks等媒体发表《图论思想与UML应用》、《拥抱变化:敏捷设计从理论到实践》、《运用RUP 4+1视图方法进行软件架构设计》、《随需而变的RUP》、《见山只是山 见水只是水──提升对继承的认识》、《浅谈模式的正交分类》等文章数十篇。
学时安排
2 天,5模块,12小时
课程内容

课程大纲
【模块一】 人人掌握——嵌入式需求 |
理大局——嵌入式软件需求分析的过程 【步骤明确,经验干货】 一个展示 需求节奏 的案例 1—系统边界分析 (顶层数据流图/硬件结构图) 2—功能范围定义 (功能树/功能框图/用例图) 3—界面需求定义 (菜单树/界面流/界面原型) 4—接口需求定义 (软硬件接口规约) 5—功能步骤定义 (输出-处理-输出/用例规约) 6—质量需求定义 (步骤实时性规则/步骤可靠性规则) 一组案例……
 划重点——关键点的讲与练- 输入-处理-输出定义功能需求……顽疾是需求项又多又散?分析、解决。
- 与外部软、硬件的接口需求 ……顶层数据流图、上下文图、硬件结构图
- 高性能和可靠性等质量需求 ……质量需求如何定义?以某控制器为案例
- 深度分析梳理复杂功能 ……主控流程+可能事件与分支流程 + 步骤规则
拷资料——文档模板 + 案例资料 【外企模板,独家分享】- 《需求规格》模板
- 《需求规格》实例
- 一组案例……例如,质量90%可以用“功能的步骤级规则”来定义
|
【模块二】 始于需求——自顶向下设计运行控制结构 |
理大局——运行控制结构的设计过程 【步骤明确,经验干货】 一个展示 架构设计节奏 的案例 Step 1:识别功能模块——依托 MRM卡 Step 2:选择运行控制——多任务/时间片/前后台 Step 3:设计功能执行——依托 运行视图画布 划重点——三种嵌入式“运行控制结构”模式 结构一:多任务结构(OS-based Multi-task) 结构二:前后台结构(死循环+中断) 结构三:时间片轮询(Time-slice Polling)
 划重点——前后台与时间片架构的几个细节- 【大局】采集-分析-控制模式
- 【局部 1】转delay为中断
- 【局部 2】函数的可重入设计
- 【局部 3】核心代码性能
- 高事件率架构案例:多任务 vs. 时间片轮转
划重点——统一回答几个“大的疑问” - 问:我们公司系统比较复杂,性能要求也比较多,总感觉理不清?
- 问:我们公司好像没人会画多线程协作图。请问,怎么画?
- 问:我们公司嵌入式分层架构太泛,没把代码块、线程、中断等说清楚!
 
|
【模块三】 深入详尽——嵌入式分层实战技巧 |
理大局——嵌入式代码架构,就这么设计 【步骤明确,经验干货】 一个展示 架构设计节奏 的案例 步骤一:代码分层,,,初步规划各层代码模块 步骤二:自底向上,,,封装硬件接口代码模块 步骤三:接口抽象,,,为多种硬件提供统一接口 步骤四:服务模块,,,封装显示/通信/存储服务 步骤五:功能模块,,,封装对硬件模块和服务模块的调用 步骤六:初始模块,,,负责所有模块的创建、设置
  划重点——关键点的讲与练 【有代码,有真货】 案例分析……上面六步都有实际案例。重点步骤,有代码案例。 Module对Task/Thread的封装 l Module设计的最低要求:没有隐藏就没有简化 l 模块封装task——Message和Task的架构级应用 Module的可扩展&可配置&可插拔 l 模块的可配置式设计——Config Array的架构级应用 Interface对多个差异模块的统一抽象 l 函数指针结构体的架构级应用 上层对下层的“封装”与“组装” l 模块封装模块——Layer思想的代码实现 l main()如何优雅地“启动”各模块 悟思想——架构之道- 自顶向下,分解思维——架构早期,立足业务,根据需求分解出粗粒度架构。
- 自底向上,封装思维——架构后期,立足实现,提炼模块/隐藏细节/统一接口。
- 统一接口——下层有多种“怎么做”时,不要直接调用,要通过统一接口调用
- 通用服务——提炼可复用的显示/通信/存储服务,“功能代码”就简洁易修改了
|
【模块四】 隔离变化——让接口包容变化、支持变化 |
  |
【模块五】 职业生涯——从单板架构师,到方案架构师 |
谈行业趋势,聊职业发展 l IT行业的人才模型 l 电子企业的常见发展路径 l 我们个人的发展方略

方案架构师设计自控方案时,工作内容有哪些? 1. 逻辑设计 = 分层设计 + 功能子系统划分 2. 物理设计 = 硬件拓扑 + 软组件分布设计 3. 技术选型 = 开发技术 + 运行环境选型 4. 接口设计 = 接口技术选择 + 接口协议定义
 自控方案中的上位机软件设计 1. 五横一纵——上位机软件的模块分层模式 2. 模块划分——覆盖接口需求 3. 模块划分——覆盖功能需求 拷资料——对应的资料分享 l 《GB设计书》文档模板解读、实际范例分析 |