何为“衡水软件开发界说轿车”?每个人或许都有自己的独特见地,毋庸置疑的是软件在轿车电子中开端占据主导性位置。 20世纪80年代初,一辆轿车的电子体系只有几万行代码 ,今天一辆高端奢华轿车电子体系稀有千万行代码 ,而未来一辆智能网联轿车电子体系或许会有上亿行代码,这一现象说明了软件开展与轿车创新的必然相关趋势。 轿车功用由开始的机械办法完成,到后来的电子化办法完成,未来或许更多的功用能够在不改变硬件的条件下由软件来完成。依据福布斯报道 ,预算今后自动驾驶轿车60%的价值将源于软件,而今天轿车软件的价值占比只有10%。 “软件界说轿车”将把轿车变得像手机一样,只要是一个智能机,我们就能在此基础上便利添加不同的运用,完成不同的功用,而且能够在线更新升级软件。可是轿车与手机在用途上又有着实质的不同,手机质量只影响通讯和文娱,而轿车质量关系到人们的生命财产安全,所以“软件界说轿车”布景下的轿车软件质量怎么保证,怎么习惯新功用、新平台的快速软件开发,是当下轿车软件开发需求深度考虑的问题。 关于快速改变的软件架构考虑 随着智能网联轿车的开展和轿车电子电气架构的演变,整车电子电气架构逐步从分布式架构转变为会集式的操控架构,多个传统ECU功用会集在一个域操控器,乃至还有跨域整合的概念,这种情况下,关于一个域操控器中的软件要求越来越高,软件的规划也越来越杂乱,所以一个具有强大兼容性、到达解耦、可扩展的软件架构至关重要。 “解耦”分为两个层次,一个是软硬件之间的解耦,一个是软件架构内部模块之间的解耦。 软硬件解耦即软件架构规划时考虑跨硬件的方针因素,把硬件作为一个黑盒子,构建一个通用的软件结构,对接口设备做抽象化处理,并兼容不同的接口。另外,软件架构应是一个分层化模块化的规划,应该做到模块之间的解耦,对接口进行标准化处理。软件结构上能够加载不同的算法和软件模块。 为了应对当下轿车软件需求的快速改变,软件架构规划应是一个“种树”的行为,而不能是“种草”。也就是说,要把全体软件构建成一棵大树,能够不断扩展或删减枝叶,但不会对骨干形成影响,而不能规划一个软件体系就种一棵草。 为了完成可扩展方针,软件架构规划时要有大局观,保证软件架构的兼容性规划。软件架构规划时需求充沛剖析数据流和操控流,软件资源占用情况。软件架构就像人体的血管和神经网络,连接各部分肢体,传输信息和营养,只有保证这些数据流和操控流的正确实施,才能完成一个健康的架构。 总之,软件架构规划时要秉承一个方针:软件是杂乱的,架构是简单的,用简单明了的架构去承载不断扩大的软件模块以满意快速改变的需求。 随着智能网联轿车的开展,轿车软件开发面临着巨大应战。新功用新需求的出现,没有过多的经验能够遵循,形成软件需求不断迭代;软件架构需求支撑不断改变的需求;软件杂乱庞大的代码量或许引进更多的缺陷;杂乱场景组合与庞大代码量使得测验验证的充沛性难以保证...... 面对这些应战,轿车软件质量到底应怎么保证。软件的特殊性在于它的质量无法量化,质量缺陷不光是通过技能引进,也或许通过开发进程的不标准性引进,而这些通过进程引进的危险看不见摸不着不行预测,所以保证轿车软件质量总结起来能够分为三个方面:流程保证、办法保证和东西保证。 首要,流程上需求建立完善的软件质量办理体系,例如基于ASPICE的软件开发进程、质量办理进程、配置办理进程、改变办理进程等,这些都直接关系到软件的质量,软件开发进程需求遵循这些质量办理要求。完善的流程也能够保证需求的稳定性,例如在建立需求时需求通过充沛的调研和确认,需求要通过多方评审,能够从必定程度减少需求的不合理变动;另一方面,流程上做好需求的基线办理和改变办理,识别需求改变的影响规模,并针对影响规模制定相关的应对办法。 在办法上,主要是指技能办法和办法论。例如:在制定需求的时分,能够通过HAZOP剖析弥补安全需求,识别需求是否全面,通过需求的双向追溯保证软件开发与需求的一致性;在软件架构规划阶段能够通过层次化、模块化规划和高内聚低耦合的办法降低软件质量危险,通过数据流剖析、操控流剖析来验证架构的完善性;在软件编码阶段遵循编码标准的办法要求;在测验时保证测验覆盖率,并采取性能测验、雪崩测验、故障刺进测验来充沛验证软件功用与性能。办法有很多,无法一一列举,需求在软件开发进程中充沛挖掘。 另外,东西也是软件质量保证很重要的一个方面。完善的东西链能够让软件开发作业事半功倍。比方自动化测验东西,代码与详设文档的转化东西,有了这些东西之后,能够对需求改变带来作业量进行快速呼应。从功用安全视点考虑,软件东西本身或许会引进体系性失效问题,所以安全可靠的东西是保证软件质量的基础。 关于灵敏开发的考虑 虽然当下灵敏开发变成了热门话题,灵敏或许是个好的办法,能够让软件提早得到验证,但灵敏不是全能的。 首要,关于当下软件开发需求改变快、进度严重等问题,不是单纯靠灵敏开发就能解决,灵敏办法的运用需求匹合作适的项目,例如能够交叉运用于一些小的软件模块的开发进程中,并要合作必定的自动化测验办法,否则会让测验验证的作业量剧增。 笔者个人不主张灵敏作为一个杂乱软件体系开发的主线办法,关于越是杂乱的软件,越是要做好大局规划,可是在具体具体规划与完成层面能够适当运用灵敏办法。 轿车行业与某些互联网开发思路是不同的,前期仍是会有相对比较清晰的需求,包括功用和接口,并不是能够彻底随意增减,而互联网产品开发进程或许突发构思,会加入很多构思的内容,从而添加新的需求,这种需求迭代就像滚雪球,各方面不断加入新元素,不断扩大完善,所以运用灵敏开发或许更适合某些互联网产品。而轿车范畴,即使是现在的智能网联轿车范畴,需求结构相对也是清晰稳定的,这个进程更像是建房子,是应该先建好全体地基,再逐层建楼房,才能保证质量。而不能每一层快速盖一点,靠盖好后的楼来验证地基。所以关于是否选用灵敏开发,需求先识别这是一个滚雪球的项目仍是建房子的项目。 虽然智能网联轿车有一些轿车与ICT的交融元素,可是综合来看仍是更偏向于“建房子”的比重。灵敏适用于“不知道的不知道”探索性项目,而智能轿车软件敞开归于“已知的不知道”探索性项目,仍是有些不同。 而且从软件质量和功用安全视点考虑,灵敏开发进程中通过充沛沟通精简进程与文档这种办法或许会引进不行评价的体系性失效,所以针对轿车行业新功用、新平台的杂乱软件开发至少在架构阶段以前个人主张仍是选用瀑布式开发,在具体规划以及基线后的需求迭代进程中能够适当考虑灵敏开发。 面对日益膨胀、杂乱化的轿车软件体系,传统的测验人海战术也许在某些时分有必定作用,但不够高效。软件测验需求“交融”,即关于杂乱化的软件体系,要重视人工测验与自动化测验相交融。用自动化来进行持续集成与交付,能够起到事半功倍的作用,可是自动化测验也需求必定的测验人员来编写脚本和人工验证,现在自动化测验并不能彻底代替人,例如现在有一些单元测验的自动化测验东西,覆盖率能够到达百分之百,可是从软件质量视点来考虑,单纯用这个东西测验并不满足,因为软件的逻辑是否正确仍是需求人去验证。可是关于代码量巨大的杂乱软件体系,单纯靠人海战术也是不行行的,糟蹋人力资源且效率低下,因而以自动化测验为主,以人工为辅的“交融”化测验或许才是比较正确高效的途径
|