速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

  • 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:511808
用户头像

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

关注

评论

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

使用环信提供的uni-app Demo,快速实现一对一单聊

环信

即时通讯 uni-app集成 环信im

架构师毕业总结

凯博无线

4. 对象映射 - Mapping.Mapstercover

MASA技术团队

C# .net 微软 框架 Framework

BlocProvider 为什么感觉和 Provider 很相似?

岛上码农

flutter ios 安卓 移动端开发 7月月更

RPA进阶(二)Uipath应用实践

No Silver Bullet

RPA 7月月更 Uipath

亚马逊云科技 Community Builder 申请窗口开启

亚马逊云科技 (Amazon Web Services)

build 亚马逊云

精耕渠道共谋发展 福昕携手伟仕佳杰开展新产品培训大会

联营汇聚

微服务服务稳定性治理

阿泽🧸

微服务治理 7月月更

纪念成为首个DAYU200三方demo贡献者

坚果

HarmonyOS OpenHarmony OpenHarmony应用开发 7月月更 harmony

K临近算法介绍

乌龟哥哥

7月月更

hive数据导入:从查询数据导入

怀瑾握瑜的嘉与嘉

大数据 hive 7月月更

rxjs Observable 自定义 Operator 的开发技巧

汪子熙

typescript 响应式编程 angular RXJS 7月月更

JavaScript 设计模式之代理模式

devpoint

JavaScript 设计模式 代理模式 7月月更

微信小程序利用百度api达成植物识别

是乃德也是Ned

小程序开发 7月月更

使用BLoC 构建 Flutter的页面实例

岛上码农

flutter ios 安卓 移动端开发 7月月更

实例讲解将Graph Explorer搬上JupyterLab

华为云开发者联盟

人工智能 GES

【直播回顾】战码先锋首期8节直播完美落幕,下期敬请期待!

OpenHarmony开发者

Open Harmony

vue-axios(三)

小恺

7月月更

Security RememberMe原理分析

急需上岸的小谢

7月月更

毕业季 | 华为专家亲授面试秘诀:如何拿到大厂高薪offer?

华为云开发者联盟

面试 工作 offer 大厂 毕业

AirServer2022最新版功能介绍及下载

茶色酒

AirServer AirServer2022

若干互联网暴露面的收敛及处置建议

穿过生命散发芬芳

7月月更 互联网暴露

Windows11 ARM版本安装Python环境

IT蜗壳-Tango

IT蜗壳教学 7月月更

BOOTSTRAP

Jason199

bootstrap 7月月更

网络编程常用的几种字符编码

HoneyMoose

极简,利用Docker仅两行命令就能下载和编译OpenJDK11

程序员欣宸

Java Openjdk 7月月更

九章云极DataCanvas公司蝉联中国机器学习平台市场TOP 3

九章云极DataCanvas

认识线程

zarmnosaj

7月月更

一个实习生的CnosDB之旅

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

创业团队如何落地敏捷测试,提升质量效能?丨声网开发者创业讲堂 Vol.03

声网

创业讲堂 生态专栏

【LeetCode】统计值等于子树平均值的节点数Java题解

Albert

LeetCode 7月月更

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