2023 ATC汽车电子与软件技术周已于8月18日在中国上海落下帷幕。展会现场,龙智技术支持部负责人、Atlassian认证专家叶燕秀与龙智技术工程师邱洁玉共同为观众带来了主题为“更好、更快、更安全:嵌入式开发中的最佳实践与工具链构建”的演讲,分享她们在嵌入式开发中的最佳实践和经验。
上一期,我们呈现了叶燕秀分享的如何精细化管理汽车嵌入式软件项目,点此回顾。
本期回顾将呈现龙智技术工程师邱洁玉的演讲部分,分享如何管理汽车软件开发中产生的庞大数字资产,以及汽车行业的代码合规实践。
以下是演讲视频:
演讲回顾 | 更好、更快、更安全:嵌入式开发中的最佳实践和工具链构建(2)
以下是演讲文字实录:
大家下午好,我是龙智技术工程师邱洁玉,很高兴在此与大家分享我在汽车嵌入式开发领域的经验与见解。
此次演讲分为两大部分,分别是数字资产管理与代码合规实践。
在汽车嵌入式开发领域,版本控制是一种常见且极其重要的软件工程实践。它能够帮助管理代码变更、追溯问题,以及促进团队协作。然而,随着项目规模和复杂度的增加,它也会面临到一些挑战。
-
第一个问题,版本、分支管理难度增加。当涉及到车型时,可能客户对每款车型都有独特的需求。这时,技术人员需要针对不同特性、不同车型来定制化相应的版本,创建出一些分支。技术人员需要确保每一个分支都能及时地合并到主干代码更新中,例如新增特性和修复问题,同时还需确保分支之间的隔离性。
-
第二个问题,海量数据分散在不同的地方,共享和使用困难。因为无法存储大数据量,或是根据部门实际情况数据会存在多个分散的版本控制系统。这些系统需要独立地管理和维护,团队和部门需要付出额外的努力来保障资源共享。比如在汽车嵌入式领域,很多代码需要进行复用,这些复用的代码存在于不同的项目、不同的服务器中。开发人员需要先找到对应的服务器,再开通各种服务器权限,整个流程非常繁琐。
-
第三个问题,需要高效的跨地域协作。团队成员分散在不同地区,难以面对面交流。如果版本控制系统无法保证开发工作的同步以及自身的稳定性,就会导致团队成员响应速度变慢,解决问题的时间变长,最终影响质量和交付。
-
另一个问题,安全及审计需求难以满足。在汽车嵌入系统中,可能涉及很多知识产权,像专利、商业机密等。针对这类敏感文件,需要灵活的分配权限,并且在需要的时候将权限收回。
-
还有,在有新增团队成员的情况下,或是现有的团队成员的角色变更时,能迅速顺利地调整和分配权限。这也是很多客户的共同诉求。
-
另外,审计日制对版本控制系统也非常重要。如果没有审计日制,就无法记录用户的活动,也就无法监控开发工作中的违规行为和异常情况。当真正出现安全事件时,追溯事件源头会变得非常困难。
在数字化时代,设计资料、代码、配置项生成物……这些都是数字资产。数字资产不仅是储存在电脑上的一个个文件,也是个人和团队的智慧结晶。它可能经过日日夜夜的精心设计,或是经历反复思考和验证。在这个研发流程中,版本控制软件一直处于核心位置。它管理着这些宝贵的资产,确保它们安全、有序。
那么,既然版本控制系统如此关键,我们必须要一款强壮的版本控制系统来提供服务。
强壮的版本控制系统需具备高性能,高性能体现在多个方面。
-
首先,能够同时支持上万名用户的使用,并处理数百TB级别的数据。
-
其次,具备出色的分布式部署能力,可随时根据需要在不同地区部署集群节点,以便异地用户访问。
-
此外,能支持每天数以千计的流水线构建,因为自动化构建是当前的主流方法之一。
-
兼容性也是强壮版本控制系统的特点之一,它可以同时兼容不同用户的偏好,例如像Git这样的常见工具,在开发领域有广泛的应用。这种兼容性使开发者能够继续使用他们熟悉的Git工具,同时享受企业级版本控制系统的强大功能。
-
另一个特点是安全性,强壮的版本控制系统确保数据的安全性,它是唯一可信的数据源,并具有多种方式进行用户认证的能力。它还提供了灵活而强大的授权控制,可以精细到文件级别,根据用户组、角色和访问IP实现授权控制。此外,它还允许将权限授予非管理员用户,以协助管理权限。
-
审计日志也是关键特点,管理员可以利用审计日志跟踪文件的访问细节,了解哪个用户在什么时候对什么文件进行了什么操作。这对于管理数字资产的创建和维护非常重要。
-
最后,强壮的版本控制系统可以与当前领域中的常用工具(如Lapview和MatLab等)无缝集成,确保整个工作流程的顺畅。
在这里,和大家分享一款Perforce旗下的版本控制系统——Helix Core。作为一款企业级的版本控制系统,Helix Core具备可信数据源、高速存储的能力、强大的分支管理、高度的可伸缩性、企业级的安全性,并且能够与常用工具无缝集成等。它已为国内外许多汽车领域的企业提供了服务。
在芯片行业,经常会提到一个词“IP”,它指的是具有独立功能的电路模块设计。实际上,IP的概念可以更广泛地泛化,包括软件模块、硬件图纸和配置文件等。Perforce旗下的Methodics IPLM 是一款在IP层级进行数字资产管理的工具。这个工具构建在版本控制系统(Helix Core、Git、SVN等)之上。
Methodics IPLM可以使用独立的服务器来管理存储在不同版本控制系统上的资产,并且能够追踪IP版本的变更历史以及IP之间的关系。例如当前的IP被哪些项目所使用、每个IP包含了哪些子IP。
另外,仅用一条命令,IPLM就可以把包含很多IP的复杂项目加载到本地工作区。当数据量很大时,可以使用公用缓存技术,能够有效减少加载时间,节省本地的磁盘空间。
在汽车嵌入式的推进过程中,每个阶段都会产生很多的交付。例如图纸版本、软件版本、测试报告版本等,这些版本之间的关系需要额外记录。而IPLM可以将这些信息集中起来,明显展示它们之间的关系,并在需要时,通过一条命令将所有的IP统一加载到本地工作区。
Methodics IPLM的一些特点包括:
-
帮助团队追溯所有的IP和元数据
-
帮助企业建立一个通用的发布方法
-
管理所有设计的BoM
-
简化复杂IP体系结构的管理
-
支持与周边系统(例如Jira、EDA等)无缝集成
这张图展示了Methodics IPLM的可视化界面。展示了当前IP的属性以及发布版本。像这样的发布版本的背后,可能是多个文件的多次提交。例如当前提交了一次文件后,如果企业需要进行一次内部验证,我们就可以发布一次IP版本。
质量与合规
在汽车嵌入式开发领域,代码质量会直接影响到产品的性能和安全。一起来看下这张图,有85%的缺陷都是在开发阶段引入的。
如果通过传统的方式,我们会在测试阶段和发布阶段发现很多问题。红色的曲线表示,在开发阶段解决问题的代价很低,在测试阶段解决问题的成本成倍增加,到了发布阶段,成本已经呈指数级增长了。
因为开发阶段的代码量相对较少,复杂性也不高,定位问题和修复问题的成本都较低。到了开发的中期,解决问题可能涉及多个模块的更改,特别是到了发布阶段,解决问题的手段可能是紧急的软件更新或召回。所以,越早发现问题解决的代价就越低。
那么,为何不将发现问题的时机左移到开发阶段呢?在开发阶段,可以依靠开发人员的专业素养或评审发现问题。但在汽车嵌入式领域,可能涉及到很多项目或源代码,如果想要提高代码质量,就需要借助静态扫描工具。
好的静态扫描工具需具备以下特点:
-
误报率、漏报率低
-
检查规则全面
-
扫描速度快
-
对开发人员友好
-
易与CI工具集成
静态扫描工具不仅能提高代码质量,还可以帮助满足各种合规要求。汽车行业通常会要求企业满足各种合规性要求,常见的行业合规标准有ISO 26262和ISO 21434等。
可以通过代理标准来满足汽车合规标准。具体请看这张图:
其中,ISO 20202 要求低复杂度。静态扫描工具可通过圈复杂度或路径复杂度这两条指标,也可通过Misra质量标准,来满足低复杂度的行业标准要求。
通常,企业在进行合规认证时需要准备大量资料。大部分企业无法很好地掌握满足合规的方法。静态扫描工具提供了合规指导包,其中包含了工具本身的认证证书、工具覆盖率详情、生成报告的插件、产品的认证报告,以及行业标准和代码质量标准之间的关系。它能够有效减轻企业认证的工作量。
我在此分享两款Perforce旗下的静态扫描工具。它们不仅能够帮助提高代码质量,同时也能满足合规性要求。Helix QAC在C/C++静态代码分析领域有30多年的历史,符合功能安全标准(如ISO 26262),能够帮助您满足合规需求。它的代码标准覆盖率很高,并且准确率高、漏报率低。
Klocwork这款工具支持多种语言,包括C,C++,C#,Java, JavaScript, Python, Kotlin等。它本身通过多种行业标准,如ISO 26262等。它的特点是支持千万行代码的大型项目,界面友好、易于使用。这两款工具已被行业中多家客户所使用。
以上是我的分享,希望对大家有所帮助,谢谢!