第一章 欢迎进入软件创建世界 1
1.1 什么是软件创建 1
1.2 软件创建的重要性 3
1.3 小结 4
第二章 利用隐喻对编程进行更深刻的理解 5
2.1 隐喻的重要性 5
2.2 如何使用软件隐喻 6
2.3 通常的软件隐喻 7
2.4 小结 11
第三章 软件创建的先决条件 12
3.1 先决条件重要性 12
3.2 问题定义先决条件 16
3.3 需求分析先决条件 16
3.4 结构设计先决条件 20
3.5 选择编程语言先决条件 26
3.6 编程约定 29
3.7 应花在先决条件上的时间 29
3.8 改变先决条件以适应你的项目 30
3.9 小结 30
第四章 建立子程序步骤 31
4.1 建立程序步骤概述 31
4.2 程序设计语言(PDL) 31
4.3 设计子程序 33
4.4 子程序编码 37
4.5 检查子程序 42
4.6 小结 44
第五章 高质量子程序特点 45
5.1 生成子程序的原因 47
5.2 子程序名称恰当 51
5.3 强内聚性 52
5.4 松散耦合性 56
5.5 子程序长度 60
5.6 防错性编程 61
5.7 子程序参数 67
5.8 使用函数 71
5.9 宏子程序 72
5.10 小结 74
第六章 模块化设计 75
6.1 模块化:内聚性与耦合性 75
6.2 信息隐蔽 77
6.3 建立模块的理由 84
6.4 任何语言中实现模块 85
6.5 小结 90
第七章 高级结构设计 92
7.1 软件设计引论 92
7.2 结构化设计 95
7.3 面向对象 98
7.4 对目前流行设计方法的评论 102
7.5 往返设计 105
7.6 小结 109
第八章 生成数据 111
8.1 数据识别 111
8.2 自建数据类型的原因 113
8.3 自建类型的准则 115
8.4 使变量说明更容易 115
8.5 初始化数据的准则 117
8.6 小结 120
第九章 数据名称 121
9.1 选择名称 121
9.2 特定数据类型的命名 124
9.3 命名约定 128
9.4 非正式命名约定 129
9.5 匈牙利命名约定 132
9.6 短名称 136
9.7 要避免的名称 137
9.8 小结 139
第十章 变量 141
10.1 作用域 141
10.2 持久性 143
10.3 赋值时间 144
10.4 数据结构与控制结构的关系 145
10.5 变量功能单一性 146
10.6 全局变量 148
10.7 小结 153
第十一章 基本数据类型 154
11.1 常数 154
11.2 整型数 155
11.3 浮点数 157
11.4 字符和字符串 159
11.5 逻辑变量 161
11.6 枚举类型 162
11.7 命名常量 164
11.8 数组 166
11.9 指针 167
11.10 小结 175
第十二章 复杂数据类型 176
12.1 记录与结构 176
12.2 表驱动方法 179
12.3 抽象数据类型(ADTs) 192
12.4 小结 198
第十三章 顺序程序语句 199
13.1 必须有明确顺序的程序语句 199
13.2 与顺序无关的程序语句 201
13.3 小结 207
第十四章 条件语句 208
14.1 if语句 208
14.2 case语句 213
14.3 小结 216
第十五章 循环语句 217
15.1 选择循环类型 217
15.2 控制循环(Controlling The Loop) 222
15.3 编写循环的简单方法——从里到外 230
15.4 循环与数组的关系 232
15.5 小结 233
第十六章 少见的控制结构 234
16.1 goto语句 234
16.2 return语句 243
16.3 递归调用 244
16.4 小结 248
第十七章 常见的控制问题 249
17.1 布尔表达式 249
17.2 复合语句(块) 257
17.3 空语句 257
17.4 防止危险的深层嵌套 258
17.5 结构化编程的作用 264
17.6 用goto模拟结构化结构 267
17.7 控制结构和复杂性 269
17.8 小结 271
第十八章 布局和风格 272
18.1 基本原则 272
18.2 布局技巧 279
18.3 布局风格 280
18.4 控制结构布局 285
18.5 单条语句布局 292
18.6 注释布局 301
18.7 子程序布局 303
18.8 文件、模块和程序布局 306
18.9 小结 311
第十九章 文档 313
19.1 外部文档 313
19.2 编程风格作文档 314
19.3 注释还是不注释 316
19.4 有效注释的关键 318
19.5 注释方法 322
19.6 小结 337
第二十章 编程工具 338
20.1 设计工具 338
20.2 源代码工具 339
20.3 执行代码工具 343
20.4 面向工具的环境 345
20.5 建立自己的编程工具 346
20.6 理想编程环境 347
20.7 小结 350
第二十一章 项目大小如何影响创建 351
21.1 项目大小 351
21.2 项目大小对开发活动的影响 352
21.3 项目大小对错误的影响 356
21.4 项目大小对生产效率的影响 357
21.5 小结 358
第二十二章 创建管理 359
22.1 使用好的代码 359
22.2 配置管理 361
22.3 评估创建计划 364
22.4 度量 369
22.5 将程序员视为普通人 370
22.6 如何对待上司 374
22.7 小结 374
第二十三章 软件质量概述 375
23.1 软件质量特点 375
23.2 提高软件质量的方法 377
23.3 各种方法的效果 379
23.4 何时应作质量保证 381
23.5 软件质量的一般原则 381
23.6 小结 382
第二十四章 评审 384
24.1 评审在软件质量保证中的地位 384
24.2 检查 386
24.3 其它评审方法 389
24.4 小结 391
第二十五章 单元测试 393
25.1 单元测试在软件质量中的作用 393
25.2 单元测试的一般方法 395
25.3 测试技巧 396
25.4 典型错误 404
25.5 测试支持工具 408
25.6 提高测试质量 411
25.7 测试记录 412
25.8 小结 412
第二十六章 调试 414
26.1 概述 414
26.2 找错 417
26.3 修改错误 423
26.4 调试心理因素 425
26.5 调试工具 427
26.6 小结 430
第二十七章 系统集成 431
27.1 集成方法重要性 431
27.2 分段与递增集成 432
27.3 递增集成法 434
27.4 改进的公布法 439
27.5 小结 445
第二十八章 代码调整策略 446
28.1 功能综述 446
28.2 代码调整介绍 448
28.3 低效率情况 454
28.4 代码调整方法 457
28.5 小结 457
第二十九章 代码调试技术 459
29.1 循环 459
29.2 逻辑 466
29.3 数据转换 469
29.4 表达式 474
29.5 子程序 483
29.6 汇编语言再编码 484
29.7 调试技术快速参考 485
29.8 小结 486
第三十章 软件优化 487
30.1 软件优化种类 487
30.2 软件优化指南 488
30.3 编写新程序 489
30.4 小结 499
第三十一章 个人性格 501
31.1 个人性格是否和本书的主题无关 501
31.2 聪明和谦虚 502
31.3 好奇心 503
31.4 诚实 504
31.5 交流和合作 506
31.6 创造力和纪律 507
31.7 懒惰 507
31.8 不是你想象中那样起作用的性格 508
31.9 习惯 508
31.10 小结 510
第三十二章 软件开发方法的有关问题 511
32.1 克服复杂性 511
32.2 精选开发过程 513
32.3 首先为人编写程序,其次才是计算机 514
32.4 注重约定使用 515
32.5 根据问题范围编程 516
32.6 当心飞来之祸 517
32.7 重复 519
32.8 不要固执己见 520
32.9 小结 521
第三十三章 从何处获取更多的信息 522
33.1 软件领域的资料库 522
33.2 软件创建信息 523
33.3 创建之外的主题 523
33.4 期刊 524
33.5 参加专业组织 525