《A2--彭鑫--复杂系统视角下的软件智能化开发机遇与挑战.pdf》由会员分享,可在线阅读,更多相关《A2--彭鑫--复杂系统视角下的软件智能化开发机遇与挑战.pdf(25页珍藏版)》请在三个皮匠报告上搜索。
1、复杂系统视角下的软件智能化开发机遇与挑战彭鑫复旦大学计算与智能创新学院副院长、教授http:/https:/ Matt Welsh预测:生成式AI将在3年内终结编程,到那时候软件开发团队中只有两类人会保留,即产品经理和代码评审人员 1 月7日,Torvalds 忍不住插话进来:讨论 AI 生成的垃圾毫无意义,简直愚蠢至极停止这种愚蠢的行为。我不希望任何内核开发文档包含任何关于人工智能的声明。不知为何在骂完之后,Torvalds 就放出了自己用 AI 写好的代码。AudioNoise 这个小项目会成为 Linus Torvalds 的真香时刻吗?真不知还是假不知?CodeWisdom公众号(20
2、26年4月13日)小马过河:每个人面对的软件项目的类型和复杂度不同,项目开发模式(全新项目还是维护型项目)不同,个人的领域知识和编程经验不同,使用的AI工具和方法也不同这些因素共同决定了每个人体验的水深CodeWisdom公众号(2024年10月25日)软件形态的多样性 软件的系统复杂性 软件开发的探索性软件形态特点及典型实例AI所能发挥的作用解决方案以完成单次任务为目标,即用即抛,如智能助手合成的程序AI独立完成代码实现、测试、运行和演化工具应用根据业务流程或批处理方式完成特定任务,如信息管理软件AI可以生成大部分代码,开发者提供确认和反馈复杂系统具备高复杂度且需要长期稳定运行,如电信系统和
3、操作系统开发者掌控模块拆解及评审,AI生成局部代码经典教科书将软件定义为“程序+文档”,但在软件深入渗透人类社会经济生活以及社会物理空间方方面面、“软件定义一切”的发展趋势形成广泛共识的当下,我们有必要重新审视“编程”与“软件开发”的区别为什么不一样 软件系统着眼于长期稳定运行并有效应对各种特殊情况 软件系统根植于复杂的社会物理环境之中 软件系统包含复杂而精巧的设计结构,各个部分密切配合 软件系统需要经历长期的演化和维护过程为什么当下要强调这一点 数字化和信息化建设飞速发展,软件的规模和复杂性不断增长 软件定义一切的发展趋势更加显著,软件加速渗透到社会物理空间,同时系统的可靠性与安全性要求越来
4、越高 随着大模型代码生成能力的不断增强,编程与软件开发之间的区分越来越明显,大模型擅长前者但从根本上缺少应对系统复杂性的手段软件形态的多样性软件的系统复杂性软件开发的探索性基本观点:仅靠大模型技术的发展无法触发软件智能化开发的质变,因为这将涉及软件开发的根本性困难(即概念级别上的分析和设计),而大模型在这方面并不具备所需要的能力当前现状:主流研究路线(包括工业界)过于热衷于大模型和Agent等AI技术的“眼球效应”,在软件工程的本质困难上的思考不多详见CodeWisdom公众号(2024年10月25日)详见CodeWisdom公众号(2026年1月3日)上帝视角的消失与可观测性的兴起 上帝视角
5、的消失:传统的程序调试通过断点设置、单步跟踪、变量观察等方式,透过“上帝视角”审视程序的执行过程 可观测性的兴起:依赖日志和指标等运行时观测数据以及专家经验甚至反复的实验来猜测和验证可能的问题所在系统复杂性的含义和来源 系统复杂性的含义:指系统因组件众多、交互非线性、状态多变且难以预测,而表现出的整体“涌现”特性,是系统内生的、无法通过分析单一组件完全理解的属性 系统复杂性的核心来源:规模与连接(组件数量及交互网络呈指数增长)、非线性(微小输入可能引发巨大、不可逆的输出变化)、适应性(系统随环境动态演化产生新行为模式)Frederick P.Brooks.No Silver Bullet:Es
6、sence and Accidents of Software Engineering.Computer,Volume:20,Issue:4,April 1987.本质复杂性 来源于问题域本身的、固有的、不可简化的复杂性,是解决问题所必须面对的、内在的困难 例如,一个软件所需要实现的业务逻辑以及所处的外部环境的复杂性都属于本质复杂性偶然复杂性 并非问题本身所必需,而是在解决过程中,由于所选择的工具、方法、技术、环境或架构缺陷等带来的、附加的复杂性 例如,一个软件在设计和实现时所采取的具体策略,以及由于理解和经验不足导致的模块化设计不足、代码逻辑混乱等问题“软件定义一切”趋势下软件应用领域扩展加