4006-998-758
3000+课程任你选择
嵌入式软件架构设计与自动化测试
研发学院 体系架构设计 产品经理 开课时间:2021-07-04
张云龙

具有多年面向对象软件开发、设计和管理经验,曾在华为和科陆公司担任高级软件工程师、系统工程师、敏捷教练、CMMI设计组组长、事业部首席软件架构师等职务。

拥有国家“系统架构设计师(高级)”和“系统分析师(高级)”两项职业资格认证。拥有SpecDD专家级认证。

主要擅长敏捷实践在各领域的应用,包括代码持续优化与重构,嵌入式C语言架构设计与自动化测试,C#、java语言架构设计与自动化测试。精通多进程、多线程并发系统架构设计,有高负载微服务架构设计经验。精通操作系统原理,有嵌入式操作系统uCOS在多种硬件平台上的移植经验。现在主要从事全系统级架构规划与设计工作。

授课经验丰富,曾为沈阳飞利浦、南京西门子、武汉烽火等知名企业,开展过架构设计相关的内训课程。


查看老师详情
课程内容


课程特色


课程内容:模块化程序设计思想、组包原则、架构风格、代码坏味道、代码解耦的技巧、硬件层抽象、PC上模拟硬件、业务层在PC上的模拟运行、业务层在PC上的自动化测试、业务代码持续重构、架构设计文档撰写等内容。

本课程不单单是嵌入式架构设计的技能讲解,而且在设计中引入可移植性、可测试性设计。最终的目的是,让开发出来的嵌入式软件可以PC电脑上模拟运行,并进行自动化的测试。


 课程收益


让嵌入式软件架构设计师掌握常用的几种架构风格,具备嵌入式架构设计能力。

让设计人员写出能实际指导开发人员工作的文档,而不仅仅应付归档的文档。

让程序员开发出来的嵌入式软件,具有高移植性、高复用性和可测试性。

让嵌入式软件能进行测试自动化,减少低效率人工测试工作量和BUG回归测试工作量。


课程对象 


培训面向人群:开发嵌入式产品的产品经理、项目经理、软件架构师、软件设计师、程序员、测试人员。

该培训对于开发以下类型嵌入式产品特别有帮助:

1、 业务逻辑特别复杂

2、 集成功能繁多

3、 测试环境/条件难以创造


 课程对象


学习本课程应具备下列基础知识:1) 熟悉C语言; 2) 至少了解一种嵌入式微处理器;

 

关键词


1、 模块化程序设计

2、 组包原则

3、 架构风格

4、 代码坏味道

5、 4+1视图

6、 敏捷开发

7、 自动化测试

8、 gTest

 

课程大纲

 

主题

章节

授课内容

第1部分内容

 

基础架构设计理论篇

第1章

架构设计步骤

1、 架构设计步骤

(1) 考虑驱动因素

(2) 设计基础架构

(3) 输出设计结果

(4) 跟随项目持续重构

(5) 输出优化代码

2、 架构设计的驱动因素

(1) 软件质量模型

(2) 质量属性间的互斥

(3) 性能与其他属性的取舍

第2章

模块化程序设计思想

1、 模块化设计的目的

2、 模块化程序设计方法

(1) 什么是模块?

(2) 什么是好模块?--“最少知道原则”

(3) 模块接口设计

3、 “C语言”模块怎么组织包结构

第3章

基础架构级模块划分--架构风格

1、 哲学层次的架构设计

2、 架构风格定义与分类

3、 常用风格的模块划分

(1) “层次结构”--平台化架构思想

(2) “面向对象”--同层模块划分

(3) “批处理序列”和“管道-过滤器”

(4) “黑板系统”

(5) “数据库系统”

(6) “解释器”和“基于规则的系统”

(7) “进程通信”

(8) “事件驱动”

第4章

架构设计文档

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、 上层不可见封装

(1) 硬件复用设备对上层的不可见封装

(2) 硬件耦合设备对上层的不可见封装

(3) 上层不可见封装总结

第3章

底层硬件驱动实例

1、 设备的分类

2、 LED与按键实例

3、 脉冲计数器驱动实例

4、 脉冲实时处理驱动实例--回调函数

5、 带缓存的UART驱动实例--循环队列

第3部分内容

 

自动化测试篇

第1章

PC模拟底层硬件

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

 

1、 PC版与真实硬件环境的不同

2、 PC版用变量数组模拟硬件寄存器

3、 PC版测试接口

4、 PC版模拟中断接口

5、 PC版线程互斥处理

第2章

PC模拟运行业务层与自动化测试

讲解测试封装设计。

演示业务层代码在PC上的模拟运行。演示如何让业务层代码进行自动化测试。

讲解测试用例撰写的方式方法。

 

1、 测试封装

(1) 增加测试代码的可读性封装

(2) 增加测试代码的易用性封装

2、 自动化测试

(1) 自动化测试原理

(2) 自动化测试演示

3、 测试用例流程

4、 测试用例文档撰写

5、 测试用例代码撰写

第3章

嵌入式自动化测试的级别

1、单元测试UT

2、软件系统测试ST

3、硬件夹具自动化测试

第4章

自动化测试工具

介绍测试断言工具gTest、测试打桩工具mockcpp等测试工具的使用。

介绍自动化测试持续集成工具CruiseControl的安装和配置方法。

 

1、 自动化测试工具gTest

(1) gTest的断言

(2) gTest的测试结果文件

2、 打桩工具mockcpp

3、 持续集成工具CruiseControl

(1) 什么是持续集成

(2) CruiseControl的工作原理

(3) CruiseControl的配置脚本

第4部分内容

 

持续优化与重构篇

第1章

寻觅代码坏味道

1、 模块第1大杀手--“全局变量”坏味道

(1) 全局变量的缺点

(2) 减少全局变量使用

(3) 限制全局变量范围

2、 模块第2大杀手--“循环依赖”坏味道

(1) 次晨综合症

(2) 分层设计思想

(3) 反转逆向依赖--回调函数

3、 其他代码坏味道

(1) 散弹式修改

(2) 不恰当的暴露(违背了“最少知道原则”)

(3) 狎昵关系(有可能有循环依赖)

(4) 依恋情节

(5) 被拒绝的馈赠

第2章

组包原则

1、 组包的设计原则

2、 低耦合组包原则

(1) 无环依赖原则

(2) 稳定依赖原则

3、 高内聚组包原则

(1) 共同重用原则(案例包含:“重复代码”坏味道)

(2) 重用发布原则

(3) 共同封闭原则(案例包含:“发散式变化”坏味道)

第3章

设计原则

1、 单一职责设计原则

(1) 单一职责的思考

(2) 单一抽象层次原则

(3) 单一职责原则

2、 开闭原则(案例包含:“夸夸其谈未来性”坏味道)

第5部分内容

 

收尾篇

第1章

架构师如何工作

1、 和团队一起工作

2、 代码走读

3、 结对编程

4、 加强学习

总结



返回上一级