外观
12.项目开发的前期设计
约 1182 字大约 4 分钟
嵌入式Linux单片机个人
2022-06-18
二十五、项目开发的前期设计
1. 项目中需要思考的问题
- 开发流程的定义
- 平台与框架的选择
- 目录结构及源码管理
- 嵌入式产品的开发效率
开发流程的定义
平台与框架的选择
目录结构及源码管理
嵌入式产品的开发效率
2. 什么是软件开发流程?
- 通过一系列步骤保证软件产品的顺利完成
- 软件产品在生命期内的管理方法学
3. 软件开发流程的本质
- 开发流程与具体技术无关
- 开发流程是开发团队必须遵守的规则
4. 瀑布模型(Waterfall Model)
- 通过自上而下的步骤进行软件开发
- 每个开发步骤都是不可逆的

5. 增量模型(Incremental Model)
- 将系统功能分解为互不重叠的子功能
- 每次全力实现一个子功能
- 自全了完成后系统开发结束

6. 螺旋模型(Spiral Model)
- 采用一种迭代的方法来进行系统开发
- 软件项目分解成多个不同的版本完成
- 每个版本的开发过程都需要用户参与
- 根据前一个版本的反馈计划下一个版本

7. 敏捷模型(Agile Modeling)
- 一切从简
- 拥抱变化
- 高效工作
- 持续开发

开发流程的定义
平台与框架的选择
目录结构及源码管理
嵌入式产品的开发效率
8. 软件开发平台
- 开发平台是位于操作系统之上的软件层
- 开发平台提供更多模块化的功能,简化(加速)软件开发
9. 软件开发框架
- 开发框架是位于开发平台之上的软件层
- 开发框架是为特定应用所设计的更抽象的软件模块
10. 平台与框架的示例一 → Spring / Java

11. 平台与框架的示例二 → Qt

开发流程的定义
平台与框架的选择
目录结构及源码管理
嵌入式产品的开发效率
12. 目录设计 VS 源码管理
项目中每个模块的代码用一个文件夹进行管理
- 文件夹由inc , src , makefile构成
项目中每个模块的对外函数声明统一放置同一目录中
- 如:common.h xxxfunc.h
13. 目录设计示例

14. 目录设计的意义
书架功能
- 反映项目中代码的层次感和模块化
意识引导
- 引导对于新增文件功能,命名以及位置的思考
增强维护性
- 加快开发人员对于项目整体架构的理解
开发流程的定义
平台与框架的选择
目录结构及源码管理
嵌入式产品的开发效率
15. 常规嵌入式开发的方式

16. 存在的问题
- 开发工程师必须人手一台设备(项目早期可能无法满足)
- 每次代码改动必须到设备进行验证(效率低下)
- 反复多次烧写可能导致设备损坏(不稳定的早期设备)
17. 常规嵌入式调试的方式

18. 嵌入式开发的调试问题
- 需要基于额外硬件(JTAG)连接设备进行断点调试
- 常规日志只能写于文件中,无法实时查看
- 几乎无法进行现场调试(客户环境调试)
19. 嵌入式基础设施的建设
- 架构设计时,模块之间遵循强内聚,弱耦合原则
- 模块能够基于PC环境编译,并进行单元测试
- 开发PC环境中的设备模拟器
- 产品代码能够在PC环境完整编译并运行于PC环境
- 开发产品中可实时查看输出的日志系统
- 设备运行日志输出可以实时传输到PC环境
