扫码阅读
手机扫码阅读

AIGC时代,软件研发组织如何构建AI战略?(演讲全文,PPT下载)

127 2024-03-29

(下面文字由语音识别转换文字、chatGPT润色完成)
各位来宾、现场朋友,大家早上好。
首先,我要感谢组委会邀请我来参加这次峰会,有机会在这里和大家进行交流。在这个信息与通信技术时代,作为一个软件研发组织,我们需要思考如何构建AI(人工智能)战略。
我在软件研发领域工作了30多年,其中十年在大学任教,十年在企业从事软件开发、测试和技术管理工作,最近十年又回到大学进行软件工程的教学与研究。我对软件工程非常关注,特别关注软件工程的演化过程。
今年三月,我写了一篇文章《GPT-4 开启 “软件工程3.0” 全新时代》,探讨了当GPT(大规模预训练语言模型)出现时,软件工程发生的巨大变化,进入软件工程3.0时代。
我相信在座的大多数嘉宾都读过《失控》这本书。最近,该书作者Kevin Kelly出版了一本新书,名为《5,000天后的世界》。为什么叫5,000天呢?因为大约十年左右的时间里,会发生巨大的变化。
他在谈到新书时,提到人们对AI的重视程度还不够,人工智能被低估了。从长远来看,他认为人工智能与火、电力、书写等一样,对人类产生的影响不相上下,具有变革的力量。
最近,我看到了一段采访斯坦福大学副教授、人工智能实验室主任吴恩达的视频。吴恩达是AI和机器学习领域世界上最具权威的学者之一,他说:AI就像100年前的电一样,会给每个行业带来巨大的影响和改变,所有行业都将面临转型。
GPT的发布更是推波助澜。从去年11月开始,我们一直在讨论GPT和大模型的话题,每天都可能有相关的消息发布。在国内,有人称之为"百模大战",类似多年前的"千团大战"。许多企业,如华为、讯飞和百度,纷纷推出自己的模型。GPT的发布抓住了人们的想象力,就像当年iPhone的推出一样,迅速扩展市场。这意味着AI解锁的时刻已经到来,可能比我们过去想象的AI的任何一个浪潮更加强烈。在这个快速变化的时代,我们需要拥抱大模型,保持好奇心,与时俱进。
我们也看到了一些好的例子,例如,微软将所有的资源和精力都投入到了人工智能领域, all-in AI。可以说,微软已经将人工智能视为公司的战略要素。微软将AI技术和GPT能力融入了其产品(如Windows、Github和Office)之中,这表明了他们在AI上的战略。
鉴于软件研发领域对AI技术的应用相对不成熟,我们需要建立自己的AI战略。作为每一个软件研发组织,我们都需要开始考虑AI的战略,并逐步构建起来。过去我们可能只是试用了一下AI技术,而没有将其作为一个战略的重要组成部分,只是抱着尝试的心态使用。
在软件研发中,我们并没有充分地利用AI技术。尽管在某些行业,如高铁和航空领域,AI技术的应用相对较多,但在软件研发中我们的应用仍然不够充分。因此,我们需要构建与AI相关的AI战略。那么,如何构建呢?
我将简单地将构建AI战略分为三个步骤,以帮助软件研发组织构建AI战略。
首先,我们需要改变对AI技术的认知,重新定位其在软件研发中的作用。过去,我们可能将AI技术仅视为一种辅助手段,如在代码编写过程中的代码提示、函数名补全等。虽然这些功能确实有一定的帮助,但其实质影响有限,仅仅是一些点的辅助。在测试领域,我们使用人工智能技术来进行GUI测试、API测试等。甚至在单元测试中,我们也使用了深度神经网络等技术。
然而,这些应用仍然只是一些点的例子,我们需要将这些点连接起来,形成一个更完整的AI体系。这需要我们从第一步开始,改变对AI技术的认知,将其视作一种能够覆盖整个软件开发过程的重要能力,而不只是局限在某些具体功能的应用上。
接下来,第二步是扩展AI的应用范围,逐渐向更具挑战性的领域努力。首先,我们可以从简单的应用入手,例如在开发工具中增加更强大的AI功能,提供更智能的代码补全、自动化测试等功能。随着我们对AI技术的逐渐熟悉和掌握,我们可以开始探索更复杂的场景,以提升软件开发的效率和用户体验。
将它变成一个更可行的方案,一个实际可操作的框架。在过去,我们可能只是在一些特定点上应用了一些AI技术,在GUI测试方面取得了一些突破。但现在情况不同了。基于大模型的技术,如代码生成、代码审查、代码优化和代码解释,让我们有了更广阔的可能性。
在过去,许多遗留代码可能已无人问津,因为IT人员流动性较大,所以新的人员可能无法理解以前编写的代码。但现在我们可以依靠强大的GPT或大模型来帮助我们理解这些代码,或者对新人的代码进行评审。因此,如今我们可以通过使用代码大模型,在现有的Foundation大模型的基础上,结合我们自己的代码进行微调或优化,然后训练出适合我们应用的大模型。
2周前,华为发布盘古大模型和代码大模型的演示,对大家来说确实具有巨大的震撼效果。现在,我们还可以通过大模型生成用户故事的验收标准、测试用例和测试脚本。这里的截图都是我亲自做的,从头到尾完成的。然而,需要进行人机交互,通过适当的引导和持续细化,让模型能够更好地应对各种特殊场景和负面场景的测试用例生成。因此,从整体上看,我们的测试方法与过去完全不同,它使用了AI技术,更智能化。过去,我们只是使用了一些点的自动化测试,实质上是执行测试的自动化,而不是真正的测试自动化。今天,我们可以看到真正的自动化,不需要写一行代码,不需要编写测试用例和脚本,我们可以通过自然语言的交互自动生成测试用例和测试脚本。
在数字化转型中,我们不再把计算机技术和AI技术视为支持业务运转的工具,而是逐渐融合它们。这不仅仅是简单的融合,而是一个更广泛的整合。未来,或者说从现在开始,AI技术将成为我们数字化转型的核心技术,为我们带来更多的机遇和可能性。
这种技术是作为我们业务系统的核心力量,就像微软所说的,它是一种具有决定性的技术。与此不同的是,AI已经渗透到我们当中,它决定了企业的运转效果和竞争力,这取决于我们对AI技术的应用和能力。这就是我刚才所提到的,我认为在这个时刻,我们的软件工程正处于一个新的时代。所以,我将传统的软件工程(以瀑布模型或V模型为代表的)定义为1.0,而将过去称之为“现代软件工程”(以敏捷、DevOps为代表的)定义为2.0。从今年开始,我们进入软件工程的3.0时代,即大模型时代、智能时代或真正的数字化时代,因为软件的形态发生了巨大变化。
在1.0时代,软件更多地作为产品存在。在2.0时代,软件作为服务存在(SaaS),这使得持续交付和持续集成变得有价值。而今天,软件作为模型存在。我们可以看到一个恰当的GPT模型,它不局限于特定的任务,而是具备多种功能。通过一个恰当的GPT模型,我们可以进行翻译、文章摘要、代码生成、测试用例生成等许多任务。一个模型就是一个真正的软件,拥有多种功能特性,这些功能特性不是靠一个个开发出来的,而是模型自身具备的。
在这个时代中,模型成为核心,驱动着开发和运维。在1.0时代,我们通常只是一个闭环,而在2.0时代,我们有了两个圈(DevOps)。而在3.0时代,我们有了三个圈,加入了机器学习(ML)作为一种驱动力量。之所以使用1.0、2.0和3.0来描述,是因为它符合软件演化的过程。开发软件也是一个逐步迭代的过程,版本(1.0、2.0、3.0…)不断演化下去。未来,将会有更多的AI原生开发出现。因此,在多年前,我们开始出现了云原生。
因为我们进入了云计算时代,所以我们有了云原生开发或云原生平台。在未来,AI也可能成为一个平台,而我们将有更多AI原生应用。你可能会想,什么是AI原生应用?这是一开始就从AI出发,会与在原来软件加上AI技术的应用不同。就像平台或工具从云为中心的视角出发,而不是从传统单体系统开始慢慢演化为云系统。因此,如果一开始就构建一个云系统或平台,它将更具弹性和韧性,并能更好地体现这种能力。这与构建一个可能笨重或复杂的系统不同,因为云的能力和弹性将无法体现出来。
在第二步中,我们从简单的角度开始,让我们可以引用一些工具。如果你认为不需要引用工具,因为有些人喜欢重复造轮子,那么你可以自己造,也可以。但我们通常鼓励使用现成的工具,如果有现成的可用,就像使用开源大模型一样。近几天刚好有一个消息,关于Meta(Facebook)和微软联合发布了一个声明:Llama 2开源版本可以免费商用。所以,我们可以基于开源大模型Llama 2开展工作,构建自己的大模型。此外,与过去不同,我们现在认识到模型的价值,更有价值的是数据。因为我们的模型的能力取决于好的数据。如果我们有好的数据,我们的模型将具有更好的能力和更准确的输出结果。
所以,我们首先要构建自己的大模型。你可以基于开源的大模型来构建自己的模型,在基础大模型上微调,但最简单的方法是直接调OpenAI的API或调用其他大模型的接口。另一种方法是使用过去积累下来的知识库或带有知识的数据,甚至可以构建一个包含知识或规则的数据库,保存这些数据。然后,我们可以通过embedding方式将它们与大模型绑定,通过这种知识或数据的embedding方式,可以做进一步的优化或调整,如用知识库的规则来验证大模型输出结果的准确性,也可以适应我们的业务以及解决数据的时效性问题。
然而,对于更有实力的大企业来说,他们会训练自己的大模型,但这是最困难且成本最高的方法。
下一步是应用这个大模型的能力。我们达成共识,代码是大模型应用的一个重要领域。因此,我们需要一个编程助手来帮助我们生成代码、审查代码和解释代码,以及进行测试。尽管我们有编程助手和测试助手能够生成代码和测试,但还是需要开发人员和测试人员进行评审。
再进一步,我们可以寻找业务分析师进行业务分析,了解客户和用户需求,帮助整理需求。同时,大模型可以在运维方面扮演着重要角色,微软的专家会在AIDD会议上分享这方面的案例,通过大模型发现线上问题、诊断异常问题,并进行问题分类的工作。
这样,就会慢慢长出一个基于大模型的工程平台,可以帮助我们进行任务规划。最近也有一些工作在研究这方面的努力。这个平台还能帮助我们进行自我反思,因为大模型的短期记忆是有问题的。通过其他手段或提示工具,比如GPT发布的代码解释器插件,可以存储和保存文件,可以增强大模型的长期记忆能力。
我们已经讨论过工具方面的内容,接下来我们最终可以建立一个基于大模型的工程平台,并且进一步形成一个完整的E2E大模型应用框架。通过这个框架强调之前提到的数据的重要性。
在数据层面,我们需要在数据资源、数据管理和处理方面进行投入。因为最终每个组织或团队应用的效果取决于数据的质量和数据处理能力。数据处理也反映了数据自理能力和数据工程方面的技能。这里展示的金融大模型,其第二层就是数据工程层,这一点我们应该比较清楚,因为大数据的概念已经讨论了十年。

接下来的第三步是组织和流程的规范化。由于人的问题一直是最困难的问题,所以我们将其放在第三步来处理。组织是可以重构的,我们可以基于大模型的能力应用来不断缩小团队规模。有一种极端的说法是,一个厉害的人,借助大模型(作为助手),可以独自完成一个产品,但这是夸张的说法,不需要那么多人。我们希望有更多能力强的研发人员,他们拥有更多的助手,就像海军陆战队一样,他们拥有强大的工具和武器。
今天,我们也需要好的工具来提升自己的能力,这样我们的竞争力就会大不一样。所以许多初级工程师的职位基本上可以被淘汰,但同时我们可能会招聘更多高端的人才。各种角色都应该存在,包括产品经理、开发和测试岗位,但更多的是需要资深的开发和测试人员,他们每个人可能会有一些助手,如GitHub copilot或代码助手和测试助手。这样,我们就能够让团队更加精干。这也是为什么我们提到特战队或美国的海军陆战队,他们拥有很好的工具来支持他们行动。因此,虽然他们人数很少,但他们能够完成大事,甚至可能比几百人的团队更有战斗力,这就是工具的力量。
AI的力量,对我们来说是如此的重要。在这其中,人机协作起着重要的作用,而AI这个超人也不仅仅是作为助手存在。在之前的讨论中,大模型主要扮演了编程助手、测试助手和运维助手的角色。它也可以作为BA助手存在,但这并不是唯一的情况。当你水平较低时,也许他是你的师傅,而你是他的助手。或者,当我们的能力相当时,我们可以互相取长补短。他在某些领域可能更强,而你在其他领域可能更强,这样可以互相帮助。他拥有丰富的知识,几乎涵盖了全世界的知识,而你的知识是非常有限的。虽然并非在所有方面他比你强,但在许多时候,他是你的师傅。如果涉及到架构方面,他可能是你的顾问和专家,可以给你咨询和建议,尽管他无法亲自完成架构工作。他可以向你传授知识,解释什么是好的设计模式,或者适合你需求的设计模式是什么。因此,他可以提供更多的帮助。在每个环节、不同的项目和不同时期,各自的能力都会有所不同。因此,这种合作关系是变化的,有时你是他的助手,他是师傅;有时他是助手,你是师傅。因此,我认为,我们应该以更广阔的视角来看待这种合作关系,而不仅仅是将其视为助手。
另一方面,确实存在一个问题,如果你使用chatGPT来生成代码或者测试用例,可能会不太方便,因为你仍然需要逐字逐行地输入提示词。我们是否可以有一个平台来支持这种工作,包括生成提示词的助手,甚至可以帮助你生成更好的提示词。或者多个研发人员一起协作,共同生成测试用例,以产生更好的提示词。这样,我们之间的协作会更加顺畅。
当然,你的组织不想采取任何行动,那也可以,因为在五年或十年后,多数企业已经不存在了。

如果你真的想在竞争中生存下来,你可以搭乘下一个航班,因为我们在8月18日和19日举办了AiDD峰会,期待你的参与。

谢谢大家!
下载演讲PPT:关注本公众号,输入“AI战略”,获取下载地址。
原文链接: http://mp.weixin.qq.com/s?__biz=MjM5ODczMDc1Mw==&mid=2651857455&idx=1&sn=886a98e02138c0d2845f89a79e89028e&chksm=bd22cf418a55465793637baee1f1bae0e21307c3a07b419bbb768ca4a3de78e0e026fb11df4b#rd

本公众号致力于健康、安全、绿色的软件生态,分享软件质量管理、软件测试的思想、方法、技术与优秀实践,追踪软件质量领域的热点,及时报道软件质量管理的成功案例或质量事故,以及分享深度思考、有温度的技术文章等,努力成为您工作中的朋友。

22 篇文章
浏览 7951
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设 白皮书上线