软件工程的第四个十年,变革来临了吗?
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?