被软件所推动的软件工程发展史

首先,这是一篇读书笔记。最近我读完了一本朋友推荐的好书《工程学——无尽的前沿》,是由美籍华人物理学家欧阳莹之写的。虽然书中有很多值得细细品读的段落,但是在这本书中我最关心的,还是关于软件工程的段落。因为我看到过一些争论:“软件工程”是不是属于“工程学”的范畴?

软件工程是不是工程学的一种?

有人曾经说过:“就像社会工程学(Social Engineering)不是工程学一样,软件工程学(Software Engineering)也不是工程学!”

有兴趣的朋友,可以参考这三个讨论:
在quora上的讨论:Is software engineering an engineering discipline or not?
在stackexchange上的讨论:# Is software development an engineering discipline?
在reddit上的讨论:Is "software engineering" really engineering?

在读完本书后,我相当确信,软件工程肯定是工程学的分支之一,因为书中的两段描述:


土木工程师克拉克(Frederick Clarke)把广义的工程学很恰当地描述为:“它负有微妙而艰难的使命,要把科学抽象转化为世俗生活中的实践语言;这也许是世界上要求最为全面的任务。因为它需要理解两个不同的领域——不仅有科学赖以安身立命的纯理论,还有人类社会中所有复杂事物的目标、动力和渴望。工程师必须同时是一位哲学家、人文主义者和精明务实、身手不凡的匠人。他必须是一位足以知道应该信仰什么的哲学家,足以知道该追求什么的人文主义者,以及足以知道该制作什么的工匠。”


无论是前一段较为感性的定义,还是后一段较为理性的分析,都非常符合我对于软件工程的理解。(ps. 由此可以看出,产品经理也是软件工程师的一种)但是,为什么业界会出现这样的争论呢?在我看来,这与软件工程的发展历程有关。

软件工程的发展历程

早期的软件工程,是来源于软件危机,为了解决危机,软件开发者开始向传统的工程学寻求方法论。但是,软件工程的发展实在是太快了,越来越不像传统工程了。

例如:敏捷软件开发和开源软件工程。

敏捷软件开发,本质上是对于传统瀑布模型的一场反抗。而瀑布模型,才是直接从工程学的理念传承下来的。

敏捷的模型,基于一个完全不同的假设:我们无法(也不应该)在系统开发之前,分析所有需求。我们可以在系统有了第一个原型之后,再反复迭代。(参考:分析瘫痪)

至于开源软件的开发,就更加惊人了,传统工程学所以理解的“严密组织,科学管理”被进一步颠覆了。一个松散的组织,一群自由来去的爱好者,在一个并不明确的目标下工作——“Just for Fun”。但是却创造出惊人的开源软件,不仅仅包含了诸多创新,而且质量非常优秀。

到了现在,敏捷、DevOps、开源、云计算、AI,各种各样的思潮不断涌现,软件工程已经渐行渐远,越来越不像“那些工程”了。

如何研究软件工程的发展历程?

这篇文章,同时有可能是一本书《软件工程发展史》的前言。因为目前我所能找到的软件工程相关书籍,都没有深入分析过:为何软件工程,会这样发展。所以,我感到相当的不满意!

我最喜欢的历史学家钱穆先生,在《国史大纲》的前言中说道:“治国史之第一任务,在能于国家民族之内部自身,求得其独特精神之所在。”

按照同样的思路来看软件工程发展史,也不能仅仅把一堆事件、方法、技术罗列出来,而是要寻求发展背后的独特的“精神”所在。是什么在推动着软件工程,一直不断的向前发展?

我想提出的一种历史研究的思路是:虽然不能简单的断定因果,但是可以做依赖分析。在历史发展的过程中,一个事物的诞生,虽然我们不能找全所有的充分必要条件,但是必要条件(前置依赖项),是可以找到的。

从现代软件工程的特征,回望发展历程,我们找到了以下依赖项:

  1. 计算机 --> 软件 --> 软件工程
  2. 工程学 --> 软件工程 --> 现代软件工程
  3. 网络 --> 互联网 --> 开源软件 --> 基于开源的软件工程 --> 可信软件工程
  4. 计算机网络 --> 互联网 --> 云计算 --> 基于云的软件架构 --> DevOps

这里列出的各条线索,也许可以随后可以画出一个更加清晰的,依赖发展时间线。简单的总结,我们可以说:软件的飞速发展,推动了软件工程的飞速发展。因为软件开发所用到的工具,所依赖的环境、操作系统、框架和类库,也是软件。因此,软件开发人员会在工作中,不断的改造,完善,创新着自己的工具(这在其他领域,却非常罕见),这就是导致了软件工程,得以飞速发展的原动力。

当然,详细的讨论,可能真的得写出一本书来了。

软件与软件工程的发展反哺工程学

虽然软件工程脱胎于工程学,但是现在的趋势却是:越来越多的工程领域,开始使用软件,并且开始吸纳现代软件工程中的思想,这就形成了一种反哺。

传统的系统工程思维,往往是“左移”。测试左移,设计左移,越是重要的决策,越是早做,因为越晚做,代价越大。既然犯错误的代价很大,那就尽量不犯错。

但是,我们也可以从另一个思路来解决问题:既然我们无法避免犯错,那就用模拟的方式,用自动化测试的方式,用快速迭代的方式,降低决策成本,降低试错的成本。

这两种思路,并非简单的你对我错,而是需要在一个更大的模型中,综合考虑、选择运用。

总结

在工程学的大家庭里,软件工程学从早期的求助、借鉴于传统工程学,逐渐发展壮大,到现在的反哺、增强其他领域的工程学。软件工程,注定会成为工程学中越来越强壮的一员。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 软件工程的研究领域包括软件的开发方法、软件周期以及软件工程的实践等。 软件危机与软件工程的起源 1. 计算机系统的...
    程序猿陈嘉阅读 4,537评论 0 7
  • 互联网提供了低成本的万物互联的物质基础,当然这其中最重要的是人与人的互联。这种低成本的信息交流方式,可以有效解决传...
    邵栋阅读 2,900评论 2 8
  • From MBAlib 软件工程(Software Engineering,SE) 目录 1 什么是软件工程2 软...
    Aieru阅读 2,116评论 0 0
  • 在我的性格特质当中,自信这部分是我想要加强的部分,但是这个自信不简单的盲目自信,而是在真正明白自己能力之后的真实自...
    吴伯符阅读 232评论 0 2
  • 姓名:游向囯 公司:海南蔚蓝时代实业有限公司 组别:上海第361期感动一组 【知~学习】 《六项精进》大纲1遍 共...
    莜面山药蛋阅读 85评论 0 0