邮箱 :news@@cgcvc.com

创·问 | 那一科技贾枭:让代码分析加速,做更好用的开发者工具链

文章来源:   发布日期:2023-04-26

优秀的企业长什么样,成功的牛人都有哪些特质?在他们的奋斗路上,有哪些需要注意的“坑”,最重要的改变是什么? 

创·问 向一些优秀的华创派、投资人、业界牛人抛出问题,也希望分享他们的想法给你。 

本期主角是那一科技创始人、CEO贾枭。

随着现代软件系统规模不断增大,代码量激增,系统复杂度也越来越高。据统计,在开发阶段的检测成本是发布阶段的1/100,发现缺陷的数量是部署后的10倍,研发安全“左移”成为软件安全保障的主要趋势。静态代码分析在提高产品质量、安全性与开发效率方面的价值,逐步被越来越多的开发者所接受。MarketWatch 数据显示,2019 全球静态代码分析软件市场规模为 6 亿 美元,预计到 2026 年底将达到 17 亿美元左右。

2021年,贾枭把家从硅谷搬到上海,开启了他的第二次创业——那一科技,一家专注解决软件质量安全的公司。基于静态代码分析以及机器学习等技术,那一科技建立了一套能够实现自动化代码审查、安全评估以及更新维护的开发工具链。其核心产品 NaiveSystems Analyze 可以快速、准确地识别软件安全性和可靠性的问题,帮助客户在软件研发流程中尽早发现质量安全问题。贾枭毕业于上海交通大学计算机科学班,在之后马克斯·普朗克研究所的研究和 Google 等领先硅谷科技公司的工作中,他始终在摸索形式化验证方向的前沿方向,并且通过设计和实现算法,自动地基于新的逻辑框架来证明程序的性质。

深耕顶尖的深度静态分析技术,他瞄准存量大且相对成熟的市场,结合团队在软件系统和形式化验证方向丰富的理论和实践积累,为客户提供极致性价比的好用工具。贾枭表示,那一能为软件开发者提供更好的工具链,“国外厂商将代码分析工具定位成窄类工具,一个 license 要几十、甚至上百万。为了减少一个用户分享 license 给多台设备的情况,越来越多的厂商用 Floating License 的定价模式,即一个 license 可以安装在多台设备,但同时只能有一台设备在线。这就导致工具卖得越来越贵,我们希望改变这个局面。这个工具理应是人人都在用,因为用得越早、问题发现得越早、修复代价也越低。”

全文分享如下:

Q:华创资本

A:那一科技 创始人、CEO 贾枭

Q1:请简单介绍下那一科技,主要帮用户解决哪些痛点和问题?

贾枭:基于形式化方法以及机器学习等技术,那一科技建立了一套能够实现自动化代码审查、安全评估以及更新维护的开发工具链。我们的核心产品 NaiveSystems Analyze 是一款静态代码分析产品,希望帮助客户在软件研发流程中尽早发现质量安全问题。通过与客户已有的研发工具进行集成,NaiveSystems Analyze 能够覆盖不同的软件研发阶段,在发布前及时找出代码中隐藏的缺陷,避免后期高昂的修复代价。从而为客户解决开源软件和自主研发软件在实施过程中面临的技术、法律、供应链等风险。

“静态代码分析”有独特优势,是因为我们使用的方法在操作系统领域得到了验证,而这一领域又是公认的价值突出、难度大的领域,且方法和产品都不局限于操作系统。

Q2:2021年创立那一科技,彼时你看到了哪些市场和机会?

贾枭:2009年,我进入上海交通大学 ACM 班(编者注:ACM班即上海交通大学计算机科学班。ACM 班迄今已培养出640名毕业生,直博率高达92%,33人已获海内外一流高校教职,99%从事计算机科学研究工作。在校本科生发表高水平学术论文330余篇,三次捧起ACM 全球总冠军奖杯,ACM 班的成功经验曾连续三次获得国家级教学成果奖。),2013年毕业后读博,后面去了马普所(编者注:马普所是马克斯·普朗克研究所的简称,是德国联邦和州政府支持的一个非营利性研究机构,出现过数十位诺贝尔科学奖获得者,其研究领域的成绩享誉世界。),研究方向是 Software Systems,聚焦在两大基础方向——程序语言和操作系统。

2014年,我收到了 Google 操作系统部门的工作邀请,能够在实业中延续自己的研究方向,所以我选择去硅谷做一名软件工程师。当时的组主要从事操作系统相关的开发工作,部门专门管理公司全球所有地区的服务器上的操作系统。服务器上运行的基础软件有两部分,一是操作系统,二是 Borg(即 Google 的 container 系统,类比开源世界的 kubernetes;事实上 kubernetes 就是我们在做下一代 Borg 系统遇到瓶颈后做开源的结果)。其中操作系统分为用户态和内核态。我们200多人的团队,负责的是内核态+Borg。我们组对 Google 内部提供的是操作系统,为了保证这个操作系统稳定安全,进行各种技术投入。我的工作就是围绕这些问题,其中尝试的一个技术路线是进行静态代码分析,同时还有很多其他路线/职责,包括手动/人工保证(内部+很多来自第三方的)代码改动的安全性。

2016年我回国,短暂参与过一家VR操作系统公司创业。2018年,我重新回到 Google 工作。这段经历还是延续之前操作系统相关的工作,主要处理操作系统驱动程序中,普遍会遇到的各种问题。例如,当硬件设备驱动遇到问题时,会导致整个操作系统崩溃,微软的 Windows 就通过它的 Static Driver Verifier 很好地解决了这方面的问题,其中使用了大量的形式化验证的技术,而这类技术不局限于操作系统,理论上可适用于所有的程序。遗憾的是 Google 在这方面没有单独的研究,当时我希望能够做出更多实用的价值,就想出来创业。

2021年回国创立那一科技,还是选择了我熟悉且擅长的静态代码分析工具领域,我们最初的思路是用更好的算法,更准地找到问题。同时,利用性能更强的机器和开源软件,大幅降低成本。实际上,静态代码分析工具不是一个新的产品,在20 年前就出现了,市场的存量很大,但要真正做起来却并不容易,是一个周期长且风险高的工程。正常情况下,一个完整的系统,需要团队花 3 到 5 年的时间精心打磨。不过一旦投入使用之后,渗透率会特别高,给企业带来的经济效益也十分显著。

Q3:那一科技业务方向主要面向开发者,你的第一次创业做VR操作系统,那时候面向的是终端用户。前一段创业给了你哪些经验和思考?

贾枭: 2015年冬天,我在 HTC 实验室看到了他们最早的 VR 原型机和一些 Demo,非常震撼,那时 VR 产业开始高速发展,市场上出现了大量的 VR 硬件和游戏开发团队,但却很少有人去做 VR 产业的底层基础设施——VR 操作系统。在 2016 年的夏天,我离开 Google 回国创业。当时的判断是,如果 VR 设备量爆发,首先需要操作系统,于是我们将创业方向选定为 VR 操作系统。

但彼时做 To C 的 VR 操作系统太早了,甚至现在也还早。我们经过尝试,将客户方向转向了 To B,核心的用户场景是设计院。设计院会使用 3D 建模,在向甲方展示时,通过导入 VR 系统,能够让建筑模型更为立体地展现。当时我们落地场景没问题,但 VR 设备未能如想象出现爆发式增长,作为提供 VR 操作系统的我们,自然难以实现商业上的可持续。并且,VR 设备复杂度过高,需要很重的服务,也不太适合软件生意。

这段创业的经历也让我在第二次创业时,从市场需求反向思考创业方向:不选太创新、太超前、需要从零开始教育客户的市场。结合自己的能力半径,在认真地分析国内的现状后,我们选择以技术为主导,服务于成熟市场的定位。我相信,只要有程序和开发者的地方就有静态测试需求,这个领域虽然可能不如之前面向终端用户的产品那么有“创新“,但只要我们做的产品比现有的产品好用、成本低,那就有竞争力。

Q4:目前那一科技的产品线是怎样的?

贾枭:我们目前的核心产品——NaiveSystems Analyze,可支持多种国际和国内的代码编程标准。例如 MISRA C:2012是由汽车工业软件可靠性协会 (MISRA) 提出的 C 语言开发标准,是编写安全攸关的 C 代码的最佳实践,在汽车电子、轨道交通、医疗器械、航空航天等各个领域都被广泛使用。NaiveSystems Analyze 还支持 MISRA C++:2008、AUTOSAR、GJB 5369、GJB 8114 等编程规范,以及 ISO 26262、ISO 21434、IEC 62304 等多种标准,覆盖功能安全、网络安全、数据安全等多个方面。

产品亮点:

● 对关键的编码规范的规则覆盖率高,例如 MISRA 系列总体规则覆盖率超过 92%;

● 利用形式化验证技术,相比传统静态分析方法,误报和漏报数量都极⼤减少;

● 提供全中文的详细诊断信息和在线帮助文档,包括各标准原文及其专业翻译;

● 支持与各类软件研发⼯具深度集成,支持自定义规则等定制开发。

Q5:刚刚你提到,静态代码分析是一个非常成熟的市场。如何看待国内外竞争对手?相对于成熟的及其它初创公司、开源软件,那一科技的比较优势是?

贾枭:目前国内市场中,以美国新思科技 (Synopsys, Nasdaq: SNPS) 为代表的国外公司占据绝对领先的市场份额,但它们在国内主要通过代理商来销售,客户的核心痛点是遇到问题时,难以触达原厂。比如,我们之前有听说过:有客户反馈用国外的产品,在遇到 bug 反馈半年之后才收到厂商的邮件,说信息收到了。售后反应慢外,价格高企更是难以接受。因为国外厂商将代码分析工具定位成窄类工具,一个 license 要几十、甚至上百万。为了减少一个用户分享 license 给多台设备的情况,越来越多的厂商采用 Floating License 的定价模式,即一个 license 可以安装在多台设备,但同时只能有一台设备在线。这就导致工具卖得越来越贵,我们希望改变这个局面。这个工具理应是人人都用,因为用得越早、问题发现得越早、修复代价也越低。

之前也有一些创业公司在尝试做类似的事,但他们没有在技术层面上解决问题,还存在这样或那样的问题,比如不能完整地支持行业标准等,没有做出完整的产品。

与它们相比,那一科技的优势在于我们团队在程序分析和信息安全方向积累了丰富的理论和实践积累,能够以更低的成本提供更高性能的产品,同时配以本地化的服务团队。核心技术是基于形式化验证、机器学习等技术的代码正确性、安全性自动化分析平台。具体来说,如果客户对于精确性有强需求,我们可以用形式化验证的方法论;如果客户对于成本很敏感,我们则通过技术和算法的优化来提供有竞争力的价格。

正因为这是个成熟的市场,反而有我们创新软件企业的机会。因为市场上已有产品开发都比较早,彼时能够用到的算法非常有限,效果有明确的天花板。我们在研发中复用了大量近5~10年才出现的开源软件。同时,我们做了大量开源工具的修复、筛选,积累了大量的测试数据,这又是单纯的开源软件做不到的。举个例子,每一条规则都有十几条测试数据,对系统的每一个改动都要把所有测试跑一遍。如果用一个普通的机器要跑一天,改动一下又要跑一天,这个质量保证的过程,开源软件提供者不会提供,发现问题后也不会帮你修复,商业化产品的价值就在这里。

Q6:在静态分析领域,尚不存在国产方案,所以你看到的就是这个领域里“国产替代”需求的商业价值。目前那一科技的商业化进程如何?目标客户和场景是如何选择的?

贾枭:具体而言,包括汽车、医疗、军工等行业客户目前都有覆盖,后续也将继续扩展到更多应用场景,包括医疗器械、工业4.0、信息化平台、工厂等。

医疗、汽车、军工、航天等行业,出于安全原因,这些行业通常需要获得静态代码分析工具。举几个例子,现在快速起量的场景是软件定义汽车(Software Defined Vehicles。其核心思想是,决定未来汽车的是以人工智能为核心的软件技术,而不再是汽车的马力大小、是否真皮沙发座椅、机械性能好坏)。汽车是嵌入式代码,它有个特征,更新频率介于航天器和手机 APP 中间,需要更新,但不像手机 APP 那么频繁。但是,代码量激增和软件更新频率提高,原来的测试方法已经无法满足测试需求,而且行业竞争的加剧推动了对自动化代码检查工具需求的快速增长。医疗行业,我们主要服务的是需要软件的三类医疗器械。军工行业尤其是航天航空业,以及轨道交通、高铁、半导体等,出于安全性的考虑,它们是不得不用。

对于这些行业的用户,能否匹配需求主要看付费意愿和业务增长规模,以及用户使用的语言。自愿使用代码检测工具的公司,一般是团队规模达到了一定水平,人工检测代码看不过来;或者是甲方要求过于苛刻,人工保证不了,尤其像 C++ 语言里的很多错误,人工看不出来,只有程序才能发现。 

现在我们开发客户主要有两种思路:行业视角,即看哪个行业大概率会出现相关的问题;人的视角,看谁在用相关的语言写代码。 

最近一家比较典型的客户是做半导体相关行业。他们工作量大且交付压力大。公司有 50 多名开发人员,虽然团队整体素质较高,习惯进行代码审查,但是在交付压力下无法有效地控制代码质量,因为无法及时修复的问题,会导致项目交付的拖延。虽然公司所处行业目前没有合规的要求,但是降本增效的需求非常强。当他们意识到人工检测出来的都是机器可以且能更有效发现的问题,他们就找到了我们。 

Q7:那一的团队组成是怎样的?未来希望吸引哪方面的人才?

贾枭:我的合伙人是交大校友,也是上一段创业的战友。多位核心团队具有海内外名校教育背景,并且具有在美国 Google、Facebook、Amazon 等公司的工作经历。团队兼具学术和工业界的背景和经验,在程序分析和信息安全方向有丰富的理论和实践积累。我们掌握顶尖的深度静态分析技术,能够不断通过设计和实现算法,自动地基于新的逻辑框架来证明程序的性质,应对表达能力更强的编程语言特征。

我相信有共同理想的、并为之一起努力的人才能一起做事情。所以我们对有志于从事这个行业的年轻人乃至应届生也是很欢迎的。我们跟交大 Linux 用户组、各老师实验室建立了稳固且密切的联系,是最欢迎的“实习基地”。那一团队的年轻成员主要来自校招,现场一起工作 3 个月后,我们对人的能力就有很精确的认识了。

Q8:你刚提到“只要有程序和开发者的地方就有静态测试需求”,ChatGPT 所展现的 AI 生成代码的能力是否会颠覆这个需求?

贾枭:ChatGPT 是否改变工具本身?我认为原理上行不通。我们做过大量测试,比如丢给 ChatGPT 一段代码,问有什么问题,它对字面意思、变量名、函数名非常敏感,但这个变量换个名字,GPT 就无法识别了。实际上,换名字后,程序的逻辑是不变的,不应该有不一样的结论出现,测试的答案应该是唯一的。但 ChatGPT 只是看你写的什么词,根本就看不懂逻辑。因此,目前看 ChatGPT 想要替代我们这些工具的检查,还不行。

反过来,如果有很多人都开始用 ChatGPT 写代码,在用它写完代码以后,肯定要再检查一遍,当检测代码的工作量变更大了,就需要更高效的测试速度,反而更需要我们了。 

ChatGPT 所展现的 AI 生成代码的能力,怎么用?我们有一个思路是 ChatGPT 生成代码后,先用我们代码检查工具扫一遍,扫出的问题再给它改,改了以后再扫出来,一直等到找出所有问题后,再给人类程序员。这样的工作流输出的代码质量应该是远高于直接生成的代码。

Q9:未来3~5年,那一科技希望能解决哪些问题?

贾枭:在垂类中,完整覆盖静态代码分析产品的研发、销售;在产品功能和效果上,达到目前市场上成熟产品的水平。那一希望帮助各行业客户及时发现 bug 和潜在缺陷,解决 Code Review 代码审查环节自动化和效率提升的痛点,提升软件开发和运维的效率,为客户提供提高开发效率、提升代码质量的解决方案,满足企业合规性的需求。

 

分享到: