NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

采访与书评——《软件工程的技术与社会化历史》

  • 2014-04-16
  • 本文字数:3898 字

    阅读完需:约 13 分钟

Capers Jones 是《软件工程的技术与社会化历史》一书的作者,他在本书中为读者介绍了信息技术与软件开发的进化概况。

本书的开始部分首先描述了人类对于更快的计算速度的渴求,接下来的 9 章内容则涵盖了从 1930 至 2010 年间软件工程的发展状况。

本书还专门用了一章的篇幅来讲述近年来在软件开发上遇到的一些主要问题。而全书的最后一章则描述了当前的软件工程发展状况,并对到 2019 年为止的发展进行了一番展望。

InfoQ 有幸与 Capers 进行了一番对话,谈论了软件工程的发展动力和重大事件,以及它们对我们的社会所带来的影响。

InfoQ:促使你撰写这本书的动机是什么?

Capers2006 年时我曾经写过一本书——《纳拉甘西特湾的历史与未来》,当时我已经在罗德岛居住了 6 年,这本书描述了从最后一个冰河时期之前一直到当今社会为止的纳拉甘西特湾的历史。这本书的写作经历非常愉快。由于我本人从 1965 年起就从事于软件行业,我觉得能够写一本关于软件工业历史的书会非常有趣,我也能够从中获得很大的乐趣。在我总共编写的 16 本书中,有 14 本是和软件管理话题相关的技术书籍,还有两本是历史书,即《纳拉甘西特湾》与《软件工程的技术与社会化历史》。我可能还会再写一本关于“失落的技术”的历史书籍,例如印加石(Inca Stone——一种古老的建筑材料与技术)的工艺技术,以及安提基特拉机械(Antikythera Mechanism——古代计算天体位置的青铜机器)等等。

InfoQ:为什么你的书籍会专注于讨论“技术”与“社会”,为什么选择了这两方面?

Capers我的书很大程度上受到了 Paul Starr 在 1982 年的著作《美国医学的社会转型》(The Social Transformation of American Medicine)的影响,这本书获得了 1982 年的普利策奖。读过他的书之后,我才了解到早先医学界的混乱和不专业程度比起软件业有过之而无不及。当时的医学院总共只有两年的课程,而且就读条件宽松,学生不需要提供大学、甚至是高中毕业的证明。学院中的学生们从来不会进入医院实习,当时也没有就医执照或证件一说,而且也没有办法对医疗事故进行鉴定。当时病人的处方中甚至可以包括砒霜或鸦片等有害物质。而在软件工业中,我们也遇到了类似的问题。与其它形式的工程相比,软件开发有着丰富的社会化历史,并且在性别平等这一方面也走在了前面。许多重要的社交组织就是围绕着软件而建立的,例如 ACM、IEEE 软件与计算小组、SHARE、GUIDE、COMMON,还有包括 Facebook 和 Twitter 在内的社交网络,以及其它许多组织。

InfoQ:让我们回顾一下历史,最早的软件程序是什么时候产生的,它看上去是什么样的呢?

Capers回答这个问题有些难度,因为其实串行指令早在几百年前的机械设备,例如提花机(Jacquard loom——一种纺织机器)上就已经得到应用了。而模拟序列则已经应用了几千年时间了。说起来,Ada 语言的创始人 Ada Lovelace 或许算得上是应用现代化程序的鼻祖,是她编写了第一个串行指令,该指令是为了 Charles Babbage 在 1842 年设计的分析引擎(analytical engine)计算机所编写的。Ada 还是诗人 Lord Byron 的女儿。当我初次接触计算机编程时,当时的人们还在使用打孔卡或纸带,而且只能使用机器语言或基本的汇编语言编写程序。

InfoQ:“软件工程”这个词语是何时出现的,为什么说它是“工程”呢?

Capers软件工程这个名称最早是在 1968 年那次著名的 NATO 软件工程大会中出现的,一方面是一个高调的口号,一方面起到给软件行业定性的目的。1958 年,来自贝尔实验室的一名数学家及统计学家 John Wilder Tukey 首次在一篇论文中使用了“软件”这个词,当时使用它是为了与“硬件”相区别。这也是“软件”这个词首次使用在计算机的语境下,并为人所知。

“计算机”(computer)这个词也很有趣,在 20 世纪 40 年代这个词一度很流行,但当时它的作用其实是一种职位描述,用以形容某个需要从事大量计算工作的数学学者。在当时,有许多女性充当了这种人类计算机的角色,因为那个年代里女性的收入相对较低。当 ENIAC 计算机于 1945 年完成的时候,共有六位女性“计算机”受聘进行在该计算机之上的编程工作,而“计算机”这个术语也从有关人类的职位描述转变为进行计算工作的设备的专有名词了。

InfoQ:软件工程教育在这些年来发生了很大的变化,并且这种变化还在持续中。你觉得应当怎样评价它的现状呢?我们可以期待,在(不远的)将来又会变成什么样呢?

Capers当我 1956 进入大学时,校园里没有计算机、没有计算机科学的课程,也没有软件工程的课程。这一切在接下来的十年乃至更长的时间内发生了巨大变化。当时,为了学习编程技术,我不得不参加 IBM 的课程,因为大学里不会传授这些知识。至于未来的教育方式很可能采取虚拟现实校园的方式,学生和教授们对应的虚拟人物可以在那种环境中会面。另外,我认为我们将能够获取到所有已知的出版物,并且能够免费使用所有优秀的工具集。

InfoQ:由于计算机使许多工作能够自动化完成,许多人为此丢掉了饭碗。但 IT行业也产生了大量的新职位。你觉得在这些年来,是由于计算机的出现造成了更多的人下岗,还是因此造就了更多的工作岗位呢?

Capers在手抄工作方面的实际失业人数其实要低于人们的预期,因为许多处理手写文档的职员都转为了数据录入人员。软件行业造就的新工作机会要大于它所剥夺的工作机会,其中还包括一些全新的工作职位,例如敏捷教练、数据库专家以及软件质量保持专家。现如今的大公司中,有大约 128 种职业都多多少少会与软件打交道。

InfoQ:历史上最大的软件系统是什么?

Capers这个问题和之前的问题一样都是无法回答的,因为俄罗斯或中国等国家是不会把它们创建的最大的系统公之于众的。某些防御性应用程序可以包含多达 30 万个功能点,而某些商业性的 ERP 包可以达到 25 万个功能点的范围。我自己是这样进行分类的:小于 10 个功能点算是超小型系统;10 到 100 个功能点是小型系统;100 至 1 千个功能点是中型系统;1 千至 1 万个功能点是大型系统;1 万至 10 万个功能点是超大型系统;而超过 10 万个功能点的则是特大型系统。

InfoQ:怎样才能做到开发并维护这么庞大与复杂的系统呢?

Capers质量控制与变更控制可能成为薄弱环节,架构与设计、还有复杂项目的需求收集与分析都有可能成为薄弱环节。业界首先要解决那些与复杂物理设备的创建和交互相关的系统,包括计算机、飞机和电话交换系统等等。这些系统具备了顶级的质量控制与变更控制能力。而银行、保险以及其它一些公司业务系统更多的是与信息相关,而不是与物理设备相关,这些系统在质量与变更管理上做的就相对差一些。

InfoQ:软件系统中存在着一些重大的质量问题,你能举一些例子吗?我们从对这些问题的分析中又能学到些什么东西呢?

Capers质量问题是多方面的。最基本的问题在于过于依赖测试,而没有使用一些有效的方法避免缺陷并进行测试前的缺陷去除,例如静态分析,以及在测试之前进行正规的代码审查。另一个常见的问题是没有对质量进行评估,通常我会使用缺陷修复效率(DRE)或者说在发布前所找到的 bug 比例来进行评估。当前在美国这一数字的平均分小于 90%,但最高值则能够达到大于 99%。仅仅通过测试手段是难以达到超过 90% 的 DRE 分数的,而要达到 99% 这个数值则必须在测试开始前进行正规的审查和静态分析。

InfoQ:这本书中提到了多个软件和计算机公司,你能举几个你认为特别突出的,在某些方面与众不同的公司吗?他们能生存至今,是否也是因为存在某些过人之处呢?

Capers软件工业创造了巨大的财富,数额之大已远远超越了先行者们的想象。那些结合了财富与科技创新的公司包括有 Apple、谷歌、IBM、微软、甲骨文和 SAP,当然还有许多。无论上在创新还是在创造财富上,我们都还有很长的路要走。

InfoQ:回顾从前,你能举几个软件开发中的关键的转折点或技术创新的例子吗?我们又能从它们身上学习到什么呢?

Capers这一点正是我为什么要写一本几百页的书来描述这些转折点的原因。在此仅举几例:结构化设计与开发;高级语言;敏捷、RUP 与 TSP 等优秀工具,以及通过测试之前的检测与静态分析实现更好的质量控制。但总的来说,手工编程始终是一项昂贵并且易于出错的工作,因此标准组件和高层次软件重用会变得越来越重要。

InfoQ**:你认为在今后的 5到 10年之内,软件工程中会出现哪些技术或社交性的话题占据主导性的地位,你选择它们的理由又是什么?**

Capers本书中专门有一章是讲述我对 2010 年到 2019 年这段未来的展望。可以预期的是发自犯罪组织的网络攻击会越来越多。从好的方面来讲,会出现新型和有趣的社交网络;更好的培训方法;大数据;以及越来越强大的预测分析服务。

你可以在这里下载到本书的样章。

此次采访的主题是由Capers Jones 撰写的《软件工程的技术与社会化历史》,由Pearson/ Addison-Wesley Professional 于2013 年12 月出版,ISBN 号9780321903426,Copyright © 2014 Pearson Education, Inc.。关于本书的更多信息,请访问出版社的网站

关于作者

Capers Jones目前是 Namcook Analytics LLC 公司的副总裁与首席技术官。他的背景包含在 IBM 担任了 12 年的经理与软件研究工程师,在 ITT 担任了 4 年的研发副主管,以及在 Software Productivity Research(SPR)担任了 15 年的主席。他和他的搭档 Ted Maroney 于 2011 年共同创立了 Namcook Analytics LLC 公司。Capers 共出版过 16 本书,并撰写了超过 100 份杂志文章,其内容主要涵盖了软件风险分析、软件质量控制、软件评估和软件估算。他设计了 8 个具有专利的软件估算工具,以及 4 个商业化的软件估算工具。

查看英文原文: Interview and Book Review of The Technical and Social History of Software Engineering

2014-04-16 23:511529
用户头像

发布了 428 篇内容, 共 172.1 次阅读, 收获喜欢 38 次。

关注

评论

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

Kubernetes 中数据包的生命周期 -- 第 2 部分

Se7en

http server源码解析

爱好编程进阶

Java 面试 后端开发

Java并发关键字-volatile

爱好编程进阶

Java 面试 后端开发

【网络安全】8个网络安全名词解释看这里!

行云管家

网络安全 防火墙 数据安全 堡垒机

【等保】二级等保常见问题解答汇总

行云管家

网络安全 等保 等保2.0 二级等保

纯 JS 实现 WebRTC 视频通话

杨成功

音视频 WebRTC

git(1) 起步

爱好编程进阶

Java 面试 后端开发

DevSecOps软件安全开发实践

华为云开发者联盟

开源 DevSecOps 安全开发 华为云DevCloud 软件研发

怎么样判断显卡性能好坏?

InfoQ IT百科

如何调节鼠标的灵敏度?

InfoQ IT百科

Java中使用Spring-security(一)

爱好编程进阶

Java 面试 后端开发

Dubbo如何处理业务异常,这个一定要知道哦!

爱好编程进阶

Java 面试 后端开发

Java 集合容器篇面试题(上)-王者笔记

爱好编程进阶

Java 面试 后端开发

一文深入Java浅拷贝和深拷贝

芝士味的椒盐

Java 大数据 Java 开发 深拷贝 浅拷贝

电脑硬件中光驱的作用是什么?

InfoQ IT百科

java程序员的AI之路-大数据篇 hadoop安装

爱好编程进阶

Java 面试 后端开发

如何实现迭代快速排序算法(iterative quicksort algorithm)?

InfoQ IT百科

不同操作系统之间的应用是否可以兼容?

InfoQ IT百科

Google 出品的 Java 编码规范,权威又科学,强烈推荐

爱好编程进阶

Java 面试 后端开发

电脑分区C盘格式化会怎样?

InfoQ IT百科

复杂度守恒定律与计算哲学|Authing CEO 谢扬

Authing

开发者 云原生 身份云 生产力 Idaas

Java中return和finally到底哪个先执行

爱好编程进阶

Java 面试 后端开发

“迈向元宇宙的一小步”鲁班会开发者深度论坛落地北京

华为云开发者联盟

音视频 opengauss 华为云 元宇宙 鲁班会

与操作系统性能最相关的组件是什么?

InfoQ IT百科

java 使用Html2Image将html转图片

爱好编程进阶

Java 面试 后端开发

前端食堂技术周刊第 34 期:Node.js v18 、Nuxt 3 RC1、Parcel v2.5.0、计算机程序的构造和解释、Linux 命令行世界生存指南

童欧巴

JavaScript 前端 技术周刊

Elasticsearch 中为什么选择倒排索引而不选择 B 树索引

爱好编程进阶

Java 面试 后端开发

Flink SQL Client综合实战

爱好编程进阶

Java 面试 后端开发

一文看懂“低代码,零代码,APAAS”是什么?怎么选?

优秀

低代码 零代码 aPaaS

跟我读CVPR 2022论文:基于场景文字知识挖掘的细粒度图像识别算法

华为云开发者联盟

图像识别 推理 视觉 文字检测 语义信息

聊一聊龙蜥硬件兼容性 SIG 那些事儿 | 龙蜥 SIG

OpenAnolis小助手

开源 sig 硬件兼容 龙蜥操作系统

采访与书评——《软件工程的技术与社会化历史》_研发效能_Ben Linders_InfoQ精选文章