《软件开发的科学与艺术》(书号:7-5053-7555-5/TP.4380),电子工业出版社出版,将于2002年4月20日正式发行。定价:38元。
内 容 提 要
本书凝聚了微软专家多年研究和工作中获得的宝贵经验,是特为每个关注软件开发的人而准备的一本书。书中,这些微软专家现身说法,提供了许多成功亦或失败的案例,并进行深刻中肯的剖析,为读者展现微软企业文化,以及微软的软件开发过程和项目管理等方面的内容。相信这些内容能够带给读者许多思想和观念上的重塑,从而对我们的后继学习和工作产生重要的影响。重要的是通过学习和借鉴软件巨人——微软的成功经验,从而推动中国现代IT企业的发展和进步。
不论是软件开发人员,还是项目管理人员都将从中获益匪浅。本书将是每个从事软件开发的人员案头不可或缺的珍藏书。
目 录
导 读 1
本文是微软软件项目开发专家凌小宁博士在北京大学做讲座的开篇语。相信这篇导读有助于读者更好地领会本书内容。
0.1 举办《软件开发的艺术与科学》系列讲座的原因 3
0.2 《软件开发的艺术与科学》系列讲座的内容 4
0.3 本讲座的目标 5
第1章 全球软件产业现状、趋势与挑战 7
软件是一台计算设备的思维中枢,经过数十年的发展,软件产业已经成为当今世界投资回报比最高的产业之一,而这一产业正在潜移默化地改变着我们赖以生存的这个星球的面貌。新世纪软件产业已经呈现出了一些引人入胜的转变迹象,本章概括地把这些迹象表述为三个趋势:网络化、服务化与全球化。并从技术角度就高科技产业所面临的机遇与挑战阐述了作者的观点。
1.1 软件产业的网络化趋势 9
1.2 软件产业的服务化趋势 12
1.3 软件产业的国际化趋势 13
1.4 网络化、服务化、国际化趋势对中国软件产业的启示 15
第2章 现代软件开发对人才的要求Modern Software Development 17
软件开发是一门科学,更是一门艺术。微软在20年的发展过程中形成了其独特的软件开发与设计的企业文化,在众多IT企业中独树一帜,拥有着独特的“个人魅力”。目前中国软件业的发展喜忧参半。中国拥有高素质、基础扎实、学习能力强且思维敏锐的软件专业人员,但中国大规模的软件生产尚处初期发展阶段,大规模软件生产的管理漏洞百出,软件的研究与开发景象非常不容乐观。因此,凌小宁博士就关于微软企业文化以及软件开发人才等方面作了精辟的论述,这些内容是我们中国学生应该了解、理解并恰到好处地遵循的。
本章内容根据凌小宁博士的演讲材料整理而来。凌小宁博士关于微软企业文化以及软件开发人才的精辟论述,是我们中国学生应该了解、理解并恰到好处地遵循的。希望这些内容能够带给读者许多思想和观念上的重塑,从而对我们的后继学习和工作产生重要的影响。
2.1 现代软件开发概述 19
2.2 独具魅力的微软企业文化与软件开发人员的培养 21
2.3 从差别中寻找解决方案 24
2.4 扎实的基础和创新、独立的工作能力 28
2.5 主人翁精神和团队精神 29
2.6 锲而不舍、从错误中学习的精神 39
第3章 从研究到产品 From Research to Products 41
如何将研究成果投向市场并获得成功,这是许多人关心的问题。实际上,从研究成果到产品是一个非常复杂并且非常漫长的过程,其中会牵涉到相当多的问题。张益肇博士根据多年来积累的丰富实践经验,首先为我们介绍了一种关于产品空间的思维方式—技术生命周期,以及在生命周期各阶段中用户对技术和市场的影响;其次通过具体的案例说明技术和市场的关系;最后为我们总结出了三条宝贵的规则,相信会给读者带来很大的启发。
3.1 引言 43
3.2 技术生命周期 45
3.3 案例分析 51
3.4 练习 55
3.5 间断技术 60
3.6 基本规则 67
3.7 推荐书目 71
第4章 微软的软件开发 Software Development at Microsoft 73
现在的软件开发不再是个人英雄主义打天下的时代了,尤其是像微软这样大的软件公司,一个软件都是由几百人甚至几千人共同合作完成的。那么这样庞大的开发阵容,如何管理?员工又是如何分工?他们之间又是如何协作?这些可能都大家关切的问题。陈宏刚博士结合自己在微软公司的亲身体验,并结合具体实例,从一个较高层次为我们介绍了微软的产品团队、软件开发过程和开发方法。相信这些内容对国内的软件公司会有所启发和帮助。
4.1 概述 75
4.2 微软的产品团队 77
4.3 微软的软件开发过程 87
4.4 想法和意图批准阶段 92
4.5 产品计划的通过阶段 97
4.6 编码完成/第一次试用阶段 101
4.7 发布阶段 107
第5章 软件设计之源 Source of the Softwore Design 115
今天的软件开发似乎已成为简单的事件:我们已有了不少很好的开发工具和软件库,我们软件开发人员训练有素,都有强烈渴望去编写很酷的软件。我们可以在几天的时间里编辑出一个相当复杂的软件。但为什么有一些软件能够得到用户的喜欢,而有些则不能呢?为什么些软件能够在市场上成功,而有些则不能呢?由此可见,开发软件已经很容易了,难就难在如何开发有用的软件。本章,凌小宁博士就根据自己多年的实践经验,为我们回答“如何设计有用的软件”这个问题。
5.1 软件设计简述 117
5.2 三个困难的问题 117
5.3 设计之源 119
5.4 错误设计之源 122
5.5 基于用户情景的设计 125
第6章 项 目 管 理 Program Management 133
项目管理是一种广泛应用于各种工程、金融甚至农业生产技术管理过程。在软件IT行业,项目管理经常是除技术创新之外,决定个产品或企业能否成功最重要指标之一。我国历经了15年的不懈努力,加入世界贸易组织终成现实,这更为我们带来了前所未有的机遇和挑战,我国政府部门和企业领导对于项目管理也越来越重视,现在市场上名目众多的各类项目管理培训就可见其热门效应。Jeff Xfong在微软多年担任项目经理这一职位,本章他就根据自己亲身实践经验,对微软的项目管理进行了详细和中肯的介绍。相信对我国软件业项目管理水平的提高有所促进。
6.1 项目管理简述 135
6.2 什么是项目经理 136
6.3 项目经理的行政结构与工作关系 138
6.4 为什么需要项目经理 144
6.5 项目经理每天的具体工作是什么 147
6.6 做项目经理的背景要求 150
6.7 结论 154
第7章 如何提高程序的性能 Secrets of Software Performance 155
本章根据林斌博士的演讲材料整理而来。
如果你是一名软件开发人员,你是不是经常因为程序的性能而受到老板的指责?你是不是经常因为程序的性能而被用户刁难?你是不是经常因为程序的性能而饱受等待之苦?那么怎样才能尽量优化应用程序,提高其性能呢?本章,林斌根据自己多年在微软进行软件开发的实践经验,为我们提供非常棒的提高性能的方法,并列举了具体的案例学习,最后,还为我们详细介绍了令无数软件开发人员头痛的内存问题。如果你是一名软件开发人员,看完本章,立即将这些方法应用到你的应用程序中,体验一下性能提高的喜悦吧。
7.1 提高性能的方法 157
7.2 案例学习 158
7.3 内存 163
第8章 写好代码的十个秘诀 10 Things You Can Do To Write Better Code 175
本章根据林斌博士的演讲材料整理而来。
在现代软件的开发中,如何写出具有正确逻辑而且执行速度快的代码是众多的软件开发人员所追求的目标。林斌在微软总部担任了多年软件开发高级工程师,参加了微软多种产品的开发工作。本章,他就根据自己多年的亲身体验和宝贵经验,为我们总结出一流代码应该具备的特性,以及写一流代码的十个秘诀,文中展示了丰富的具体代码实例,并进行了详尽透彻的分析,最后提供了正确的解决之道。如果你是一名软件开发人员,相信本章对你今后的编程工作会有很大的帮助。
8.1 简介 177
8.2 编写代码的十大秘诀 181
8.3 结束语 209
第9章 软件测试基础 Basic of Software Testing 211
本章根据陈宏刚博士的演讲材料整理而来。
软件测试是一门非常崭新的学科,目前研究的内容还不很深入,所涉及的只是测试数字、测试函数等一些非常简单的问题,可以说还处于婴儿阶段。当前,软件测试作为一个成长中的专业,在美国已经有大学开设。由于软件测试学科还不成熟,到底它需要一个什么样的专业基础,尚无定论,而且目前还没有一种很好的标准来衡量一个测试人员的优劣。本章,根据自己亲身体验,陈宏刚博士以微软公司为例为我们讲述软件测试的方法及实施过程。陈宏刚博士指出,软件测试学的发展还有赖于大家共同努力,促进其研究的不断深入。相信本章能为软件测试这项工作起一定的指导作用。
9.1 概述 213
9.2 关于Bug 220
9.3 软件测试方法和辅助工具 223
9.4 测试相关文档 229
9.5 如何与项目经理及开发人员沟通 230
9.6 结束语 236
第10章 如何撰写测试文档 Write Good Testing Documents 241
本章根据陈宏刚博士的演讲材料整理而来。
正因为软件测试还是一门新兴学科,各方面的规范还不完备,目前软件测试工作还无一定的规范可依据。微软经过20年的发展,在实践中不断摸索和总结出一套独特的软件测试方法。本章,陈宏刚博士主要结合自己在微软公司多年的测试工作,总结出宝贵的经验,为我们介绍如何撰写测试的相关文档,包括测试计划文档、测试规范文档、测试案例文档、测试报告文档以及Bug报告文档。并给出了陈宏刚博士自己亲手撰写的一些测试文档实例,相信大家也会非常感兴趣。
10.1 测试计划(Test Plan) 243
10.2 测试规范(Test Specification) 254
10.3 测试案例(Test Case) 271
10.4 测试报告(Test Report) 273
10.5 Bug报告(Bug Report) 278
附录A 课程设计(实验) 285
题目设计者:微软(亚洲)研究院Experiment 285
附录B 课程设计题目(课程设计) 287
题目设计者:微软(亚洲)研究院 287
编 辑 手 记 288