[开发笔记usbTOcan]需求获取与系统需求分析
简介
一直一以来都是站在实现某个模块功能的角度去做软件开发,没有尝试过站在系统的层面去做开发。最近正好不忙,觉得是时候以系统工程师的视角,去开发一个完整的系统。接下来的几篇文章,我会记录一个USB转CAN总线系统(简称CAN盒子)的开发过程。
这个过程偏向于软件层面,从需求分析,系统架构设计,软件架构设计,到软件单元的实现。整个开发过程不完全遵循"V-Cycle“的开发流程,但会尽可能的靠近。
SYS.1 | 需求获取
需求获取过程的目的是在产品和/或服务的整个生命周期中收集、处理和跟踪演进的利益相关者(stakeholder)需要和需求,从而建立需求基线,作为构建所需工作产品的基础。
市面上CAN盒子很多,以其中一个CAN盒子参数,作为客户需求进行开发
- USB连接的适配器(全速模式,与USB 1.1,USB 2.0和USB 3.0兼容)
- 高速CAN连接(ISO 11898-2)
- 比特率从5 kbit / s到1 Mbit / s
- 时间戳分辨率小于50微秒
- 符合CAN规范2.0A(11位ID)和2.0B(29位ID)
- 通过USB供电
- 提供PC端的驱动程序和API
- 可以通过D-SUB,9针总线连接

1 未连接 2 CAN-L 3 地线 4 未连接 5 未连接
6 地线 7 CAN-H 8 未连接 9 未连接
为了便于后面需求管理和需求追溯,使用Enterprise Architect管理需求

SYS.2 | 系统需求分析
系统需求分析过程的目的是将已确定的利益相关者(stakeholder)需求转换为一组系统需求,以指导系统的设计。
系统需求分析需要做以下事情:
- 指定系统需求。使用利益相关者需求和对利益相关者需求的更改来识别系统所需的功能和功能。在系统需求中指定功能和非功能的系统需求。
组织系统需求。在系统需求描述中组织系统需求,比如
- 对项目相关集群进行分组
- 按照项目的逻辑顺序排序
- 根据项目的相关标准进行分类
- 根据利益相关者的需求划分优先级
- 分析系统需求。分析特定的系统需求,包括它们之间的相互依赖性,以确保正确性、技术可行性和可验证性,并支持风险识别。分析对成本、进度和技术的影响。
- 制定验证标准。为每个系统需求制定验证标准,为需求的验证提供定性和定量的措施。
- 建立双向可追溯性。在利益相关者需求和系统需求之间建立双向的可追溯性。
在Enterprise Architect中加入系统需求,并把系统需求跟客户需求一一对应上

建立追溯矩阵

-----------------------------------------------------------------------------------END
[参考资料]
[开发笔记usbTOcan]需求获取与系统需求分析的更多相关文章
- [开发笔记usbTOcan]软件需求分析和软件架构设计
前面文章进行了系统分析和系统架构设计,手工焊接了一个板子,集合EK-TMC123GXL开发板(请忽略焊接技术) SWE.1 | 软件需求分析 软件需求分析过程的目的是将系统需求的软件相关部分转化为一组 ...
- [开发笔记usbTOcan]系统架构设计
SYS.3 | 系统架构设计 系统架构设计过程的目的是建立一个系统体系结构设计,并确定哪些系统需求分配给系统的哪些元素,并根据确定的标准评估系统架构. 系统结构设计需要做一下工作: 开发系统架构设计. ...
- [开发笔记usbTOcan]用树莓派搭建私有Git服务器
0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...
- [开发笔记usbTOcan]PyUSB访问设备
前面的几个章节的介绍,基本把usbTOcan的底层代码设计好,现在需要介绍PC端的PyUSB进行简单的测试. 在文章开始之前,需要简单的介绍一下整个系统. 0 | 部署 这里使用了两块TM4C123G ...
- [开发笔记]-使用jquery获取url及url参数的方法
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...
- 钉钉开发笔记(5)android系统中html软键盘的适配
最近项目中发现个别Android手机中存在弹出的软键盘会遮挡输入框的现象,最后自己写了一个方法(如下),问题基本解决. 记录下来,防止忘记.有什么不对的地方欢迎指正.O(∩_∩)O 1 //键盘适配 ...
- Java开发笔记(八十一)如何使用系统自带的注解
之前介绍继承的时候,提到对于子类而言,父类的普通方法可以重写也可以不重写,但是父类的抽象方法是必须重写的,如果不重写,编译器就直接在子类名称那里显示红叉报错.例如,以前演示抽象类用法之时,曾经把Chi ...
- 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484长期持续带来更多项目与技术分享, ...
- python开发笔记-通过xml快捷获取数据
今天在做下python开发笔记之如何通过xml快捷获取数据,下面以调取nltk语料库为例: import nltk nltk.download() showing info https://raw.g ...
随机推荐
- bootstrap.css 进度条没有动画效果
操作系统设置会影响浏览器的行为 Win+R 输入 sysdm.cpl ,3 打开 性能 的 设置 确保 窗口内动画控件和元素 被勾选
- Django中提示消息messages的设置
1. 引入messages模块 1 from django.contrib import messages 2. 把messages写入view中 1 @csrf_exempt 2 def searc ...
- C# 使用TimeSpan秒数转化为时分秒的写法
1.TimeSpan的生成方法 // 参数: // ticks: // A time period expressed in 100-nanosecond units. public TimeSpan ...
- ACwing1211. 蚂蚁感冒
题目: 长 100 厘米的细长直杆子上有 n 只蚂蚁. 它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行. 这些蚂蚁 ...
- Oracle使用数据泵导入/导出数据(expdp/impdp)
Oracle使用数据泵导入/导出数据(expdp/impdp) A电脑上的操作(expdp数据导出) 运行cmd: 登录数据库,输入命令:sqlplus 使用管理员角色登录需要在用户名后加" ...
- 【LeetCode】213. House Robber II 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/house-rob ...
- 【LeetCode】875. Koko Eating Bananas 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 二分查找 日期 题目地址:https://leetc ...
- 1067 - Combinations
1067 - Combinations PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Giv ...
- 1.SpringCloud与Dubbo的区别
1.SpringCloud与Dubbo的区别 初始定位不同: SpringCloud定位为微服务架构下的一站式解决方案:Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理 生态环境 ...
- Color Models (RGB, CMY, HSI)
目录 概 定义 RGB CMY CMYK HSI 相互的转换 RGB <=> CMY CMY <=> CMYK CMY > CMYK CMYK > CMY RGB ...