国产汽车研发管理工具的崛起
汽车研发工具链的定义在整车和零部件研发过程中,为提高研发、管理效率的软件工具,包括但不限于需求管理、项目管理、架构设计与MBD、代码仓库与CICD、静态代码扫描、测试等。不过由于架构设计与MBD,目前在国内鲜有可以替代的工具,因此这篇文章不涉及这个部分(如果MBD有正国产厂商奋起直追,而笔者漏掉了,欢迎读者补充)。
汽车研发工具链的国产化替代方案
需求管理
需求管理包含了需求获取、需求分解、基线管理、变更管理、追溯性管理、覆盖度展示、需求合规性等。在需求管理领域,2021年之前,国内市场几乎完全由海外品牌占据,如德国西门子polarion、美国IBM doors等。
2021年之后,一些国产工具在这个领域已经具备了一定的竞争力。以云体科技的MappingSpace为例,不同于以往这个领域内的其他工具,都是从管理角度进行出发,MappingSpace基于对人脑思维方式的思考,对工具进行了大胆创新。
最直观的感受是在这个工具里大量使用了思维导图。以往的需求编写,要么是一篇文档,要么是一个列表,但MappingSpace把这两者结合了起来,并且还在此的基础上做了大量改造。比如说列表式的需求,优点是符合习惯了excel或者jira这类用户的习惯,但缺点是需求的联系不够清晰,比如说一个月前写了5条车窗相关的需求,今天又写了3条,这几条需求在表格中的位置差了十万八千里,很难联系起来,甚至前后写的需求有矛盾也看不出来。但在MappingSpace里面,这8条需求都在一个思维导图里,后面3条需求和前面5条需求都是按照思考的逻辑顺序组织的,这就轻松解决了前后需求矛盾或者不一致的问题。
除了需求的思维导图化之外,MappingSpace还有一个很大的优点就是效率高。由于总是能同时看到多条需求在一个思维导图页面里,因此对于需求的操作,都是通过非常简单的框选+批量操作实现的,这和以往一条条去修改需求的体验大不相同,以前改一条需求的时间,现在可以用于改N条需求,效率呈指数型上涨。不过,我最喜欢的还是MappingSpace里面对于追溯性的展示,是基于V模型或者W模型所要求的展示的,特别直观,还能轻松查看需求的覆盖度,输出覆盖度报表等等。
项目管理
自从2014年新势力进入造车,带来了一波Jira进入汽车行业的热潮。Jira所代表的敏捷开发理念,也逐渐渗透到汽车行业,带动了敏捷开发与ASPICE融合的广泛讨论。在2017年Ones发布和2020年PingCode发布之前,国内基于敏捷开发的项目管理工具,从产品层面,真正做到了被广泛认可,几乎没有。Ones和PingCode的出现,给国产敏捷项目管理软件的替代带来了契机。
以Ones为例,自2017年发布以来,Ones已完成了多轮亿元融资,拥有比较强大的实力能够在中国市场上与Jira一较高下,事实上,他们也确实在金融、互联网、汽车领域被广泛用于替换Jira,它原生提供敏捷、瀑布等多种研发管理模式,满足不同规模企业管理需求。他们的发展路径也和Jira颇有一些相似,Ones本身,聚焦在100人以上的研发团队的管理,通过收购Tower,补齐了几十人研发团队对管理的需求。通过收购为知笔记,Ones又在个人笔记与企业知识库领域,快速获得技术补充与广大用户,这些用户在为知笔记上的使用经验,都快速转化为Ones wiki上实实在在的能力,作为用户,我可以明显感受到Ones wiki模块能力上的飞速提升。收购思否社区,则给中文开发者提供了一个可以更加广泛讨论的技术社区平台。
初次使用Ones,一个最明显的感觉就是,相比于Jira复杂且层层关联的项目配置,Ones的项目配置要简单许多,对于团队来说,更容易开箱即用。原生内置的测试模块,相比于Jira中的第三方测试插件,使用起来更为顺畅,比如不像在Jira的zephyr插件里一样,无需去理解复杂的test cycle、test plan的区别一样,Ones的测试部分,更加符合国内用户的使用特点。我们团队最初在切换Jira时,还有一个比较重要的原因是考虑到价格,因为当时Jira正面临停服server版本,导致不得不切换到按年订阅的DC版本上去,使用成本一下子提升了很多。
代码仓库与CICD
代码仓库显然是软件开发中最基础的工具了。在代码数量没有那么庞大、不需要频繁变更、多人协同开发之前,有不少企业使用SVN类的工具,不过随着代码数量的指数级增长,对于多人协同开发的要求越来越高,代码提交需要和CICD联动,以及越来越多的互联网从业者进入汽车行业,都促进了汽车行业越来越多地使用Git. 虽然都是版本管理系统,但Git与SVN存在如下区别:
[*]1 Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
[*]2 Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
[*]3 Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
[*]4 Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
[*]5 Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
国产代码仓库,可以分为两类。一类是以Gitee和极狐Gitlab为代表的“纯代码仓库”工具,之所以这么称呼,因为最为核心、最为人所知的是代码仓库(当然目前的功能覆盖也越来越广)。Gitee是开源中国社区团队旗下的代码托管平台,功能最为接近微软旗下的Github. 随着Github封禁俄罗斯和伊朗的开发者账户,目前有许多国内的开源项目,也会同步上传到Gitee. 而极狐Gitlab可以认为是一家国内可控的公司,拥有Gitlab不可撤掉的全部代码授权,以及基于国内生态的各种二次开发,比如针对微信、钉钉、飞书的适配等等。
另一类则是以简单云ezOne.work为代表的一站式DevOps平台,这些团队的诞生与中国的互联网进程分不开。在BAT崛起的时代,国内尚缺乏足够优秀的商业化软件,既承载了现代软件工程方法,支撑互联网业务急速迭代的业务需求,又能支撑巨头企业数万工程师超大规模协同的体量,所以BAT各家都纷纷组建自己的研发效能团队,建设自己的研发平台。而且在彼时,也只有这些巨头企业有这个技术实力、资源能够建设这些技术门槛较高的基础软件工程平台。发展到目前,国内的软件工程工具和这些科技巨头都有着一定的渊源,有些本身就是这些巨头公司的内部产品对外进行商业化输出(例如BAT自身的DevOps商业化产品),有些则就是原班团队创业成立专业公司(例如简单云ezOne.work),有些则是被BAT收购并加以消化改造的产品(例如Coding.net),都有着浓厚的互联网基因。
静态代码扫描
随着汽车里面的代码量显著增加,静态代码扫描功能也越来越受重视。在汽车领域,Coverity、QAC、Polyspace作为传统的静态代码扫描工具,目前也开始越来越多面对国产工具的挑战,如蜚语科技的Corax或者奇安信代码卫士等。
在实际测试中,我们主要集中在C和Java这两个语言上。扫描准确率和误报率这两个指标,对于静态扫描工具尤为重要,毕竟谁都不想查了半天,发现代码其实没问题,而是工具报错了。蜚语Corax在这两种语言的扫描准确率和误报率上表现非常优异,与Coverity不相上下。尤其是其漏洞展示功能附有相应的说明文字和跳转交互操作,是我们迄今为止体验过的易用性最高的xAST工具。此外,Corax是国内首家开源SAST的厂商,其完全自研的分析引擎让我们能够自定义规则,实现内部特定规则集的应用。
特别值得一提的是,Corax在AI辅助代码方面也已经推出了一些功能模块。其AI功能甚至可以私有化部署在我们的内网环境中,这确保了我们的核心代码资产不会外流的同时,AI能帮助我们判定误报,并生成可用的缺陷修复方案,大大提高了内部人员的工作效率。
总体感觉,国外工具虽然起步较早,产品成熟度和国际认可度高,但价格昂贵,且主要通过代理商提供支持,难以做到深度服务,而且部分产品不支持中文。相比之下,国产工具反馈支持更加及时,产品设计也更符合国人的使用习惯,并且在某些方面已经超越了国外产品。
测试
根据测试类型不同,大体可以分为单元测试、集成测试和功能测试。而根据软件工具在测试过程中所起的作用,又可以分为测试用例生成工具、测试执行工具、覆盖度分析工具等。国外工具,如Tessy, 既可用于辅助单元测试、集成测试用例生成,又可用于执行测试用例,生成测试用例结果等。
国内测试工具厂商如星云测试,通过在客户本地对源代码进行扫码的方式完成自动插桩和测试用例生成,在测试用例执行过程中,实现测试用例与代码的一一追溯,从而能大幅缩小开发工程师寻找问题代码的时间,提高解bug效率。除此之外,通过统计代码的测试用例覆盖率,指导测试工程师进一步完善和提高测试用例覆盖率。星云测试的产品在多个重大项目中得到应用,例如应用于北斗导航、天宫二号、六大军中、华为汽车、5G基站等核心项目,确保了系统的可靠性与安全性,替代了国外竞争对手的产品,并表现出优越的性能。
(以上信息搜集并不完全,对于各家产品的概括也不一定精准。不过有一点可以肯定的是,国产工具厂商,正在总结前人经验的基础上,使用更新的技术手段和更新进的生产力,快速推出适合中国市场的解决方案。也欢迎更多的国产厂商投稿,通过这个平台,向行业推荐创新的解决方案。)
/ END /
(内容来源:微信公众号“汽车电子与软件”,2024.8.30)
页:
[1]