《软件开发的科学与艺术》成书的原因与过程 1
《软件开发的科学与艺术》的内容 3
本书的意义 4
第1章 全球软件产业现状. 趋势与挑战 5
The Challenges and Opportunities of the Global Software Industry
软件是一台计算设备的思维中枢. 经过数十年的发展, 软件产业已经成为当今世界投资回报比最高的产业之一, 而这一产业正在潜移默化地改变着我们赖以生存的这个星球的面貌. 新世纪, 软件产业已经呈现出了一些引人入胜的转变迹象, 本章概括地把这些迹象表述为三个趋势:网络化. 服务化与全球化, 并从技术角度就高科技产业所面临的机遇与挑战阐述了作者的观点.
1.1 软件产业的网络化趋势 8
1.2 软件产业的服务化趋势 11
1.3 软件产业的全球化趋势 13
1.4 网络化. 服务化. 全球化趋势对中国软件产业的启示 15
第2章 现代软件开发对人才的要求 19
Talent Beyond Technology What Kind of Talent We Need for
Modern Software Development
软件开发是一门科学, 更是一门艺术. 微软在二十几年的发展过程中形成了其独特的软件开发与设计的企业文化. 目前, 中国软件业的发展喜忧参半. 中国拥有高素质. 基础扎实. 学习能力强且思维敏锐的软件专业人员, 但中国大规模的软件生产尚处于初期发展阶段, 软件的研究与开发过程中尚有许多亟待解决的问题. 本章中, 凌小宁博士关于微软企业文化以及软件开发人才等方面作了精辟的论述, 这些内容是我们中国学生及软件从业人员应该了解. 理解并恰到好处地遵循的.
2.1 现代软件开发概述 21
2.2 独具魅力的微软企业文化与软件开发人员的培养 23
2.3 从差别中寻找解决方案 28
2.4 扎实的基础和创新. 独立的工作能力 33
2.5 主人翁精神和团队精神 34
2.6 锲而不舍. 从错误中学习的精神 46
第3章 从研究到产品 51
From Research to Products
如何将研究成果投向市场并获得成功, 这是许多人关心的问题. 实际上, 从研究成果到产品是一个非常复杂并且非常漫长的过程, 其中会牵涉到相当多的问题. 张益肇博士根据多年来积累的丰富实践经验, 首先介绍了一种关于产品空间的思维方式 技术生命周期, 以及在生命周期各阶段中用户对技术和市场的影响, 其次通过具体的案例说明技术和市场的关系, 最后总结出了三条宝贵的规则, 相信会给读者带来很大的启发.
3.1 引言 53
3.2 技术生命周期 56
3.3 案例分析 62
3.4 练习 67
3.5 间断技术 73
3.6 基本规则 83
3.7 推荐书目 87
第4章 微软的软件开发 89
Software Development at Microsoft
现在的软件开发不再是个人英雄主义打天下的时代了, 尤其是像微软这样大的软件公司, 一个软件都是由几百人甚至几千人共同合作完成的. 那么如何管理这样庞大的开发阵容?员工是如何分工的?他们之间又是如何协作的?这些都是大家关心的问题. 陈宏刚博士结合自己在微软公司的亲身体验, 并结合具体实例, 从一个较高层次介绍了微软的产品团队. 软件开发过程和开发方法.
4.1 概述 91
4.2 微软的产品团队 94
4.3 微软的软件开发过程 106
4.4 想法和意图批准里程碑 112
4.5 产品计划的通过里程碑 118
4.6 范围完成/第一次使用里程碑 123
4.7 发布阶段 130
第5章 软件设计之源 141
Source of the Software Design
在一些人眼里, 今天的软件开发似乎已成为简单的事件:已有了不少很好的开发工具和软件库, 软件开发人员训练有素, 都强烈渴望去编写很酷的软件, 可以在几天的时间里编写出一个相当复杂的软件. 但为什么有一些软件能够得到用户的喜欢, 而另一些则不能?为什么有些软件能够在市场上成功, 而有些则受到冷落?由此可见, 开发软件并不一定难, 难就难在如何开发有用的软件. 本章, 凌小宁博士就根据自己多年的实践经验, 回答"如何设计有用的软件"这个问题.
5.1 软件设计简述 143
5.2 三个困难的问题 144
5.3 设计之源 145
5.4 错误设计之源 149
5.5 基于用户情景的设计 153
第6章 项目管理 161
Program Management
项目管理是一种广泛应用于各种工程. 金融甚至农业生产中的技术管理过程. 在IT行业, 项目管理常常是决定产品或企业能否成功的最重 要指标之一. 中国历经了15年的不懈努力, 加入世界贸易组织终成现实, 这为我们带来了前所未有的机遇和挑战. 我国政府所属各部门和企业领导对于项目管理也越来越重视, 现在市场上名目繁多的各类项目管理培训就可见一斑.
熊明华在微软担任项目经理这一职位多年. 本章是根据他亲身实践, 对微软的项目管理进行了详细的介绍,相信对我国软件业项目管理水平的提高会有所促进.
6.1 项目管理简述 163
6.2 什么是项目经理 164
6.3 项目经理的行政结构与工作关系 167
6.4 为什么需要项目经理 175
6.5 项目经理每天的具体工作是什么 178
6.6 做项目经理的背景要求 182
6.7 结论 187
第7章 写好代码的十个秘诀 189
10 Things You Can Do To Write Better Code
在现代软件的开发中, 如何写出具有正确逻辑而且执行速度快的代码是众多的软件开发人员所追求的目标. 林斌在微软总部担任了多年软件开发高级工程师, 参加了微软多种产品的开发工作. 本章, 他根据自己多年的亲身体验, 为读者总结出一流代码应该具备的特性, 以及写一流代码的十个秘诀. 文中展示了丰富的具体代码实例, 并进行了详尽透彻的分析, 最后提供了正确的解决之道. 如果你是一名软件开发人员, 相信本章对你今后的编程工作会有很大的帮助.
7.1 简介 191
7.2 编写代码的十大秘诀 196
7.3 结束语 228
第8章 如何提高程序的性能 231
Secrets of Software Performance
如果你是一名软件开发人员, 是不是经常因为程序的性能而受到老板的指责?你是不是经常因为程序的性能而被用户刁难?你是不是经常因为程序的性能而饱受等待之苦?那么, 怎样才能尽量优化应用程序, 提高其性能呢?本章, 林斌根据自己多年在微软进行软件开发的实践经验, 为我们提供非常棒的提高性能的方法, 并列举了具体的案例学习, 最后, 还详细介绍了令无数软件开发人员头痛的内存问题. 如果你是一名软件开发人员, 阅读本章后, 立即将这些方法应用到你的应用程序中, 体验一下性能提高的喜悦吧.
8.1 提高性能的方法 233
8.2 案例学习 234
8.3 内存 241
第9章 软件测试基础 255
Basic of Software Testing
软件测试是一门非常崭新的学科, 目前研究的内容还不很深入, 所涉及的只是测试数字. 测试函数等一些非常简单的问题, 可以说还处于婴儿阶段. 由于软件测试学科还不成熟, 它到底需要一个什么样的专业基础, 尚无定论, 而且目前还没有一种很好的标准来衡量一名测试人员的优劣. 本章, 陈宏刚博士根据亲身体验, 以微软公司为例讲述软件测试的方法及实施过程. 陈宏刚博士指出, 软件测试学的发展还有赖于大家共同努力, 促进其研究的不断深入. 相信本章能对软件测试工作起一定的指导作用
9.1 概述 257
9.2 关于Bug 266
9.3 软件测试方法和辅助工具 269
9.4 相关测试文档 276
9.5 如何与项目经理及开发人员沟通 278
9.6 结束语 286
第10章 如何撰写测试文档 291
Write Good Testing Documents
正因为软件测试还是一门新兴学科, 各方面的规范还不完备, 目前软件测试工作还无一定的规范可依据. 微软经过二十余年的发展, 在实践中不断摸索和总结出一套独特的软件测试方法. 本章中, 陈宏刚博士主要结合自己在微软公司多年的测试工作总结出宝贵的经验, 为读者介绍如何撰写测试的相关文档, 包括测试计划文档. 测试规范文档. 测试案例文档. 测试报告文档以及Bug报告文档. 本章附件中包含了陈宏刚博士亲手撰写的一些测试文档实例.
10.1 测试计划(Test Plan) 293
10.2 测试规范(Test Specification) 298
10.3 测试案例(Test Case) 301
10.4 测试报告(Test Report) 301
10.5 Bug报告(Bug Report) 302
附录A 微软亚洲研究院介绍 343
附录B 课程设计 347
编辑手记 351