第1章 软件最佳实践的介绍和定义 1
1.1什么是“最佳实践”?如何进行评估 5
1.2软件开发、部署以及维护的多种路径 7
1.3软件部署的路径 9
1.4维护和部署的路径 10
1.5软件开发、部署以及维护的量化 12
1.6软件工程中的关键主题 14
1.7方法、实践以及社会学因素的总排名 18
1.8总结 28
参考文献 28
第2章 50个软件最佳实践概述 31
2.1最大限度地减少裁员所带来的危害 33
2.2技术人员的积极性和动力 35
2.3经理和高管的积极性与动力 37
2.4软件人才的选拔和招聘 39
2.5软件人员的考核以及职业生涯规划 39
2.6软件应用早期的范围控制 40
2.7软件应用的外包 41
2.8使用承包商和管理顾问 44
2.9选择软件方法、工具以及做法的最佳实践 45
2.10认证方法、工具以及实践 49
2.11软件应用的需求 54
2.12用户参与软件项目 55
2.13软件应用中的行政管理支持 56
2.14软件架构和设计 57
2.15软件项目规划 58
2.16软件项目的成本估算 59
2.17软件项目的风险分析 61
2.18软件项目的价值分析 63
2.19取消或拯救陷入困境的项目 64
2.20软件项目的组织结构 65
2.21培训软件项目经理 67
2.22培训软件技术人员 69
2.23使用软件专家 69
2.24软件工程师、专家以及管理人员的认证 71
2.25软件项目中的沟通 73
2.26软件的可重用性 74
2.27可重用材料的认证 76
2.28编程 80
2.29软件项目管理 82
2.30软件项目的度量和指标 82
2.31软件的基准和基线 84
2.32软件项目的里程碑和成本跟踪 86
2.33软件发布前的变更控制 87
2.34配置控制 89
2.35软件质量保证 90
2.36审查以及静态分析 92
2.37测试和测试库的控制 95
2.38软件的安全性分析与控制 98
2.39软件的性能分析 100
2.40软件的国际标准 101
2.41软件中的知识产权保护 101
2.42防止病毒、间谍软件以及黑客 103
2.43软件的部署和定制 114
2.44培训软件应用的客户或用户 115
2.45软件应用部署后的客户支持 116
2.46软件担保和召回 117
2.47软件发布后的变更管理 118
2.48软件的维护和功能增强 119
2.49软件应用的更新和发布 121
2.50遗留应用的终止或撤销 122
2.51总结 123
参考文献 123
第3章 2049年的软件开发和维护预览 133
3.1引言 133
3.2需求分析 134
3.3设计 136
3.4软件开发 138
3.5用户文档 140
3.6客户支持 140
3.7部署和客户培训 142
3.8软件维护和功能增强 143
3.9软件外包 146
3.10软件包评估和收购 152
3.11技术选择和技术转型 154
3.12企业架构和项目组合分析 156
3.13软件学习预览 158
3.14尽职调查 160
3.15认证和授权 162
3.16软件诉讼 164
3.17总结 166
参考文献 167
第4章 软件人员如何学习新技能 168
4.1引言 168
4.2软件学习渠道的演变 169
4.3软件工程师当前需要学习哪些技术主题 171
4.4软件工程专家 173
4.5软件专业的种类 175
4.6专家与普通软件人员的大概比率 178
4.7评估软件工程师所使用的学习渠道 179
4.8需要额外教育的软件领域 196
4.9软件学习的新动向 197
4.10总结 198
4.11软件管理和技术类主题课程 198
参考文献 201
第5章 软件团队的组织和专业化 203
5.1引言 203
5.2量化组织结果 204
5.3割裂的信息技术和系统软件世界 204
5.4集中办公与分布式开发 205
5.5软件专家组织面临的挑战 207
5.6由小到大的软件组织结构 209
5.7大型公司的专家组织 226
5.8总结 254
参考文献 255
第6章 项目管理和软件工程 257
6.1引言 257
6.2软件规模估算 263
6.3软件进度与问题跟踪 296
6.4软件基准 300
6.5总结 318
参考文献 318
第7章 需求、业务分析、架构及设计 322
7.1引言 322
7.2软件需求 323
7.3软件需求方法论及实践 337
7.4业务分析 347
7.5软件架构 349
7.6企业架构师 352
7.7软件设计 356
7.8总结 360
参考文献 361
第8章 编程和代码开发 364
8.1引言 364
8.2编程语言开发简史 364
8.3我们为什么会有超过2500种编程语言 366
8.4编程语言普及性的探索 369
8.5我们到底需要多少种编程语言 372
8.6建立一个国家级的编程语言翻译中心 374
8.7为什么大多数软件都使用2~15种编程语言 377
8.8有多少程序员使用多种编程语言 378
8.9源代码中通常会出现何种类型的缺陷 380
8.10软件缺陷的逻辑和属性 382
8.11软件源代码缺陷的预防和去除 387
8.12编程缺陷预防方法 388
8.13缺陷去除方法 396
8.14“代码行”度量方法的经济学问题 403
8.15总结 415
参考文献 416
第9章 软件质量:软件工程成功的关键 419
9.1引言 419
9.2软件质量定义 421
9.3软件质量度量 441
9.4软件缺陷预防 453
9.5软件缺陷去除 462
9.6软件质量专家 467
9.7软件质量的经济价值 479
9.8总结 486
参考文献 486