1、潘瑞琪:华为软件工程专家潘瑞琪:华为软件工程专家柴锋:柴锋:Odd-e Odd-e 资深技术顾问资深技术顾问跨越软件设计与实现的鸿沟:跨越软件设计与实现的鸿沟:基于依赖关系的新视角基于依赖关系的新视角Regional Scrum Gathering 2024先思考一个问题先思考一个问题什么是依赖依赖?大规模软件开发的困境大规模软件开发的困境团队协作成本团队协作成本软件维护成本软件维护成本研发作业效率研发作业效率跨地域、跨团队、跨技术领域软件工程与流水线作业工具集成效率软件架构软件规模软件规模 跨团队、跨地域、跨技术领域 数千人到上万人的超大规模协作 产品的复杂,同一套源码要考虑以下场景运行在不
2、同的硬件架构上,硬件差异大 产品规格多,运行环境差异大 客户多,存在大量的定制化需求 长达10-15年的产品维护周期 维护周期内软件漏洞的检测和修复历史版本的还原和更新补丁的发布软件生命周期管理定制化需求研发模式问题问题1:单代码仓好?多代码仓:单代码仓好?多代码仓坏?坏?代码提交难度软件规模软件仓库数代码提交难度在软件仓数量一定的情况下在软件仓数量一定的情况下在代码规模一定的情况下在代码规模一定的情况下软件仓库数产品集成难度没有银弹没有银弹问题问题2:随着架构越来越复杂,怎样降本:随着架构越来越复杂,怎样降本增效?增效?总代码仓个数总代码仓个数1000+涉及组件涉及组件9000+总服务数总服
3、务数300+总发布包总发布包/镜像个数镜像个数600+涉及开发人员涉及开发人员1500+代码量代码量(主要语言)(主要语言)C+4800万Go2100万Java1200万其它其它260万总计总计8千千4百万百万一个典型的华为软件产品一个典型的华为软件产品这样一个产品内其中这样一个产品内其中一个平台框架对应的构建一个平台框架对应的构建视图长什么样视图长什么样只是构建视图的约15%该平台涉及260个代码仓,有300+流水线节点组成发布频繁,一周一个版本部分代码仓更新,人工找到受影响的任务部分代码仓更新,人工找到受影响的任务依赖发生变化,如何及时带来整系统更新依赖发生变化,如何及时带来整系统更新一次
4、完整发布7-8个小时给客户交付增量更新包问题问题3:软件供应链安全的威胁就在:软件供应链安全的威胁就在身边!身边!应用程序未修应用程序未修复的关键漏洞复的关键漏洞对直接依赖的安对直接依赖的安全有信心全有信心报告其报告其OSSOSS的安的安全性全性每个项目的平均依赖关系每个项目的平均依赖关系修复漏洞所需的修复漏洞所需的平均天数平均天数增加激励是改善增加激励是改善OSSOSS资源的首选方法资源的首选方法对其传递依赖的安全有信心对其传递依赖的安全有信心SCA SAST SCA SAST 是解决安全的是解决安全的TOPTOP制定了解决制定了解决OSSOSS问题的安全策略问题的安全策略寻找最佳实践以提寻
5、找最佳实践以提高其软件安全性高其软件安全性安全得分的平均增长安全得分的平均增长更智能的工具是改善供应更智能的工具是改善供应链安全的首选链安全的首选 代码安全性代码安全性:代码引入漏洞被利用 依赖性管理:依赖性管理:依赖多、难排查 更新和补丁管理:更新和补丁管理:修复已知漏洞 供应链攻击供应链攻击:植入恶意代码 合规性和标准:合规性和标准:安全标准和法规要求 透明度和可追溯性:透明度和可追溯性:来源安全问题问题4:怎样实现可复现、可:怎样实现可复现、可追溯的追溯的构建?构建?上游开源引入上游开源引入测试测试构建构建编码编码发布发布构建过程自动化过程过程可信可信构建环境封闭防篡改版本签名版本签名验
6、签发布签名验签发布件100%封闭自动化传递恶意软件扫描开源及第三方软件完整性校验构建元数据SBOM&日志哈希验签恶意软件扫描Committer审核来源清洁门禁检查开源软件来源清洁开源软件来源清洁构建源、过程、结果可信构建源、过程、结果可信、测试完整性测试完整性发布可信发布可信来源来源可信可信结果结果可信可信问题问题5:怎样监控软件设计与实现出现:怎样监控软件设计与实现出现差异?差异?实际实现的软件实际实现的软件设计中的软件设计中的软件对这些问题的总结和对这些问题的总结和思考思考问题的根源主要集中在三个:在规模软件研发领域下如何建精准的依赖关系复用:安全、可信的建跨编程语项之间的依赖协作:规模软