结盟众多企业“教练”, 共同设计、开发及提供人才培养解决方案,通过新颖多样的学习方式,针对性的定制化内容,助力企业全面提升竞争优势。
张云龙
2天
5200元
一、培训特色
课程内容:代码分层的思想、可移植性代码的设计、代码解耦的技巧、硬件层抽象、PC上模拟硬件、业务层在PC上的模拟运行、业务层在PC上的自动化测试、业务代码持续优化、架构设计文档撰写、接口说明文档撰写等内容。
本课程不单单是嵌入式架构设计的技能讲解,而且在设计中引入可测试性和可维护性设计。最终的结果是,让开发出来的嵌入式软件可以PC电脑上模拟运行,并进行自动化的测试。
二、目标收益
让程序员开发出来的嵌入式软件,具有高移植性和高维护性。
让嵌入式软件的测试自动化,减少低效率的重复回归测试。
让设计人员撰写出能指导开发人员工作的设计文档,而不是写出只是为了归档的文档。
三、培训对象
培训面向人群:开发嵌入式产品的软件架构师、软件设计师、程序员、测试人员。
该培训对于开发以下类型嵌入式产品特别有帮助:
1. 业务逻辑特别复杂
2. 集成功能繁多
3. 测试环境/条件难以创造
四、学员基础
学习本课程应具备下列基础知识:
1. 熟悉C语言;
2. 至少了解一种嵌入式微处理器。
五、关键词
1. 代码分层设计
2. 可移植性、可维护性
3. 开发视图
4. 逻辑视图
5. 敏捷开发
6. 自动化测试
7. CruiseControl
8. gTest
第1单元 架构设计思路 | ||
---|---|---|
1. 架构设计思路 |
• 考虑驱动因素 • 设计基础架构 • 输出设计结果 • 跟随项目持续优化 • 输出优化代码 |
|
2. 架构设计的驱动因素 |
• 软件质量模型 • 质量属性间的互斥 • 性能与其他属性的取舍 |
|
第2单元 模块化程序设计思想 | 该单元介绍代码分模块、分层的思想,以及一些基本的代码解耦方法。 | |
1. 模块化设计的目的 2. 模块化程序设计方法 • 什么是模块? • 什么是好模块? • 模块接口设计 • “C语言”模块怎么组包 |
||
3. 模块第1大杀手--全局变量 |
• 全局变量的缺点 • 减少全局变量使用 • 限制全局变量范围 |
|
4. 模块第2大杀手--循环依赖 |
• 次晨综合症 • 分层设计思想 |
|
第3单元 架构设计文档 | ||
1. 架构视图 |
• 开发视图 • 逻辑视图 • 4+1视图 • 4+1视图在架构文档中的取舍 |
|
2. 架构设计文档 |
• 架构文档的价值 • 架构文档的撰写原则 |
|
3. 平台接口说明文档 |
• 平台架构思想 • 平台接口约束文档 |
|
第4单元 嵌入式分层设计实例 | 该单元展示2个嵌入式架构设计的文档案例。 | |
1. 架构设计实例 |
• 架构设计文档实例 • 可读性设计 • 可移植性设计 |
|
2. 硬件接口设计实例 |
• 提取硬件抽象 • 接口设计文档实例 • 可靠性设计 • 现场可维护性设计 |
|
第5单元 底层硬件API封装模板 | 该单元主要介绍硬件封装的代码架构模板。该模板的目的是提高底层硬件代码的可维护性,以及一致性的统一模板对可读性的提高。然后通过多个实现案例,讲解了几种特殊硬件封装的解耦办法。最后总结几个模板的分类。 | |
1. 模板结构 |
• 设备硬件结构体类型定义 • 设备结构体配置 • 设备个数宏定义 • 设备实现需要的全局变量 • 设备功能实现代码 |
|
2. 中断处理的封装:回调函数 | ||
3. 硬件复用设备对上层的不可见封装 | ||
4. 硬件耦合设备对上层的不可见封装 | ||
5. 模板的分类 | ||
第6单元 PC模拟底层硬件 | 该单元讲解如何在PC上实现一套假硬件设备,为业务层在PC上运行和自动化测试做准备。 | |
1. PC版与真实硬件环境的不同 | ||
2. PC版测试接口 | ||
3. PC版模拟中断接口 | ||
4. PC版线程互斥处理 | ||
第7单元 PC模拟运行业务层与自动化测试 | 讲解测试封装设计。演示业务层代码在PC上的模拟运行。演示如何让业务层代码进行自动化测试。讲解测试用例撰写的方式方法。 | |
1. 测试封装 |
• 增加测试代码的可读性封装 • 增加测试代码的易用性封装 • 利用测试接口定位问题 |
|
2. 自动化测试 |
• 自动化测试原理 • 自动化测试演示 |
|
3. 测试用例流程 | ||
4. 测试用例文档撰写 | ||
5. 测试用例代码撰写 | ||
第8单元 业务层持续优化 | 该单元先讲解两个业务层架构重构案例。通过案例学习两个设计原则。另外,通过学习案例的整个重构过程,让学员学习架构师最有效果的工作方式。 | |
1. 架构重构案例1 |
• 包的单一职责原则 • 函数的单一职责原则 |
|
2. 架构重构案例2 | • 共同重用原则 | |
3. 架构师如何工作 |
• 和团队一起工作 • 代码走读 • 结对编程 • 加强学习 |
|
第9单元 测试工具 | 简单介绍测试断言工具gTest、测试打桩工具mockcpp等测试工具的使用。详细介绍自动化测试运行工具CruiseControl的安装和配置方法。 | |
1. 自动化测试工具gTest |
• gTest的断言 • gTest的测试结果文件 |
|
2. 打桩工具mockcpp | ||
3. 持续集成工具CruiseControl |
• 什么是持续集成 • CruiseControl的工作原理 • CruiseControl的配置脚本 |
|