适用于芯片行业的开发及管理工具:版本控制、持续集成、代码分析及项目管理工具介绍

3月28日-29日,2024国际集成电路展览会暨研讨会(IIC Shanghai)在上海成功举行。此次盛会汇聚了集成电路产业的众多领军企业,共同探寻和把握集成电路产业的发展脉络。

龙智携芯片研发及管理解决方案亮相展会,展示如何通过集成项目管理-Jira、知识库管理-Confluence、需求管理-Jama、版本控制-Helix Core、静态代码分析-Helix QAC/Klocwork等全球领先工具,及全面专业的支持服务,助力芯片行业客户加速芯片开发与管理。

展会现场,龙智技术工程师巫晓光发表了“数智赋能,加速芯片开发及产品上市”的主题演讲,深入剖析了芯片开发过程中的挑战,分享如何选择并有效利用好的工具,赋能芯片开发和管理,推动企业高效发展。
在这里插入图片描述

以下为演讲内容回顾(有删改润色):
大家好,我是龙智的技术工程师巫晓光,非常荣幸有机会和大家一起分享我在芯片开发当中的一些心得和体会。

首先,简单介绍一下我们公司。龙智是一家专注于DevSecOps领域的服务提供商,已在该领域深耕十多年,致力于帮助企业实现软件开发运营一体化。已先后为国内外1000多家的企业提供了咨询、培训、实施、运维及二次开发等服务,帮助客户更科学、安全、高效地管理软件开发,更好、更快地交付软件产品。

众所周知,芯片行业作为典型的资金与知识密集型产业,投资规模巨大,且市场竞争异常激烈。在此背景之下,企业的生产效率就显得尤为重要。正所谓“工欲善其事,必先利其器”,优质的工具能够显著提升企业的生产效率。我今天的演讲内容也将主要聚焦于芯片开发过程中,如何选择并有效利用这些优质工具,从而赋能芯片开发和管理。

版本控制——强大的版本控制工具:Perforce Helix Core

说到版本控制工具,大家应该非常熟悉,在市面上也有一些开源、免费的版本工具,比如Git、SVN。当企业规模和数据体量比较小,业务也相对单一时,开源的版本管理工具基本能够满足企业的需要。但随着企业规模的扩大及数据量的增长,业务也会变得更加复杂,开源的版本管理工具就会面临很多挑战。

VCS面临的挑战
首先,版本分支的管理难度会增加,这一点在芯片开发行业中非常突出。我们知道,一个Fullchip包括很多的子系统,每个子系统由不同的IP组成,每个IP又会包括不同的模块,每个模块都有自己的分支。如此一来,分支管理难度就会变得非常复杂。分支多了以后,分支之间的合并也会是一个问题。我们知道,一些开源版本管理工具的合并功能相对较弱,在合并过程中经常会引入一些不必要的冲突,需要耗费很多的人力、物力去解决。

第二个挑战,来自于海量数据。在芯片开发过程中,虽然前端开发的文件体积相对较小,但综合和后端却会产生大量的大文件,这些大文件同样需要进行版本管理。当单个文件的大小超过10G时,版本控制系统的提交速度会显著下降,甚至导致提交失败,这严重影响了开发效率。此外,开源管理工具的单个实例是无法支撑大量数据的,一些客户到后期会发现,数据已经达到几百TB的级别,不得不将这些数据分散到各个子系统和各个实例中,这无疑会给后期的维护和追溯带来不必要的麻烦。

第三个挑战来自于跨地域协作。芯片企业的规模从几十人到上万人不等,员工分布广泛,可能遍布全国甚至全球的各个研发中心。这种分散的人员分布,也要求版本管理工具有灵活的部署方式,以支撑跨地域团队协作。

第四个挑战来自于安全审计的需求。在芯片开发过程中,由于涉及专利、知识产权和商业机密等敏感信息,文件的安全性和权限控制尤为重要。此外,审计需求也要求版本管理工具能够提供完备的日志记录,以便后期进行追踪和追溯。

然而,随着企业面临的安全和审计问题日益增多,开源版本管理工具的局限性也逐渐暴露出来。这些工具往往无法满足企业对严格权限控制和完备日志的需求,导致企业的生产效率下降,管理成本上升。虽然企业在初期可能在版本控制工具上节约了开支,但长期来看,这种选择实际上给企业带来了巨大的隐性成本。因此,企业需要寻求更加高速、安全、强大的版本控制工具。

强大的版本管理工具是研发流程的核心
强大的版本管理工具是研发流程的核心。为什么这样说?我们知道,企业的一些核心资产包括设计资料、代码、配置项、生成物(制品)等,最终都会转化为数字资产,存储在版本控制工具中,而所有的研发行为都是围绕数字资产展开的。所以使用强大的版本控制工具,可以实现在单一平台上,安全、高速地管理企业的所有数字资产。

Perforce Helix Core正是这样一款强大的版本管理工具,它具备诸多功能特点,能够为企业提供全面的版本控制解决方案。

强大的版本控制工具——Perforce Helix Core
在这里插入图片描述

首先,Perforce Helix Core具有良好的伸缩性。当企业规模比较小,只有几十个用户时,使用Helix Core非常灵活。当企业发展到几万名用户,数据增长到数百个GB时,Helix Core也能够为其提供良好的支撑。

其次,Perforce Helix Core部署非常灵活,具有成熟的分布式的部署能力,能够支撑全球团队高效协作。它还能够支撑每天数以千计的流水线的构建。很多企业前台会用到Git,Perforce Helix Core可以与Git兼容,并作为后台的一个强大支撑。此外,Helix Core灾备方案也非常容易,具备统一的企业级的灾备计划。

另外,Helix Core的权限控制也非常灵活,其权限控制力度可以达到文件级别。日志也非常完备,以便于后期审计追踪,比如谁进行了修改、访问,以及在什么时间进行的修改或访问,都可以进行完备记录。

同时,Helix Core的界面也非常友好,可与各个类型的客户端兼容,同时与芯片行业的主流EDA工具也能够良好集成。
在这里插入图片描述

持续集成——企业级Jenkins:CloudBees CI

说到CI/CD工具,大家很自然的会想到Jenkins。不可否认的是,Jenkins非常强大。据报告统计,全球超过70%的开发者在使用Jenkins,而且这个数量还在持续增长。Jenkins已有超过十年的发展,成熟而稳定。其庞大的生态系统,有超过1,800个插件可满足各种各样的功能扩展。Jenkins还有出色的集成能力,几乎可以与任何平台、任何软件集成。

Jenkins面临的挑战
既然Jenkins如此强大,是不是使用Jenkins就可以高枕无忧了?很遗憾,答案是否定的。在我们日常的咨询服务中,客户经常反映使用Jenkins会遇到各种各样的问题。具体有哪些问题呢?首先,我们一起来看下面这张图:

在这里插入图片描述

该图是一个非常典型的Jenkins的部署场景。从图中可以看到这家公司有很多部门,每个部门都有自己的Jenkins实例,这些实例由部门的DevOps团队或者公司统一的DevOps团队来维护。我们把这种部署方式称为“Jenkins孤岛”。“孤岛”的形容非常贴切,因为从图上可以看到,这些Jenkins实例相互隔离,之间没有任何联系,各自的实例都是按照各自的规则和实践在运行,使得资源和经验无法共享。

这样一种部署方式,会给管理带来哪些问题呢?

首先,难以集中高效管理多个Jenkins实例。我们知道,Jenkins实例的维护其实是非常繁琐的,涉及到插件的安装、升级、配置以及权限的设置、脚本的编写等等。若公司有100个Jenkins实例,就需要在100个Jenkins实例上进行重复配置,这是非常耗时耗力的。另外,从全局运维的角度来看,也难以真正了解到每一个Jenkins实例的运行状态。

从图上可以看出,Agent属于具体的Jenkins实例,这又带来一个问题——资源分配的不平衡。当Agent属于特定的Jenkins实例时,不同部门或项目之间的业务繁忙程度差异会导致资源利用的不均衡,可能会出现闲置的Agent造成资源浪费,繁忙的部门则可能因资源不足而影响工作效率,这种就是Jenkins孤岛在管理上的问题。很多企业为了解决这一问题,倾向于减少Jenkins实例的数量,将所有内容部署在少数的Jenkins实例上,不过这又会带来另外一个问题——巨型Jenkins。

下面我们再来看一下,这种巨型Jenkins所带来的问题。

在这里插入图片描述

上图是一个典型的Jenkins Master的分布式架构,可以看到,中间的Jenkins Master作为中枢接收各种触发器,比如代码管理工具、流程管理工具触发的任务命令,当Master Jenkins实例接收到这些任务时,会将任务分派给各个Slave节点去具体执行。对于此种部署架构,我们会发现,当把更多内容集中到某个单一的Jenkins实例时,Master Jenkins实例就会成为一个性能瓶颈。因为开源的Jenkins是不支持高可用的,无法将负载分摊到其他的Jenkins实例上,这样又会导致一些后果。

首先,会导致服务器响应减缓,任务执行时间延长,甚至部分任务因无法及时响应而停滞在队列中。随着负载的增加,Master Jenkins实例可能面临宕机风险,引发单点故障,进而导致整个系统崩溃,严重影响工作进程。

此外,除了性能问题,插件之间的兼容性也是一大挑战。当多个项目和内容集中部署在少数Jenkins实例上时,需要安装多种插件以满足不同需求。然而,插件之间以及插件与Jenkins本身之间可能存在兼容性问题。比如在处理安全漏洞或升级Jenkins时,需要仔细选择和调整插件版本,以确保系统稳定性。若处理不当,可能导致系统崩溃,造成不可预测的后果。

当遇到这些问题时,我们推荐客户使用CloudBees CI。

企业级Jenkins — CloudBees CI
国内客户对于CloudBees CI可能比较陌生,其实CloudBees CI是Jenkins商业版,Cloudbees是Jenkins代码的最大贡献者。接下来,我们一起来了解企业级Jenkins—— CloudBees CI在开源的Jenkins上做了怎样的改良。
在这里插入图片描述

上图中可以看到,在开源的Jenkins架构之上, 我们增加了一个Operations Center来集中管理所有的Jenkins实例。在此架构下,团队可以自主控制Jenkins实例,同时这些实例也受到Operations Center的集中管理。

全面运维方面,团队也可以通过Operations Center清楚了解到每一个Jenkins实例的运行状态。另外,Agent不再属于某一个具体的Jenkins实例,而是属于整个集群,即所有Jenkins实例之间可以共享一个Agent。

关于插件的兼容性问题,CloudBees也可以妥善解决。在升级CloudBees CI时,我们会将常用且经过兼容性验证的几百个插件,打包至CloudBees CI安装包,一旦CloudBees CI升级,打包的插件也会自动升级。
在这里插入图片描述

上图是CloudBees CI的具体界面。界面中间的Operations Center提供一个统一视图,便于用户查看各个Jenkins实例的运行状态,也可以通过Operations Center轻松创建Jenkins实例。此外,可以通过Operations Center进行统一集中管理,比如统一升级Jenkins实例或插件、统一备份、统一重启等,从而简化管理工作,提升管理效率。

在性能方面,CloudBees CI也提供了高可用的解决方案。

在这里插入图片描述

如上图所示,可以在Jenkins实例前面搭建负载均衡器,后端共享其文件系统以优化资源利用。有了高可用方案,可为Jenkins配置多个节点,有效防止单点故障。当负载过大时,可以将负载均衡地分配至多个节点,从而保证性能。此外,CloudBees CI也结合了K8s的特性,通过滚动升级的方式来实现零停机要求。节点的弹性伸缩也非常方便,可通过监控CPU的使用情况来按需创建,比如CPU达到80%时,系统将自动创建新节点。

质量与合规——静态代码分析工具:Perforce Helix QAC & Klocwork

说到质量与合规,我们都知道,代码质量在芯片行业中尤为关键,特别是芯片广泛应用于航天航空、医疗等高精度领域,而这些行业对代码质量的要求极高。不过,经验再成熟的软件开发人员也难以完全杜绝Bug的产生,对此,我们可以通过调整发现Bug的时机和方法来减少Bug,以更好地确保代码质量。
在这里插入图片描述

上图显示的是代码质量与企业成本之间的关系。横坐标代表软件的各个生命周期,比如代码阶段、单元测试阶段、功能测试阶段、系统集成及发布阶段。其中,蓝色曲线表示85%的Bug在开发阶段产生;橙色曲线表示发现Bug的时机集中在测试阶段,开发阶段基本没有发现Bug;红色曲线代表修复Bug的成本,可以看出,成本随着生命周期的推进在不断增加。

这并不难理解,因为开发阶段的环境相对简单,一旦出现Bug,修复也相对容易。到了测试阶段,不仅涉及测试人员准备测试用例,也涉及开发人员的参与和沟通,成本会显著增加。到了后期的系统集成和发布阶段,成本更是呈指数级增长。因此将Bug发现时机左移至开发阶段就显得尤为重要了。

尽管很多企业已经尝试这样做,但大多采用人工审核的方式,具有明显的局限性。这种方式高度依赖个人经验,若没有严格要求,可能更多关注命名不规范或大小写的问题。并且,代码数量通常很庞大,有些软件甚至达到几百万行的级别,人工审核是难以完全覆盖和应对的。因此,我们推荐引入静态代码扫描工具,以更全面、高效地检测潜在Bug。

简单介绍一下静态扫描工具的原理,其原理是利用标准、权威的一些代码标准和规则,去扫描代码,及时帮助发现潜在问题。使用静态扫描工具可以有效地在代码阶段发现代码质量问题。

一款优质的静态扫描工具,需具有误报率及漏报率低、检查规则全面、扫描速度快、对开发人员友好、易与CI工具集成等特点。也需满足合规标准与要求,常用的一些代码标准,比如MISRA C, C++, AUTOSAR C++、CERT、CWE等,静态代码扫描工具都能够覆盖。对于汽车、航空等行业来说,还需要满足各种行业合规标准,如:

在这里插入图片描述

这里为客户分享两款静态代码扫描工具——Perforce Helix QAC和Klocwork。该两款工具在满足上述要求外,各有其特点与优势,能够帮助开发人员更好地进行代码扫描。
在这里插入图片描述

项目管理——项目管理工具Jira:为芯片开发提供全面支持

最后一部分是关于项目管理。对于芯片行业来说,项目管理面临着很多挑战:

多个开发中心需要跨地域协作;
职能部门及业务繁多,导致管理难度增大;
”流程管理为主,人治为辅”的管理方式转变迫在眉睫为了响应集团的数字化转型,研发过程体系也要数字化(ALM系统),包括产品管理、项目管理、测试管理、效能管理等功能模块;
工具链过时、离散,无法支持透明、高效的项目管理。

客户需要怎样的项目管理平台?我们认为,该管理平台应具备如下特点:
提升项目透明度、项目过程质量、多地协同办公工作效率;
帮助实现项目全生命周期精细化管理;
融入业界优秀实践(IPD、敏捷等),提升企业竞争力;
从多维度对研发工作进行度量,为管理层决策和过程改进提供数据支撑;
支持处理大量数据;
支持不同工具/系统数据互联。

Jira作为功能强大的项目管理工具,为芯片开发提供全面的支持
对此,我们为客户推荐的是Atlassian旗下的Jira产品。作为一款功能强大的项目管理工具,Jira可以为芯片开发提供全面支持,覆盖需求管理、缺陷管理、实时报告、集成能力以及安全高可用各个方面,帮助芯片团队更高效、更安全地开发。
在这里插入图片描述

- 需求管理
芯片开发需求管理面临着复杂性、变更性、兼容性等各方面的挑战。解决这些挑战,需要团队具有高度的协作与沟通能力。
在这里插入图片描述

Jira提供了灵活的任务跟踪功能,团队成员可以根据项目需求创建自定义的需求任务类型、工作流程和字段,确保需求任务管理与团队的实际需求匹配。无论是软件开发、硬件设计还是测试阶段,Jira都能轻松适应多样化的项目要求。

- 缺陷管理
在芯片开发中,缺陷可能会导致严重的后果。Jira提供了灵活的缺陷管理功能,允许团队根据项目的需要创建自定义的缺陷类型、优先级和状态。这使得团队可以根据具体情况来跟踪和管理缺陷,以便更好地适应复杂多变的嵌入式开发项目。
在这里插入图片描述

- 实时报告
芯片开发项目通常涉及多个子系统、模块和团队的协同工作,使得项目结构和进度变得复杂,需要跨多个层面进行报告和跟踪。Jira提供了丰富的项目报告和监控功能,团队可以实时了解项目进展和工作绩效,及时调整策略并解决问题。
在这里插入图片描述

- 与其他工具集成
Jira具有开放的生态系统,可以轻松与其他工具集成,比如版本控制系统、测试管理工具、研发工具等。使得团队可以在Jira中获取到更全面的项目数据,帮助更好地了解项目进度和整体状态。
在这里插入图片描述

- 安全和高可用
Jira的安全功能保障用户数据的安全性和访问权限控制。企业可以采取必要的措施,确保Jira系统本身以及其中存储的敏感信息得到妥善保护。

Jira支持多节点集群部署,适用于大型企业或组织,可以处理数千甚至数万用户的同时访问,这对于大规模的企业或组织来说特别重要,可以帮助应对用户数增加及数据量增大的挑战。

在这里插入图片描述

了解更多龙智芯片研发及管理解决方案的产品信息和实践案例,请联系DevSecOps解决方案提供商——龙智:
官网:www.shdsd.com
电话:400-666-7732
邮箱:marketing@shdsd.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/4409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是外汇杠杆交易?

外汇杠杆交易是目前的外汇交易市场中,投资者进行外汇交易的重要方式,通过这样的交易方式,投资者就有机会进行以小搏大的交易,他们的交易就有可能会更成功,因此,投资者应该对这样的交易方式进行了解&#xf…

springboot 集成 activemq

文章目录 一:说明二:e-car项目配置1 引入activemq依赖2 application启动类配置消息监听3 application.yml配置4 MQConfig.java 配置类5 ecar 项目中的监听6 junit 发送消息 三:tcm-chatgpt项目配置5 MQListener.java 监听消息 三 测试启动act…

RV1126添加gc2093摄像头

前言 上篇讲的是双目摄像头GC2053摄像头进行拉流,本篇介绍下如何适配添加RGB Sensor GC2093并且可以在windows上成功拉取视频流 平台背景 开发板:易百纳开发板 cpu: rv1126 sensor: gc2093 200w像素 2lanes type:MIPI kernel: 4.19.111 sys…

K8S深度解析:从入门到精通的全方位指南

目录 一、Kubernetes简介 二、Kubernetes的核心作用 三、Kubernetes架构图例 四、Kubernetes核心概念 Harbor仓库概述: Master----管理组件: API Server(集群之心): Scheduler(调度大师&…

基于Transformer深度学习的翻译模型(英->中)源码系统

第一步:Transformer介绍 Transformer是一种基于注意力机制的序列到序列模型,它在机器翻译任务中表现出色并逐渐成为自然语言处理领域的主流模型。Transformer模型的核心思想是使用自注意力机制(self-attention)来捕捉输入序列中各…

Redis系列:内存淘汰策略

1 前言 通过前面的一些文章我们知道,Redis的各项能力是基于内存实现的,相对其他的持久化存储(如MySQL、File等,数据持久化在磁盘上),性能会高很多,这也是高速缓存的一个优势。 但是问题来了&am…

如果通过Glide 设置图片圆角

要给图片设置一个圆角,通常方法是在ImageView 标签外添加一个CardView 标签,然后设置圆角值,但是今天遇到一个问题就是 RecyclerView Item 中这样操作的话会遇到这样的一个报错: Cannot call this method while RecyclerView is computing a layout or scrolling androidx.rec…

RLC防孤岛负载测试,你了解多少?

RLC防孤岛负载测试是一种用于检测并防止电力系统中出现孤岛现象的测试方法。孤岛现象是指在电网故障或停电的情况下,部分电网与主电网断开连接,形成一个独立的、不受控制的电力系统。这种情况下,如果不及时切断与孤岛的连接,可能会…

HarmonyOS 应用开发——入门

首先当然是华为的官方文档了,要认真学习: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-overview-0000001478061421-V2 不想花时间看,可以看我下面总结的干货,哈哈 第一个问题:stage架构和fa架构的区…

GPU服务器和普通服务器有何区别?

众所周知,服务器是网络中的重要设备,要接受少至几十人、多至成千上万人的访问,因此对服务器具有大数据量的快速吞吐、超强的稳定性、长时间运行等严格要求。 GPU服务器和普通服务器的主要区别在于硬件配置和适用场景,特别是处理器…

应急行业的智能安全帽(高端)

前面介绍了低端、中端安全帽,接着再讲讲高端安全帽。做高端安全帽的企业非常少,估计一只手都数的出来。确实也和智能安全帽这个领域体量有关系,并且他有一个新的“劲敌”——智能眼镜从其他领域瓜分原属于他的市场,这些都是题外话…

Cadence OrCAD学习笔记(1)OrCAD入门介绍

最近换份工作主要用到Cadence,之前都是用AD居多,所以现在也开始记录下Cadence学习过程,方便后面复习。 参考教程: OrCAD视频教程第1期:OrCAD入门介绍_哔哩哔哩_bilibili 本期主要介绍OrCAD的主要部件 其中用的较多的…

【软件开发规范篇】Git分支使用规范

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

软考之零碎片段记录(二十七)+复习巩固(十三、十四)

学习 1. 案例题 涉及到更新的。肯能会是数据流的终点E, P, D 数据流转。可能是 P->EP->D(数据更新)P->P(信息处理)D->P(提取数据信息) 2. 案例2 补充关系图时会提示不增加新的实体。则增加关联关系 3. 案例3 用例图 extend用于拓展,当一个用例…

磁盘未格式化,数据恢复大揭秘

一、磁盘未格式化现象概述 在日常使用电脑的过程中,我们有时会遇到磁盘未格式化的提示,这意味着我们的磁盘突然间变得不可识别,所有的数据和文件都似乎消失了。这种情况常常发生在外接硬盘、U盘等存储设备上,给我们的工作和生活带…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库,以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫,又称网络爬虫或网页爬虫,是一种用来自…

RAG 的是与非、Rewrite 和 Rerank

有时候,我觉得人类还真是种擅长画地为牢的动物,因为突然发现,当人们以文化/理念的名义形成团体/圈子的时候,其结局都不可避免地走向了筛选和区分的道路。或许,大家都不约而同地笃信,在成年人的世界里,那条不成文的社交潜规则——“只筛选不教育,只选择不改变”。与千百…

16.Blender 基础渲染工作流程及安装ACES

安装插件和菜单栏设置 在菜单栏的编辑里打开偏好设置 里面的插件界面 搜索node 给第三个打勾 点击安装,导入cat插件 安装完后,一定要打勾,选择上cat插件 这样N窗口才会显示MMD选项 导入场景 点击打开 把输出模式的帧率改为30fps 按…

Java学习1:java入门

java入门 1.介绍Java java——sun公司——被甲骨文收购 一开始叫Oak,后期改名为java; java之父詹姆斯高斯林 企业级应用开发 JavaSE JavaEE JavaME 高级编程语言 2.搭建开发环境 JDK8,JDK11,JDK17————>LTS长期支持版 ps:在…

效率工具RunFlow完全手册之局域网传输篇

本篇将向您介绍如何使用RunFlow在局域网(又称内网)内传输文件,同步剪贴板,无论是家庭局域网还是办公室局域网,都能轻松搞定文件传输以及剪贴板同步,如果您还没有安装RunFlow,可点这里去下载。 为…