简介

一直一以来都是站在实现某个模块功能的角度去做软件开发,没有尝试过站在系统的层面去做开发。最近正好不忙,觉得是时候以系统工程师的视角,去开发一个完整的系统。接下来的几篇文章,我会记录一个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]需求获取与系统需求分析的更多相关文章

  1. [开发笔记usbTOcan]软件需求分析和软件架构设计

    前面文章进行了系统分析和系统架构设计,手工焊接了一个板子,集合EK-TMC123GXL开发板(请忽略焊接技术) SWE.1 | 软件需求分析 软件需求分析过程的目的是将系统需求的软件相关部分转化为一组 ...

  2. [开发笔记usbTOcan]系统架构设计

    SYS.3 | 系统架构设计 系统架构设计过程的目的是建立一个系统体系结构设计,并确定哪些系统需求分配给系统的哪些元素,并根据确定的标准评估系统架构. 系统结构设计需要做一下工作: 开发系统架构设计. ...

  3. [开发笔记usbTOcan]用树莓派搭建私有Git服务器

    0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...

  4. [开发笔记usbTOcan]PyUSB访问设备

    前面的几个章节的介绍,基本把usbTOcan的底层代码设计好,现在需要介绍PC端的PyUSB进行简单的测试. 在文章开始之前,需要简单的介绍一下整个系统. 0 | 部署 这里使用了两块TM4C123G ...

  5. [开发笔记]-使用jquery获取url及url参数的方法

    使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javasc ...

  6. 钉钉开发笔记(5)android系统中html软键盘的适配

    最近项目中发现个别Android手机中存在弹出的软键盘会遮挡输入框的现象,最后自己写了一个方法(如下),问题基本解决. 记录下来,防止忘记.有什么不对的地方欢迎指正.O(∩_∩)O 1 //键盘适配 ...

  7. Java开发笔记(八十一)如何使用系统自带的注解

    之前介绍继承的时候,提到对于子类而言,父类的普通方法可以重写也可以不重写,但是父类的抽象方法是必须重写的,如果不重写,编译器就直接在子类名称那里显示红叉报错.例如,以前演示抽象类用法之时,曾经把Chi ...

  8. 树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110940484长期持续带来更多项目与技术分享, ...

  9. python开发笔记-通过xml快捷获取数据

    今天在做下python开发笔记之如何通过xml快捷获取数据,下面以调取nltk语料库为例: import nltk nltk.download() showing info https://raw.g ...

随机推荐

  1. java 输入输出IO流 IO异常处理try(IO流定义){IO流使用}catch(异常){处理异常}finally{死了都要干}

    IO异常处理 之前我们写代码的时候都是直接抛出异常,但是我们试想一下,如果我们打开了一个流,在关闭之前程序抛出了异常,那我们还怎么关闭呢?这个时候我们就要用到异常处理了. try-with-resou ...

  2. vue+uniapp实现多任务并发下载文件 | 断点续下, 任务列表, 多任务并发限制

    一.插件简介 zhimi-downloadManager(智密 - 多任务下载管理插件)是一个支持多任务多并发下载,支持多/单任务管理,并且实时反馈任务下载进度的uniapp原生插件.平台支持:And ...

  3. 用jQuery实现数字滚动效果

    html 部分 <div class="js-box box"></div> css 部分 .statistic .box{ display: inline ...

  4. Java容器源码学习--ArrayList源码分析

    ArrayList实现了List接口,它的底层数据结构是数组,因此获取容器中任意元素值的时间复杂度为O(1),新增或删除元素的时间复杂度为O(N).每一个ArrayList实例都有一个capacity ...

  5. java源码——统计字符串中字符出现的次数

    对于任意输入的一段字符串,读取并且计算其中所有字符出现的次数. 使用HashMap存储字符和其对应的出现的次数,输出时,对HashMap进行遍历. 难点在于对HashMap的遍历,第一次使用,也是学习 ...

  6. 【LeetCode】1119. Remove Vowels from a String 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 判断字符是否是aeiou 日期 题目地址:https: ...

  7. 【九度OJ】题目1187:最小年龄的3个职工 解题报告

    [九度OJ]题目1187:最小年龄的3个职工 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1187 题目描述: 职工有职工号,姓名, ...

  8. 【LeetCode】Longest Word in Dictionary through Deleting 解题报告

    [LeetCode]Longest Word in Dictionary through Deleting 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode. ...

  9. 1135 - Count the Multiples of 3

    1135 - Count the Multiples of 3   PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limi ...

  10. 『动善时』JMeter基础 — 58、JMeter分布式测试

    目录 1.JMeter分布式测试概念 2.JMeter分布式测试前提条件 3.JMeter实现分布式测试 (1)在执行机中的配置 (2)在控制机中的配置 (3)启动执行机中的JMeter服务 (4)在 ...