哈兰·米尔斯——软件工程的先驱
1994年计算机先驱奖获得者哈兰·米尔斯(Harlan B. Mills) (May 14, 1919 — January 8, 1996)是软件工程的先驱。IEEE因他“对结构化程序设计所作出的多方面贡献”(contributions to structured programming)而授予他这个奖项。
我们知道,结构化程序设计概念是由狄克斯特拉(Edsgar W.Dijkstra)在20世纪60年代末、70年代初提出的。而米尔斯则通过其在IBM公司开发大型软件时提出的一系列方法以及其后在大学从事软件工程教学中编写的教材和举办的培训班,极大地扩充和丰富了结构化程序设计的内涵。他把对软件的理解和解释放在数学基础之上,把软件程序理解为数学函数,把软件测试视做统计试验,这些思想对软件开发、评估和验证产生了深远的影响。
米尔斯生于1919年,1952年在艾奥瓦州立大学取得数学博士学位。之后,曾在产业界(通用电气公司,RCA,IBM)、教育界(艾奥瓦州立大学,普林斯顿大学,纽约大学,约翰·霍普金斯大学,马里兰大学,佛罗里达大学和佛罗里达理工学院)工作过,也曾在政府部门和军事部门工作(1974—1977年任美国科学基金会计算机科学部软件方法学处的处长,1986年任美国空军科学顾问委员会计算机科学小组的组长)。在NSF工作期间,1975年他发起并组织了美国全国第一届软件工程会议,并任大会主席。1981年,他是IEEE秋季计算机会议(1EEE Fall Compcon)的主席。从1975~1981年,他是IEEE软件工程汇刊(1EEE Transactions on Software Engineering)的主编。那么,米尔斯在软件工程方面有些什么创新呢?我们举几个例子。
1968年,IBM公司同纽约时报(New York Times)签订了一个协议,开发纽约时报信息数据库(The New York Times lnformation Bank)。这个系统既可供报社内部人员使用,也可作为商品提供给外界用户,要求以交互方式工作。我们知道,作为世界上最大的报纸之一,纽约时报的信息量很大,覆盖的面很广,系统十分庞大而复杂。怎样组织开发以保证按期、高质量地完成任务呢?米尔斯经过认真总结过去项目开发中的经验,提出了组织开发队伍的一种新方法,叫做“首席程序员编组”(Chief Programmer Team),这种方法把结构化和自顶向下的程序设计,同专门功能的程序设计组织结合起来,以高效地生产高质量的软件系统。
所谓“首席程序员编组”是以一个首席程序员(chief programmer)、一个后援程序员(backup programmer)和一个程序设计库管理员(pro—gramming librarian)作为核心。首席程序员是这个编组的技术经理,对软件系统设计与开发的所有方面负责。后援程序员是首席程序员的所谓"alterego"(即“另一个我”或“知己”),一方面负责检查、协调,另一方面在首席程序员因病、因事不在时代替首席程序员。程序设计库管理员为程序设计提供秘书性质的支持和管理文档、程序设计中形成的一切材料。系统设计、软件体系结构、高层设计工作由这个核心组织完成以后,再开发出系统运行总框架所需的代码。然后再加入其他程序员、测试员、技术文档编写人员等各种专家以完成整个系统的开发、测试和文档。所有工作被看做是整个组织共同负担和公共的,而不是参与者私人的活动。在设计、编码和文档编制的每一个步骤上,都要进行全面“走查”(Walkthrough)。
采用这一组织方式的效果是明显的:纽约时报信息系统于1971年按期交付使用。这个源程序包含83 000多行的系统在5个星期的验收测试中总共才发现了21个错误,在第一年的使用中总共发现了25个错误,而其中只有一个错误会导致运行中止。整个项目的生产率是35行/每人每天,在软件开发阶段是65行/每人每天。这样的软件生产率和软件质量在当时是很了不起的。这个方法后来在IBM公司内外都曾得到推广使用。
第二个例子是米尔斯和他的同事巴辛(Basin)在软件故障诊断中所提出的“故障播种法”(Fault Seeding)。这个方法用来预测程序中差错的个数。这个方法是这样的:在不为测试组所知的情况下,在程序中插入一些人为的差错共Ms个。假定种下去的这些差错同程序中包含的原始差错有相同的分布。检测出来的实际差错为ma个,人为播种的差错为m5个,则程序中保有的差错的近似估计值为:
ma(Ms-ms)
ms
这个方法虽然由于难以保证人工播种的差错和原始差错有相同的分布而难以使结果十分精确,但不失为一个近似的实用方法。
此外,米尔斯为提高软件生产率,还提出过“绝对清洁室”(clean room)的概念,在IBM公司领导过一个叫“时间/生命期”(Time/Life)的项目以检验软件开发的各种方法,生产出差错率极低的软件系统。他也是IBM公司软件工程研究所(Software Engineering Institute)的创始人和领导人,这个研究所为IBM公司培训了成千上万的软件工程师。
在离开产业界以后,米尔斯对软件工程教育作出了很多贡献。是他首先在约翰·霍普金斯大学开出了全美第一门结构化程序设计课程。在马里兰大学,他为新生开出了两个学期的计算机科学导论课程,深受欢迎。他还是一系列有关软件工程的教材和专著的作者,其中包括:
《结构化程序设计:理论和实践》(Structured Programming:Theory and Practice,Addison-Wesley,1979)
《软件生产率》(Software Productivity,Little,Brown&Co.,1983)
《信息系统分析和设计原理》(Principles of Information System Analysis and Design,Academic Pr.,1986)
《计算机程序设计原理:数学方法》(Principles of Computer Programming:9 Mathematical Approach,Allyn and Bacon,1987)
米尔斯在1985年获得DPMA的“杰出信息科学奖”(Distinguished Information Sciences Award)。1995年1月8日,他在佛罗里达州维罗海滩(Vero Beach)的寓所中去世,享年76岁。
获得荣誉编辑本段回目录
Ph.D.: Iowa State University, 1952
Visiting Professor (Part Time) 1975-1987
Adjunct Professor, 1987-1995
Chairman, NSF Computer Science Research Panel on Software Methodology, 1974- 77
the Chairman of the First National Conference on Software Engineering, 1975
Editor for IEEE Transactions on Software Engineering, 1975-81
U.S. Representative for Software at the IFIP Congress, 1977
Governor of the IEEE Computer Society, 1980-83
Chairman for IEEE Fall CompCon, 1981
Chairman, Computer Science Panel, U.S. Air Force Scientific Advisory Board, 1986
Awardee, Distinguished Information Sciences Award, DPMA 1985