PDF下载
软件敏捷开发在汽车软件开发中的最佳实践

刘玉湛

哈曼国际,上海市,200040

摘要: 随着当今汽车电子化程度的不断提高,相关汽车软件的需求也是愈发丰富,这就对汽车软件开发质量及速度都提出了更高的要求。对此,必须进一步优化现有的汽车软件开发流程,其中敏捷开发便是一种新型软件开发思想,其相较于传统的瀑布式开发更为贴近消费者,适用于当今汽车软件的开发。本文具体分析了敏捷开发于实际汽车软件项目中的具体应用,阐明了敏捷开发于该领域的优点,进而验证了敏捷开发在汽车软件开发应用中的可行性及可操作性。此外,文中也涉及对软件开发一些基本理论的分析,最终提出适合于汽车软件开发的敏捷实践方式,以供相关研究人员参考。
关键词: 敏捷开发;汽车软件开发;最佳实践;瀑布式开发
DOI:10.12721/ccn.2023.157028
基金资助:
文章地址:

就目前而言,软件开发的理念及方法愈发增多,对于汽车软件的开发同样如此,长期以来,汽车电子行业各供应商在软件开发中都遵循整体的研发规划要求,以简单稳定为主,所使用的开发方法主要为传统的瀑布式开发。然而,近年来汽车电子化程度迅速提高,各种硬件及芯片的性能要求也是愈发提高,在此背景下,汽车软件的开发需求也是得到了极大的丰富,这就要求汽车软件开发质量必须有效提高,以满足当前汽车软件应用的需要。敏捷软件开发的概念最初是由国外学者施瓦伯与麦克·比窦所提出的,这一理念主要是为了改善软件开发的应变能力,其也成为当前汽车软件开发实践中的重要内容,对于这一开发方法的研究势必能够实现汽车行业的深度发展。

一、常用的软件开发理论及方法概述

现阶段,软件开发领域发展十分迅速,各种先进的开发理念不断涌入,对传统开发理论也造成了很大的冲击,其中,传统的软件开发按理论可以分为瀑布式开发、迭代式开发两种,下述则就传统软件开发及敏捷开发理论及具体方法进行简要的分析。

1.1瀑布式开发

在汽车软件开发中,传统的方法主要是以瀑布式开发为主。瀑布模型也易于理解,即是指将软件各项活动规定为固定顺序,并进行各阶段工作的连接,由此形成形如瀑布流水的模型,并最终可以得到相关的汽车软件产品。瀑布式开发在汽车软件开发领域应用已久,其为软件开发提供了基本的框架模型,因而在软件工程中发挥着极为重要的作用。依据汽车软件开发的具体内容,可以将瀑布式开发简单的分为五个阶段,第一是需求分析,该阶段需要明确系统的具体目标;第二则是设计阶段,该阶段主要是对系统进行模块划分,并进行各个模块的编码、测试等;第三为编码阶段,主要是通过编程语言的使用加以实现设计阶段;第四位测试阶段,通常包含黑盒和白盒测试两种,用以测试汽车相关系统是否能够实现;第五则为维护阶段,即结合用户需求修改系统,使之更符合用户的基本需求。由于汽车软件复杂度的急剧增加,对用户体验的日渐重视,目前该方法已然无法适应汽车软件开发的实际情况,无法应对快速的市场变化。很多研究也是针对瀑布式开发软件失败的原因进行研究,这也预示着瀑布式开发即将被更为先进的开发理念及方法所替代。

1.2敏捷开发

敏捷开发是当前较为先进的一种软件开发理念,其主要是以用户需求改进为主,综合运用迭代等方法进行软件开发。通常的,敏捷开发中会将软件项目切分为多个子项目,后续也将各子项目进行测试,从而使之一致处于可运行状态之中。敏捷开发的核心在于主张简单、保持变化、实现投资最大化等,其中主张简单,就是在软件开发中认定最简单的解决方案即为最佳方案,同时在设计中,若是目前并不需要某项额外功能,则无需在设计中加入,从而尽可能的保持模型简单。保持变化即要较好的应对人们需求的变化,在软件开发中随项目进行也能反映出这一情况。

敏捷开发已经在商业软件和互联网软件开发中得到非常成熟的发展和应用。很多种不同的实践都在广泛使用中。但当敏捷开发引入汽车软件的开发中,由于汽车行业的特点,需要做一定的适配,剪裁才能对汽车软件的开发带来有益的帮助。汽车整车的开发并不遵循敏捷开发,具有其固定的开发模式并需要整车各个零部件开发完全的协同与配合。因此,在汽车软件开发中需要适配整车各个阶段的交付要求规划开发的内容。遵循敏捷开发的理念对总体开发模式,进度做出相应的调整。

二、汽车软件开发中敏捷开发实践应用分析

2.1需求开发

在早期的汽车软件开发过程中,用户需求相对较为简单,因而汽车生产厂商于软件开发初期就可以确定完整的功能,因而仅需要单独固定的需求文档便可以完成相应的开发要求。但就当前的汽车软件开发而言,复杂程度及不确定需求量明显增加,诸如报警显示优先级、人机交互策略定义等的加入均要求软件开发不断更新一些基本需求。因而创建了相应的产品需求列表,实现对需求的有效管理,其中主要涉及需求内容、项目名称、优先级、预估工作量等。对于部分复杂的需求也可以进行分解,即以子需求形式列出,诸如在汽车仪表软件中,为更好的实现道路偏移显示功能,需要考虑应显示的画面,并通过相应的策略防止显示信息间发生冲突。对此,可以为车道偏移显示界面创建静态动画,并将之作为显示功能的一个子功能,借助于逐步分解的方式必然可以有效实现其功能的完整性。经此操作,相应的产品需求列表就包含了软件开发应完成的任务集,即使是在开发后期提出了新的需求,也可以根据现有列表的完成状态有效评估新需求变化对于整体项目可能产生的影响,借此可以预先进行后期功能实现的规划,及时即使相应客户的动态需求。

由于汽车整车的开发有固定的流程并且需要各个零部件协同配合集成。因此在需求分解和规整后,需要按照整车的开发节点和相应配合调试要求进一步分解为各个阶段,调整优先级,以固定的开发周期分解需求到各个大的整车节点。

2.2冲刺阶段

对于汽车软件项目敏捷开发而言,可以将其细分为多个冲刺阶段,这些冲刺阶段则是由车厂测试计划及相关部门研发计划所确定的,因而在正式开发前,软件开发团队均会预先召开冲刺规划有关会议,主要是用于澄清高优先级用户需求,并进行技术实现讨论。将开发任务按照大的整车节点打包对应规划。一旦汽车软件开发团队做出目标承诺,便可以直接展开开发工作,其中各个需求开发任务都被归为“待完成”“正在进行”“待验证”“已完成”四个状态之一,诸如在汽车巡航信息显示功能的开发过程中,可以将该功能作为某一总功能的表述,并在分解后将之归为“待完成”项目,诸如报警信息、动态信息等。当开发人员已经实现了人机交互子功能时,此时便进入到“正在进行”的状态,功能编码完成后对应于“待验证”阶段,测试通过即对应最后的“已完成”状态,此时则表明汽车某功能的开发已经实质意义上被完成。对于已完成的功能在满足整车节点的要求下,尽快进入持续集成,持续测试。对于每一个冲刺阶段,在计划期要预留一定的开发量余量,以确保在整车大节点之间既能保障要求的功能能按时交付,同时还能接受一些需求的更改,重新计划。

总之,汽车软件开发中,任何新需求的输入都会率先进行优先级评估,并在更新需求列表后按照节点要求将之加入下一冲刺阶段进行实现,这就极大的改善了频繁波动所带来的质量软件问题。总体来看,在每个整车大节点之间的开发都遵循敏捷原则通过多个冲刺阶段来处理渐进的实现需求并及时修正。

2.3软件释放

汽车软件开发后需要集成继承相关其他硬件才能完成验证,这就需要设计一个特定有效的验证测试软件用以完成释放冲刺阶段验证操作并引入自动化,从根本上保证所设计的汽车软件质量并提高效率。对此,汽车软件设计团队会于冲刺阶段安排软件功能展示会,应该在早期就考虑自动化测试的要求架构设计软件,使用成熟测试框架,积累的测试用例来保证每一次软件的释放都经过充分的验证,用以测试汽车软件功能,从而确保所涉及的汽车软件能够满足用户需求,若是测试失败则需要立即检查安排进入于下一冲刺产品需求列表进行更正修正。尤其要检视对下一整车节点的影响决定优先级得到及时合理的处理。 

三、结束语

经由本文的分析可知,现阶段汽车电子工业发展极为迅速,因而汽车电子系统也是语法越发复杂。在此背景下,敏捷软件开发思想也是愈发适用于汽车软件开发的实践应用,但需要适应汽车开发的流程和节奏做一定的适配。目前这一汽车软件开发模式已经取得了一定的成效,很多开发的产品也大范围生产应用,其在后续也有着十分广阔的应用前景并将逐渐在软件定义汽车中扮演重要的角色。 

参考文献:

[1]丁倩莹. 基于用户参与的X银行软件项目敏捷开发流程改进研究[D].浙江大学,2022.DOI:10.27461/d.cnki.gzjdx.2022.000224.

[2]何良静. 基于敏捷开发的电力软件研发项目流程改进研究[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.005418.

[3]孙德刚.Scrum敏捷方法在软件工程实验框架设计开发中的应用研究[J].电子世界,2021(09):172-173.DOI:10.19353/j.cnki.dzsj.2021.09.069.

[4]沈文喆. 基于敏捷方法KC公司软件开发的项目管理优化研究[D].上海财经大学,2020.DOI:10.27296/d.cnki.gshcu.2020.002060.