二十年前,我第一次写代码的时候,用记事本写的ASP程序,写完手工复制到IIS服务器上,然后检查下页面的基本功能,就算是测试通过了。
那个时候,业务简单,系统也简单,可以用这种手工作坊的方式来干,随着软件和互联网业的蓬勃发展,现在的系统动辄百万行千万行代码,需要成百上千人大规模协作,如果没有相应的配套工具来进行软件生命周期的全流程管理,把流程、需求、代码、测试等融为一体,软件开发将会是一团乱麻。
软件开发工具虽然也是一类软件,但是非常独特,因为它的用户群体不是普通消费者,而是程序员,程序员的工作就是开发软件,一个工具好不好用,能不能提高效率,他们非常清楚。
所以我们看到软件开发工具主要被国外公司占据,他们的软件业起步早,配套的开发工具相应也更成熟更完善。
不过,国内软件业经过几十年的发展,也追了上来,比如华为,它上世纪90年代就投入软件研发,历经嵌入式软件开发、企业化软件开发、服务化应用开发和云服务开发等多种不同研发形态,现在的代码已经累积到了1100亿行这样“可怕”的规模,这样的规模在国内恐怕是独一份,世界范围看也是站在前列。
这么多的代码,背后肯定是大量的产品和项目,它们如何管理?怎么做Build?怎么做测试?怎么做审查?华为在这方面有三十多年的积累,有大量经过实践验证的开发流程和反复打磨的开发工具。
云计算时代,能不能把这种研发能力给服务化了?能不能外溢到整个行业,让所有人都能受益,都能开发可靠性高,安全性强的高质量软件呢?
我最近看到华为云的CodeArts这个一站式软件开发平台,就明白华为已经在做这件事情了。
CodeArts是个好名字,Code表示代码,Art 是艺术,华为希望原本枯燥、流程化的开发工程能够变成焕发开发者激情与创造能力的过程,重塑程序员对开发的热情、梦想与追求,而不再是“码农”。
我先给大家简单介绍一下这个平台的功能。
01
开发软件的软件
CodeArts
1. CodeArts Req 让需求管理化繁为简
这是一款需求管理的软件,程序员都明白,需求搞不好,后面的设计、开发、测试都要翻车,返工成本极高,分析报告指出,需求管理不善导致项目失败的比率高达71%。
华为云CodeArts Req整合了华为多年需求管理的优秀实践,内置多种需求管理模板,对于大型企业和大规模团队,可以使用IPD项目模板;对于小型互联网公司,可以使用Scrum;对于个人/小型团队,可以使用轻量型看板,非常灵活。
CodeArts Req即让小颗粒的服务开发健步如飞,又能够在大规模协作和契约化交付的产品级需求管理中游刃有余可以。
截止到2022年,CodeArts Req已经高效支持华为13万研发人员的需求协作,月API调用量超过15亿次,累计管理5000多万需求,覆盖华为终端、网络、云计算、芯片、汽车等全业务场景。
2. CodeArts Repo 让代码稳定可靠,安全无忧
源代码是企业最宝贵的资产之一,华为云CodeArts Repo是基于Git的云端代码托管服务,旨在保护企业核心代码资产安全,提升企业研发质量和效率。
与其他代码库相比,CodeArts Repo特别强调安全,从不同层次,基于零信任思想进行防护,华为甚至成立“蓝军”部门,对代码库进行模拟攻击,以攻促防,提升安全能力。
CodeArts Repo支持Git Flow、Gitlab Flow、Github Flow等所有工作流,提供分散式和集中式的代码检视能力,支持团队随时开展代码检视活动,并且可以记录代码来龙去脉,双向可追溯,例如华为内部团队通过在代码托管工具设置规则,确保了每次的代码入库都有对应的工作项,可以及时发现不合格的代码。
如今,华为云CodeArts Repo管理并保护着华为1100亿行代码,支撑15万人开发作业,日均1亿次下载量、1PB传输流量、3亿次API调用,一套系统支撑了华为嵌入式、云、终端、车等各类型产品代码管理和协同开发。
3. CodeArts Build 分布式构建唯快不破
从大神Martin Fowler提出持续集成开始,经过多年的概念普及,持续集成早已深入人心,然而随着时代的发展,持续集成在实践上还面临很多痛点。
例如车载软件开发,它往往基于AOSP项目,代码仓库多达几百个,代码量有千万行甚至亿行,有100多G,代码全量下载一次就得几十分钟,完整构建长达数小时。这样的软件就没有办法快速的、持续的集成了。
华为云CodeArts Build提出了基于文件内容指纹的代码缓存技术、分布式编译、精确增量编译等技术,极大地提升了下载和编译效率。
华为云CodeArts Build内置130多种构建环境、30多个模板、20多个插件,用户开箱即用。提供BuildFlow编排模式,程序员可以基于依赖关系对组件按需编排。
如今,CodeArts Build支撑着华为6万研发人员的软件高效集成,每日构建任务量达77万次,集中弹性调度24.8万台构建服务器。通过代码按需下载、云化、分布式、精准增量、弹性调度等关键技术,端到端加速软件集成过程,让开发人员编译结果分钟级反馈、版本包30分钟集成、亿级代码全量构建1小时完成。
4. CodeArts TestPlan 为测试管理正名
测试是产品质量的生命线,在很多程序员的眼中,觉得测试不就是在页面上点一点,最多写一点儿自动化的脚本吗?
其实不然,测试是一个包含计划、准备和测量活动的过程,现在的测试已经不仅仅是等待软件开发完了才开始,而是不断地向研发的最前端移动,从需求分析,架构设计开始就和开发并行了!
华为云CodeArts TestPlan一站式测试管理平台是华为30年来对高质量的严格要求,以及不断积累的相关测试工作方法和实践,最大的特色是“全“:它覆盖了从测试计划到测试设计、用例、执行、评估的全流程,不仅可以用于小型的敏捷化项目,而且也能支持大规模的,产品架构复杂的多组件、多分支的项目。
截至2022年年底,华为云CodeArts TestPlan已经高效支撑了华为超过4万测试人员的测试作业,测试用例月执行超过2亿次,月API调用量超过12亿次,累计管理10亿以上的测试用例,覆盖华为终端、网络、云计算、芯片、汽车等诸多业务场景。
除了上面所提到的工具之外,华为云CodeArts还包括CodeArts IDE Online服务(让程序员随时随地获取云上开发缓解),CodeArts Check服务(支持海量源代码的风格、质量和安全检查,可实现百亿行大规模并行扫描,并提供完善的修改指导和趋势分析,帮助企业有效管控代码质量),CodeArts Artifact制品仓库等服务,这里就不在详细展开了。
看过这些CodeArts工具的介绍,大家应该能够感受到,软件开发工具已经从单体过渡到了云端,运算力的巨大提升和分布式的加持,整个软件开发的效率可以获得巨大的飞跃。
02
30年沉淀,厚积薄发
CodeArts
CodeArts涵盖了需求管理,代码管理,IDE, 测试管理,Build管理等软件开发的各个方面,华为能打出这么一套组合拳,来源于30年的沉淀,可以说是厚积薄发。
在上世纪90年代,还处于手工测试阶段,华为的各个部门和产品线或者自建,或者购买商业软件,对测试用例进行管理。各自为政,野蛮生长了一段时间以后,华为发现这种方式不合时宜,需要建立统一的测试平台。
2004~2005年,华为从各产品线抽调精英,收编了各种测试管理工具,制定了测试管理标准,成立了云龙平台。
在开发层面,华为的代码管理工具经历了“商用+开源”,到“边买边造”,再到“自给自足”的三个阶段。早在1998年,华为就开始使用商用的代码检查工具,随后持续投入数千万美元,攻克了静态分析技术检查准确性、效率等难题。类似的事情还有很多,到了2015年,华为云推出了DevCloud,整合了开发的流程、经验和最佳实践。
随后,DevCloud和云龙平台进行整合,形成CodeArts的雏形。然后经过五六年的反复打磨、反复验证,2022年底CodeArts正式诞生,华为软件开发优秀的实践、流程、方法变成云端的服务,让大家都可以使用。
03
基础软件亟需产业生态共建
CodeArts
说起IT业的核心技术,大家立刻会想到芯片,想到操作系统,实际上,软件开发平台和工具也是非常关键的一环,因为它们是开发软件的软件。
现在核心的开发软件基本被国外公司控制,工业软件如EDA、CAD、CAE软件就不说了,程序员日常用的Visual Studio、VS Code、IDEA、GitHub、GitLab等著名的开发平台和工具都是国外产品, Microsoft、Jetbrains、Perforce、Atlassian、Adobe等巨头占据了整个市场的45%以上。
对于软件开发工具,国内的软件企业要么是购买美国的商业软件,要么依靠开源技术进行包装,一旦受到国外的制裁,开源技术被禁用,业务就会停摆。
国外公司垄断的,不仅是工具体系,还包括了工程方法、技术标准、概念语言、技术演进趋势等。我国软件行业尽管产值每年持续快速增长,但欣欣向荣的成果仍搭建于国外的技术基础上。一旦技术底座被制裁,相关行业标准、商用工具无法继续获取或升级,中国的软件产业就会成为无根之木,导致产业发展停滞甚至危机。
所以国家在“十四五”规划中,把应用软件开发平台同云计算、操作系统、数据库一样的被定义为开发支撑基础软件,是非常有前瞻性的。随着国际形势变化和制裁加重带来的风险加剧,国内软件公司也在寻求国产化替代,达到自主可控。
之前的开发工具,主要是在PC上运行,未来,软件开发将会发生在云端,开发者只要有一个浏览器,就能随时随地进行研发,这就开辟了一个新的赛道,给了国内以华为云为代表的玩家提供了“换道超车”的机会,华为云推出CodeArts也是努力抓住这个机会。
有机会就有挑战,软件业最大的挑战就是“生态系统”,在这个系统中芯片、操作系统、数据库,中间件、开发工具都紧密联系,环环相扣,想要实现国产化替代,单靠华为云CodeArts是不够的,这件事儿需要行业伙伴们一起行动。
华为云面向产业链推出了众多措施,对企业开发者建立开发者群,和高校合作,推出教材,人才培养等。CodeArts IDE online提供了大量业务插件,帮开发者完成日常工作,同时成立了辅导团队开发者的官方组织,建立了内置于IDE内的独立插件市场。
CodeArts TestPlan也会进一步开放其测试管理平台,比如提供插件市场,更好地对接合作伙伴或第三方公司,引入更多的测试能力,共建测试管理平台。
云上软件的开发需要一个更加开放的生态,华为云与同行之间不是排他竞争,而是携手伙伴以及开发者共享共创共赢。
04
自主创新,期待国产基础软件突围
CodeArts
我们的一贯策略都是开放,学习并使用全世界的软件技术和先进流程,近几年,随着国际形势的变化,先进技术和产品的可获得性打了折扣,倒逼着我们必须要自主创新。
中国软件业想要安全发展,一定要有自己的根技术,为了软件供应链的安全和开发工具的安全,我们的“根”必须要扎得更深一些,让我们的软件行业更具韧性。
通过华为云CodeArts软件开发平台,华为将30多年来在研发上积累的经验、流程、方法沉淀在华为云上,转化为标准的云服务对行业客户进行赋能,不断提升软件开发的效率和质量,生态共建,保证软件供应的连续性。
在华为云以及众多伙伴的努力下,假以时日,国产基础软件一定会突出重围。