作者 | 冯英睿
随着AI技术的进步,尤其是OpenAI的GPT-4等大型语言模型的出现,生成式AI正不断改变我们对软件工程的认识。本文试图从多个角度分析生成式AI对软件工程可能带来的影响,包括我们对软件本身的理解、对软件卓越的定义、重新定义软件工程能力以及团队组成和文化等方面。
Software = Codes + Models
我们发现大多数人在谈到AI辅助研发软件的时候,主要是指由代码编译的软件,但软件在今天早已不再仅由代码编译而成,而是由代码与AI模型共同组成的。当我们谈论研发提效的时候,也应该将AI工程提效加入进来一起考虑,而今天在基础模型之上通过微调的方式让开发AI模型的速度大幅提升。
同时由于AI涌现出来的能力,将在体验创新和系统集成上带来巨大的变化。从Microsoft365通过Copilot提升体验,以及ChatGPT与Walframe的集成这两个案例来看,随着AI能力的进一步增强,未来将由AI把系统或平台的各项能力进行整合,这也将进一步减少代码在软件中的比例。
所以在AI 2.0时代,我们需要更新对软件的理解。AI模型在软件中扮演越来越重要的角色,我们应该将软件视为由代码、数据和模型共同组成的系统。这意味着我们需要关注更大范围的变化:
Codes = Human Codes + Generated Codes
在毫无疑问AI可以为软件生成正确代码的今天,很多人都在问:对卓越代码的要求,是否适用于所有的代码呢?我们对于软件卓越的认识也需要发生改变,如果软件卓越的追求是旨在降低成本、范围、时间并提高软件的价值和质量,那么有两个很有趣的观点:
首先从成本角度来看,更多代码由AI生成不仅仅意味着研发成本的下降。同时也意味着问题的定义和分解都更加清晰,架构和设计更加简洁,否则AI很难自动生成可工作的代码。
而如果某些功能和组件的代码可以由AI重新生成,那么由AI生成代码的可读性也许不再值得特别关注。针对这一部分的代码,用于生成代码的注释和测试才是更重要的。而生成的代码可以在当模型升级时,通过生成的更好的代码来替代,让软件获得某种自我进化的能力。对于人类编写的代码而言,代码的可读性仍然非常重要。
Generated Codes = Correct Codes + Wrong Codes
生成式AI也要求我们重新思考如何评估软件工程的能力。如果更卓越的软件需要更多生成的代码,那么是否可以认为:能够生成更多正确代码的人或团队比别人更有能力?因为生成的代码必然包括正确的代码和错误的代码。优秀的软件架构师能够找到更多生成正确代码的方法。而为了更多的生成正确的代码,通过降低AI学习的复杂性能有效提升生成内容的质量。这是因为:
所以优秀架构师和团队在标准化设计、领域特定语言(DSL)设计和微服务拆分等工作将变得越来越重要,因为这些工作能显著降低AI学习的复杂性。
另外值得关注的是,因为生成式AI模型还可以通过知识库、模型微调等手段来提升能力,这使得知识工程或数据工程将成为软件工程的一部分,这也将是未来软件工程领域内一个非常有意思的领域。
Correct Codes can be generated by BA + QA or Dev
随着AI的代码生成能力不断提升的同时,如果团队的工程师开发出了优秀的架构和框架,使业务分析师(BA)和质量保证工程师(QA)能够直接交付许多功能,那团队的人员组成比例必然会发生变化。这也将会带来很多问题:
很多问题都没有确定的答案,但值得大家关注。总之,生成式AI对软件工程产生了深远的影响。我们需要更新对软件本身的理解、重新定义软件卓越的范围、重新思考如何评估软件工程能力,并关注团队文化的影响。在这个过程中,软件架构和设计能力以及数据工程能力变得更为重要。我们应该积极应对这些变化,以更好地适应AI 2.0时代的软件工程发展。
本文链接:http://www.28at.com/showinfo-26-14342-0.html猜想生成式 AI 对软件工程的影响
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 23种软件设计模式综述