C O N T E N T S 1
前言 1
简介 1
目录 1
谁应当读这本书 2
第一部分背 景 3
第一章软件开发成功的十戒律 3
怎样阅读这本书 3
关于作者 4
第二章软件开发总是很困难 18
软件开发的艰难历史 19
2000年问题和其他类似问题 20
很难为成功而建立开发机构 21
很难正确地制定进度和预算 21
很难选择合适的语言和开发工具 22
很难选择合适的OS和硬件平台 22
很难实现一种产品的首次投入使用 22
软件生存周期概述 24
第三章软件开发定义 24
程序设计范例 27
过程化软件 27
模块化软件 31
面向对象的软件 33
分布式和并发式软件 36
开发环境 36
系统建模工具 37
软件结构 39
第四章软件开发趋势 43
通用DBMS 44
套装ERP软件和它的定制 46
网络桌面信息处理技术和平台独立 48
境外开发 50
理顺信息技术基础结构 51
第二部分人 员 55
第五章建立一支无往而不胜的软件开发队伍 55
开发人员短缺 55
软件开发主管 57
软件开发工作描述 57
软件结构总设计师 59
软件开发经理 60
高级软件工程师 61
软件工程师Ⅲ 62
软件工程师Ⅱ 63
软件工程师Ⅰ 63
工具专家 65
网站管理员 66
数据库管理员 68
系统管理员 69
能力跟踪 70
C++编程自评样本 71
Java编程自评样本 72
行为价值评估面试 73
价值#1:主动性 74
价值#2:贡献 74
价值#3:灵活性 75
你的软件开发合伙人 76
价值#4:尊重 76
第六章为成功而组织 78
一家公司的维数 78
组织结构的重要性 78
减少官僚作风 79
组织结构样本 79
以项目为中心的结构 80
以部门为中心的结构 80
矩阵式结构 80
生产线结构 81
反复出现的组织话题 82
建立一个软件方法组 82
平衡集中的和分散的结构 82
管理虚拟组 82
13种组织结构错误 84
第七章招募最好的人才 87
怎样为发展提供人员 87
校园招聘 88
内部推荐 88
代理 89
报纸和其他媒体 89
工作招聘会 89
互联网 90
寻找什么和怎样去寻找 90
技术能力 90
价值观 91
报酬方法 92
第八章留住最好的人才 92
总报酬战略 93
基本工资 93
传统福利 93
独创性福利 93
短期激励 94
长期激励 94
工作轮换 95
指导 97
人力资源问题 98
为什么转变开发人员 99
第九章成功转变开发人员 99
从大型机到客户/服务器的转变 101
从大型机到基于Web的转变 102
从客户/服务器到基于Web的转变 102
从面向过程到面向对象的转变 103
语言细节上的转变问题 103
转变起作用了吗? 104
软件的能力成熟模型 109
第三部分方 法 109
第十章软件生存周期 109
级别一:初始级别 110
级别二:可重复级别 110
级别三:已定义级别 111
级别四:被管理级别 111
级别五:最优化的级别 112
需求分析和定义 112
实施 113
测试计划设计 113
系统结构和设计 113
验证和测试 114
单元测试 115
子系统测试和系统测试 115
黑箱测试和白箱测试 115
a测试和β测试 115
压力测试 116
产品验收 116
为什么需要另外一种方法 117
第十一章快速应用开发 117
战略规划 119
产品定义 119
产品设计 120
产品开发 120
产品交付 120
第十二章软件开发效率、度量标准和质量 122
代码度量标准 122
McCabe度量标准 123
工作环境对效率的影响 125
开发还是购买 126
行业知识的价值 126
标准的重要性 128
企业级结构标准 128
代码编写标准 128
帮助标准 129
第十三章基于Web的产品验收 130
Web的产品验收大事记 130
Web的产品验收调查表 133
人格化的交流 134
内部支持协议(ISA) 135
角色和职责 136
互联网工程 136
安全工程 136
网络工程 137
WebTone工程 137
技术支持 138
应用系统支持 139
Web的产品验收方法 139
硬件支持 139
信息技术应当提供什么,不应当提供什么 141
第四部分技 术 145
第十四章编程语言特点 145
C 145
C++ 146
FORTRAN 146
BASIC 147
Ada 147
Java 148
COBOL 152
LISP 152
脚本语言(Perl、awk、Tcl、ksh) 153
第十五章软件开发工具 154
交互式开发工具 155
BeanMachine 155
CodeWarrior Professional 156
Java Workshop 156
Builder Xcessory Pro 156
JBuilder 157
Super Cede for Java 157
UIM/X 157
Visual Cafe for Java 158
VisualAge 158
Visual J++ 158
GUI开发工具和库 158
JWave 160
Jviews 160
Chart.J 160
数据库工具 161
Blend.J 162
CocoBase 162
Developer/2000 162
GemStone/J 162
JaguarCTS 163
NetDynamics 163
测试工具 163
WebLoad 164
JavaScope 164
Pegasus 164
Web编辑工具 165
代码编辑器 165
编译器 166
调试 167
代码分析 167
性能分析工具 168
组件工具 168
版本和基准控制 169
CASE工具 169
第十六章选择你的硬件环境 171
开发人员的计算机桌面 172
开发服务器 174
文件服务器基准测试 174
编译服务器基准测试 177
数据库服务器基准测试 178
Web服务器基准测试 178
磁盘存储结构 180
网络基础设施 180
与通用服务器相对的单一功能 184
影响软件设计的结构问题 184
SMP结构 185
MPP 186
NUMA 187
集群处理 188
高可靠和高容错系统 188
硬件同OS和编译器设计的关系 190
组件历史 191
第十七章基于组件的软件开发 191
与面向对象技术相对的组件 192
组件软件中的可视化编程技术的作用 193
使用JavaBeans的组件开发 193
第十八章性能优化技术 195
你需要多高的性能 195
如何识别瓶颈 195
磁盘瓶颈 196
网络瓶颈 197
CPU瓶颈 197
内存瓶颈 197
第十九章多线程编程技术 198
多线程技术的定义 198
同步方法 201
第二十章为Web而开发 206
Web浏览器和服务器 206
代理Web服务器 208
CGI编程技术 209
Enterprise JavaBeans 211
Java Applets 211
其他的Java企业级API 213
Java Servlet API 213
JavaServerPages(JSP) 213
Java Messaging Service(JMS)API 213
JavaNaming and Directory(JNDI)API 213
第二十一章具有CORBA、RMI和DCOM的分布式应用系统 215
使用CORBA的分布式对象 216
CORBA服务 218
一个CORBA客户/服务器的例子 219
CORBA工具 219
CORBA应用对象 219
DCOM对象 221
具有RMI的分布式Java应用系统 222
第二十二章Jini技术不为人知的高度 224
Jini基础结构 225
Discover and Join 225
Lookup 226
分布式事件 227
租用 227
分布式编程 227
分布式事务处理 228
与Jini相对的Millennium 228
附录A软件开发中经常问到的问题 229
综合问题 229
与人员相关的问题 230
与方法相关的问题 232
与技术相关的问题 234
软件历史和一些小问题 237
附录B Java编码的标准模板 239
简介 239
源文件 239
源文件命名 240
源文件结构 240
命名习惯 241
程序包命名 241
类/接口命名 241
域命名 241
方法命名 242
语句标号命名 243
空白的使用方法 243
空行 243
空格 244
缩进 245
续行 245
注解 246
文档注解 246
单行注解 247
块注解 247
类的主体结构 248
类 248
接口 251
接口主体结构 251
语句 251
简单语句 251
复合语句 252
标号语句 254
服务器可用时间 255
附录C内部支持协议实例 255
Root授权 255
备份 256
支持责任 256
每个服务器的功能 256
特殊需求 257
附录D外国人名中英文对照 258
附录E专业用语中英文对照 262