【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

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

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

关注

评论

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

Lua 入门到精通( 02 Lua 基本语法)《做一个脚本高手》

陈皮的JavaLib

lua Linux 运维 8月日更

POM 文件中 licenses 许可证的定义

HoneyMoose

有迹可循之CheckList

编号94530

Code Review 架构设计 checklist

智汇华云 | ArSDN之分布式路由及浮动IP简介

华云数据

【重磅】微信开源PhxSQL:高可用、强一致的MySQL集群

OpenIM

接口测试进阶接口脚本使用--apipost(预/后执行脚本)

Proud lion

大前端 后端 Postman 开发工具 接口文档

9月日更挑战正式开始啦~

InfoQ写作社区官方

9月日更 热门活动

IOS技术分享| 在iOS WebRTC 中添加美颜滤镜

anyRTC开发者

音视频 WebRTC 视频通话 ios技术分享 美颜

VSCode配置JAVA开发环境

IT蜗壳-Tango

Java 9月日更

智汇华云 | 混合IT下的云管理套件核心技术解析

华云数据

Apache Pulsar 新增 2 位 PMC 成员:林琳与陈航

Apache Pulsar

腾讯云 Apache Pulsar

接口测试要测试什么?

与风逐梦

软件测试 接口测试

去中心化钱包开发,imtoken钱包开发

职场奇袭!3分钟完成一天工作

博文视点Broadview

华为云严选上新啦!高效准确的数据同步方案来了

华为云开发者联盟

数据库 华为云 数据同步 英方软件 严选商城

4种Golang并发操作中常见的死锁情形

华为云开发者联盟

缓存 协程 并发 死锁 Go 语言

webpack5之HMR原理探究

rayyang00

大前端 webpack

Week2 Homework

Ray_c

#架构实战营

mycat入门:简介和安装

小鲍侃java

9月日更

Vue进阶(八十七):输入框事件 blur 与 change 的差异

No Silver Bullet

Vue 9月日更

深入了解现代web浏览器(第三部分)

GKNick

华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快?

华为云开发者联盟

MySQL 关系型数据库 华为云数据库 GaussDB(for MySQL) 并行查询

为了让医院把医护还给患者,他们用了这个….

华为云开发者联盟

数字化转型 医院 华为云 devcloud 全流程一体化

Nebula Graph 源码解读系列 | Vol.00 序言

NebulaGraph

图数据库 源码解读 分布式图数据库

Tapdata 在线研讨会:实时数据同步应用场景及实现方案探讨

tapdata

MySQL oracle mongodb

自动化测试框架指南

FunTester

自动化测试 测试框架 数据驱动 FunTester 测试自动化

【Flutter 专题】60 图解基本 Dialog 对话框小结

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

String split()方法踩坑

梁小航航

string

华云大咖说 | 混合IT架构的统一管理——安超云套件产品介绍

华云数据

华云大咖说 | 对象存储在金融行业的应用

华云数据

Promise.any() 原理解析及使用指南

devpoint

Promise 9月日更

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