现在的位置: 首页 > 综合 > 正文

从人类的发展史看软件及软件工程的未来

2013年09月05日 ⁄ 综合 ⁄ 共 8738字 ⁄ 字号 评论关闭

从人类的发展史看软件及软件工程的未来

摘 要: 透过人类数千万年的发展史,可以看到一条清晰的、刻在时间轴上的演变脉络。该脉络不仅诉说着人类过去的发展,而且也指出了人类命运的走向。软件和软件工程作为人类历史发展过程中出现的一种重要工具,自然也会在在这条脉络中留下自己的痕迹,而这条演变脉络对人类命运走向的指导作用自然也适用于软件与软件工程。本文正是从这个广阔的视角去看待软件与软件工程的未来与前景,并对此进行一点粗浅的探索。

关键词: 软件,软件工程,人类,发展史

See the Future of Software and Software Engineering through Human History

(School of Software, Shanghai Jiao Tong University, Shanghai 200240, China)

Abstract A careful examination of human history reveals a clear thread of human development. Carved on the limitless time line, this thread not only records the past process of human evolution, but also points out the direction of human
destiny. As important inventions and tools, software and software engineering also leave her trail in this human development thread. Thus, we can look at software and software engineering from the perspective of human evolution history and gain some unique
insights.

Key words Software, software engineering, human history

 

 

1. 引 言


国内外的相关机构预测软件工程的未来时,通常会基于现状和未来的趋势来进行研究。而面对现今世界纷繁复杂的技术与框架,这种基于现状的研究方法面临着重重困难,而想要对软件工程的走向进行准确定位则更具挑战性。

本文认为有一种方法可以被用来更好地理解软件及软件工程的未来。软件是人类的一种工具,软件工程是人类创造工具的一种体系, 如果将软件工程放入到整个人类的发展史来进行考察,会发现其脉络变得更为清晰和可寻。

在接下来的分析和预测中会贯彻一个基本的链式原则:即人类社会的变化引发软件需求的变化,软件需求的变化引发软件的演化,而软件的演化必然导致软件工程的进一步变化。因此本文会从人类的发展,计算机世界的演化和软件工程的发展这三个方面来对未来进行预测。为便于深入理解,图1给出了整个课题的基本框架。其中,蓝色实线代表链式原则,虚线代表设想,并按章节划为三大部分。

 

图1 课题框架

 

 

 

2. 人类的发展与未来

2.1 人类发展史的启示

整个人类的发展史篇章浩大,不可能一一尽述,本课题的目标是利用关键点来理清发展的基本脉络。表一根据目前被普遍接受的进化论理论,将人类发展史中的一些重要转折点,按照时间顺序,时间差和事件名称列表如下。转折点的筛选原则是促使人类发生重大和深远变革的事件。

表1 人类发展转折点

序号

时间

时间差
(与上一事件)

历史性事件

1

6500万年前

 

恐龙灭绝

2

2500万年前

4000万年

原始猿类出现

3

600万年前

1900万年

非洲南方古猿出现

4

20万年前

580万年

智人出现

5

1万年前

19万年

新石器时代

6

5千年前

5千年

铜器使用

7

1400年前

3600年

铁器使用

8

公元1500年左右

2900年

地理大发现

9

公元1830年左右

330年

工业大革命

10

公元1950左右

120年

信息时代

 

利用表1已经可以初步看到人类发展的一些重要特征。首先,历史性事件发生的时间间隔越来越短,频率越来越快,从千万年到百万年,十万年,再到千年百年级别,加速度异常惊人;其次,1-4这四个事件的诱因在于气候和环境的变化,而随后的5-10这6个事件则归根于人类利用工具的能力发生了巨变。尤其是在1950年后的几十年间,人类更像是进入了一个混沌的世界,从原子弹到登月,从个人电脑到互联网,人类加速进行着一连串的亚重量级的变化,计算机在其中扮演了重要的角色,但主因依然取决于人类利用工具技术的提高。

如果我们进一步地,利用表1,将时间和事件分别做为横纵轴,绘制成图,可发现更多特征。图2是将事件做为横轴,时间做为纵轴绘制成的曲线,曲线在智人出现这一点后几乎变成了一条平行线,这似乎是意味人类的发展在智人出现后已经进入了一种近乎静止的死亡态;

图2 人类发展史I

图3是将时间做为横轴,事件做为纵轴绘制成的曲线,类似地,在智人出现这一点后,曲线几乎变成了一根近乎垂直的直线,这似乎意味人类有可能在未来的某点突然走向崩溃。

图3 人类发展史Ⅱ

但问题显然不是那么简单,对图4的观察发现,(图4)顶部的这条曲线与图2相同,显示在人类进入智人时代后,发展急剧加速,如果仍用千万年的时间尺度来衡量,曲线在时间轴上几乎显现不出任何变化,近乎一根静止的直线。事实上,如果此点之后不变换时间尺度的话,不论人类随后发生多少历史性事件,它们将永远凝聚在智人这一点上,也就产生了图2和图3的停滞和崩溃态。 幸运的是,人类并没有终止在这一点上,而是采用一种逐点深入的模式实现了持续突破。

 

图4 人类发展史Ⅲ

以图4中部这条曲线为例可看到,如果将时间度量单位从千万年缩短为十万年,则在智人这一点上,一个新的空间被打开,由此出现了另一条类似的曲线。同样图4下部曲线显示,在铁器使用后,当人类发展再度进入一个极点时,又一个新的空间被打开,同时度量尺度也从十万年级别进入到千年级别。

 

2.2 人类发展的极限

当人类以缩短发展周期,逐点深入的方式实现持续突破时,也导致了人类的一种宿命── 可以看到,当前随着人类的发展不断加速,历史性事件发生的时间间隔已经从千年级别缩短到百年级别。以这样的趋势,在未来,人类发展周期甚至可以达到年月星期的级别。然而,当人类发展进入到日的级别时,将面临巨大的挑战。想象一下,如果人们每天清晨醒来,都发现社会已经发生一次巨变,而周围的一切都已陌生时,这是怎样一种情景。

再次审视图2,3和4,更深入地去看待这种宿命。事实上, 人类发展的曲线已经揭示了以下几点:

(1) 人类的发展在不断加速;

(2) 在智人出现前,人类的发展有赖于环境和生物体自身的缓慢变化;而在智人出现后,人类的每一次大发展都深刻依赖于创造和利用工具技术的飞跃;

(3) 由于发展的加速,人类的发展是一种极不平衡的模式,在这种模式下,人类多次面临极点,但每次人类成功突破了极点,摆脱了长期衰退和突然死亡的宿命;

(4) 智人出现后,人类的突破遵循同样的模式—即利用工具技术无形中将时间域的颗粒细分,以实现在空间域和对象域的放大和延伸;

(5) 这种模式面临一个严峻的瓶颈,即人类生命体自身的局限,人类的成长遵循着太阳系几十亿年来特有的循环周期,人类在达到月周日级别的发展速度后,生命体本身已经到达一种承受的极限。可以看到,人类孕育新生命是基于年月的级别,而最基本的新陈代谢周期也基于日的级别,这些都是生命体为了适应太阳系和地球的生存环境经过千万年的演化而形成的属性。如果在不久的未来,人类社会突破的时间域颗粒缩小到时分秒,则可能的突破模式有:

a. 生物技术的巨大突破。人类孕育新生命和基本新陈代谢的周期不再局限于年月日,而达到时分秒的级别,这种突破实际上推翻了千万年来的生命体模型,稳定性很难保证;

b. 计算机和人工智能的巨大突破。人类早已意识到自身能力的局限性,而一直试图创造更为完美的类生命体来体现自我的意志,让人类脱身成为新的上帝的角色。计算机机技术给了这种梦想实现的可能性,但毫无疑问,这必须与生物技术有效结合。

c. 人类突破了光速的限制,创造出新的时间概念,时间域不再是人类发展的最大瓶颈。这种突破模式有赖于物理学,计算机技术和空间技术的重大突破,有一定的可能性,但难度很大;

d. 除此之外,还存在另一种可能,即人类社会采用另一种未知的发展模式,而不再过度依赖于工具技术的提高。例如采用崩溃洗盘再发展的模式。

对比人类所创造出的4种革命性的工具:货币, 计算机及其网络,现代交通工具,核武器。后三种工具分别给b,c,d三种突破模型提供了可能性。

 

 

 

3. 软件与软件工程的发展

3.1 计算机及其软件的发展

软件的发展和计算机的演化密不可分,这里分别从三个方面来考察计算机世界的演化史。

 

图5 计算机世界演化史

从图5上可看到:

(1) 在硬件领域,计算机在1971年左右演化到大规模集成电路时,己进入到相对稳定的阶段,计算机的核心元件在随后的繁荣阶段并没有发生革命性的变化,但依靠集成度的提高,在计算能力和存储容量上发生了飞跃,另一个重要的现象是目前的计算机开始出现了种群化差异,巨型化,微型化,网络化,智能化分别用于满足人类需求的不同方面。最后一个特征是,第五六代计算机(光子,超导和神经网络计算机)在经历了二十多年的缓慢发展后,取得了一定的进展,但仍处于实验阶段。

(2) 在计算机和软件语言方面,同样也是在60年代末70年代初开始进入了一个稳定期,结构化程序设计和面向对象语言几乎在同时诞生,并不断发展,并依然占据着整个软件世界的大半江山。同时,一千多种高级语言出现标志着软件语言也出现了种群化的特征,近十年来,软件开发和软件语言出现了几个新的方向:面向方面,模型驱动,面向服务和网络协同,这也是为了满足人类需求的不同方面。

(3) 计算机功能方面的演化则更耐人寻味,最初的计算机和软件只是为了解决计算和数据存储的问题,随后逐步深入到工业和企业管理的每一个角落,随后又进入到个人和娱乐领域,INTERNET的发展则进一步让软件逐步搭建起一个虚拟的世界,事实上,如章节1.2中所提到的,计算机及其软件已经自然而然的开始帮助人类突破下一个时间域的极限,前面所提到的b型突破模型:即计算机与人工智能和生物技术的结合,创造出新的类生命体,很有可能在近几十年内实现。

为了进一步看清计算机及其软件当前所处的阶段,可对比生物界的演化来进行分析。

图6 生物界演化史

对比图5和图6,电子管计算机、晶体管计算机、集成电路计算机可分别对应于生物界的生物单分子、生物高分子和原核生物阶段,最初的大规模集成电路可看作为真核生物,当计算机出现种群化特征时,计算机世界如同生物界向植物和动物过渡一样,出现了多种走向,有巨型,微型,网络和智能各种趋势,但计算机及其软件仍处于多样化繁衍的起点,对比生物界,可看到,计算机及其软件有一个重要的阶段尚需跨越,即无性繁殖向有性繁殖的阶段。

 

3.2 软件工程的发展

进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史。

表2 软件工程过程模型

表2将软件工程的主要过程模型做了一个简要的汇总,并将所有的软件工程模型划分为三大领域和五个阶段,三大领域分别为:

1) 惯例模型:瀑布模型,增量模型,演化过程模型和统一过程模型是其中的代表;

2) 敏捷过程模型:极限编程(XP)是其中的代表;

3) 新过程模型和研究领域:模型驱动开发和云计算是其中的代表;

而在五个关键性阶段中,链式原则贯穿始终。

1) 第一阶段:瀑布模型。软件的工业化和类生命性最终导致了瀑布模型的出现,瀑布模型构建了软件世界中一个最基本的生命周期理念。同时有趣的是,瀑布模型和大规模集成电路、结构化程序设计语言以及面向对象语言一起出现在1970年前后,耐人寻味;

2) 第二阶段:演化过程模型。如同生物的演化并非一蹴而就,成熟的软件也应是通过多个细小的生命循环周期迭代而成,演化过程模型的出现再次验证了软件所特有的类生命特征;

3) 第三阶段:统一过程阶段。 统一过程模型和CMM/CMMI的提出,反映了人类的一个基本需求,即在高速变化的环境中试图追求内部的相对稳定,这同时也标志着软件工程进入到相对成熟和稳定的阶段;

4) 第四阶段:惯例模型和敏捷过程模型并存阶段。敏捷过程反映了人类的另一个基本需求—随变顺变应变。当软件工程演化到这一阶段时,如同生物界和计算机世界演化一样,实际上已经开始显现种群化的特征;

5) 第五阶段:模型驱动和云计算阶段。模型驱动是为了满足软件工业自动化的需求,云计算则基于Internet,强调面向服务与计算资源整合。这两个概念提出已久,而真正启动才刚刚开始,距离成熟有待时日。但也进一步证明了软件工程开始进入种群化阶段。

需要指出的一点是,由于软件工程的发展遵循链式原则,软件工程的发展也总是滞后于软件的发展,通常是在软件的某项语言、技术或工具进入稳定期后,软件工程才会有相应新的思想出现。

例如,软件的高级语言在1954年已出现,而软件工程在1968年才刚刚提出;当软件进入结构化程序阶段时,瀑布模型刚刚显现;当软件面向对象技术逐渐成熟时,演化过程模型开始出现;当面向对象技术开始和网络紧密结合时,统一和敏捷过程才开始出现。

可以预见的是,未来软件发展和软件工程发展之间的间隔会逐步缩短,5-10年的滞后期有可缩短到2-3年。

 

 

4. 软件与软件工程的未来

在完成了对人类社会、计算机世界和软件工程世界的发展历程的分析和回顾后,综合以上的因素,可以对软件和软件工程的未来有一个较为合理的展望。

4.1 种群化与随变

在分析计算机硬件发展,语言发展,软件工程发展时,一个非常明显趋势的是,软件和软件工程都将步入一个种群化的世界。

种群化产生的主要原因,一是人类社会的加速发展导致

需求多样化和外部环境的加速变化,从而产生适应不同需求

和环境的软件及软件工程;二是计算机及其网络承载着人类

是实现时间域新突破的历史使命,从而必然具有类似于生命

体演化的种群性特征。

另一个可能的预期是,随着人类社会变化的进一步加速,强调快速随变的敏捷过程有可能在未来的竞争中占据越来越重要的地位。

 

4.2 从无性繁殖到有性繁殖

在2.1中可以看到,类似于生物界的演化,计算机世界在进入到种群化阶段后,下一个需要实现的重大突破是从无性繁殖到有性繁殖。

众所周知,在生命世界中,除病毒外,绝大部分都是由细胞组成的。而此类生物在进化过程中,存在两种截然不同的繁殖方式,无性繁殖和有性繁殖。

无性繁殖在进化的低级阶段产生,采用简单的分裂方式进行繁殖,产生的生命体相对稳定,进化以变异为基础进行,繁殖速度惊人。但对环境变化的适应能力较差。

有性繁殖在进化的高级阶段产生,有性繁殖使后代在性状上产生分离,实现后代性状的多样性变异,同时继承父母双发优良基因的后代获得更大的生存几率,对环境变化的适应性要远远优于无性繁殖。

再次透析软件与软件工程的发展,当软件进入到面向对象的阶段时,人类就已经利用“类”这个概念创造为软件创造出了一个最原始的细胞,软件大师们曾本能地尝试用单类继承和多类继承两种来构造软件的核心,不行的是,多类继承在稳定性上存在诸多无法解决的问题,最终单类继承加接口的方式占据了主流。

结合3.1基本可以认定,目前的软件体系仍处于无性繁殖向有性繁殖过渡的初始阶段。软件体系的变异主要采用重构或接口或服务的方式实现。而在未来,要想实现生命世界的”适者生存”式的变异和自我进化,对于软件的最基本单元“类”,也许最佳的模式既不是单类继承,也非多类继承,而是一父一母的双类继承,同时变异时采取类似人类染色体似的变异法则,只允许同种群间的单个或极少部分染色体结合发生变异,这样既保证了一定程度的稳定性,又提供了更优良的变异,如此才能让计算机及其软件真正实现生命世界高级阶段的有性繁殖。

 

4.3 协同与自动化世界

当今的计算机及其软件距离智能生命体尚有待时日,但在高速运算,海量存储以及网络协同方面已经呈现出超越当前一切已知生命体的特征,尤其是网络协同,从某种意义上讲,已经帮助人类打开了一个新的空间,云计算、知识搜索、面向服务和虚拟世界会在未来有很大的发展空间。

在另一个方面,软件的工业化特征也导致了模型驱动的出现,这种将模型与自动化相结合思想,在抽象世界、工具运用和工业自动化间找到很好的平衡点,在未来应该会有持续的发展。但像搭积木似平民化软件生产仍有待时日,因为这需要整个世界的工业化水平达到一个新的水平。

 

4.4 平台相关与无关

在一个种群化和工业化的计算机世界里,平台相关和平台无关的技术都会得到持续的发展,但可以预见的是,为适应网络化和自动化的需求,平台无关和构件重用的技术会得到更长足的发展,而高内聚低耦合这一伟大的思想将贯穿始终。

 

4.5 垃圾处理工程

人类和软件技术发展的速度越快,产生知识垃圾的速度也会越快,而人类从海量垃圾中筛选价值数据的需求也会更强烈。因此,在未来的软件和软件工程世界中,有可能会出现一项垃圾处理工程,以帮助人类智能地搜索和筛选知识,分类处理无价值的垃圾数据。

 

4.6 后人工智能

计算机及软件发展在进入到稳定期后似乎遇到了一个不可调和的矛盾,首先计算机的工业化特征要求软件具有较高的稳定性和再生性,而软件的类生命性又渴望软件具有很好的自学习和变异能力,两者具有一定地冲突性。

值得欣慰的是,当前计算机及其软件世界所发生的种群性变化,可以较好的解决这一矛盾。如同生物界一样,低等生物具备很好的稳定性和再生性,而高等的有性繁殖生物具备很好的变异性和自学习能力,工业和智能在这里找到了很好的平衡点。

展望未来的智能计算机和软件工程,除了无性到有性的重大突破,还可以发现一下几个突破点。

(1) 输入输出工程。计算机在未来的输入输出形式会极大丰富,与生物技术的结合,与网络虚拟世界的结合,与其他工业化产品的结合,有可能诞生新的交叉行业——输入输出工程。

(2) 离散控制。离散控制,协同工作,这是网络世界带来的挑战,这种控制和协同还包括种群化的计算机世界中不同层次间的沟通和合作

(3) 模糊计算。在精确计算上,计算机系统已经站到了一个新的高度,而在模糊计算上,计算机及其软件仍远远落后于人脑,这是一块重要但有待持续关注的领域,有理由相信,这个领域的发展也能带来软件及软件工程领域新的变革。

(4) 变异和自学习控制。一旦软件实现了自变异并具备了自学习能力,如何创造一种机制控制这种变异和自学习向着良性的方向发展也会变成一个重要的课题。

 

4.7 计算机艺术与意识工程

当人类的节奏逐步加快当计算机逐步进入到每个人的生活,并创造出一个虚拟与网络的世界时,那些延续了数千年的艺术形式正发生渐渐地变化,在未来,当一个贯穿了人类意识的类生命世界逐步强大起来时,艺术也会随之发生变化,新的对于“美”的追求,新的意识与思想交流方式,最终会导致艺术世界发生巨大的变化。如何展现新的艺术形式,如何把握计算机的意识并有效实现人与计算机的意识沟通,有希望在未来成为一个重要的课题。

 

4.8 下一个上帝

如果人类发展有幸逃过1.2中的d类模式,人类完全有可能将自己置身于一个新上帝的角色,创造出另一个新的计算机世界。按照当前人类的发展趋势,网络技术已经帮助人类打开一个新的突破口,生物技术和智能计算机应该是在网络技术走向瓶颈后下一步的突破点。而科幻世界中的具备独立意识机器人,机器人三原则和发生剧变的奇点应当是再之后的事情。

一个有趣的现象是,当人类将自我的寿命从原始社会15岁提升到65岁时,人类却将整个社会的发展周期从百年缩短到几十年的级别,未来的人类将有可能在一生中目睹整个社会发生几次甚至几十次的剧变。

 

结束语

通过对人类的发展史分析,找出了人类发展的特定规律,并利用链式原则,可将其运用到对软件和软件工程的预测上。

进一步对比计算机世界和生物界的演化史,找出其间的的异同以及内在的规律。其后对于软件工程发展的归纳和分析,再次验证了这些潜在的规律。

最后对于软件和软件工程的未来,做出七项预测,可帮助和促进软件及软件工程研究和发展。

 

 

参 考 文 献

1. Roger s. Pressman. Software Engineering: A Practitioner's Approach, Six Edition, 2005

2. Frederick Phillips Brooks, Jr. The Mythical Man-Month, 1995.

3. Stephen R Schach. Object Oriented and Classical Software Engineering, 2005.

4. Alistair Cockburn. Agile Software Development, 2000

5. Kent Beck. Extreme Programming Explained: Embrace Change, 2000

6. Bertrand Russell. A History of Western Philosophy, 1945

7. Roger Lewin. Human evolution: an illustrated introduction‎, 2005

8. Wikipedia. History of programming languages, 2009

9. Ulf Hashagen. History of computing: Software Issues, 2002

10. Tetsuo Tamai, Yohsuke Torimitsu. Software Lifetime and its Evolution Process over Generations, 1992

11. Timo Olavi Vuorisalo, Pia Kristina Mutikainen. Life history evolution in plants‎, 1999

抱歉!评论已关闭.