首页 > 最新动态 > 大模型时代的软件工程新机遇 | CCCF精选
最新动态
大模型时代的软件工程新机遇 | CCCF精选
2024-08-0712

收录于话题

#CCCF2024



大模型的出现对于企业软件开发带来了巨大的影响,同时还催生了新的软件应用形态及生态。本期专题围绕大模型时代的软件工程新机遇这一主题,邀请了多位来自学术界和工业界的专家撰写文章,介绍相关技术原理以及研究与实践进展,同时阐述各自的观点。前四篇文章关注基于大模型的企业软件开发;后两篇文章则关注基于大模型的新型智能化软件的构造方法与运行支撑。




以OpenAI的GPT系列为代表的大语言模型(下文简称“大模型”)给很多领域带来了巨大的影响,包括软件工程领域。大模型不仅展现出极强的代码生成能力,而且能够解释代码的实现逻辑及其意图,并按照指定的要求修改代码。GitHub的CEO托马斯·多姆克(Thomas Dohmke)曾在一篇博客文章中称,GitHub Copilot发布不到两年,就为100多万名开发者编写了46%的代码,并将编码速度提高了55%。同时,多家国内企业推出了自己的代码大模型和AI虚拟员工,并宣称企业内20%~30%的代码已经可以由AI自动生成。


除了编码任务外,大模型在需求分析、软件设计、软件测试等复杂软件开发任务上也表现出了一定的能力。一些资深软件工程师尝试使用大模型以多轮对话的方式实现完整的软件应用,取得了不错的效果。例如,有企业专家基于ChatGPT及Github Copilot开发了一个准生产水准的“共享出行”应用并进行了开源,其中由大模型自动生成的代码占比达到了 80%~90%。


大模型在软件开发上表现出的全方位能力给工业界和学术界带来了极大的震撼,各种“编程终结论”不绝于耳。哈佛大学前计算机科学教授、谷歌工程主管马特·威尔士(Matt Welsh)曾预测,生成式人工智能(GAI)将在三年内终结编程工作,届时软件开发团队中只保留两类人,即产品经理和代码评审人员。虽然“编程终结论”目前还存在很大的争议,但大模型给软件开发带来的巨大变化正在逐渐成为事实。开发人员将越来越多地以交互式对话的方式利用大模型协助自己完成开发任务,其中任务拆解和问题表达(即提示)能力将越来越重要;同时,初级程序员岗位将大大减少,简单和重复性的编码任务(如功能逻辑主要是数据库查询更新及常用API调用的任务)将主要通过生成式的方式完成。大模型的出现将极大提高软件开发的效率和质量,使开发者可以更好地响应客户及市场需求。


除了对企业软件开发方式带来影响之外,大模型还催生了新的软件应用形态及生态。LangChain等大模型应用开发框架的出现使大模型成为智能化应用的通用底座,用户可以在大模型基础上通过集成各种外部数据源、工具及API快速构建个性化的智能应用。由于这类应用的逻辑主要由任务规划(即步骤拆解)、数据检索、工具和API调用构成,非常适合终端用户(end user)通过自然语言的方式表达意图并直接生成可运行的应用。特别是随着网络及数字化的不断发展,越来越多的社会和商业服务以及物理设备都可以通过API访问,使基于大模型的新型应用形态得以突破信息化服务的范畴,实现跨越人机物边界的资源按需集成和服务按需融合。


本期专题围绕大模型时代的软件工程新机遇这一主题,邀请了多位来自学术界和工业界的学者、专家撰写文章,介绍相关技术原理以及研究与实践进展,并阐述各自的观点。前四篇文章关注基于大模型的企业软件开发,特别是大模型带来的软件开发范式变革,以及大模型对复杂软件系统开发的支持;后两篇文章则关注基于大模型的新型智能化软件的构造方法与运行支撑,特别是基于大模型的新型智能化应用开发技术及生态,以及大模型运行状态监控与运维管理。


北京大学教授李戈的文章《大模型能实现软件自动化吗?》分析了大模型在软件自动化中的作用和制约条件。他指出当前大模型对软件开发的辅助尚处于“低级自动化”的阶段。未来,随着大模型能力的不断提升,其应用将逐步向软件生命周期的其他阶段渗透,其在软件需求分析和软件测试阶段的作用将更值得重视。为此,他提出了一个大模型支持下的新型软件开发模型——“铁钳模型”,通过大模型支持下的需求分析和自动测试支撑软件开发全过程。


复旦大学青年副研究员娄一翎等人的文章《面向智能化软件开发的大语言模型增强技术》对基于大语言模型的智能化软件开发面临的问题和挑战进行了分析,包括软件开发的复杂性及其可靠性要求、软件维护等。研究者从不同的角度对大语言模型在软件开发中的能力进行增强,包括提示工程、检索增强、领域微调以及智能体等。文章在总结和分析面向智能化软件开发的大模型增强技术的基础上,对未来的研究与实践发展方向进行了展望。


浙江大学副教授胡星等人的文章《代码大语言模型的实践与挑战》介绍了当前工业界在代码大模型构建和应用上的实践状况。虽然代码大模型在代码生成和理解任务上表现出令人惊讶的效果,但如何将代码大模型与企业软件开发流程相结合以进一步提高软件开发效率和质量,仍然是一个需要探索的问题。文章在总结相关实践的基础上,从数据工程、模型评估、与其他知识和技术融合等多个方面,对当前代码大模型构建与应用面临的挑战进行了分析。


伊利诺伊大学香槟分校副教授张令明的文章《大模型时代的自动程序修复:现状与展望》对基于大模型的自动程序修复技术的发展趋势及面临的机遇和挑战进行了分析。传统的程序修复方法依赖固定的模板化或符号化技术,局限性较大。大模型强大的程序生成和理解能力为程序修复带来了新机会。与此同时,如何为大模型提供更多的辅助信息、如何结合传统技术和大模型、如何充分利用对话式大模型成为亟待解决的问题。面向未来,基于大模型的程序修复也面临着新的挑战,包括通用和特定领域大模型之间的平衡、大模型能力与效率的权衡、上下文学习/微调/预训练和检索增强生成等策略的综合应用等。


同济大学副教授王萌等人的文章《增强大语言模型的技术及应用生态》在介绍现有大模型增强技术的基础上,分析了包含中间件、框架和运营工具在内的大模型基础设施,其目标是以一种高效、可扩展和安全的方式支持智能化应用的构建和运行。在此基础上,文章通过实际案例展示了从技术到设施再到生态的大模型应用,并从开源生态的繁荣、技术融合的进展、具身智能的扩展、伦理与可持续发展等方面总结了大模型在行业落地应用过程中可能面临的机遇和挑战。


国防科技大学副研究员冯大为等人的文章《智能模型监控技术:现状与挑战》对包含大模型在内的智能模型运行状态监控技术的现状及其挑战进行了分析和总结。智能模型是智能软件的核心,对其运行状态的有效监控是智能软件适应性演化的基础和前提条件。文章在介绍智能模型和大模型监控指标和方法的基础上,从多个方面对其面临的挑战进行分析,包括智能模型的行为解释与调控、智能模型运行时异常定位与溯源、智能模型版本优化与更新机制、智能模型监控的灵活配置及统一管理等。


大模型为我们打开了智能化软件工程的想象空间,但实现这一梦想还需要深入思考软件工程的根本性问题,例如需求和设计的复杂性、软件的正确性保证等。正如面向对象软件技术先驱、契约式设计思想的提出者贝特朗·梅耶(Bertrand Meyer)所强调的,大模型并不会带来编程的终结,而是会复兴软件工程领域的一些根本性的技术,如需求分析、精确的规格说明以及软件验证。当前大模型在支持企业级软件开发及维护任务上的不足也从侧面反映了这一问题。为此,我们需要将人工智能、人机交互等技术与软件工程经典理论、方法与技术相结合,实现人机协作的软件智能化开发。



彭 鑫

CCF杰出会员、软件工程专委会副主任。复旦大学教授。主要研究方向为软件智能化开发与运维、人机物融合泛在计算、智能网联汽车基础软件。pengxin@fudan.edu.cn




点击“阅读原文”,查看更多CCCF文章。

点我访问原文链接