课程费用

6800.00 /人

课程时长

3

成为教练

课程简介

1、代码分层设计
2、可移植性、可维护性
3、开发视图
4、逻辑视图
5、自动化测试
6、Cruise Control
7、gTest

目标收益

让程序员开发出来的嵌入式软件,具有高移植性、高复用性和可测试性。
让嵌入式软件能进行测试自动化,减少低效率的重复回归测试。
让设计人员写出能指导开发人员工作的文档,而不是写出仅仅能归档的文档。

培训对象

培训面向人群:开发嵌入式产品的软件架构师、软件设计师、程序员、测试人员。
该培训对于开发以下类型嵌入式产品特别有帮助:
1、 业务逻辑特别复杂
2、 集成功能繁多
3、 测试环境/条件难以创造

课程大纲

第1部分内容
嵌入式架构设计理论篇

第1章 架构设计步骤
1、 架构设计步骤
(1) 考虑驱动因素
(2) 设计基础架构
(3) 输出设计结果
(4) 跟随项目持续优化
(5) 输出优化代码
2、 架构设计的驱动因素
(1) 软件质量模型
(2) 质量属性间的互斥
(3) 性能与其他属性的取舍
第2章 模块化程序设计思想
1、 模块化设计的目的
2、 模块化程序设计方法
(1) 什么是模块?
(2) 什么是好模块?--“最少知道原则”
(3) 模块接口设计
3、 “C语言”模块怎么组织包结构
第3章 组包原则与单一职责原则
该单元讲解如何划分模块,介绍5大组包原则以及单一职责设计原则。

1、 组包的设计原则
2、 低耦合组包原则
(1) 无环依赖原则
(2) 稳定依赖原则
3、 高内聚组包原则
(1) 重用发布原则
(2) 共同重用原则
(3) 共同封闭原则
4、 单一职责设计原则
(1) 单一职责的思考
(2) 单一抽象层次原则
(3) 单一职责原则
第4章 基础架构级模块划分--架构风格
1、 哲学层次的架构设计
2、 架构风格定义与分类
3、 常用风格的模块划分
(1) “层次结构”--平台设计思想
(2) “面向对象”--同层模块划分
(3) “批处理序列”和“管道-过滤器”
(4) “黑板系统”
(5) “数据库系统”
(6) “进程通信”
(7) “事件驱动”
第5章 模块杀手--代码坏味道
1、 模块第1大杀手--全局变量
(1) 全局变量的缺点
(2) 减少全局变量使用
(3) 限制全局变量范围
2、 模块第2大杀手--循环依赖
(1) 次晨综合症
(2) 分层设计思想
(3) 反转逆向依赖--回调函数
3、 其他模块杀手--代码坏味道
(1) 散弹式修改
(2) 发散式变化(违背了共同封闭原则)
(3) 不恰当的暴露(违背了最少知道原则)
(4) 狎昵关系(有可能违背了无环依赖原则)
(5) 依恋情节
(6) 被拒绝的馈赠(违背了共同重用原则)
第6章 架构设计文档
1、 架构视图
(1) 开发视图
(2) 逻辑视图
(3) 4+1视图
(4) 4+1视图在架构文档中的取舍
2、 架构设计文档
(1) 架构文档的价值
(2) 架构文档的撰写原则
3、 平台接口说明文档
(1) 平台架构思想
(2) 平台接口约束文档
第2部分内容 嵌入式架构设计实例篇
第1章 嵌入式分层设计实例
该单元展示2个嵌入式架构设计的文档案例。

1、 架构设计实例
(1) 架构设计文档实例
(2) 可读性设计
(3) 可移植性设计
2、 硬件接口设计实例
(1) 提取硬件抽象
(2) 接口设计文档实例
(3) 可靠性设计
(4) 现场可维护性设计
(5) 兼容性设计
第2章 底层硬件API封装模板
该单元主要介绍硬件封装的代码架构模板。
该模板的目的是提高底层硬件代码的可维护性,以及一致性的统一模板对可读性的提升。
然后通过多个实现案例,讲解了几种特殊硬件封装的解耦办法。
最后总结几个模板的分类。

1、 模板结构
(1) 设备硬件结构体类型定义
(2) 设备结构体配置
(3) 设备个数宏定义
(4) 设备实现需要的全局变量
(5) 设备功能实现代码
2、 中断处理的封装--回调函数
3、 上层不可见封装
(1) 硬件复用设备对上层的不可见封装
(2) 硬件耦合设备对上层的不可见封装
(3) 上层不可见封装总结
4、 模板的分类
第3章 底层硬件驱动实例
1、 回调函数实现Timer定时器驱动实例
2、 带缓存的串口驱动实例
第3部分内容 自动化测试篇
第1章 PC模拟底层硬件
该单元讲解如何在PC上实现一套假硬件设备,为业务层在PC上运行和自动化测试做准备。

1、 PC版与真实硬件环境的不同
2、 PC版测试接口
3、 PC版模拟中断接口
4、 PC版线程互斥处理
第2章 PC模拟运行业务层与自动化测试
讲解测试封装设计。
演示业务层代码在PC上的模拟运行。演示如何让业务层代码进行自动化测试。
讲解测试用例撰写的方式方法。

1、 测试封装
(1) 增加测试代码的可读性封装
(2) 增加测试代码的易用性封装
(3) 利用测试接口定位问题
2、 自动化测试
(1) 自动化测试原理
(2) 自动化测试演示
3、 测试用例流程
4、 测试用例文档撰写
5、 测试用例代码撰写
第3章 自动化测试工具
介绍测试断言工具gTest、测试打桩工具mockcpp等测试工具的使用。
介绍自动化测试持续集成工具CruiseControl的安装和配置方法。

1、 自动化测试工具gTest
(1) gTest的断言
(2) gTest的测试结果文件
2、 打桩工具mockcpp
3、 持续集成工具CruiseControl
(1) 什么是持续集成
(2) CruiseControl的工作原理
(3) CruiseControl的配置脚本
第4部分内容 收尾篇
第1章 架构师如何工作
1、 和团队一起工作
2、 代码走读
3、 结对编程
4、 加强学习
第1部分内容
嵌入式架构设计理论篇

第1章 架构设计步骤

1、 架构设计步骤
(1) 考虑驱动因素
(2) 设计基础架构
(3) 输出设计结果
(4) 跟随项目持续优化
(5) 输出优化代码
2、 架构设计的驱动因素
(1) 软件质量模型
(2) 质量属性间的互斥
(3) 性能与其他属性的取舍
第2章 模块化程序设计思想

1、 模块化设计的目的
2、 模块化程序设计方法
(1) 什么是模块?
(2) 什么是好模块?--“最少知道原则”
(3) 模块接口设计
3、 “C语言”模块怎么组织包结构
第3章 组包原则与单一职责原则

该单元讲解如何划分模块,介绍5大组包原则以及单一职责设计原则。

1、 组包的设计原则
2、 低耦合组包原则
(1) 无环依赖原则
(2) 稳定依赖原则
3、 高内聚组包原则
(1) 重用发布原则
(2) 共同重用原则
(3) 共同封闭原则
4、 单一职责设计原则
(1) 单一职责的思考
(2) 单一抽象层次原则
(3) 单一职责原则
第4章 基础架构级模块划分--架构风格

1、 哲学层次的架构设计
2、 架构风格定义与分类
3、 常用风格的模块划分
(1) “层次结构”--平台设计思想
(2) “面向对象”--同层模块划分
(3) “批处理序列”和“管道-过滤器”
(4) “黑板系统”
(5) “数据库系统”
(6) “进程通信”
(7) “事件驱动”
第5章 模块杀手--代码坏味道

1、 模块第1大杀手--全局变量
(1) 全局变量的缺点
(2) 减少全局变量使用
(3) 限制全局变量范围
2、 模块第2大杀手--循环依赖
(1) 次晨综合症
(2) 分层设计思想
(3) 反转逆向依赖--回调函数
3、 其他模块杀手--代码坏味道
(1) 散弹式修改
(2) 发散式变化(违背了共同封闭原则)
(3) 不恰当的暴露(违背了最少知道原则)
(4) 狎昵关系(有可能违背了无环依赖原则)
(5) 依恋情节
(6) 被拒绝的馈赠(违背了共同重用原则)
第6章 架构设计文档

1、 架构视图
(1) 开发视图
(2) 逻辑视图
(3) 4+1视图
(4) 4+1视图在架构文档中的取舍
2、 架构设计文档
(1) 架构文档的价值
(2) 架构文档的撰写原则
3、 平台接口说明文档
(1) 平台架构思想
(2) 平台接口约束文档
第2部分内容 嵌入式架构设计实例篇
第1章 嵌入式分层设计实例

该单元展示2个嵌入式架构设计的文档案例。

1、 架构设计实例
(1) 架构设计文档实例
(2) 可读性设计
(3) 可移植性设计
2、 硬件接口设计实例
(1) 提取硬件抽象
(2) 接口设计文档实例
(3) 可靠性设计
(4) 现场可维护性设计
(5) 兼容性设计
第2章 底层硬件API封装模板

该单元主要介绍硬件封装的代码架构模板。
该模板的目的是提高底层硬件代码的可维护性,以及一致性的统一模板对可读性的提升。
然后通过多个实现案例,讲解了几种特殊硬件封装的解耦办法。
最后总结几个模板的分类。

1、 模板结构
(1) 设备硬件结构体类型定义
(2) 设备结构体配置
(3) 设备个数宏定义
(4) 设备实现需要的全局变量
(5) 设备功能实现代码
2、 中断处理的封装--回调函数
3、 上层不可见封装
(1) 硬件复用设备对上层的不可见封装
(2) 硬件耦合设备对上层的不可见封装
(3) 上层不可见封装总结
4、 模板的分类
第3章 底层硬件驱动实例

1、 回调函数实现Timer定时器驱动实例
2、 带缓存的串口驱动实例
第3部分内容 自动化测试篇
第1章 PC模拟底层硬件

该单元讲解如何在PC上实现一套假硬件设备,为业务层在PC上运行和自动化测试做准备。

1、 PC版与真实硬件环境的不同
2、 PC版测试接口
3、 PC版模拟中断接口
4、 PC版线程互斥处理
第2章 PC模拟运行业务层与自动化测试

讲解测试封装设计。
演示业务层代码在PC上的模拟运行。演示如何让业务层代码进行自动化测试。
讲解测试用例撰写的方式方法。

1、 测试封装
(1) 增加测试代码的可读性封装
(2) 增加测试代码的易用性封装
(3) 利用测试接口定位问题
2、 自动化测试
(1) 自动化测试原理
(2) 自动化测试演示
3、 测试用例流程
4、 测试用例文档撰写
5、 测试用例代码撰写
第3章 自动化测试工具

介绍测试断言工具gTest、测试打桩工具mockcpp等测试工具的使用。
介绍自动化测试持续集成工具CruiseControl的安装和配置方法。

1、 自动化测试工具gTest
(1) gTest的断言
(2) gTest的测试结果文件
2、 打桩工具mockcpp
3、 持续集成工具CruiseControl
(1) 什么是持续集成
(2) CruiseControl的工作原理
(3) CruiseControl的配置脚本
第4部分内容 收尾篇
第1章 架构师如何工作

1、 和团队一起工作
2、 代码走读
3、 结对编程
4、 加强学习

活动详情

提交需求