GPT-4 开启 “软件工程3.0” 全新时代

文章最早发表于我自己个人公众号 软件质量报道

希望这篇文章 成为 “软件工程3.0” 开创性的宣言。

为了定义 “软件工程3.0”,让我们先定义 “软件工程1.0”、 “软件工程2.0” 。先简单说明一下,用软件版本号的方式 “1.0、2.0、3.0” 来分别定义第一代、第二代、第三代 软件工程,符合软件工程的习惯,而且简洁明了。

1. 软件工程 1.0

“软件工程1.0” 即第一代软件工程,自然是受建筑工程、水利工程等影响的传统软件工程,它的诞生可以追溯到1968年。在上个世纪五、六十年代软件出现危机,大家还记得布鲁克斯(Frederick P. Brooks)在《人月神话》一书中所描述的场景:软件开发被喻为让众多史前巨兽痛苦挣扎,却无力摆脱的焦油坑。

软件危机迫使人们去寻找产生危机的内在原因,进而找出消除危机的解决方案。面对”软件危机”,人们调查研究了软件开发的实际情况,逐步认识到采用工程化的方法从事软件系统的研发和维护的必要性。为了克服这一危机,大家走到一起,共同探讨以获得问题的解决途径,于是在1968年NATO的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,正式提出了“软件工程”(software engineering)这一术语,从此一门新的工程学科诞生了,软件工程才得以不断发展,逐渐成熟起来。

传统软件工程主要向土木工程、工业工程学习,吸收其百年实践积累下来的实践方法和经验、沉淀下来的思想。软件工程1.0体现了下列一些特征:

  • 产品化:交付符合质量标准的组件、构件和系统

  • 过程决定结果:流程质量决定产品质量,一环扣一环,相信良好的过程产生良好的产品,关注过程胜过关注人,也非常关注过程评估和过程改进,如CMM(过程成熟度模型)是其典型代表。

  • 阶段性明确,需求评审通过了,才能开始设计;设计评审通过了,才能开始实施(编程),编程结束了再进行测试等,如瀑布模型是其典型代表。

  • 责任明确:角色定义清楚,分工细致;

  • 文档化:强调规范的文档,大量的文档模板;

  • 计划性强:完整的计划,严格控制变更;

  • 建筑工程的框架结构设计,在软件工程上表现为以架构设计为中心。

  • 现代制造业流水线的启发——软件工厂思想。

  • 注重项目管理:围绕项目开展管理工作,包括风险预防、里程碑控制和关键路径法等。

  • 以顾客为中心的全面质量管理。

  • 预防为主,检验为辅,即缺陷预防思想。

2. 软件工程 2.0

在2008年,我写的《软件工程导论》中,相对传统软件工程,我定义了现代软件工程,那时,我没能预见到今天人工智能的巨大力量。15年后,我将受互联网、开源软件运动、敏捷/DevOps开发模式所影响并最终形成的、建立在SaaS(软件即服务)、Cloud之上的软件工程定义为 “软件工程2.0”。

没有互联网(Internet),就没有Cloud、没有SaaS,我们对软件就不能部署在软件研发公司自己的数据中心,持续交付(CD)就没有意义,因为无法做到将包装盒形式的软件产品持续交付到客户手中,敏捷、DevOps也就难以实施,虽然可以在内部实现持续集成(CI),其价值会降低不少。

开源软件运动让我们认识到 “软件过程”、“软件管理”不是非常重要,至少不是第一要素,第一要素还是人,其次是软件架构(微服务、serverless等)和代码质量,使软件容易演化(如架构可扩展性、代码的可维护性)。而且客户或用户始终希望我们能够按时交付高质量的产品,又认可软件的灵活性,希望软件能够具有随需应变的能力,及时进行必要的修改来满足业务的新需求。同时,软件又是一种知识型产品,需要创造性,并依赖每个研发人员的创造力和积极性。所有这些引导人们新的思考,引导人们不断认识软件工程,从而在2001年17位软件开发轻量型流派掌门人联合签署了敏捷宣言:

之后逐渐形成了敏捷/DevOps开发模式、精益软件开发模式等,即让软件工程进入2.0时代。软件工程2.0的特征可以简单概括为下列几点:

  • SaaS(软件即服务):软件更多是以一种服务存在;

  • 以人为本:个体与协作胜于流程和工具,充分发挥个人和团队的创造性和潜力;

  • 拥抱变化:敏捷开发或轻量级过程,加速迭代,以不变应万变。

  • 持续性:阶段性不明确,持续构建、持续集成、持续测试、持续交付,以时间换空间,消除市场风险;

  • 融合:强调测试开发融合,开发与运维融合,推崇全栈工程师等。

  • 真正把用户放在第一位:用户、产品经理尽可能参与团队研发过程中,注重用户体验,千人千面;

  • 强调价值交付:只做对用户有价值的事情,加速价值流的流动;

  • 知识管理,将软件工程纳入知识管理的范畴。

  • 史诗般故事、用户故事、站立会议,让软件研发工作更有趣、更健康。

  • ......

3. 软件工程 3.0

在技术突破和创新方法的推动下,软件工程的世界发展越来越快,而最近的突破就是GPT-4等人工智能(AI)语言大模型的出现。GPT-4出来了,大家都很震惊,尤其惊讶于从GPT-3到GPT-4的进化速度。GPT-4是一种基于RLHF(人类反馈强化学习) 、多模态的语言大模型,它比其前身GPT-3.5有了显著的改进,GPT-4具有强大的识图能力、文字输入限制提升至 2.5 万字、回答准确性显著提高。因此GPT-4能够执行一系列复杂的任务,如代码生成、错误检测、软件设计等。正如文章谷歌工程主管:程序员的职业生涯将在 3 年内被AIGC终结 中的观点: “ChatGPT和GitHub Copilot预示着编程终结的开始”、“这个领域将发生根本性的变化”、“当程序员开始被淘汰时,只有两个角色可以保留:产品经理和代码评审人员。”...... 这篇文章是在GPT-4发布前写的,而GPT-4要强大多,所以对软件研发的影响更为显著。

考虑到它的发展速度,在不久的将来,甚至从今天开始,AI就开始逐渐接手一些软件研发的工作,我们通过将GPT-4+(指GPT-4及其未来升级的版本)融入到软件研发生命周期中,研发人员的使命发生变化,GPT-4+重新定义了开发人员构建、维护和改进软件应用程序的方式,之后的软件开发会依赖这种全新的语言交流方式(类似chatGPT那样),让这类工具理解研发人员交待的任务、自主完成软件开发,如理解需求、自动生成UI、自动生成产品代码、自动生成测试脚本等。此后,研发团队的主要任务不是写代码、执行测试,而是训练模型、参数调优、围绕业务主题提问或给提示(prompt)。因此,我们说GPT-4将开启 “软件工程3.0” 新时代,今年是软件工程3.0元年。

先看看 GPT-4自己是如何说的,但经过我简单的实验,它能做的事比它自己说的要多。

下面,一方面我会展示GPT-4目前在软件研发所能做到的一些事情(这里要感谢海外朋友Huan、Christina的帮助),然后我们再顺着这条思路想象一下软件工程3.0是怎样的一番景象:之前一些大厂有好几万的研发人员,未来只有几千人,但可以借助其强大的私有云平台,软件研发效能真正实现10倍增长,降本增效将不再是公司的核心问题(因为已经得到解决了)。

1)GPT-4在需求分析上无所不能

你觉得它吹牛吗?不,它可以基于我们简单的描述,帮我们完成基本功能分析,也可以基于需求生成验收标准、生成测试脚本,根据需求验收标准生成BDD(行为驱动开发)标准的Gven-When-Then格式。这一切有下图为证。

2)软件设计与体系结构

GPT-4的强大功能扩展到软件设计和架构,可以帮助开发人员做出明智的决策并制定健壮的解决方案。通过处理所需应用程序的高级描述,GPT-4可以提出合适的设计模式,推荐最佳实践,甚至建议最佳的体系结构选择。此级别的指导使开发人员能够创建可伸缩、可维护和高效的软件解决方案,以满足他们的特定需求。此外,GPT-4可以促进不同设计选项的评估和比较,确保开发人员选择最合适的演化路径。

(这部分实验目前不好做,后续再补充)

3)代码生成

GPT-4能根据自然语言输入的需求及其上下文而生成代码,而且可以用不同的编程语言生成相应的代码。这一强大的特性减少了人工编码所花费的时间和精力,并支持快速原型化和概念验证开发。此外,GPT-4能够生成代码段、api,甚至整个软件模块,使开发人员能够轻松地创建复杂的应用程序,甚至可以帮助我们按敏捷开发模式推崇的TDD来完成代码的实现(周五会有单独文章介绍,敬请关注)。

(来自:https://www.youtube.com/watch?v=lomBKUojSIU,这类例子很多)

4)测试代码生成

感谢SauceLabs已经帮我完成这部分实验(见文章:https://saucelabs.com/resources/blog/chatgpt-automated-testing-conversation-to-code),我们可以让GPT-4生成Google站点测试的脚本。虽然提示中没有明确说明要在网站上测试什么,但ChatGPT仍然生成了一个脚本来测试谷歌网站的主要功能 之一“搜索功能”,甚至正确地识别了谷歌搜索栏的名称“q”。进一步,我们可以指示ChatGPT为元素定位器使用页面对象模型和类变量,指示ChatGPT可以生成与某工具平台(如Sauce Labs)兼容的测试脚本。

更进一步,消除测试脚本中的硬编码(如URL、用户名“username”和密码“password”),从场景中的特性文件中获取变量,使脚本更容易维护,这时可以让ChatGPT修复这类问题。

5)错误检测和解决

GPT-4在代码分析和理解方面的能力使其成为检测和解决软件应用程序错误的、有价值的工具。通过仔细检查代码片段和理解上下文,GPT-4可以识别错误,建议最佳解决方案,甚至为现有问题生成补丁。这种功能极大地加快了调试过程,并确保软件产品更加可靠和安全。此外,GPT-4可以与持续集成和持续部署(CI/CD)流水线集成,以增强自动化测试并促进无缝地持续交付软件。

6)协作和知识共享

在当今快节奏和相互关联的开发环境中,协作和知识共享比以往任何时候都更加重要。GPT-4通过在团队讨论、头脑风暴会议和代码审查期间提供实时帮助,形成会议纪要、总结,甚至理清楚逻辑,发现问题,提供有价值的见解,建议替代方法,甚至从其庞大的知识库中提供相关示例。这种人工智能驱动的协作提高了团队生产力,培养了持续学习的文化,并为创新铺平了道路。这类例子,可以在 GPT-4 震撼发布:能看图、能当律师、更安全、更有创意... 超过了其它大模型 一文中找到。

结语

总之,GPT-4+的引入,从而支持更智能、更高效和协作的开发方法,使软件工程领域发生革命性的变化。当我们进入软件工程3.0时,软件开发的范式将发生很大的变化,软件研发人员的工作方式发生变化,对软件人员的要求更多体现在对业务的深度理解、系统性思维、逻辑思维等方面。软件工程 3.0的体现了下列一些特征:

  • 数字化:软件研发平台开始能够理解需求、设计、代码等,软件研发从过去的信息化进入数字化时代;

  • AIGC:生成软件(software)的各种ware:验收标准、测试用例、UI、代码、测试脚本等;

  • 极致的持续交付:虽然软件工程2.0开始面向CI/CD,但还存在许多障碍,而在软件工程3.0,得益于设计、代码、测试脚本等生成,可以真正实现持续交付,即及时响应客户需求,交付客户所需的功能特性;

  • 人机交互智能:软件研发过程就是人与计算机的交互过程;

  • 以模型和数据为本:研发人员服务于大模型和大数据平台,包括模型创建、训练、调优、使用等;

  • ......

通过利用GPT-4+的力量,同时解决安全、法律、伦理等方面的问题和挑战,软件工程的未来将是光明和创新的。

参考:

  • GPT-4 震撼发布:能看图、能当律师、更安全、更有创意... 超过了其它大模型

  • 谷歌工程主管:程序员的职业生涯将在 3 年内被AIGC终结

  • 编程的终结:经典计算机科学的末日即将来临

  • 华为发布函数级代码生成模型PanGu-Coder,在中文上表现也十分出色!

  • BizCook 系统:首个用于工业开发的自动代码生成系统

  • 未来十年软件工程的新技术、新趋势和新挑战

  • Gartner 2020年十大技术趋势之一:超级自动化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/62218.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国内首个低代码结合GPTChat实现AI自动建模与图形化编程

一、AI时代来势汹汹 整个3月,互联网行业似乎已经感受到了一股新的力量正在崛起,以ChatGPT为代表的AIGC势力,正在以风起云涌之势快速登场。 从OpenAI放出ChatGPT-4的模型短短一周内,Google、微软相继也召开了自己的发布会推出了自…

CSDN创始人蒋涛出席2021 中关村论坛,启动“科创中国”开源创新榜单评选

近日,2021中关村论坛–开源创新发展论坛在北京中关村成功举办。论坛由中国科学技术协会、北京市人民政府共同主办。论坛上,“科创中国”开源创新联合体副秘书长、CSDN创始人&董事长蒋涛正式启动了开源创新榜单评选活动,并参与了“中国开源…

硅基仿生业务全面 Serverless 容器化,14万+问答库助力糖尿病科普

作者:宁佑章(硅基仿生科技)、元毅(阿里云容器服务) “使用阿里云容器服务 Knative,解决了开发迭代慢的问题,加速了深度学习模型的性能提升;同时提供了弹性可伸缩的资源配置&#xf…

地球生命为啥只选择碳基生命,而不是硅基生命呢?

相关文章 人人都是人生顿悟者,不惑知天命- 人和需求篇 人的意义_个人渣记录仅为自己搜索用的博客-CSDN博客 什么是科学 人人都是价值观-思辨专家_个人渣记录仅为自己搜索用的博客-CSDN博客 作者:程亦之 链接:https://zhuanlan.zhihu.com/p/27534210 来…

《硅基物语.AI大爆炸》——AIC松鼠活动第四期

简介: 一个 AI 的自白,以第一人称视角,通俗易懂地讲述 AI 的来龙去脉,生动活泼地表达 AI 的技术原理。从历史到未来,跨越百年时空;从理论到实践,解读AI大爆炸;从技术到哲学&#xf…

【2021-12-04】小红书x-sign逆向分析记录

改版了 ,失效了 此次研究的是小红书小程序版本,通过抓包工具fiddler可以获得它有一个加密参数x-sign: 从长度可以看出来,是一个md5加密,authorization是一个账号凭证,具有唯一性,User-Agent需要使用小程序版本的UA,以下是本人自己收集的UA,仅供参考: M…

实操指南|如何通过大数据助力小红书爆文打造?

前言 上篇关于品牌种草如何挑选优质达人的文章发布后,公众号后台很多品牌方留言,达人我们选好了,达人的笔记内容该如何写呢?如何才能让所选的达人写的笔记成为爆文,获得平台更多的流量推荐?互动量达到多少…

小红书很难爬?最新爬取方法教给你啦~

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书 今日鸡汤莫学武陵人,暂游桃源里。Python进击者 第184篇原创文章前言 大家好,我是Kuls。 之前写的那篇App抓包软件charles的配置说过&#xff…

CSDN网站个性化推荐功能测试

本博客是为了完成这个找 bug 号召: https://bbs.csdn.net/topics/614134877而发布的。 我的测试环境是:Microsoft Edge 114.0.1823.43 (正式版本)(64位)非无痕模式 测试场景之一:兴趣标签 场景1.1 添加兴…

黄仁勋:英伟达收购 ARM 是谣言,下周发布会有惊喜

By 超神经 内容提要:近期,英伟达发布了第二季度财报,业绩喜人,再创新高。公司 CEO 黄仁勋随后还接受了 Venturebeat 旗下游戏频道 Gamesbeat 的记者采访,就英伟达目前现状、游戏行业发展等发表了自己的见解。 关键词&a…

英伟达真假黄仁勋疑云

作者 | 祝涛 出品 | CSDN(ID:CSDNnews) 近日,在计算机图形顶级会议ACM SIGGRAPH 2021上,英伟达介绍了公司研发的3D仿真模拟和协作平台Omniverse,并详细解释了数字假人黄仁勋的打造过程。难道英伟达今年4月…

真假黄仁勋疑云?英伟达推出全球首个元宇宙平台

【编者按】近日,在计算机图形顶级会议ACM SIGGRAPH 2021上,英伟达介绍了公司研发的3D仿真模拟和协作平台Omniverse,并详细解释了数字假人黄仁勋的打造过程。难道英伟达今年4月的主题演讲是由“假黄仁勋”主持的?对此,英…

英伟达国内版 A800 来袭,为了赚钱黄教主拼尽全力!

近来,英伟达推出专供中国市场使用的A800系列显卡。作为A100的替代,A800符合美国政府对减少出口管制的明确测试,并且不能通过编程来实现性能超越。 另辟蹊径:没有A100,但可以有A800 ​美国对中国进行核心技术防备也不…

英伟达发大招 黄仁勋:生成式AI唯一限制是人类想象力

雷递网 雷建平 3月22日 ChatGPT仅是一个起点。 英伟达(NVIDIA)创始人兼首席执行官黄仁勋说,计算正在以“光速”发展。黄仁勋于今日宣布与谷歌、微软、Oracle等一众领军企业开展广泛的合作,为各行各业带来新的AI、模拟和协作能力。…

英伟达曝光超级芯片 黄仁勋:AI已重塑计算机产业

5月29日,英伟达再曝新品“NVIDIA DGX™超级计算机”,为生成式AI语言应用、推荐系统和数据分析工作负载的巨型模型提供硬件支持。 该计算机的核心组件是已经全面投产的英伟达Grace Hopper超级芯片——2000 亿个晶体管,在同一封装内集成了72核…

黄仁勋误入直播被当“路人”,英伟达粉丝都乐疯了

作者|李禾子 邮箱|lihezipingwest.com 黄仁勋,大名鼎鼎的芯片巨头英伟达CEO,硅谷最炙手可热的男人,最近出现在了台北街头两个女主播的直播间里。 不是宣传产品,不是接受访问,而是纯纯地路过被…

谷歌开源Live Transcribe语音识别转文字工具

8月18日,Google宣布开源Android语音识别转录工具Live Transcribe的语音引擎。 这家公司希望这样做可以让任何开发人员为长篇对话提供字幕,减少因网络延迟、断网等问题导致的沟通障碍。源代码现在可以在GitHub上获得。这意味着无论你是出国或是与新朋友见…

python简单实现文字转语音,语音识别

直接语音合成 需要安装 pip3 install pyttsx3 pip3 install pypiwin32 安装pyttsx3的时候出错,结果重装了一次python才行。。。 tips:最后本人安装的版本是3.6 import pyttsx3 # 初始化 engine pyttsx3.init()engine.say(我要开始语音合成) engine.say(好好学习&am…

语音识别(语音转文字) 语音合成(文字转语音)

【语音合成API】SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音.也包含一些配置项,指定如何去阅读(语言,音量,音调)等 // 语音播报speek (content) {let message new SpeechSynthesisUtterance()message.text contentmessage.lang zh-CNmessag…

手把手使用Python语音识别,进行语音转文字

目录 0. 太长不看系列,直接使用 识别结果 1. Python调用标贝科技语音识别接口,实现语音转文字 1.1 环境准备: 1.2 获取权限 1.2.1 登录 1.2.2 创建新应用 1.2.3 选择服务 1.2.4 获取Key&Secret 2. 代码实现 2.1 获取access_to…