上世纪70年代,软件首次被部署到汽车中,用于控制燃油喷射和点火时机等发动机参数,以提高燃油效率和性能。最初基于软件的解决方案非常局部且独立。每个软件运行在专用的控制器上以实现不同的任务。随着时间的推移,为了优化整车布线,总线系统被部署到汽车中,这使得原本孤立的控制器,传感器,执行器之间形成了初步的连通,能够进行简单的信息交换。由于一直以来,硬件/软件系统功能自下而上地发展,形成了经典的分布式架构。
近代,高端汽车至少配备7个ECU。通过5种以上不同总线系统连接,汽车生产成本中有高达40%来自于车身电子部件及软件。同时,从不断下降的ECU价格可以看出,硬件不再像过去那样具有明显的差异性或独特性,正在成为一种标准化产品,这对于一直以差异化为核心竞争力的车企来说是一种打击。这种情况下,拥有强大软件开发能力的车企,就可以摆脱供应商限制,开发差异化功能,如沃尔沃的主动安全和特斯拉的自动驾驶,都属于这方面的代表。
今天,汽车中的软件数量呈指数级增长。推动这一发展的主要动力是市场对产品创新的需要和成本更低性能更强大的硬件的推出。随着“软件定义汽车”实践的深入,对汽车产业的相关组织,流程,能力,工具,方法和长期战略都提出了要求。从软件工程的角度来看,尽管在其他领域已经有很多软件工程的最佳实践供汽车行业参考,但汽车行业的特定约束和特定领域的需求为汽车软件工程带来各种挑战。接下来让我们来看看都有哪些挑战。
组织能力的挑战
大部分情况下,车企的实施工作都被外包出去。然而,在以智能化为核心的“软件定义汽车”时代,如果车企希望掌控汽车的“灵魂”,那么必须深入理解涉及到软件的复杂系统。这意味着车企需要投入更多的精力来学习和理解软件方面的知识,以便有效地进行集成和协调工作。这个变化可能会影响整个行业的组织结构和协作方式。
理论迭代的挑战
传统上,汽车的功能和性能是通过控制理论来设计和实现的,但现代汽车越来越依赖事件驱动的软件来实现各种功能,如娱乐系统、连接性、安全功能等。因此,挑战在于如何将传统的控制理论与事件驱动系统工程相结合,以确保汽车在各个方面都能够正常运行,并且安全可靠。这需要开发新的理论和方法,以适应这一变革。
功能管理的挑战
智能汽车中包含大量的软件功能,这些功能不仅包括传统的驾驶功能,还包括舒适性和信息娱乐等各种功能。这些功能之间存在高度的相互依赖,许多功能对于其他功能的运行状态非常敏感(由于安全性考虑)。然而,我们对于汽车中不同功能之间的相互作用的理解仍然不足,因此需要开发更好的模型,以便更好地理解和描述汽车中这些复杂多功能系统的结构。这有助于更有效地管理和优化汽车中越来越多的功能。
人机交互的挑战
在人机交互方面,尽管我们认为汽车会成为像电脑或手机那样的智能终端,但实际上,汽车驾驶员不能像电脑或手机用户那样投入太多注意力,我们期待完全自动驾驶功能的到来,但在此之前,我们需要一种新的“交互界面”,来保证驾驶员在与纷繁有趣的车辆功能交互时不出现因注意力分散导致的安全问题。从目前来看,包括语音,手势等多模融合交互是各厂商挑战方向。
数据管理的挑战
尽管汽车的电子电器架构正在由分散走向集中,但仍然需要面对来自不同部件产生的分散,多维的数据。在此之前,我们曾认为,每个ECU的任务和数据保持独立互不干扰,是一种安全的设计,但这种缺乏整体管理的状态,会在下一阶段让汽车处于一种精神分裂的情况,如,一些ECU根据它们的本地数据认为汽车正在移动,而其他则认为汽车已经停止。设计一个包含传感器融合和整体汽车数据管理的数据模型将是一个有趣的挑战。
需求工程的挑战
汽车软件工程中的需求工程是一个重大挑战,即如何确定和制定汽车软件的详细需求。由于汽车中的许多功能都是创新的,因此在引入新功能时通常没有相关经验。这导致了一系列问题,包括如何精确地定义详细功能、如何设计最佳的用户界面,以及如何确保系统对各种情况有最佳的响应。需求工程在确保软件功能的正确性和可行性方面起着关键作用。
跨组织沟通的挑战
在汽车制造过程中,一些需求工程工作需要由汽车制造商(OEM)内部完成,而其他部分则需要由供应商负责实现。然而,OEM和供应商之间的沟通通常通过需求文档进行组织。问题在于,这些需求文档如果不够精确和完整,可能导致信息传递和理解方面的问题。同时,随着汽车系统变得越来越复杂,工程并发协作变得越来越重要。这意味着需要使用良好的软件工程模型来支持不同供应链之间信息交流的完整性,以确保整个系统的一致性和协调性。
架构设计的挑战
在汽车中设计IT系统的架构,包括硬件和软件层面。硬件架构包括了各种组成部分,如ECUs、总线系统、通信设备、传感器、执行器和人机界面(MMI)。在这个硬件基础上,构建软件基础设施,包括操作系统、总线驱动程序和其他服务。这些系统一起形成了软件平台。应用软件是基于这个平台开发的。实现适当的架构设计、关注点分离、可移植性和可重用性等经典软件工程目标,对于整个IT系统的性能和功能至关重要。
集成验证的挑战
首先,如果设计、架构和子系统之间的交互缺乏精确的规范,那么虚拟集成和架构验证是不可能的。其次,如果供应商提供的子系统不适合协同工作,那么集成过程容易出现问题。第三,如果缺乏架构的指导方针,当需要纠正错误时,就没有可供参考的设计一致性蓝图。这些因素使得软件的集成验证成为一个具有挑战性的任务。
质量保证的挑战
由于汽车工业对成本非常敏感,同时因为软件工程经验的缺乏,建立像软件工程所建议的质量保证体系是一个巨大的挑战。相比之下,航空工业应用了更为严格的认证流程,这是为什么飞机的可靠性远远超过汽车的可靠性的原因。随着汽车上的软件功能变得越来越复杂,需要更多关注和改进质量方面的实践和流程。
长期维护的挑战
现在我们已经知道,在汽车售出后,仍然可以通过软件服务持续获得收益,但汽车的使用寿命相对较长。因此,必须建立并组织长期的软件维护,以确保汽车在长时间内保持功能迭代和运行的可靠性。这对于汽车制造商和软件维护服务提供商来说都是一个重要的挑战和责任。
硬件变更的挑战
如果汽车上的硬件出现故障,必须进行替换。此外,在汽车型号的生产周期内,一些最初选择的硬件可能不再生产,需要用新型号替换它们。这也意味着与硬件紧密关联的软件必须重新实施。因此,对于汽车行业来说,可移植性和可重用性变得越来越重要,以便在硬件更换时更轻松地迁移和重用软件。
成本控制的挑战
大多数汽车软件都是反复重新实施的,主要原因是为了降低每个零部件的成本。汽车工业通常尝试使用成本最低的处理器,并充分利用其性能和容量。然而,这也导致了后期更改需要对软件进行高度优化,从而使软件无法在不同的ECU之间重复使用。这表明了在汽车工业中,软件成本控制与硬件成本优化之间存在紧密的关联,但也引发了软件重复实施的问题。这种问题在中低端车型上尤为明显。
知识产权的挑战
在未来,谁将拥有汽车软件开发所创造的资产和知识产权。目前车企和合作伙伴还在探索这个问题的答案,这使得未来该行业的主导角色也变得不确定。这个问题涉及到知识产权和市场竞争的复杂性,对于汽车行业的未来发展具有重要意义。
结束语
今天,在许多技术产品中,软件扮演着主导角色。在汽车中,这一点甚至更为突出。许多汽车中的新颖创新功能都是由软件实现和驱动的。包括能源管理以及当前向混合动力解决方案的转变,智能座舱,智能驾驶等。这些都只能通过大量的软件以经济方式实现。软件已经成为汽车行业的一个主导因素,虽然带来各种挑战,但却对竞争至关重要。