软件开发中的人工智能

人工智能

10.9.2024

软件开发中的人工智能

软件不仅在现代生活中发挥重要作用,在汽车中也扮演着关键角色。因此,整车制造商和供应商都使用成熟的方法和工具,以便尽早发现程序中的任何错误。研究人员已经着手研究新的方法,例如以人工智能为技术基础。

如今的现代化汽车可说是会滚动的计算机,由将近 100 个电子控制单元互联形成,负责控制发动机和电池功能、监控空调系统或是控制信息娱乐系统。另外还有越来越多的智能功能,例如自适应巡航定速控制系统和自动驾驶功能。这一切都必须借助精密复杂的软件才得以实现。

而随着软件复杂性的增加,整车制造商和供应商也必须投入更多心力来避免错误,以确保提供高质量软件。他们一方面尤其遵守例如 Automotive SPICE(ASPICE)和 ISO 26262 等行业标准制程,以及本身的编码和质量准则,例如禁止在特定程序语言中使用易于出错的函数。保时捷工程集团的开发过程达到了 ASPICE 2 级标准,可靠且可重复。这不仅符合当前的技术水平,构成了允许在汽车上使用的关键基础,而且也是对客户的保证,可以在早期阶段识别出错误和偏差,并加以排除。

保时捷工程师在软件开发中采用 V 模型(见图):左侧由上到下列出系统要求、系统架构、软件要求和软件架构等步骤。V 形底部是软件初步设计,接着是右侧由下至上所列出的单元测试、集成测试和质量鉴定测试、验收和使用等步骤。“左侧的每一个步骤都与右侧的测试步骤互属。”保时捷工程集团的软件开发部主管斯蒂芬·拉特格贝尔(Stefan Rathgeber)表示,“例如在单元测试中,我们在功能层面对最微小的单元进行检查,然后再往上一层执行组件测试。”所有层级都有测试目录,其中考虑到了所有变体。

在保时捷工程集团中,一个由质量经理组成的独立团队负责检查软件开发过程是否遵守所有流程步骤,并予以记录。这个团队不断进行审查,以便尽早发现问题,因为越是到后面的开发阶段,查找和排除错误所需的工作量也会越来越大。例如,届时将无法测试所有可能的配置组合,因此某些不适当的组合将可能引发问题。

每个层级都必须接受验证

V 模型确保高质量软体

保时捷工程集团在软件开发中采用经过验证的 V 模型。左侧是越来越详细的软件定义和开发,右侧是结果的逐步验证。所有层级都有测试目录,其中考虑到所有变体。

众多的衍生车型、各式各样的装备和软件更新,都在车辆交付之后形成了非常大的挑战。“衍生车型是当前的一个重要主题。”保时捷工程集团专业项目主管托马斯·马浩尔(Thomas Machauer)很了解这方面的情形,“我们试着尽可能只测试衍生车
型之间的差异,以求在工作量和质量之间找到最佳折衷方案。”卡尔斯鲁厄理工学院(KIT)教授伊娜·舍费尔(Ina Schaefer)也正在研究这一课题。她专注于测试样本的智能生成和优先级排列,特别是针对软件变体。她解释道:“单个系统的组合排列会因衍生车系的组合排列加倍复杂。我们因此自问:我们必须测试什么,才能良好地覆盖整个变体范围?应该以何种顺序来进行测试?如果能够成功地只测试差异,我们便能确定更有效的测试过程。”

智能的测试选择

舍费尔教授当前的一个博士论文主题正在研究隔空更新时对于不同车型变体的智能测试。“更新让一切变得更加复杂,因为现场车辆的软件版本可能完全不同。”舍费尔表示,“以前只需要在开始量产之前测试软件。在未来,我们必须一再测试每一版更新,这就大幅增加了工作量。”由此也形成了全新的问题:我们要在每一辆汽车上测试什么,才能确保一切安全?更新对于汽车组件有什么样的影响?为了回答这些问题,舍费尔的团队开发了一个原型工具,可以分析变体范围,并提供一份应进行测试的配置清单。其他工具则会建议最好的测试顺序。

然而,即便是最智能的测试也无法涵盖软件输入和输出值的所有可能数学组合。因此,其他科学家正在研究代码的验证方式。“计算机科学家认为这是一种证据。”卡尔斯鲁厄理工学院教授拉尔夫·罗伊斯纳(Ralf Reussner)如此解释,“他们希望通过数学方法来证明,一个程序会完全遵照规范行事。这种方法已经被用于安全攸关的航空领域,有些汽车制造商也在研究项目中对此做出调查。”

然而,乍看之下似乎大有前途的东西,却常常受到理论上的限制。有些数学问题的真假是无法自动确定的,例如没有证据的真实陈述。对软件来说,这意味着:我们无法使用算法检查所有计算机程序的某些特性,例如一个程序是否会停止或是否会陷入无限循环。“因此,一般而言,我们永远无法建立一个可以拿着任何程序代码,然后就自动证明无缺陷的验证工具。”罗伊斯纳表示。不过,科学家往往很幸运,能自动找到正确性证明。若无法找到,就会使用互动式工具,必要时可以人为介入过程。“实际上,这些工具能够自动完成的东西多得令人惊讶。”罗伊斯纳说。

产品需求文档的规范

软件验证还有另一个问题:如果规范错误,那么证明也毫无价值。为了避免这种情形,计算机科学家开发出类似于程序语言的专用规范语言。“通过这些语言,我们不仅可以描述逻辑关联性,还可以描述时间方面的陈述。”罗伊斯纳在卡尔斯鲁厄理工学院的同事贝恩哈德·贝克尔特(Bernhard Beckert)教授说,“但这也涉及大量工作:现今,为软件制定精确规范所需的时间与编写代码所需时间相当。简单的描述则不那么复杂,像是软件不包含例如除以零这类典型错误。”如果能从软件范围说明中推断出精确规范,那将会是最简单的方法,而贝克尔特认为这在未来可以借助人工智能来实现:“像 ChatGPT 这类大型语言模型或许能够办得到。”

然而,人工智能本身也可以自行搜寻程序错误,例如作为形式验证的补充。这种方法名为“神经缺陷检测”,奥尔登堡大学海克·维尔海姆(Heike Wehrheim)教授的工作小组对此有深入研究。“我们可以借助正确、无错误的程序来训练人工智能去找出错误。”维尔海姆教授表示,“这个课题还很年轻,但目前正在迅速发展,很多研究人员投入这方面的研究。”但是到目前为止,这个方法只适用于小程序或是个别的简单功能。

“软件永远无法百分之百不出错,但是肯定能够有更好的。”卡尔斯鲁厄理工学院专家舍费尔女士如此总结了当前的情势。“我们可以通过良好的过程和创新的方法不断提高质量。因此,我的研究工作可能永远不会结束。”

信息

本文首次发表于《保时捷工程杂志》2024年第1期。

文本:Christian Buck

版权:本文中发布的所有图片、视频和音频文件均版权保护。未经保时捷工程书面许可,不得部分或全部复制。欲了解更多信息,请联系我们。

联系方式

您有问题或想了解更多信息吗?请联系我们:info@porsche-engineering.de