架构性需求的基础知识

Vehiclelevel的Functionalarchitecture

Domainlevel的Requirements

什么是架构性需求?

架构性需求是整个系统的最重要的那些需求,它可能出现在产品开发的各个层次和各个阶段,对产品的形态、功能、开发周期等等往往起着决定性的作用。它们最大的特征是:只能在项目早期出现,在项目中期出现往往会导致巨大的工作量,甚至需要将整个项目推倒重来。

典型的架构性需求一般有这么三类(但也有不少不在其中):

质量需求和非功能性需求,一般是指这个系统的那些功能要完成的有多好。比如刹车系统必须达到ASIL-D标准、最差通信时延必须在1ms以内等等。

决定了解决方案和项目的各种约束条件。比如X项目必须在1年之内完成、某ECU的内存只有100KB等等。

那么接下来以汽车行业的典型“架构性需求”为例,从不同的层次依次展开讲讲。

2.整车级别

整车级别的架构性需求会特别多,就会有下面这些:

车辆的售价:定价20万区间的车,如果中途说改成要卖40万,几乎就是不可能完成的任务。

这个环节离用户会比较接近,大家一看就明白,我就不多讲了。

3.域(子系统)级别域指的是功能域,一般乘用车会分为“座舱域”、“智驾域”、“车辆控制域”、“动力底盘域”等等。这里以座舱域的“3秒内倒车影像启动”展开讲。

种类:非功能性需求

这个需求是由整车级别的R和F同时作用下,才决定了是否需要这个需求:-车辆的售价决定了是否需要高品质

下图是Android的启动顺序,Android的界面要能显示图像,需要至少到下面的NormalMode处。当前行业的优秀水平是15秒以内完全启动。那怎么办呢?

行业一般有几种办法:

驼鸟大法:忽略这个需求,15秒就让用户等吧,反正我这车也便宜。

深度改造法:对Android系统进行深度定制,比如将倒车影像的启动顺序直接提前到跟Zygote并行启动。但这个的研发成本很高,需要引入一套新的GUI系统,因为这时Android的UI系统还没启动完毕呢。

休眠法:某些芯片支持在关机时将当前系统状态保存至Flash上,这样下次开机就能更快了。但支持这个功能代价是很高的,首先是这种芯片就不多,然后还得浪费几个G的宝贵空间用于保存状态。

不下电法:对于纯电车,干脆就不让车机下电,后果就是每天要多掉个几公里续航,并且对系统的稳定性提出了更高的要求。毕竟每次关机都是清除系统垃圾的机会,不关机就没有这个时机了。

4.ECU级别

各个域的功能设计做进一步的拆解,就落到了ECU里面。这里就以MCU的“极少的内存(以KB为单位)”做展开。

种类:约束条件

受限于成本考虑,能由MCU完成的,绝不用MPU(DomainLevel-Functional)

基于RTE运行

很多针对MCU的软件架构都会包含RTE这一角色,其核心的功能就是大部分的线程/Task由RTE创建,并由各个应用共享,这样就可以节省很多Stack的内存开销。

最著名的就是AUTOSAR了,你的程序(应用)被拆成了一个个的Runnables,多个Runnable可以运行在同一个Task中,共享同一个栈。

而一旦你的程序需要基于RTE运行,那么随之而来的,就是要做几件基础的事情:

对你的程序进行配置,主要是配置有哪些Runnable。

配置触发这些Runnable对应的事件Event。

实现这些Runnable。

支持的Event类型

这种开发方式就跟MPU端的灵活开发有非常大的不同。一切都是由事件触发,没有main()函数,并且需要时刻牢记一点:不能block当前的task,否则整个ECU可能都会卡死。

5.模块级别

各个ECU确定了选型后,做了整体的系统设计和软件架构设计后,最终的实现会落到软件模块级别。我们以“禁止动态分配内存”为例展开这部分。

车辆的动力底盘域要绝对可靠(DomainLevel-Requirement)

动力底盘域的某ECU上的软件的可靠性要达到ASIL-D级别(ECULevel-Requirement)

想达到ASIL-D级别,是必然不允许动态分配内存的。(ModuleLevel-Requirement)

动态分配内存有很多好处,但是坏处也不少

内存利用率相对较低

需要内存管理程序,会额外占用内存

产生内存碎片,需要定期清理

不确定性较大

分配内存时,查找可用内存也会引入一定的不确定性

分配内存可能会失败,为避免这种情况往往需要较为复杂的内存回收机制(如Android的OOMkiller),而不定时的触发会进一步导致不确定性)

这又意味着什么呢?这就意味着本来在系统层面上的资源分配会前移到代码编写阶段,对编程模式是个重大的改变。

比如AUTOSAR中的Component配置就包含了这些东西:

需要使用哪些接口,类型是啥?

6.如何识别架构性需求

既然架构性需求是如此的关键,那么如何才能在项目前期将绝大部分的架构性需求识别出来呢?个人觉得主要有两大类方法:

系统的主要功能需求

质量需求和非功能性需求

决定了解决方案和项目的各种约束条件

进行行业对标和调研,对于行业中各个领域的解决方案中特殊的点要知其然且知其所然,而不是简单的想当然,因为这些特殊的点往往就是为了满足特定的“架构性需求”而来的。

结语

三年前,有位大佬问我,架构设计那么多环节,哪个环节最重要?我回答说:“把需求弄清楚最重要”。现在想来,确实如此,万一你漏了一条“架构性需求”,可该怎么办?

浏览量

原文标题:架构性需求是什么

下载发烧友APP

电子发烧友观察

长沙市望城经济技术开发区航空路6号手机智能终端产业园2号厂房3层(0731-88081133)

THE END
1.万维网:一场信息革命万维网采取了浏览器/服务器架构(B/S 架构。这里说的浏览器是泛指实现了万维网相关协议,能够正确展示各种资源的终端程序)。浏览器负责展示资源,服务器负责存储资源。浏览器不关心服务器如何处理和存储资源,服务器只需要做两件事情:首先,给资源取个名字(URI)并公布出来;然后,服务器将资源以合适的方式(HTTP 协议)提供...https://www.jianshu.com/p/5542dde38166
2.B/S还是C/SeHR系统技术架构如何选择?B/S还是C/S-eHR系统技术架构如何选择? 近年来,随着网络技术不断发展,尤其是基于Web的信息发布和检索技术、Java技术以及网络分布式对象技术的飞速发展,导致了很多应用软件体系结构从C/S结构向更加灵活的多层分布结构演变,使得软件体系结构跨入一个新阶段,即B/S体系结构(Browser/Server的简称,浏览器/服务器模式),用于...https://www.cup.edu.cn/nic/netclass/web/25794.htm
1.B/S架构与C/S架构的区别C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群. 对程序架构不同: C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少...https://www.u72.net/daima/nxvz5.html
2.系统架构(理解架构的视角)系统架构图多个展示视角视角:技术视角-数据架构 视角:技术视角-基础架构 视角:技术视角-运维架构 3. 物理架构 以一个银行系统为例 二、DDD到各种架构 三、参考文献 学习前言 在学习架构时,我认为首先要理清楚架构的视角,因为你所认知的架构和别人所说的架构可能是两码事。 https://blog.csdn.net/qq_51226710/article/details/143652548
3.两翼五层架构mob6454cc67e023的技术博客二、端和边正驱动计算架构的创新。端和边目前更多使用的ARM架构芯片,云则更多是x86架构,基于ARM架构的移动应用迁移上云,性能损失约40%,不仅影响用户体验,而且增加迁移成本。更为关键的是,端和边的芯片使用量远超云,这意味着前者将主导、牵引生态的发展,进而驱动中心侧计算架构的创新。 https://blog.51cto.com/u_16099210/12516381
4.钟卫东:虚拟化技术支撑智能座舱舱驾融合智能底盘的演进方案...另外,基于虚拟化这样的技术架构,上面的智能座舱软件,我们也有OS+的实现,能够实现智能座舱软件平台化,比如通过虚拟驱动来实现芯片解耦,通过SOA平台实现服务解耦,目前量产车型20多款,能够去支持主机厂的平台化建设,包括提供全生命周期健康管理服务,以上是我的分享,谢谢! https://www.dongchedi.com/article/7435908338325406260
5.Java代码的基本知识2、 C/S B/S 模式 C/S client/server即客户机/服务器模式,客户端也参与程序的运行与计算(富客户端、胖客户端) B/S border/server即浏览器/服务器模式,又称为瘦客户端,客户端不参与程序的运行与计算 3、 企业级应用(大规模的应用)的特点 1.生命周期长、稳定、可靠 ...https://www.yjbys.com/edu/jisuanjidengji/288685_2.html
6.4W字一文带你看懂智能座舱域控制主流芯片及平台架构汽车电子b、车-云计算阶段,车辆功能在云端。 2021年汽车电子电气架构从分布式向域集中变化 博世认为汽车电子电气架构演变路径为分布式、域集中、中央集中式。传统汽车分布式架构缺点越来越明显,高档车使用100~200种不同ECU,汽车的 EEA中搭载了各种功能不同的 ECU 进行协同运作为驾驶员提供各种功能,打造中央集中式EEA架构的车载...https://www.eefocus.com/automobile-electronics/515901
7.C/S和B/S两种架构区别与优缺点分析腾讯云开发者社区C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑。既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系。 一、C/S 架构 1、 概念 C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在...https://cloud.tencent.com/developer/article/1528732
8.学生学籍档案管理系统学籍信息管理系统摘要:随着网络技术与计算机的广泛普及,绝大部分的机构都对计算机管理系统进行了合理的运用,本设计通过Java面向对象语言完成对学生信息管理系统进行编写,基于B/S模式,所用开发工具为Eclipse以及AndroidStudio,然后基于Mysql的数据库基础上,通过Adobe Photoshop CS6的图像处理软件美化界面,在系统开发过程中用到...https://www.zboao.com/cgal/8923.html
9....安全等级保护建设与测评第三包无线控制与终端准入及网络架构...系统应基于B/S架构,支持SSL加密模式访问,通过web方式直接对系统进行管理; 系统应支持网闸、NAT场景的日志采集。 日志采集 系统支持的数据采集范围包括但不限于网络安全设备、交换设备、路由设备、操作系统、应用系统等。 系统支持的数据采集方式包括但不限于SYSLOG、RSYSLOG、SNMP Trap、FTP、ODBC、JDBC、Net flow、WMI...http://www.ccgp-beijing.gov.cn/xxgg/qjzfcggg/qjzbgg/t20211111_1387593.html
10.常州网络公司我们能做什么 网站建设 企业高端定制网站设计 彰显品牌形象 流量营销 定制手机网站 / 微网站制作 布局移动互联网 外贸网站建设 基于B/S 架构的系统研发 让业务办公轻松自如 外贸网站推广 我们不只提供云硬件和网络 更加注重技术运维 网络整合运维 基于iOS / Android 应用开发 ...http://www.czzwz.com/