首次战胜软件危机,揭秘“软件工程”的真面目

发表时间: 2022-12-27 21:18

第一次软件危机的到来

计算机行业起步较晚,第一台计算机“ENIAC”产生于1946年,当时被美国国防部用来做弹道计算。

在20世纪60年代以前,计算机主要还是给企业使用,当时的编程语言还是机器语言和汇编语言,估计现在已经很少有程序员还会使用这两门语言。当时的软件规模也小,基本是个人设计、编写和使用,还没有进入软件商业化开发应用时代。

从20世纪60年代中期开始,计算机开始逐步普及到个人客户,软件开发需求也急剧增长,复杂程度也越来越高。原来的个人设计、个人使用的方式不再能满足需求,迫切需要改变软件生产方式,提高软件生产率,这就导致了第一次软件危机。

软件工程首次被提出

为克服第一次软件危机,计算机科学家们聚在一起开了次会,提出了“软件工程”的思想。

伴随着“软件工程”思想,诞生了比汇编和机器语言更高级的语言,比如C语言,使用C语言开发可以实现软件开发的“可移植性”、“抽象性”,大大提升了软件研发效率。

此外,面向结构化编程的软件开发方法也在这一时期出现,比如SASD结构化方法,以数据流为核心,特别适合于数据处理领域中的问题;Jackson方法,面向数据结构,从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,就可以得到完整的程序结构图。

这一番操作下来,对软件开发效率的提升很大。到底有多大呢?我们可以拿汽车行业的第一次革命做下类比,第一次汽车工业革命发生在19世纪初, 以福特发明流水装配线并推出T型车为标志。T型车推出之后,迅速以其价低、零部件售后保障等方面的优势,占据了汽车工业的领先地位,从此人人拥有一辆汽车不再是梦想。

第一次汽车工业革命的核心是流水线式的生产模式,但是根本原因在于运用了工程化思维方式,将一辆汽车自上而下拆解为多个标准的零部件来进行建造。

那“软件工程”到底什么?简单来说,就是运用工程化思维方式来制造软件。工程化思维的解决思路一般就是自上而下、功能拆解、逐步求精。

软件工程背后的本质又是什么

工程化思维的本质其实就是西方的“还原论”思想,在我们国家这里叫做“分而治之”。

从古希腊时期,哲学家就一直在思考世界的本源问题,比如泰勒斯的水原论、赫拉克里特的火原论、阿拉克西米尼的的气原论、恩培多克勒的四素说(水、火、土、气)、毕达哥拉斯的数原论、以及留基伯、德谟克里特的原子论等。这些思想本质上都是“还原论”,古代先哲们试图将世间万物还原为某一种事物或者几种事物的简单组合。

但是,“还原论”思想在西方的正式形成,要等到近代科学发展之后,又大致分为三个阶段。

第一个阶段是机械还原论,主要代表人物是笛卡尔。我们知道笛卡尔提出了世界是由物质和精神两种实体构成,这就是世界二分的二元论。另外,笛卡尔认为人是机械的,笛卡尔将人的知觉活动(包括感觉与激情)机械地解释为一串从物体到心灵的环环相扣的因果作用链。当外物的某种运动刺激或触动到身体的某些外感官时,会在那些部分相应地激起某种运动,然后这种运动通过一端与外感官相连接而另一端与大脑相连接的神经组被传递到了大脑中央的松果体,并在那里相应地激起松果体的某种运动。最终,这一运动能够直接作用于心灵,使心灵相应的产生某种观念。

第二阶段是力学还原论,代表人物就是牛顿。大家都知道牛顿力学方程,这个方程是一个线性的微分方程。线性意味着大尺度现象可以看成是小尺度现象的放大,而微分方程就意味着整体等于部分之和。微分的概念其实和“分而治之”的思想一样,就是把一个对象可以无限地分割下去进行研究, 这就是牛顿力学方法论的准则。

第三阶段是物理还原论,主要反映在生命科学中。20世纪分子生物学开始崭露头角后,几乎所有的分子生物学家都主张物理基础主义的还原论。DNA双螺旋结构的发现者之一克里克说:“事实上,当代生物学运动的最终目标是根据物理学和有机化学解释所有的生物学”。

软件工程是问题域or方法域的升级?

很明显,软件工程主要针对的是方法域层面。面对第一次软件危机,计算机科学家们将人类思想领域中的“还原论”思想拿来解决软件开发问题。就像第一次汽车革命时,福特也拿“还原论”思想来构造汽车流水线一样。直到现在,其实我们在大多数领域,也都是应用“还原论”思想来解决问题,大家可以仔细想想。

未完待续,下篇继续……