写点什么

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

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

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

关注

评论

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

研发人员除了编码还能干什么?

卢卡多多

研发效能 11月日更

12 高可用的应用(1)

Java 程序员 后端

150 道面试题:集合 +JVM+ 设计模式 +spring

Java 程序员 后端

阿里内部疯传的分布式架构手册,轻松吊打小日子过的不错的面试官

编程 程序员 架构 分布式

Java 设计模式 Monads 的美丽世界

码语者

Java 设计模式 Monads

Qcon 实时音视频专场:实时互动的最佳实践与未来展望

声网

人工智能 算法 音视频

-So-easy!多图详解CLH锁的原理与实现,轻松把握AQS

Java 程序员 后端

无锡农商行王宗:敏态转型,实现科技引领业务的华丽转身

BoCloud博云

微服务 云原生

统一开发平台通用管理端工程

中原银行

中原银行 管理端

《大教堂与集市》

石云升

读书笔记 开源 11月日更

rfc2988:Computing TCP's Retransmission Timer

Changing Lin

11月日更

【死磕Java并发】-----Java内存模型之重排序

chenssy

11月日更 死磕 Java 死磕 Java 并发

10分钟搞定OAuth2

Java 程序员 后端

南瓜电影 7 天内全面 Serverless 化实践

阿里巴巴云原生

阿里云 Serverless 云原生 实践 南瓜电影

今日谈:数字信号常用编码、香农公式、信道复用技术

Regan Yue

计算机网络 网络工程师 11月日更

速看!从源码到实战,腾讯大牛纯手码48W字SpringCloud实战笔记

Java 编程 程序员 面试 SpringCloud

互联网 | 逻辑上的黑话才是真正的花里胡哨

程序员 互联网 黑话

13万字!腾讯高工手写JDK源码笔记 带你飙向实战(1)

Java 程序员 后端

13万字!腾讯高工手写JDK源码笔记 带你飙向实战

Java 程序员 后端

“平”地而起,2022中国企业数智服务市场趋势洞察报告即将发布

海比研究院

NodeJs深入浅出之旅:异步I/O (下)🐂

空城机

大前端 Node 11月日更

大数据毕业作业

Clarke

如何在 MySQL / MariaDB 中导入导出数据,导入导出数据库文件、Excel、CSV

蒋川

MySQL 数据库 MariaDB 卡拉云

第四范式OpenMLDB在金融风控数据库的计算优化实践

第四范式开发者社区

第四范式 开源技术 OpenMLDB datafun

150个超实用的网站,整理成资源库页面分享给大家

Java 程序员 后端

10 K8S之名称空间

穿过生命散发芬芳

k8s 11月日更

15个顶级Java多线程面试题及答案

Java 程序员 后端

gitlab-runner构建解决java缓存问题

ilinux

理解Java中对象基础Object类

Java JVM jdk8 Object

腾讯云数据库TDSQL首次登上财报!TDSQL在不同金融机构核心系统中的渗透率明显提升

科技热闻

ClickHouse深度解析,收藏这一篇就够了~

大数据老哥

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