汽车软件工程:A-SPICE 和软件质量挑战
汽车行业正朝着互联、日益自动化、高度定制化、电动和联网的市场趋势发展,新一代车辆给大众的印象是 “有轮子的平板电脑”,而非传统汽车。在使用寿命期间,这些车辆需要能够通过购买和安装应用来进行扩展,并为乘客提供基于网络的增值服务。 此外,汽车制造商的上市时间压力不断加大,产品复杂性经常导致缺陷直到后期才被发现,从而造成修复成本增加和公司利润降低。
过去,汽车软件一直负责运行从属性的低级嵌入式控制和娱乐功能。如今,软件能够感知环境并进行分类,在先进驾驶辅助功能中协调驾驶过程,向其制造商提供遥测数据,接收无线更新,并获得对路线规划、发动机、传动装置、制动器和转向系统的高级权限。换言之,软件在驾驶过程中承担的责任越来越多。信息娱乐软件和车辆运行软件之间在传统上泾渭分明的界限变得模糊。
因此,一系列全新功能使得车载软件的数量增加了几个数量级。在很大程度上,此类软件对于安全至关重要。车辆连接到互联网会使其面临安全威胁,损害车辆的完整性以及乘客的隐私和安全。受重量、功耗、热传递、车厢空间等方面的限制,已经无法继续通过添加更多电子控制单元 (ECU) 来增加功能。因此,行业趋势是在大型多核心 ECU 上整合软件功能;动态更新和扩展要求摆脱由汽车开放系统架构 (AUTOSAR) 合作伙伴关系指定的静态 ECU 映像,转而打造由 AUTOSAR 自适应平台指定的更类似于通用 IT 系统的动态架构1。
其结果是,软件质量比以往任何时候都更加重要,但由于代码复杂性的爆炸性增长,保证软件质量也更具挑战性。什么是软件质量?国际标准 ISO/IEC 25010 对软件质量进行了清晰地界定,该标准将其分为可维护性、可靠性、安全性、可用性、性能效率、可移植性、功能适用性和兼容性。
功能异常的软件会对最终客户的体验产生重大影响。鉴于这种影响,在产品开发过程中应当优先考虑软件的质量和安全性。
图:Siemens 的 Capital Software Designer 和 Software Improvement Group 的 Sigrid平台相结合涵盖了 ISO 25010 所规定的整个软件质量范围。
从代码审查到漫长的质量控制周期,再到定性质量观念,这种确保软件质量的传统方法不能适应现代的敏捷开发方法,无法提供所需的质量。在软件需求分析和设计阶段必须及早定义各种软件所需的质量级别,以连续地测量和监控实际实现的软件质量,并将出现的问题立即反馈给设计环节。这种方法受益于以下方面:
• 与丰富的嵌入式软件架构规范和分析紧密集成
• 及早定义和规范软件组件所需的质量级别
• 持续的定量软件质量评估和指标监控
• 反馈软件质量问题以帮助架构重构
Siemens 的 Capit al Software Designer 与 Soft ware Improvement Group 的 Sigrid® for Capital Software Designer 相结合可涵盖整个软件质量范围。Capital Software Designer 的主要功能在于通过捕获和分析软件组件、其接口、可运行的功能、预期时序属性、软件组件内部行为和可变性,建立一步到位的软件架构和软件组件规范。Capital Software Designer 还能通过测试用例设计和执行软件单元测试、基于虚拟仿真的集成测试以及已实现软件的形式验证,在实现前阶段以及实现后阶段解决功能正确性问题。
Sigrid for Capital Software Designer 集成持续检查已实现软件组件代码中是否存在相关的可维护性问题,并提出改进软件质量的措施。
凭借 Capital Software Designer 和 Sigrid 之间的集成,用户可轻松获得集成的质量视图,并将 Sigrid 的见解转化为对架构的增强。
从流程的角度来看,汽车软件过程改进和能力测定 (A-SPICE)过程模型包括一个软件工程流程组,由该组指定软件开发的 V 周期。必须将软件质量管理划分到所有过程步骤中,以确保管理有效而且高效。通过与 Polarion ALM™ 软件集成,Capital Software Designer 可以在从软件需求捕获到功能软件验证的所有流程步骤中保证软件质量。Software Improvement Group 通过在实现后测量软件质量并为嵌入式软件架构设计提供反馈来对流程进行补充。
通过丰富的规范和分析确保架构正确
使用 Capital Software Designer 进行架构规范和分析
Capital Software Designer 从 AUTOSAR 或系统建模语言(SysML) 格式的上游工程输入开始为嵌入式软件设计流程提供支持,并让您能够捕获遗留代码和架构资产。
数据流程图是嵌入式应用程序软件架构的核心。它们捕获精确的接口规范,并将物理单元系统添加到数据类型系统。数据字典有助于确保整个项目中数据范围和参数的一致性。软件产品线反映了嵌入式软件级别的产品可变性。时序要求捕获有关执行的时序规范,而测试用例则捕获属于嵌入式软件规范范畴的验收条件。以前置条件和后置条件形式表示的行为契约定义了软件组件行为的可接受边界。
所有这些模型方面都成为嵌入式软件规范的一部分,需要在编写第一行代码之前进行分析,以确保一致性。
该规范由 Capital Software Designer 生成的代码外壳模板完成,该模板也称为代码框架。然后封装软件组件规格并准备好将其发送给供应商,无论他们是内部的开发部门还是外部的承包商公司。
实现后代码资产检查
Capital Software Designer 支持三种在实现后验证嵌入式软件的范式,其关注重点是正确集成和功能正确性:
接口集成确保不同的软件组件确实彼此匹配,并重点验证软件接口。
单元测试使用表格方便地对单个控制单元内的软件组件以及软件组件组进行测试。每个单元测试用例均包含激励和预期结果,占表格的一行。软件单元测试的批次可以通过测试套件进行分组并分批执行。
仿真将嵌入式软件置于其物理环境的虚拟版本中,在该环境中,Capital Software Designer 与 Simcenter™Amesim™ 软件和 MathWorks 的 Simulink® 集成作为仿真引擎。Capital Software Designer 拥有来自模型在环(MiL) 和软件在环 (SiL) 范式的测试装置,可设置仿真、执行仿真以及收集和显示测试结果。XiL 装置由激励模型、被测系统、工厂模型和代表通过/失败标准的监视器组成。
形式验证可帮助您规避有限测试范围的局限性。您可以将一流的 C 语言模型检查方法应用于源代码,以便检测契约违规之类的功能错误以及数组索引错误之类的常规软件缺陷。此外,形式化方法使您能够生成巧妙的测试用例,以保证分支、位置、条件和修正条件/判定条件覆盖率 (MC/DC)。
如引言中所述,软件质量包含许多方面:可维护性及相关方面、可靠性、安全性、可用性、性能效率和可移植性。
集成软件质量规范和分析
正确定义软件质量和遵守此质量标准是成功开发软件项目的关键。Software Improvement Group 的软件保证平台 Sigrid 旨在根据国际 ISO/IEC 25010 软件质量标准提供一流的软件质量分析。Sigrid 可根据标准分析源代码,并将其与 Software Improvement Group 的软件质量基准进行比较。因此能够立即了解软件的相对质量。Sigrid随后会提供有关改进源代码以达到预期质量的指南。
通过集成 Sigrid for Capital Software Developer,Software Improvement Group 可以利用 Sigrid 的固有功能将软件质量分析引入嵌入式软件的开发中。利用该集成,架构师和测试人员可以深入了解开发的质量并跟踪质量改进,直到达到期望的水平。
此模型中的分数是基于与广泛 SIG 软件分析数据库中其他系统的比较得出的,该数据库包含 20 年来收集的软件质量测量结果。SIG 的质量测量结果不仅可以对系统的软件质量进行评分,还可以告诉您该软件与市场上其他系统相比的表现情况,这是一种竞争优势。IT 行业在不断地发展和提升,这正是 SIG 每年都要对模型进行重新校准的原因。质量阈值会根据实际行业平均值来定义,因此具有更高的相关性,也更客观。
专注于产品功能和产品质量
客户和供应商经常从纯粹的功能角度评估嵌入式软件。这意味着他们关注的是该软件能否按照预期工作。但是,这种方法仅涵盖成功项目的诸多方面之一。软件的设计和构建方式同样重要。相比之下,硬件组件在投入使用之前会经过检查和认证。嵌入式软件为何要被差别对待?通过衡量嵌入式软件的技术质量,您可以及早识别风险并设法缓解。这些风险包括但不限于安全漏洞、项目延期以及长期维护问题。
测量软件质量始于 ISO/IEC 25010 标准及其实现。此软件质量国际标准也适用于嵌入式软件。该标准定义了软件质量中影响软件长期可维护性的核心方面。使用国际标准的优点是可根据明确定义的标准化框架评估任何编程语言。该标准还能确保以客观且可重复的方式分析技术代码质量。因此,ISO/IEC 25010 标准远远超出了其他标准,后者要么关注文档和流程而非技术质量,要么不会评估架构性的质量指标。
在通过 Sigrid for Capital Software Designer 使用 ISO/IEC25010 标准来衡量软件代码质量之后,需要提高所分析系统的质量。系统提供了快速的迭代过程,让您能够从一开始就构建高质量的软件。它仅就真正需要关注的领域提供有关在哪里改进代码的非常具体的建议。这意味着无需查看一长串的非优先违规事件。
Sigrid for Capital Software Designer 的集成将通过以下
方式帮助开发人员和架构师实现高质量的代码:
降低代码复杂性
如果能减少代码的复杂性,您的代码将更易于分析、修改和测试。您可以通过保持基本单元(函数)尽量简短,并限制每个函数包含的逻辑量来降低其复杂性。
避免代码重复
复制粘贴代码的效率低下且容易出错,并且经常导致需要进行后期调整。此外,复制还会增加源代码的总量,这对系统的可维护性产生了进一步的负面影响。通过编写可重复使用的通用代码可以避免重复。
指导
Siemens 和 Software Improvement Group 提供业内最佳的软件和指南,帮助控制和改善 Capital Software Designer 所开发软件的架构质量、可维护性和安全性。
在 SIG 的《构建可维护的软件》一书中,Software Improvement Group 的顾问讨论了开发人员可直接应用的有关提高软件质量的 10 条规则。在《组建软件团队》中,SIG 顾问为高效团队的创建提供了指导:
“有关正确制定开发流程的十条最佳实践,以便开发出始终如一的高质量软件。我们的最佳实践不只是为开发团队指明正确的方向。这些最佳实践还附带一系列指标,可帮助团队一致地执行和监视。”
…………未完待续…………