目录 1
译者序 1
前言 1
致谢 1
第1章 关注于问题 1
1.1 解决方案之前的问题 1
1.2 计算机和世界 3
1.3 初始的问题焦点 4
1.4 问题不在接口上 6
1.5 描述外部世界的挑战 8
1.5.1 计算机的魅力 8
1.5.2 “系统”的两个含义 9
1.5.3 “模型”的两个含义 9
1.6 无缝开发 11
1.7 一些解决方案 12
1.8 本书的范围 13
第2章 定位问题并确定问题的边界 17
2.1 上下文图 17
2.1.1 物理领域 18
2.1.2 共享现象的接口 19
2.2 上下文图确定问题的边界 20
2.2.1 数据库领域 20
2.2.2 医生以及周期和范围领域 21
2.2.3 ICU病人领域 23
2.3 真实的问题 24
2.3.1 客户 25
2.3.2 进入外部世界要多远 26
2.4 领域接口 27
2.4.1 共享现象是抽象的 28
2.4.2 连接领域 29
2.4.3 忽略连接领域 30
2.4.4 当连接领域不能忽略时 31
2.5 处理较大的上下文 33
2.6 机器领域 35
2.6.1 什么处于机器中 36
2.6.2 当机器是问题领域时 36
第3章 问题和子问题 39
3.1 问题图 39
3.1.1 一个简单的问题图 40
3.1.2 另一个简单的例子 42
3.1.3 简单问题 44
3.1.4 问题分析和问题图 44
3.2 现实的问题 46
3.2.1 分解 47
3.2.2 问题结构化 48
3.3.1 供暖显示 50
3.3 子问题示例 50
3.3.2 输入周期和范围 53
3.3.3 会员报表 55
3.3.4 火炉操作 58
第4章 基本问题类和框架 61
4.1 问题类 61
4.1.1 问题框架 61
4.1.2 五种基本框架 62
4.1.3 问题框架如何互不相同 62
4.2 关于现象和领域 63
4.2.1 个体 63
4.2.2 关系 64
4.2.3 因果现象和符号现象 66
4.2.4 领域类型 66
4.3.1 需求式行为框架 68
4.3 问题框架 68
4.3.2 命令式行为框架 71
4.3.3 信息显示框架 74
4.3.4 简单工件框架 76
4.3.5 变换框架 79
4.3.6 变换限制 81
第5章 框架关注点和开发描述 85
5.1 框架关注点 85
5.2 需求式行为框架关注点 85
5.2.1 框架关注点 86
5.2.2 三个描述 86
5.2.3 为什么一个描述不够 88
5.3 命令式行为框架关注点 90
5.3.1 违抗 90
5.3.2 框架关注点 91
5.3.3 合理的命令需求 92
5.3.4 可行的命令需求 93
5.3.5 门和马达领域特性 94
5.3.6 机器规格说明 96
5.4 信息显示框架关注点 97
5.4.1 框架关注点 97
5.4.2 车辆和感应器领域特性 99
5.5 简单工件框架关注点 101
5.5.1 框架关注点 102
5.5.2 晚会规划领域描述 103
5.5.3 用户命令 104
5.5.4 需求 104
5.5.5 晚会规划编辑规格说明 106
5.6 变换框架关注点 107
5.6.1 输入领域特性 108
5.6.2 输出领域特性 109
5.6.4 遍历 110
5.6.3 需求 110
5.6.5 框架关注点 111
5.6.6 变换机器的效率 111
5.7 两点注释 113
5.7.1 问题框架和开发方法 113
5.7.2 框架失配 114
第6章 框架风格和开发描述 117
6.1 框架和风格 117
6.1.1 领域描述的范围 117
6.1.2 领域风格 118
6.2 静态风格 119
6.2.1 物理的静态领域 119
6.2.2 结构化风格 121
6.3.1 动态领域的宽容性 124
6.3 动态风格 124
6.3.2 抑制 125
6.3.3 离散现象和连续现象 126
6.4 控制风格 127
6.4.1 行为状态 127
6.4.2 行为领域特征 129
6.5 非形式化的风格 131
6.5.1 拘泥于形式的假设 132
6.5.2 指代 133
6.5.3 定义更方便的术语 134
6.6 概念风格 137
6.6.1 概念作为实体 138
6.6.2 实体和需求进程 139
6.6.3 标记进程 140
7.1 信息问题 143
第7章 模型领域和现实世界 143
7.2 第一个例子 144
7.2.1 问题 144
7.2.2 从变量到模型 145
7.2.3 关于作为模型 147
7.2.1 更多的变量 148
7.3 引入一个模型领域 149
7.3.1 模型和现实世界 150
7.3.2 现实世界领域特性 151
7.3.3 设计模型 152
7.3.4 维护和使用模型 154
7.4 另一个模型例子 155
7.4.1 问题 155
7.4.2 一个不带模型的版本 156
7.4.3 一个更难的版本 157
7.4.4 一个朴素的线路模型 158
7.4.5 一个更实际的模型 159
7.5 模型中的控制和定义 160
7.5.1 C3引起C1 161
7.5.2 C3根据C1来定义 162
7.5.3 C1引起C3 162
7.6 一些模型关注点 164
第8章 变体框架 169
8.1 框架和变体 169
8.2 描述变体 169
8.2.1 问题图 170
8.2.2 描述领域 171
8.2.3 变换问题描述变体 172
8.2.4 信息问题描述变体 173
8.3.1 信息问题操作者变体 175
8.3 操作者变体 175
8.3.2 命令式信息需求 176
8.3.3 组合基本框架和变体框架 176
8.3.4 修改默认行为 177
8.3.5 重载默认行为 178
8.4 连接变体 178
8.4.1 带连接领域的需求式行为框架 179
8.4.2 因果远程领域 181
8.4.3 领域特性描述 181
8.4.4 组合变体 182
8.4.5 可叫牌远程领域和连接领域 183
8.4.6 作为连接领域的文档 185
8.5 控制变体 186
8.5.1 一个变换问题 187
8.5.2 其他控制变体 190
第9章 特定的关注点 193
9.1 框架关注点及其他 193
9.2 溢出关注点 193
9.2.1 当机器太快了 194
9.2.2 针对溢出的策略 194
9.3 初始化关注点 196
9.3.1 机器和外部世界的初始化 196
9.3.2 初始化和描述的跨度 197
9.3.3 操作指令和领域描述 198
9.3.4 通过机器的初始化 199
9.3.5 信息问题中的初始化 200
9.4 可靠性关注点 201
9.4.1 评估可靠性关注点 202
9.4.2 分离可靠性关注点 202
9.4.3 通过分解解决可靠性 204
9.4.5 诊断的困难 207
9.4.4 信息问题中的可靠性 207
9.5 身份关注点 208
9.5.1 身份关注点中的接口 209
9.5.2 一个身份模型 210
9.5.3 模型创建和维护 211
9.6 完整性关注点 213
9.6.1 一种形式的完整性 213
9.6.2 描述的跨度 214
9.6.3 两个启发式 214
9.6.4 避免死锁 216
9.6.5 一般的观察 216
第10章 再论分解 219
10.1 引言 219
10.2 包路由器问题1 219
10.2.1 一个简单的分解 221
10.2.2 框架关注点 224
10.3 包路由器问题2 228
10.3.1 静态模型中的预计算 229
10.3.2 身份关注点 229
10.3.3 一些可能的自动机 230
10.3.4 可靠性 231
10.3.5 初始化 233
10.3.6 完整性 233
10.4 分解启发式 236
10.4.1 简单的启发式 237
10.4.2 不同的节奏 237
10.4.3 多于两种语气 239
10.4.4 复杂领域或需求 240
10.4.5 为用户或操作者建模 240
11.1 引言 243
第11章 组合框架 243
11.2 组合问题 245
11.2.1 公共领域 246
11.2.2 一个非交互的组合 246
11.2.3 共享显示领域 248
11.2.4 命令式行为和需求式行为 249
11.2.5 创建和使用词法领域 250
11.3 组合关注点 251
11.3.1 可通约的描述 252
11.3.2 一致性 253
11.3.3 优先级 256
11.3.4 干扰 257
11.3.5 同步 263
12.1 软件开发的不成熟性 267
12.1.1 软件质量 267
第12章 增长式软件开发 267
12.1.2 灵丹妙药综合症 268
12.1.3 成熟和熟练 268
12.2 开发失败的风险 270
12.3 浅层需求 272
12.4 非功能需求 273
12.5 外行的做法 274
12.6 陷入复杂性中 275
12.7 集中注意力 277
12.8 合理看待问题框架 281
12.8.1 不是灵丹妙药 281
12.8.2 寻找更多的框架 281
12.8.3 从经验中学习 282
附录 表示法 285
术语表 291
参考文献 299