译者序
前言
致谢
第1章 关注于问题
1. 1 解决方案之前的问题
1. 2 计算机和世界
1. 3 初始的问题焦点
1. 4 问题不在接口上
1. 5 描述外部世界的挑战
1. 5. 1 计算机的魅力
1. 5. 2 "系统"的两个含义
1. 5. 3 "模型"的两个含义
1. 6 无缝开发
1. 7 一些解决方案
1. 8 本书的范围
第2章 定位问题并确定问题的边界
2. 1 上下文图
2. 1. 1 物理领域
2. 1. 2 共享现象的接口
2. 2 上下文图确定问题的边界
2. 2. 1 数据库领域
2. 2. 2 医生以及周期和范围领域
2. 2. 3 ICU病人领域
2. 3 真实的问题
2. 3. 1 客户
2. 3. 2 进入外部世界要多远
2. 4 领域接口
2. 4. 1 共享现象是抽象的
2. 4. 2 连接领域
2. 4. 3 忽略连接领域
2. 4. 4 当连接领域不能忽略时
2. 5 处理较大的上下文
2. 6 机器领域
2. 6. 1 什么处于机器中
2. 6. 2 当机器是问题领域时
第3章 问题和子问题
3. 1 问题图
3. 1. 1 一个简单的问题图
3. 1. 2 另一个简单的例子
3. 1. 3 简单问题
3. 1. 4 问题分析和问题图
3. 2 现实的问题
3. 2. 1 分解
3. 2. 2 问题结构化
3. 3 子问题示例
3. 3. 1 供暖显示
3. 3. 2 输入周期和范围
3. 3. 3 会员报表
3. 3. 4 火炉操作
第4章 基本问题类和框架
4. 1 问题类
4. 1. 1 问题框架
4. 1. 2 五种基本框架
4. 1. 3 问题框架如何互不相同
4. 2 关于现象和领域
4. 2. 1 个体
4. 2. 2 关系
4. 2. 3 因果现象和符号现象
4. 2. 4 领域类型
4. 3 问题框架
4. 3. 1 需求式行为框架
4. 3. 2 命令式行为框架
4. 3. 3 信息显示框架
4. 3. 4 简单工件框架
4. 3. 5 变换框架
4. 3. 6 变换限制
第5章 框架关注点和开发描述
5. 1 框架关注点
5. 2 需求式行为框架关注点
5. 2. 1 框架关注点
5. 2. 2 三个描述
5. 2. 3 为什么一个描述不够
5. 3 命令式行为框架关注点
5. 3. 1 违抗
5. 3. 2 框架关注点
5. 3. 3 合理的命令需求
5. 3. 4 可行的命令需求
5. 3. 5 门和马达领域特性
5. 3. 6 机器规格说明
5. 4 信息显示框架关注点
5. 4. 1 框架关注点
5. 4. 2 车辆和感应器领域特性
5. 5 简单工件框架关注点
5. 5. 1 框架关注点
5. 5. 2 晚会规划领域描述
5. 5. 3 用户命令
5. 5. 4 需求
5. 5. 5 晚会规划编辑规格说明
5. 6 变换框架关注点
5. 6. 1 输入领域特性
5. 6. 2 输出领域特性
5. 6. 3 需求
5. 6. 4 遍历
5. 6. 5 框架关注点
5. 6. 6 变换机器的效率
5. 7 两点注释
5. 7. 1 问题框架和开发方法
5. 7. 2 框架失配
第6章 框架风格和开发描述
6. 1 框架和风格
6. 1. 1 领域描述的范围
6. 1. 2 领域风格
6. 2 静态风格
6. 2. 1 物理的静态领域
6. 2. 2 结构化风格
6. 3 动态风格
6. 3. 1 动态领域的宽容性
6. 3. 2 抑制
6. 3. 3 离散现象和连续现象
6. 4 控制风格
6. 4. 1 行为状态
6. 4. 2 行为领域特征
6. 5 非形式化的风格
6. 5. 1 拘泥于形式的假设
6. 5. 2 指代
6. 5. 3 定义更方便的术语
6. 6 概念风格
6. 6. 1 概念作为实体
6. 6. 2 实体和需求进程
6. 6. 3 标记进程
第7章 模型领域和现实世界
7. 1 信息问题
7. 2 第一个例子
7. 2. 1 问题
7. 2. 2 从变量到模型
7. 2. 3 关于作为模型
7. 2. 4 更多的变量
7. 3 引入一个模型领域
7. 3. 1 模型和现实世界
7. 3. 2 现实世界领域特性
7. 3. 3 设计模型
7. 3. 4 维护和使用模型
7. 4 另一个模型例子
7. 4. 1 问题
7. 4. 2 一个不带模型的版本
7. 4. 3 一个更难的版本
7. 4. 4 一个朴素的线路模型
7. 4. 5 一个更实际的模型
7. 5 模型中的控制和定义
7. 5. 1 C3引起C1
7. 5. 2 C3根据C1来定义
7. 5. 3 C1引起C3
7. 6 一些模型关注点
第8章 变体框架
8. 1 框架和变体
8. 2 描述变体
8. 2. 1 问题图
8. 2. 2 描述领域
8. 2. 3 变换问题描述变体
8. 2. 4 信息问题描述变体
8. 3 操作者变体
8. 3. 1 信息问题操作者变体
8. 3. 2 命令式信息需求
8. 3. 3 组合基本框架和变体框架
8. 3. 4 修改默认行为
8. 3. 5 重载默认行为
8. 4 连接变体
8. 4. 1 带连接领域的需求式行为框架
8. 4. 2 因果远程领域
8. 4. 3 领域特性描述
8. 4. 4 组合变体
8. 4. 5 可叫牌远程领域和连接领域
8. 4. 6 作为连接领域的文档
8. 5 控制变体
8. 5. 1 一个变换问题
8. 5. 2 其他控制变体
第9章 特定的关注点
9. 1 框架关注点及其他
9. 2 溢出关注点
9. 2. 1 当机器太快了
9. 2. 2 针对溢出的策略
9. 3 初始化关注点
9. 3. 1 机器和外部世界的初始化
9. 3. 2 初始化和描述的跨度
9. 3. 3 操作指令和领域描述
9. 3. 4 通过机器的初始化
9. 3. 5 信息问题中的初始化
9. 4 可靠性关注点
9. 4. 1 评估可靠性关注点
9. 4. 2 分离可靠性关注点
9. 4. 3 通过分解解决可靠性
9. 4. 4 信息问题中的可靠性
9. 4. 5 诊断的困难
9. 5 身份关注点
9. 5. 1 身份关注点中的接口
9. 5. 2 一个身份模型
9. 5. 3 模型创建和维护
9. 6 完整性关注点
9. 6. 1 一种形式的完整性
9. 6. 2 描述的跨度
9. 6. 3 两个启发式
9. 6. 4 避免死锁
9. 6. 5 一般的观察
第10章 再论分解
10. 1 引言
10. 2 包路由器问题1
10. 2. 1 一个简单的分解
10. 2. 2 框架关注点
10. 3 包路由器问题2
10. 3. 1 静态模型中的预计算
10. 3. 2 身份关注点
10. 3. 3 一些可能的自动机
10. 3. 4 可靠性
10. 3. 5 初始化
10. 3. 6 完整性
10. 4 分解启发式
10. 4. 1 简单的启发式
10. 4. 2 不同的节奏
10. 4. 3 多于两种语气
10. 4. 4 复杂领域或需求
10. 4. 5 为用户或操作者建模
第11章 组合框架
11. 1 引言
11. 2 组合问题
11. 2. 1 公共领域
11. 2. 2 一个非交互的组合
11. 2. 3 共享显示领域
11. 2. 4 命令式行为和需求式行为
11. 2. 5 创建和使用词法领域
11. 3 组合关注点
11. 3. 1 可通约的描述
11. 3. 2 一致性
11. 3. 3 优先级
11. 3. 4 干扰
11. 3. 5 同步
第12章 增长式软件开发
12. 1 软件开发的不成熟性
12. 1. 1 软件质量
12. 1. 2 灵丹妙药综合症
12. 1. 3 成熟和熟练
12. 2 开发失败的风险
12. 3 浅层需求
12. 4 非功能需求
12. 5 外行的做法
12. 6 陷入复杂性中
12. 7 集中注意力
12. 8 合理看待问题框架
12. 8. 1 不是灵丹妙药
12. 8. 2 寻找更多的框架
12. 8. 3 从经验中学习
附录 表示法
术语表
参考文献