扫码阅读
手机扫码阅读

“软件工程3.0”之下软件开发范式

655 2023-07-13
写这篇文章时,我就一直在想:“软件开发模式” 和 “软件开发范式” 应该用哪一个?后来决定用现在这个题目,即谈谈 “软件工程3.0”之下软件开发范式,是因为基于 “模”、“范”两字的来源:青铜器的一种铸造方法(模范法)。追溯起源,回归本质,从而我们对“模”、“范”有着更真实的理解:
  • :事物的大致模样、标准样式;
  • :虽然不是事物本身,但是它决定了事物的模样。范式为具体事物定义了轮廓、边界、规则等。
这样是不是可以推出下列这样一个在软件开发中的示例?
  • 设计模式:定义程序的基本结构。
  • 设计范式:不定义程序的基本结构,但是制定各种规范,最终影响到程序结构。

所以从软件工程角度看,我们更应该讨论软件开发的范式,而不是软件开发的模式,即我们要讨论如何高效地构建出高品质软件的内在逻辑、原理或规则。而且,在大模型这样革命性的技术到来时,不只是改变软件研发外在的东西,而是会引起软件工程的深刻变化,改变软件开发的内在因素,从而产生新的软件开发范式。
范式转变(paradigm shift)是由美国物理学家和哲学家托马斯·库恩(Thomas Kuhn)在其著作《科学革命的结构》中引入、之后开始流行的科学哲学概念:范式转变是一门科学学科的基本概念和实践的根本变化。尽管库恩将这一术语的使用限制在自然科学领域,但范式转变的概念也被用于许多非科学环境中,以描述基本模型或事件感知的深刻变化。当常规科学运作的主导范式与新现象不相容时,范式转变促进了新理论或新范式的采用。在库恩的观念中,范式是指某一科学共同体的成员所共有的东西,如所共有的技术、专利和价值观等,而规则可以从范式中推导出来。
在过去三十年,人们对软件开发范式进行了比较多的研究,例如:
  • 1994年:The Shifting Software Development Paradigm(Richard J. Welke,Georgia State University),谈到从基于工艺(craft)的结构到基于市场的、基于产品的方法的范式转变;
  • 2000年:A Framework Analysis of the Open Source Software Development Paradigm(Joseph Feller, Brian Fitzgerald, University College Cork;ICIS 2000 Proceedings)讨论开源软件范式;
  • 2010年:Actual Paradigms of Distributed Software Development: Services and Self Organization(分布式软件开发范式:服务及自我组织)
  • 2021年5月底,中科院院士王怀民老师 以“软件开发范式的变革”为题(文章发表在2022年第2期《中国计算机学会通讯》,围绕工程范式、开源范式和群智范式,详细阐述、比较了三次软件开发范式,从个体创作到规模化生产、从规模化生产到大规模创作以及从大规模创作到群智开发的变革历程,试图从已经发生的两次软件开发范式变革和正在发生的新的软件开发范式变革出发,认识软件开发技术发展规律,探讨软件如何定义未来。
来源:2022年第2期《中国计算机学会通讯》
此外,也有其它文章提到面向对象的范式、函数范式和逻辑范式等
那么软件程3.0之下软件开发的新范式是什么?
我们回到之前的文章《GPT-4 开启 “软件工程3.0” 全新时代》,重新认识一下软件工程3.0。为此用一张简表,针对软件工程1.0、2.0和3.0进行详细的对比分析,让我们更好地认识软件工程3.0,帮助我们揭示软件工程3.0的开发范式。
(这张对比图还在不断完善中... 需要说明一下,在现实中,多种生态会同时存在,有些企业处在软件工程2.0时代,但有些企业还处在软件工程1.0时代,甚至软件工程1.0都做得不够好。另外,由于篇幅所限,表格中所填的内容是主要特征,即占主导、主要成分的内容,其它次要的成分被忽略了
首先,我要点明软件工程3.0 的软件形态软件即模型(Software as a Model,SaaM),这个模型不同于过去软件工程1.0 或 软件工程2.0时代所谈到的抽象模型(如UML中的模型、Object Management Group(OMG)所提的模型驱动架构(MDA)中的模型),而是深度神经网络模型、语言大模型(LLM)或其它人工通用智能(AGI)模型——可以直接给人类提供服务的模型。对于大型企业一般会选择训练、精调自己领域的AI大模型,中小企业调用专业公司所提供的大模型服务接口。软件会以这类AI大模型的形态存在,为用户提供各种各样的服务,而且成为未来的一种常态。
软件工程3.0 的开发范式会在一定程度上包含了工程范式、开源范式和群智式,例如有开源的模型LLaMA、ChatGLM-6B、Alpaca,人们通过开源范式来维护这些模型或开发新的模型(软件即模型,开源模型其实就是开源软件);同时,大家一起上线使用chatGPT,进一步优化模型,相当于通过群智式来提升模型(MaaS)的能力。但基于SaaM这样一个形态,软件工程3.0 的新开发范式是什么?软件工程3.0 开发范式可以概括为:
大模型 + 提示工程 + 知识工程 + 人机调度枢纽 
 欲知详情,请参加QECon2023 大会深圳站:
原文链接: https://mp.weixin.qq.com/s?__biz=MjM5ODczMDc1Mw==&mid=2651856720&idx=1&sn=5d25dc8734174f869b4049fcfbf9a7bb

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

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