敏捷方法促进协作、快速原型设计和灵活性,所有这些都有利于软件开发。但它能在稳定性和可靠性至关重要的领域发挥作用吗?
汽车软件开发通常使用 ASPICE,这是最佳实践的国际标准。但其定义的阶段和目标似乎与 Agile 截然不同。在本文中,我们将介绍汽车软件的一些主要方面,并深入探讨采用 Agile 的含义。借鉴领先的汽车技术提供商Luxoft的见解和经验,我们将问这两种方法是否可以有效地协同工作,如果可以,如何协同工作?
背景:当今的软件定义汽车
我们首先会介绍一下 Luxoft 等公司在推动汽车软件改进的一些领域。
自动化
驾驶辅助和自动驾驶减少了驾驶员控制车辆时的输入需求。机器人视觉等技术用于检测路况、危险、标记和标志。这些传感器系统需要进行广泛的验证和测试。
性能数据和数字驾驶舱
除了实现自动驾驶外,先进的软件系统还能提供增强的驾驶员反馈和数据监控,以提高性能、安全性和舒适度。平视显示器 (HUD) 等发展为驾驶员提供了更丰富的信息,减少了驾驶员的注意力分散。对于乘客而言,车载娱乐系统也在不断创新,从而全面改善用户体验。
出行即服务
出行即服务 (MaaS)描述了交通领域的一种新模式。MaaS 使用网络技术,根据动态需求和使用模式利用拼车和按需租赁等出行解决方案。自动驾驶汽车也可以集成到 MaaS 解决方案中。
汽车行业的关键开发技能
那么,推动这些发展的是哪些技术呢?让我们来看看 Luxoft 等公司在未来员工身上寻找的一些关键技能。
- C 和 C++。这些仍然是当今使用最广泛的编程语言。它们结合了低级功能和高级结构,为嵌入式系统提供了稳健性和效率。
- MATLAB/Simulink。MATLAB及其扩展 Simulink 广泛用于数字信号处理、AI和基于模型的自动化等数学和算法系统。
- Python。Python是一种多功能语言,具有丰富的库和集成。它是编写数据工程、AI 和机器学习任务的常用语言。
- SQL(用于云系统)。SQL是与关系数据库交互的既定标准,现在也是管理基于云的资源的宝贵工具。
- 系统工程。系统工程是汽车软件开发中必不可少的技能。它对于管理具有多种交互的复杂系统非常有用。
- AUTOSAR。汽车开放系统( AUTOSAR )架构是汽车系统中使用的软件架构和组件的开放标准。
敏捷与汽车之间的爱恨交织关系
什么是敏捷软件开发?
敏捷通常与瀑布式开发相对照,瀑布式开发将需求收集、设计、编码和测试分开。相反,敏捷更倾向于通过集成测试进行快速迭代,以及早期和增量发布周期。2001 年宣言列出了优先事项,例如自我组织和活力而不是计划、协作而不是合同谈判,以及专注于开发工作软件而不是文档。
敏捷方法经常被初创公司和小公司采用,但人们对其是否适合大公司和成熟项目仍心存疑虑。虽然敏捷方法在小规模上具有明显的效率倍增效应,但对于更复杂的设置,它可能会产生相反的效果,因为在这种情况下,上下文切换的成本更高。
毫无疑问,敏捷开发一直备受关注,但它并不是灵丹妙药。实际上,许多公司和开发团队使用某种混合框架,希望在不抛弃设计原则的情况下获得活力。
深入研究 ASPICE
自 2005 年以来,汽车软件开发商越来越多地使用ASPICE(汽车软件过程改进能力终止),这是该领域最佳实践的国际标准。
ASPICE vs SPICE
ASPICE 是SPICE的一个特定实现,SPICE 是一套得到ISO 认可的、广泛使用的软件开发技术标准。ASPICE 采用了 ISO 33061 中规定的原则,并确定了它们在汽车软件中的正确应用。
合规性和最佳实践
ASPICE 将汽车开发置于与受到严格监管的行业和部门同等的水平。Luxoft 等公司使用 ASPICE 合规性来确保软件满足客户和用户定义的性能标准。该标准规定了最佳实践规范,以帮助确保 OEM 以定义且可预测的方式开展工作。
ASPICE 的软件方面
在软件规划方面,ASPICE 往往与项目开发的瀑布模型相关联,因为它定义的输出可以对应于不同的项目阶段。然而,ASPICE 明确的标准不一定要求瀑布的严格性。
ASPICE 与 Agile 相结合的好处
ASPICE 在合规性方面显然具有优势,但它也可能使项目变得更加繁琐和昂贵。这是转向敏捷的两个常见原因。那么有没有办法将这两种做法结合起来呢?
Luxoft 开发了一种独特的方法,将 ASPICE 和 Agile 的优点结合在一起。使用这种混合方法进行汽车软件开发,使他们能够从 ISO 合规性的正式严谨性中受益,同时又不会失去现代项目管理技术的活力和效率。要做到这一点,必须研究每种做法的优缺点,找到重叠点,并解决它们结合时出现的具体缺陷。
时间线规划:长期 ASPICE 与短期 Agile
ASPICE 通常被认为是一个连续的过程。它使用验证和确认模型(V 模型),这意味着每个开发阶段都有特定的对应测试阶段。同样隐含的是从一开始就需要明确需求。我们预计这需要较长的开发周期,因为任何测试和反馈都会在流程的后期出现,然后需要恢复到较早的阶段来解决。
相比之下,敏捷允许在任何阶段进行更改,并且通过使用连续测试方法,验证不必推迟到后期阶段。
在规划汽车项目的长期里程碑时(通常持续几年以上),可以借用 ASPICE 框架,但是当我们谈论短期(6 个月)规划时,其中定义的产品增量和相应的迭代开发提供了交付有竞争力的软件的流动性。结果是更快的周转和更具活力的流程。然而,对比不必如此强烈。
Agile 和 ASPICE 之间的相似之处
ASPICE 不会确定特定的开发生命周期,只会确定正确的目标。如果抛开严格的顺序,相应的开发和测试的 V 模型实际上可以与敏捷流程很好地集成。因此,只要在结果方面遵循最佳实践,敏捷实践(如冲刺)是可能的。
此外,ASPICE 并未指定需要使用的任何特定工具,而是列出了预期结果。同样,在敏捷方法中,工具是次要考虑因素,重点是有效的工作实践和关系。这意味着 ASPICE 中设定的总体目标仍然可以坚持,但不必严格规定每个开发过程应如何以及何时进行。
结合两个框架时的潜在陷阱
虽然可以采用混合方法,但这并不意味着 Agile 和 ASPICE 永远不会完全重叠。最重要的是,ASPICE 制定的标准和需求建模比通常为 Agile 项目制定的要详细得多,因为 Agile 项目更容易容忍不确定性。这意味着 Agile 方法必须在定义的项目目标内以较小的规模使用,而 ASPICE 仍然是确保整体质量和严谨性的主导标准框架。
敏捷对整个项目生命周期内的需求变化具有高度的容忍度,但对于汽车软件等受到严格监管的领域,显然需要保留一些界限以确保一致性。当然可能会有变化,但必须优先考虑并保持系统集成以满足客户需求。