# <center><font size=12><b > 嵌入式编程技巧项目启动说明书 </b></font></center>

文档状态文档标志01 - 项目启动说明书.md审核人
[√] 草 稿当前版本v0.1审核日期
[ ] 正式发布作者将狼才鲸批准人
[ ] 正在修改完成日期2020-03-23批准日期

<center> 版本历史 </center>

版本 / 状态作者参与者起止日期修订说明批准人

<center> 项目组成员 </center>

项目负责人将狼才鲸
产品经理
项目经理
需求团队
设计团队
开发团队
测试团队
配置管理人员
质量保证人员

# 负一、项目简介

附加章节。本章是项目和产品初步说明和构想,最终的产品信息在后续的《产品定义说明书》中确定。

# -1.1 产品说明

功能:嵌入式实用示例代码展示
编辑 / 编译环境:Ubuntu Linux、Windows
运行环境:Ubuntu Linux、硬件仿真器:SkyEye/ARMulator/Softgun/RealBoard/QEMU/Protenus/Keil/RTSM、目标开发板
使用语言:C、C++、汇编等
控制:Console 控制台、Ncurses 基于文本的用户界面、QT、Web
接口:API、私有通讯协议
用途:展示嵌入式编程技巧、架构、模块
目标群体:入门嵌入式编程的人员、工作中查找技术实现的人员
要求:文档齐全、从易到难、有目录索引、模块独立不耦合、以实用为准

# -1.2 项目背景

因为UP主想自己从头到尾做一个项目。
一是记录自己的经验,方便以后工作中要用到时回来查看抄代码;
二是做出东西时能不断给自己成就感,打发晚上和周末漫长的时间;
三是如果能帮助到任何人也是很美好的一件事。

# 〇、项目流程

本章是附加章节,主要介绍一个项目的完整生命周期所需要的操作步骤,进行一下项目管理知识普及,实际的《项目启动说明书》从第一章开始。

# 0.1 项目启动阶段

项目启动由项目负责人或者启动过程组成员负责,项目启动的初始原因可能是负责人的灵感、负责人发现商机、产品更新迭代、竞争对手推出新品等等。
项目启动以项目启动会的召开为标志,在项目启动会召开之前需要准备以下材料:
输出文档:《项目启动说明书》
项目启动说明书中包含以下章节:
产品定义需求计划项目计划人员配置规章制度风险预估
产品描述调研计划实施计划项目负责人项目管理骨干人员流动
主要功能调研问卷 数据采集表时间安排 里程碑计划 进度检查产品经理项目开发流程团队氛围涣散
产品特色调研记录开发计划项目经理需求变更流程进度延后
实施的意义调研总结资源 预算 成本计划客户代表版本控制章程质量不达标
提交产物 完成标记 成果展望系统分析交付物计划开发团队保密制度成本超支
约束条件 支持的操作系统 接口可行性分析沟通计划测试团队Bug 追踪流程需求频繁变更
目标用户竞品分析质量控制计划人员与职责奖惩制度目标及需求不明确
项目范围 使用场景 项目目标商业价值风险控制计划组织结构人员技能不足
项目背景规格说明书用户培训计划市场萎缩
成本要求竞品增加

《项目启动说明书》

# 0.2 需求分析阶段

需求定义竞品分析市场调研商业价值
功能 子功能 接口公司背景用户需求项目价值
性能需求用户数量功能满意度社会价值
可靠性需求融资进展功能接受度用户价值
响应时间特色功能用户访谈
可扩展性交互分析利润导向
数据流图用户评论市场的问题
运行环境 设计约束市场的机会

《需求规格说明书》

# 0.3 概要设计阶段

系统架构系统框图架构
系统分析评审系统流程图顺序执行
概要设计说明书开发系统时间片切分
系统框架目标系统模块路由
稳定性状态机
远程升级
安全性

《概要设计说明书》

# 0.4 详细设计阶段

详细设计文档模块设计文档单元测试文档
接口说明函数功能接口单元测试用例
API 接口函数说明数据结构
通讯协议全局变量
模块划分文件读写
错误输出模块

# 0.5 开发

系统原型、《编码规范》、代码管理规范、设计文档规范、交叉审核
分支管理、bug追踪、进度报告、版本号说明、CICD自动测试自动发布
系统分析文档

# 0.6 测试

《测试大纲》、测试计划、测试报告、问题清单、测试用例、产品集成测试
功能测试、压力测试、性能测试(提供性能参数)、抗干扰测试

# 0.7 交付 / 发布

用户说明、产品说明、项目总结、系统管理手册、安装配置手册、用户操作手册
用户培训计划、用户培训教程、系统上线报告、问题清单、项目验收报告、项目总结报告

# 0.8 售后与升级

用户体验调查、缺陷追踪

# 一、产品定义

==== 产品定义
一款展示嵌入式软件编程规范和技巧的源码库,可以在 Ubuntu 主机 / 硬件仿真器 / 实际开发板运行的软件系统,包含从简答单个训练用例到复杂软件系统的全套开发文档和源码,可读、可仿真、可运行。
逐步展示嵌入式软件 C 语言编程技巧:编程规范、注释规范、源文件管理、编译控制、版本命名、模块编写、驱动编写、应用编写、协议设计、网络编程、系统架构、模块设计、接口设计、人机交互、单元测试、算法优化、版本管理……

# 二、需求计划

==== 需求定义
一键确定主机性能 确定主机环境 确定编译工具 确定测试环境(字符串菜单 qt web 文档在线查看) boot 选择 区分有无 MMU

# 三、项目计划

==== 一些准则
要做的功能都是自己会做的,不需要太多学习
作出的东西都是有实际作用 复杂的工程不替换一开始简单的功能,让人可以从最简单的开始慢慢接触
成品至少包含嵌入式中每一个方向。命名:模块名 + 系统名 + 芯片名 + 板级,所有设备上线探测,
代码有不加宏定义的版本,有加宏定义的版本​
首先要是自己都会的,然后所有的东西都有实际用处,其次要循序渐进各步骤的代码都有,搜索 arm 模拟器,51protenus 单片机模拟器,确定使用仿真平台。目的是使用所有能仿真的外设,做网络通讯产品控制别人的传感器执行器。有多少玩就能相互控制多少人的设备。所有的例程都应用在仿真器中,但是也要保证能稍作修改就能跑到实际硬件中。目的是所有跑起来的程序都有相互通信的可能。可以连一个网站,可以查找哪些设备在线,专门用来受理不同主机的网络请求,使两台设备相互通讯。第一阶段把编程规范说清楚就行。出一个 git 使用教程,实例解说。
(画出组织结构图)

# 四、人员配置

# 五、规章制度

==== 沟通方案
微信群、邮件、gitee 留言、钉钉工时打卡
==== 项目管理:禅道
代码管理:gitee
==== 项目开发流程
文档、表格、流程图、时序图、甘特图:markdown 思维导图(脑图):XMind
瀑布开发、敏捷开发
部门管理与项目管理分开
源码文件夹划分

# 六、风险预估

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Metal-Heart 微信支付

微信支付

Metal-Heart 支付宝

支付宝

Metal-Heart 贝宝

贝宝