正如过去的纸质书籍承载人类文字文明一样,软件已经成为信息时代人类文明新的表达方式和承载载体,如何开发软件是一个大问题。回顾数十年软件发展的关键历程,软件开发经历了个体创作、工业化生产、群体化生产等变革,驱动软件科技快速创新和软件产业蓬勃发展。在网络时代向泛在计算智能时代转型的关键时期,认识软件发展背后的核心规律,构建新的软件方法与技术体系,对软件科技与产业的可持续发展具有重要意义。
软件开发呼唤新的范式
软件开发是人类当代独特的群体智力活动。在计算技术发展的历史进程中观察软件开发技术的发展,不断出现的软件危机推动软件开发理念、方法和技术的深刻变革。
软件复杂度的增大导致“软件危机”开始爆发,IBM OS/360通用操作系统研发过程的失败经验促使了“软件工程”概念的提出,我们将软件工程遵循的软件开发理念和方法称为软件开发的工程范式。软件工程潜移默化地继承了机械的世界观或科学观,即世界是一部确定不变的、可被理解表述的、可被线性分解还原的“机器”,由此派生出软件生产的基本原则和方法:自上而下,逐步求精。软件开发的工程范式取得了历史性成功,形成了软件产业,但在互联网产业蓬勃发展的趋势下,面临着软件开发过程管理群体协同效率瓶颈和软件自动化工具能行可表达理论极限瓶颈。
在软件开发工程范式面临巨大发展瓶颈之际,发端于自由软件运动的开源软件蓬勃发展,产出了一系列高水平的软件,我们将其所遵循的软件开发理念和方法统称为开源范式。作为脱胎于互联网环境的软件开发范式,开源范式看似无序状态背后的逻辑是演化的世界观和科学观,即遵循自然演化两个基本原则:一是遗传变异,二是适者生存。这种基于达尔文“演化论”科学观下的开源范式是软件工程历史上的又一次重要觉醒,适应了互联网时代软件发展趋势。但是,置身于自然演化生态中,开源范式难逃“物竞天择、适者生存”的自然规律,任何一个开源项目能否成功无法给出确定性的承诺。
在人机物三元融合智能互联泛在计算时代,计算平台的泛在化驱使软件应用的泛在化,应用场景的多样化带来软件演化的不确定性,软件从相对独立的产品演变为多种元素相互依赖、持续演化的生态,“人在回路”的持续成长演化成为软件系统的一个基本特征,软件开发呼唤新的范式。
群智范式核心理念:
宏观演化,微观求精
软件开发是一个大规模群体通过群智激发和汇聚来解决复杂任务的活动,其本质在于“群体智能”。不论是工程范式还是开源范式,都是面向特定问题实现群智激发和汇聚的一种方式,差别在于:工程范式聚焦线性确定性问题的软件开发,通过强组织模式实现高效群智“汇聚”,几乎放弃对不确定性问题的关注;开源范式则全面拥抱不确定性,通过开放共享实现高效的群智“激发”,但对结果不做确定性承诺。群智范式关注的核心问题是:面对不确定的世界,如何高效激发和汇聚群体智能,以实现软件的持续演化,主动适应变化的世界。
群智范式强调群智的激发与汇聚,其核心理念可以简单概括为:宏观演化,微观求精。在宏观(长期)尺度上接受世界的不确定性,以演化论为指导,自觉将软件核心开发者、外围软件涉众,以及软件所处的社区生态视为有机整体,持续激发各类群体围绕软件项目进行自由创作;在微观(短期)尺度上,即在软件长期演化进程的具体阶段, 坚持机械论原则,明确阶段性里程碑任务的需求规范(以下简称“里程碑”),以软件开发小规模核心团队为主力军,采用逐步求精的思路组织任务规划实施。
在“宏观演化,微观求精”的核心理念下,群智软件的开发方法可以概括为“两个连接,一个转化”,即连接核心团队与外围群体,连接自由创作与规范生产,实现原型作品与原型版本之间的转化。
“核心团队”和“外围群体”代表了软件开发生态中两类典型软件参与群体,核心团队通常是软件项目的创始团队、管理团队和核心参与者,主要是初始创新作品的发起者、里程碑和原型版本的发布者;外围群体则是参与软件项目的其他大规模利益相关者群体,在软件迭代演化过程中贡献需求和代码等。随着软件的迭代演化,核心团队负责软件演化过程中的里程碑规划决策、核心功能开发、吸纳汇聚“外围群体”贡献的疑修(Issue)或代码、发布新的原型版本。
创作与生产是群智范式下软件开发活动中两个相互交织快速迭代的过程。在需求不清晰、任务不明确时,核心团队通过发布原型版本吸引并激发“外围群体”的灵感,收获并评估外围群体的贡献,参与软件集体创意;在阶段性里程碑明确后,核心团队采用规范化的组织模式快速推进研发任务,基于集成部署和自动化测试等机制生成高质量的软件原型版本。
原型作品和原型版本是群智范式下软件开发活动中两类典型的软件制品。原型作品通常是灵感驱动下的创意捕获和表达,具有不可预期性和多样性;原型版本则通常是在阶段性里程碑驱动下,按照工程范式开发产生的软件原型版本,具有确定性和明确的评判标准。群智范式关注在连接“外围群体”创作活动与“核心团队”生产活动的基础上实现这两类软件制品的“转化”。
群智范式下的软件项目及其社区生态是大规模软件涉众通过“两个连接、一个转化”的群智协作不断形成满足阶段性里程碑的原型版本,然后在大范围应用中获取新需求进而迭代演进形成持续循环,其开发过程遵循“持续需求获取、持续协同开发、持续在线演化”的持续迭代演进模型。
在需求获取环节,外围群体使用软件服务新版本,发现软件问题、特征需求等并报告给软件的核心团队,核心团队对疑修有效性进行确认并将相关的疑修加入到对应的里程碑中;在协同开发环节,外围群体通过复刻(Fork)获得派生仓库并进行代码创作,并通过合并请求(Pull Request)将作品提交给核心团队进行审查,核心团队对作品进行评审并将符合标准的代码合并进项目的主版本库;在持续在线演化环节,核心团队将软件的最新代码进行持续部署并适时发布具有里程碑意义的原型版本,外围群体自由下载使用并对软件进行反馈评价,驱动软件项目的进一步迭代演进。
工程范式、开源范式与群智范式这三种范式的产生和发展虽有时间先后顺序,但在实践中三者不是完全替代关系,工程范式与开源范式在很多场景下行之有效并被广泛实践。群智范式不是对前面两个开发范式的否定,而是希望在工程范式与开源范式之间找到平衡点,结合时代特点与应用场景指导我们的软件开发实践。
共同推进群智范式落地
实践群智范式是一个软件开发的新范式、新理念、新方法和新模型,试图为人机物融合泛在计算时代软件开发提供新的认知和方法指导。但群智范式不止于此,还将进一步沉淀形成支持群智范式理念、方法和模型物化落地的面向群智范式的软件开发平台,并且其本身也采用群智范式的理念和方法来推进平台项目的建设,力图联合多方力量合力打造支持群智软件开发的新型基础设施。
自2006年以来,我们立足于工程范式和开源范式,持续深入地研究群智范式,在国家持续支持下形成了“Trusite确实”技术体系,并建设运营了“Trusite确实”系列工具平台,开展面向群智范式的软件开发平台探索与实践。2023年6月,中国计算机学会联合开放原子开源基金会、开源中国等学术界、开源组织及产业界的力量共同发起“群智范式”平台项目,希望将群智范式的核心理念、开发方法等物化为基础平台的机制和能力,共同建设面向群智软件开发的新型基础设施,力图为我国群智生态构建与发展提供支撑。
群智范式项目的总体建设思路是,合力建设开放可扩展的高性能共性能力基础内核,围绕共性能力基础内核拓展形成项目群,进而支持多领域服务平台的建设和运营。在能力建设方面,群智范式平台项目将重点围绕基础服务、生产关系重构、组织模式重构和生产力工具研发四个方面进行推进。
我们借鉴市场经济中股权激励思想,运用区块链技术设计基于知识产权共享的群智持续激励机制,实现对群智范式下外围群体与核心团队间的生成关系重构,实现对大规模群智的激发与汇聚;围绕外围群体与核心团队的连接、软件创作与规范生产的连接、软件作品与原型版本的转化研发相应支撑工具和服务,从而实现对连接协作组织模式的重构;关注AI驱动的智能化软件开发工具/服务以及云原生开发运维一体化工具/服务等工具研发,从而提升群智软件开发的生产力。
群智范式为我们应对未来不确定性世界的软件开发提供了理论和方法指导,希望联合国内学术界和产业界力量一起合作,共同推动这样一种新范式的落地实践。