嵌入式软件架构设计与实例
YL·Zhang 查看讲师
百林哲咨询(北京)有限公司专家团队成员
曾在华为和科陆公司担任敏捷教练,拥有SpecDD专家级认证。具有多年嵌入式软件开发、设计和管理经验,精通嵌入式操作系统uCOS在多个平台的移植与运用开发,同时在项目管理尤其是敏捷软件管理方面具有丰富的经验。
浏览:7639次
详情 DETAILS

简介

本课程不单单是嵌入式架构设计的技能讲解,而且在设计中引入可测试性和可维护性设计。最终的结果是,让开发出来的嵌入式软件可以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的配置脚本

企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1