当前位置: 企业公开课 > 职业技能 > 电脑技能
嵌入式软件架构设计与实例
课程安排: 上海

其它排期:

授课讲师:zil

课程价格:5800

培训对象:

报名热线:400-801-3929

请填写您的报名信息

您的称呼

报名企业

您的电话

< 返回继续选课
 时间地点: 2016-6-25 至 2016-6-26  上海      授课讲师zil
 1) 咨询客服,了解最近是否开课!
 2) 本期课程已过期,请联系客服留下联系方式,近期开课时我们会通知您!
 学习费用: 5800 元/位
 培训对象: 开发嵌入式产品的软件架构师、软件设计师、程序员。该培训对于开发以下类型嵌入式产品特别有帮助:1、业务逻辑特别复杂2、集成功能繁多3、测试环境/条件难以创造
 课程信息:        
  演讲嘉宾:
具有多年嵌入式软件开发、设计和管理经验,曾在华为和科陆公司担任高级软件工程师、系统工程师、敏捷教练等职务。主要擅长敏捷实践在各领域的应用,包括代码持续优化与重构、嵌入式C语言架构设计与自动化测试、C#软件架构设计与自动化测试。精通ARM、Cotex-M3、51等MCU体系结构,精通嵌入式操作系统uCOS移植与运用开发。同时在项目管理尤其是敏捷软件管理方面具有丰富的经验。

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

培训特色
代码分层的思想、可移植性代码的设计、代码解耦的技巧、硬件层抽象、PC上模拟硬件、业务层抽象、业务层在PC上的模拟运行、业务层在PC上的自动化测试、架构设计文档撰写、接口说明文档撰写等内容。本课程不单单是嵌入式架构设计的技能讲解,而且在设计中引入可测试性和可维护性设计。最终的结果是,让开发出来的嵌入式软件可以PC电脑上模拟运行,并进行自动化的测试。

目标收益
让程序员开发出来的嵌入式软件,具有高移植性和高维护性。让嵌入式软件的测试自动化,减少低效率的重复回归测试。让设计人员撰写出能指导开发人员工作的设计文档,而不是写出只是为了归档的文档。

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

学员基础
1、熟悉C语言; 
2、至少了解一种嵌入式微处理器;

课程大纲
引子
从我们身边的工作说起。指出大部分的软件都是“意大利面条”式的代码。引申出解决之道――软件架构设计、代码持续优化和自动化测试。
第一单元模块化程序设计思想
该单元介绍代码分层、分模块的思想,以及一些基本的代码解耦方法。
1、 模块化程序设计的核心讲解什么形式的代码才算是模块化的代码。
2、 代码分层的思想
(1) 代码分层思路
(2) 嵌入式软件推荐的分层架构
3、 代码解耦的一些基础方法
(1) 封装模块文件夹
(2) 程序文件的分割
(3) 函数封装
(4) static函数限制函数使用范围
(5) static全局变量限制变量使用范围
(6) 减少全局变量的使用
第二单元嵌入式分层设计
展示一个嵌入式分层设计的案例,并讲解架构设计文档的撰写。演示硬件分离后代码的可移植性;并以MCU定时器为例讲解如何分离硬件。最后讲解其他硬件设备的接口定义,由此引申出接口说明文档的撰写准则。
1、 嵌入式架构设计
(1) 某产品的开发视图
(2) 避免循环依赖
(3) 逻辑视图
(4) 4+1视图在嵌入式设计文档中取舍
(5) 设计文档的度与量
2、 嵌入式分层设计的追求――可移植
(1) 演示代码的可移植性
(2) 硬件封装的基本思想
(3) 硬件模块的分离
3、 硬件接口设计
(1) 提取硬件抽象
(2) 接口文档的撰写
第三单元底层硬件API封装模板
该单元主要介绍硬件封装的代码架构模板,该模板的目的是提高底层硬件代码的可维护性。然后通过多个实现案例,讲解了几种特殊硬件封装的解耦办法。最后总结几个模板的分类。
1、 模板结构
(1) 设备硬件结构体类型定义
(2) 设备结构体配置
(3) 设备个数宏定义
(4) 设备实现需要的全局变量
(5) 设备功能实现代码
2、 利用老模板实现新硬件封装
3、 中断处理的封装:回调函数
4、 硬件复用设备对上层的不可见封装
5、 硬件耦合设备对上层的不可见封装
6、 模板的分类
第四单元PC模拟底层硬件
该单元讲解如何在PC上实现一套假硬件设备,为业务层在PC上运行和自动化测试做准备。
1、 PC版与真实硬件环境的不同
2、 PC版测试接口
3、 PC版模拟中断接口
4、 PC版线程互斥处理
第五单元业务层分层架构
在真实案例的基础上,讲解业务层的架构设计。
1、 可读性封装
2、 提取业务抽象
(1) 抽象的原则
(2) 案例:命令收发与命令业务处理的分离
3、 同步通讯的限制性封装
4、 异步通信的限制性封装
5、 异步设备封装成同步设备
6、 分层设计总结
第六单元PC模拟运行业务层与自动化测试
演示业务层代码在PC上的模拟运行。演示如何让业务层代码进行自动化测试。讲解测试封装设计。讲解测试用例撰写的方式方法。
1、 测试封装
(1) 测试代码的可读性封装
(2) 测试代码的易用性封装
(3) 设备测试打桩接口
(4) 利用测试接口定位问题
2、 测试流程
3、 测试用例文档撰写
4、 测试用例代码撰写
(1) 利用测试套
(2) 使用打桩工具
(3) 测试延时和模拟系统延时的区别
第七单元测试工具
简单介绍测试断言工具gTest、打桩工具mockcpp、自动化测试运行工具CruiseControl的使用。
1、 自动化测试工具gTest
(1) gTest的断言
(2) gTest的测试结果文件
2、 打桩工具mockcpp
3、 持续集成工具CruiseControl
(1) 什么是持续集成
(2) CruiseControl的工作原理
(3) CruiseControl的配置脚本