汽车软件在复杂性、高可靠性、安全性要求、变更管理以及物理系统特性方面处理起来很复杂,因此汽车软件开发流程都遵循V模型模式,然而随着汽车软件的复杂性呈指数级增长,传统的V模型往往导致后期验证阶段的成本非常高,并且对后期市场和客户需求缺乏灵活性。在当前行业对自动驾驶领域需求还不够明确,以及汽车的开发周期逐渐缩短的条件下,汽车软件开发需要引入敏捷开发流程,一来其可以保证产品更早地投放市场,二来快速响应市场和客户不断变化的需求,支持汽车行业从传统制造业向以"汽车客户需求"为中心的服务型制造业转型。 敏捷开发是一种灵活的方法,它允许软件的增量开发和迭代开发,而不是在开发过程结束时一次性交付所有软件【对传统的汽车ECU,车辆量产前会进行各ECU软件冻结,供应商一次性交付所有软件,在量产后如果需要某个ECU增加新功能,供应商不会再理会的,因为之前的开发合同已到期,需要重新签开发合同,除非是出现软件bug,需要修复】。 尽管这两种方法——敏捷和V模型——都有其优点,但挑战和局限性仍然存在,尤其是在汽车软件开发方面。接下来理一理敏捷开发在汽车软件开发中的应用、其优点、挑战和局限性。以及结合使用敏捷开发和传统过程V模型的效果。 将敏捷开发集成到V模型中的第一步是分析当前V模型面临的主要挑战,以及敏捷开发所具有的优势。两者的对比如图1所示,它都描述了V模型与敏捷开发不同的处理方式。 例如,就合作方式而言,在传统的V模型项目中具有详细而全面的客户合同。到合同结束后会有带来一些问题,由于复杂项目的不确定性以及不断变化的客户需求,合同上确定的需求与实际客户需求有出入。敏捷开发则在整个项目执行过程中保持持续的客户互动,持续接收客户的反馈和变更请求,并在过程中共同开发和审查软件,就预期结果达成一致。 图1 V模型与敏捷开发对比 但是在复杂的汽车软件开发项目中融入敏捷开发是一项艰巨的任务,如何在V模型中融入?会带来哪些挑战?效果会不会如描述的那么好?这些都是问题。 将敏捷开发融入到V模型的汽车软件开发的主要手段有以下几个方面: 1、在模块级别上实现增量开发,以分解复杂性,允许用户参与并支持后期更改。 2、通过就增量冲刺的目标达成一致,而不是为软件的完整交付而谈判合同,来促进用户的参与。这将计划的范围从完整的项目时间规划细分为一个个敏捷sprint规划。 3、摆脱基于纸质(或文档)的规范,使用根据使用场景和用户故事进行验证的工作软件。 图2 在V模型开发中融入敏捷开发 下面以将敏捷开发过程中的增量开发融入到V模型开发为例子,进行详细说明。 在基于V模型的软件开发中,通过对整个软件体系结构的分层分解,定义了一组软件模块,这些模块实现了客户所需的功能。在传统的V模型中,这些模块先经过充分的开发和测试,然后集成到整个系统中,再进行测试。这个过程的最后一步是客户的验收测试。这将导致客户很晚才参与到反馈中来,从而导致很晚才提出更改请求。 敏捷开发是将模块开发分解为几个增量步骤。这些步骤是作为敏捷冲刺sprint执行的,它根据客户要求的功能以增量方式实现功能。对于每个 sprint(或一组 sprint),客户都会参与每期sprint的输出审查。这是一个挑战,因为必须将每个sprint的开发任务集成到整个系统中,如果不集成到整个系统中,客户可能无法评估软件的质量。软件在环 (SiL)或模型在环 (MiL) 可能有助于软件的验证。 上述的这些想法也跟部分主机厂的工程师进行过一些沟通,为了应对当前不断变化的需求,主机厂的工程师其实也觉得在V模型开发中融入敏捷开发的思想是可行的。 然而这种转变并非易事,因为汽车行业几十年来一直遵循V模型开发流程。相关的标准是基于这些过程的,项目管理和客户交互工作也相应进行。需要主机厂与供应商共同努力,推进这种改变。 免责声明:本网站的部分内容,来源于其他网站的转载,转载目的在于传递和分享更多信息,并不代表本平台赞同其观点和对其真实性负责,版权归原作者所有,如有侵权请联系我们删除。
|
分享到: