写点什么

软件工程的第四个十年,变革来临了吗?

2010 年 11 月 29 日

Jean Bezivin, Nantes 大学的名誉教授,在他最新的博客中,回忆了软件工程过去四十年的历史,因为他相信颠覆的时刻即将到来。Jean 认为软件工程已经发生了三次巨变:

第一次巨变在 1968 年 10 月的 Garmisch NATO 会议上已经讨论过了。复杂系统中所浮现出来的问题迫使我们认识到独立程序员时代已经结束了,将来的目标是“超过 3 万个指令的大型系统,由超过 25 个程序员在 6 个月(甚至更长)的时间内完成,并且由多层组织架构的人员来管理。

第二次巨变出现在 80 年代初期,编程范式从过程式编程到面向对象编程的转变。

第三次巨变是由 2000 年 11 月召开的 OMG MDA 创始会议所触发的。

每次巨变都有相同的特征:当我们使用熟悉的经验和方法来处理行业里的问题时,已经显得力不从心了。比如说,当面向过程的编程语言不能很好地描述现实世界的境况时,面向对象的编程语言出现了,它能够保证大型软件系统的可重用性,并且可以确保软件架构的稳定性。

现在,Jean Bezivin 教授看到了一些可能重新定义软件工程的因素逐渐浮出水面。比如说“最终用户也可以是程序员”、软件工程任务的特化;大量的应用程序能够快速地抢占市场,我们称之为应用程序商店(比如说 Apple, google 等)、技术解决方案层出不穷的多样性、应用程序能够在适当成本基础上追求互操作性的需求、新的技术演进(例如云计算)等。他认为我们正在向一个新的世界迈进:

将来会有大量、飞速演变、相互影响的应用程序。这些应用往往是由不同的程序员使用不同的编程语言来完成的,并且他们往往不会使用传统的软件开发周期。每一个应用都会拥有特定的数据模型,状态模型和事件模型。

为了预测这个革命性时刻的到来,他给出了一个提示:

无论是实践还是技术变革,变化的总是与语言相关的那些东西,因为软件工程的实践与理论核心是语言工程。

最后,他指出了当今编程语言未来可能的发展方向,以此作为总结:

关键问题在于专业人员与作为最终用户的程序员之间的协作,但我们是否需要为最终用户开发出一套专用的软件工程实践?

文本形式的编程语言非常重要,但现在很多可视化的编程语言也渐渐出现了。这些语言提供了抽象语法,同时还带有各种具体语法,这包括文本形式的,表格形式的和可视化形式的。此类语言并非仅仅由语法来定义,还包括元模型(metamodel),模式(schema)和本体(ontologies)等等。

相对于发明新的编程语言来说,真正的难点在于如何在各种领域特定语言(DSLs)之间建立一种精确,可操作的语义关系,这构成了 21 世纪全新软件工程实践的核心。总之,编程语言之间的互操作性将是相应领域的重要组成部分。

软件工程的变革是否已经让我们等待太久了?如果答案是 Yes 的话,那么它已经开始了吗?5 年后的软件工程将会是什么样的?让我们拭目以待。

查看英文原文: Four Decades of Software Engineering, are Changes Coming?

2010 年 11 月 29 日 06:262606

评论

发布
暂无评论
发现更多内容

ONES 收购知名协作工具 Tower

万事ONES

团队协作 高效 研发管理工具 收购 资讯

英特尔神经拟态生态系统发展和研究的最新进展

intel001

ONES 收购 Tower,五源资本合伙人对话两位创始人

万事ONES

项目管理 团队协作 ONES Tower 收购

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作平台官方

话题讨论 活动专区

技巧收藏|10个JavaScript常用数组操作方法

华为云开发者社区

Java 数组 开发

架构师训练营第 11 周课后练习

叶纪想

极客大学架构师训练营

英特尔发布第二代Horse Ridge低温量子控制芯片

intel001

架构师训练营第 1 期 -week11

习习

IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

YourBatman

IDEA 新特性 2020.3

javascript开发后端程序的神器nodejs

程序那些事

Java nodejs 后端开发 koa 程序那些事

关于binlog,这个参数能不能用?

Simon

MySQL Binlog

【技术分享】浅谈RTC及Agora RTC SDK集成介绍

邵帅

给你一个亿的keys,Redis如何统计?

不才陈某

redis

想了解任务型对话机器人,我们先从自然语言理解聊起

华为云开发者社区

人工智能 机器人 自然语言

接口测试怎么进行,如何做好接口测试

测试人生路

软件测试 接口测试

讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer

比伯

Java 编程 架构 面试 计算机

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

PostgreSQLChina

数据库 postgresql 开源

训练营第七周作业

大脸猫

极客大学架构师训练营

《技术男征服美女HR》—Fiber、Coroutine和多线程那些事

太白上仙

Java 程序员 面试 后端 多线程

加码线下,新荣耀“破题”场景经济

脑极体

Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)

linux大本营

c++ Linux 后台开发 架构师

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

996小迁

Java 架构 面试

腾讯大牛整合Java+spring5系统学习架构,神乎其技

小Q

Java 学习 编程 面试 spring 5

一个真正0基础小白学习前端开发的心路历程

华为云开发者社区

开发 开发小白 0基础

英特尔推动集成光电的发展,用于数据中心

intel001

国产电子表格Luckysheet后台也开源了!支持在线协作,一键docker私有部署

奇异石榴果

Java Excel SpreadJS 表格控件

即使不会node.js,拖拽就可完成数据的可视化展示

华为云开发者社区

node.js 数据 可视化

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

徐小夕

css3 前端 前端工程 CSS小技巧

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 微软 自动化 自动化测试 playwright

性能压测

jorden wang

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

软件工程的第四个十年,变革来临了吗?-InfoQ