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