《软件工程 卷3 领域、需求与软件设计》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(德)比约尼尔(BjrnerD.)著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302208921
  • 页数:590 页
图书介绍:本书介绍了整体软件开发的基本原理和技巧。本卷倡导一种全新的软件工程开发模式,因此本卷首先介绍领域描述的原理和技术,然后介绍从领域模型导出需求规则的原理和技术,最后介绍细化需求到软件设计的原理和技术。

Ⅰ 开篇 3

1 三部曲范式 3

1.1 软件工程的描绘 3

1.1.1 “旧的”描绘 3

1.1.2 我们的观点:什么是软件工程 5

1.2 软件工程三部曲 6

1.2.1 领域与论域 6

1.2.2 领域工程 7

1.2.3 需求工程 18

1.2.4 软件 20

1.2.5 软件设计 20

1.2.6 讨论 24

1.3 开发的时期、阶段与步骤 25

1.3.1 软件开发的时期 25

1.3.2 开发的阶段与步骤 25

1.3.3 领域开发 27

1.3.4 需求开发 29

1.3.5 计算系统设计 31

1.3.6 讨论:时期、阶段与步骤 32

1.4 三部曲过程模型——首次考虑 33

1.4.1 过程模型的概念 33

1.4.2 三部曲过程模型 34

1.5 第1章的结论 34

1.5.1 概要 34

1.5.2 稍后将会介绍什么 34

1.6 文献评注 34

1.7 练习 35

1.7.1 一系列的软件开发 35

1.7.2 前言的注解 39

1.7.3 练习 39

2 文档 41

2.1 文档编制就是全部 41

2.2 文档部分的种类 41

2.2.1 概述 41

2.2.2 什么是描述 42

2.3 可交付物 43

2.4 信息文档部分 44

2.4.1 姓名、位置和日期 44

2.4.2 合作者 44

2.4.3 当前情况、需要、想法和概念 45

2.4.4 范围、区间、纲要 47

2.4.5 假设和依赖 49

2.4.6 隐含/派生目标 49

2.4.7 标准 50

2.4.8 合同和设计概要 51

2.4.9 日志 52

2.4.10 信息文档编制的讨论 53

2.5 描述文档部分 53

2.5.1 粗略描述 55

2.5.2 术语 57

2.5.3 叙述 59

2.5.4 形式叙述 61

2.5.5 描述性文档编制讨论 63

2.6 分析文档部分 63

2.6.1 概念形成 64

2.6.2 确认 65

2.6.3 验证、模型检查、测试 65

2.6.4 理论形成 66

2.6.5 分析文档编制的讨论 66

2.7 讨论 66

2.7.1 概述 66

2.7.2 章节总结 66

2.8 练习 68

2.8.1 序言 68

2.8.2 练习 68

Ⅱ 概念框架 73

3 方法和方法论 73

3.1 方法 73

3.2 方法学 74

3.3 方法构成 74

3.3.1 原则 74

3.3.2 分析 74

3.3.3 构造(或合成) 75

3.3.4 技术 75

3.3.5 工具 75

3.4 开发原则、技术和工具 75

3.4.1 一些元原则 76

3.4.2 一些原则、技术和工具 76

3.5 讨论 80

3.6 练习 80

4 模型和建模 81

4.1 介绍性、场景设定论述 81

4.1.1 模型和“可能世界” 81

4.1.2 规约的模型 82

4.1.3 建模 82

4.1.4 论域 82

4.2 模型属性 82

4.2.1 类比、分析、形象模型 83

4.2.2 描述和规定模型 85

4.2.3 外延和内涵模型 87

4.3 模型的角色 89

4.4 建模原则 89

4.5 讨论 89

4.6 练习 90

Ⅲ 描述:理论和实践 93

5 现象和概念 93

5.1 前言 93

5.2 现象和概念 93

5.2.1 物理上显然的现象 93

5.2.2 思维构想的概念 94

5.2.3 现象和概念的类别 94

5.2.4 具体和抽象概念 94

5.2.5 描述的类别 95

5.2.6 什么是描述 95

5.3 实体 96

5.3.1 原子实体 96

5.3.2 复合实体 96

5.3.3 子实体 97

5.3.4 值、部分整体关系、属性 97

5.3.5 实体的部分整体关系 97

5.3.6 部分整体关系和属性 98

5.3.7 面向模型的部分整体关系 98

5.3.8 面向模型的属性——题外话 98

5.3.9 实体性质 99

5.3.10 现实的示例和我们的类型系统 99

5.3.11 类型系统 105

5.3.12 类型约束 105

5.3.13 总结:原则、技术和工具 106

5.4 函数 106

5.4.1 函数基调 107

5.4.2 函数定义 108

5.4.3 算法 109

5.5 事件和行为 111

5.5.1 状态、动作、事件和行为 111

5.5.2 同步和通信 112

5.5.3 进程 113

5.5.4 迹 114

5.5.5 进程定义语言 115

5.6 建模现象和概念的选择 115

5.6.1 定性特性 115

5.6.2 定量特性 115

5.6.3 原则、技术和工具 117

5.7 讨论 118

5.7.1 实体、函数、事件和行为 118

5.7.2 密集和问题框架 119

5.8 文献评注 119

5.9 练习 119

5.9.1 序言 119

5.9.2 练习 119

6 关于下定义和关于定义 120

6.1 定义的语用 122

6.1.1 现象、人工制品和概念 122

6.1.2 什么是定义 122

6.1.3 所定义的概念的特性 123

6.1.4 数学定义 123

6.1.5 物理世界定义 123

6.1.6 形式定义 124

6.2 各种各样的哲学定义 124

6.2.1 艺术的六种刻画 124

6.2.2 讨论 125

6.2.3 可能的反对 126

6.3 预备性讨论 126

6.4 形式定义的句法 126

6.4.1 识别和复制 127

6.4.2 唯一性和标识 128

6.4.3 本体论术语 129

6.5 形式定义的语义 129

6.6 讨论 129

6.6.1 概述 129

6.6.2 原则、技术和工具 130

6.7 练习 130

7 Jackson的描述原则 133

7.1 现象、事实和个体 133

7.2 指示 133

7.2.1 一些观察 135

7.2.2 形式化 136

7.2.3 观测器函数和标识 137

7.2.4 数学和计算实体 138

7.2.5 讨论:指示 141

7.3 显式定义 142

7.3.1 定义:“狭窄之桥” 142

7.3.2 抽象、非现实概念的定义 143

7.3.3 要定义多少? 143

7.3.4 讨论:定义 144

7.4 可驳斥断言 144

7.4.1 指示和定义断言 144

7.4.2 分析 145

7.4.3 “悬垂”断言 146

7.4.4 讨论:可驳斥断言 146

7.5 讨论:描述原则 147

7.6 文献评注 147

7.7 练习 147

7.7.1 序言 147

7.7.2 练习 147

Ⅳ 领域工程 151

8 领域工程概述 151

8.1 前言 151

8.2 回顾:为什么有领域工程 151

8.3 部分和章节的概述 152

8.4 领域参与者及其观点 152

8.5 领域获取和确认 153

8.6 领域分析和概念形成 153

8.7 领域刻面 154

8.8 领域开发的辅助阶段 154

8.9 领域模型文档 154

8.9.1 要谈问题的预览 154

8.9.2 领域模型文档内容 155

8.10 这一部分的其他结构 155

8.11 文献评注 156

8.12 练习 156

9 领域参与者 158

9.1 前言 158

9.2 参与者 158

9.2.1 一般应用参与者 158

9.2.2 软件开发参与者 159

9.2.3 列出参与者的目的 160

9.3 参与者观点 160

9.3.1 一般应用的观点 160

9.3.2 软件开发的观点 163

9.4 讨论:参与者及其观点 163

9.4.1 概述 163

9.4.2 原则、技术和工具 164

9.5 练习 164

9.5.1 序言 164

9.5.2 练习 164

9.5.3 尾言 165

10 领域属性 166

10.1 前言 166

10.2 连续、离散和混沌 166

10.2.1 时间 167

10.2.2 连续 167

10.2.3 离散 168

10.2.4 混沌 174

10.2.5 讨论 175

10.3 静态和动态 175

10.3.1 静态现象和概念 176

10.3.2 动态现象和概念 178

10.4 可触知性和不可触知性 192

10.4.1 人可触知的现象 192

10.4.2 其他物理上可触知的现象 195

10.4.3 不可触知的现象 195

10.4.4 讨论 195

10.5 一、二、……维 196

10.5.1 零维 196

10.5.2 一维 196

10.5.3 多维性 197

10.5.4 讨论 198

10.6 讨论 198

10.7 文献评注 199

10.8 练习 199

10.8.1 序言 199

10.8.2 练习 199

11 领域刻面 200

11.1 前言 200

11.1.1 分而治之 201

11.1.2 分离原则的讨论 201

11.1.3 章节结构 201

11.2 领域易化器:企业过程 202

11.2.1 企业过程 202

11.2.2 总体原则 204

11.2.3 非形式和形式示例 205

11.2.4 讨论 208

11.2.5 总结 209

11.2.6 提示 209

11.3 领域内在 209

11.3.1 总体原则 209

11.3.2 概念上和实际的内在 213

11.3.3 方法论上的结果 214

11.3.4 讨论 214

11.3.5 完全本质的内在 215

11.3.6 提醒 215

11.4 领域支持技术 215

11.4.1 整体原则 215

11.4.2 方法论上的结果 218

11.4.3 讨论 219

11.4.4 提醒 219

11.5 领域管理和组织 219

11.5.1 整体原则 219

11.5.2 概念分析,Ⅰ 220

11.5.3 方法论上的结果,Ⅰ+Ⅱ 221

11.5.4 概念分析,Ⅱ 221

11.5.5 方法论上的结果,Ⅲ 223

11.5.6 讨论 223

11.5.7 提醒 223

11.6 领域规则和规定 224

11.6.1 整体原则 224

11.6.2 方法论上的结果 225

11.6.3 规则和规定语言 227

11.6.4 原则和技术 227

11.6.5 提示 227

11.7 领域脚本 228

11.7.1 脚本描述 228

11.7.2 方法论上的结果 247

11.7.3 提醒+更多 247

11.8 领域的人类行为 247

11.8.1 整体原则 248

11.8.2 方法论上的结果 251

11.8.3 人类行为和知识工程 253

11.8.4 讨论 253

11.8.5 提醒 253

11.9 其他的领域刻面 253

11.10 领域模型复合 254

11.10.1 核对领域刻面描述 254

11.10.2 技术问题 255

11.11 练习 255

11.11.1 序言 255

11.11.2 练习 255

12 领域获取 257

12.1 前言 257

12.1.1 领域事实 257

12.1.2 领域事实引出 257

12.1.3 记录领域事实 258

12.1.4 索引领域描述的略述 259

12.2 获取过程 259

12.2.1 参与者联络 260

12.2.2 引出研究 260

12.2.3 引出会谈 261

12.2.4 引出问卷 261

12.2.5 引出报告 263

12.3 讨论 264

12.3.1 概念和过程回顾 264

12.3.2 过程迭代 264

12.3.3 描绘:获取和分析 264

12.3.4 原则、技术和工具 264

12.4 练习 265

12.4.1 序言 265

12.4.2 练习 265

13 领域分析和概念形成 266

13.1 前言 266

13.2 概念形成 266

13.2.1 简单抽象概念 266

13.2.2 突破性被抽象概念 268

13.3 一致性、冲突和完备性 268

13.3.1 不一致性 269

13.3.2 冲突 269

13.3.3 不完备性 269

13.3.4 宽松和非确定性 270

13.4 从分析到合成 270

13.5 讨论 270

13.5.1 概述 270

13.5.2 原则、技术和工具 270

13.6 文献评注 271

13.7 练习 271

13.7.1 序言 271

13.7.2 练习 271

14 领域验证和确认 273

14.1 前言 273

14.2 领域验证 274

14.2.1 非形式推理 274

14.2.2 测试 274

14.2.3 形式证明 275

14.2.4 模型检查 275

14.3 领域确认 275

14.3.1 领域确认文档 275

14.3.2 领域确认过程 276

14.3.3 领域开发迭代 276

14.4 讨论 276

14.4.1 概述 276

14.4.2 原则、技术和工具 276

14.5 练习 277

14.5.1 序言 277

14.5.2 练习 277

15 领域理论 278

15.1 前言 278

15.2 什么是领域理论 278

15.3 领域理论的陈述示例 279

15.4 可能的领域理论 280

15.5 我们如何建立一个理论 281

15.6 领域理论的目的 281

15.7 总结性原则、技术和工具 282

15.8 文献评注 282

15.9 练习 282

15.9.1 序言 282

15.9.2 练习 282

16 领域工程过程模型 285

16.1 前言 285

16.2 领域开发回顾 285

16.3 领域文档回顾 286

16.4 讨论 287

Ⅴ 需求工程 291

17 需求工程综述 291

17.1 前言 293

17.1.1 “需求”的进一步刻画 294

17.1.2 “机器” 294

17.2 为什么需要需求,为了什么 294

17.2.1 为什么需要需求 295

17.2.2 需求是为了什么 295

17.2.3 “实现”是指什么 295

17.3 开始需求开发 295

17.3.1 最初的信息文档 295

17.3.2 需求发现 296

17.3.3 实际的规定性文档编制 297

17.3.4 计划需求开发 298

17.4 关于领域、需求和机器 298

17.5 概述:需求工程的阶段 300

17.6 需求文档 300

17.6.1 将来事情的预览 300

17.6.2 需求文档的内容 300

17.6.3 需求文档的注释 301

17.7 本部分剩下内容的结构 302

17.8 文献评注 302

17.9 练习 302

17.9.1 序言 302

17.9.2 练习 302

18 需求参与者 304

18.1 前言 304

18.2 常规应用的参与者 304

18.3 COTS软件开发商的参与者 305

18.3.1 概述 305

18.3.2 “公司知识” 305

18.3.3 领域特定的需求分类 305

18.3.4 通常的COTS软件相关者的观点 305

18.4 讨论 306

18.4.1 概述 306

18.4.2 原则、技术和工具 306

18.5 练习 306

18.5.1 序言 306

18.5.2 练习 307

19 需求刻面 308

19.1 前言 308

19.2 粗略描述和术语表 309

19.2.1 初始需求建模 309

19.2.2 粗略描述的需求 309

19.2.3 需求术语 314

19.2.4 系统叙述 318

19.3 企业过程再工程需求 318

19.3.1 Michael Hammer关于BPR的概念 319

19.3.2 什么是BPR需求 320

19.3.3 BPR操作概述 320

19.3.4 BPR和需求文档 320

19.3.5 内在回顾和替换 321

19.3.6 支持技术回顾和替换 321

19.3.7 管理和组织再工程 322

19.3.8 规则和规定再工程 322

19.3.9 人类行为再工程 323

19.3.10 脚本再工程 323

19.3.11 讨论:企业过程再工程 323

19.4 领域需求 324

19.4.1 领域到需求的操作 324

19.4.2 领域需求和需求文档 324

19.4.3 领域示例 325

19.4.4 领域投影 326

19.4.5 领域确定 330

19.4.6 领域实例化 333

19.4.7 领域扩展 334

19.4.8 领域需求拟合 336

19.4.9 讨论:领域需求 339

19.5 接口需求 339

19.5.1 共享现象和概念标识 339

19.5.2 接口需求刻面 340

19.5.3 接口需求和需求文档 340

19.5.4 共享数据初始化 341

19.5.5 共享数据刷新 341

19.5.6 计算数据和控制接口需求 342

19.5.7 人机对话 342

19.5.8 人机生理接口 343

19.5.9 机机对话 349

19.5.10 讨论:接口需求 350

19.6 机器需求 351

19.6.1 机器需求刻面 351

19.6.2 机器需求和需求文档 351

19.6.3 性能需求 352

19.6.4 可信性需求 354

19.6.5 故障树分析 357

19.6.6 维护需求 370

19.6.7 平台需求 371

19.6.8 文档编制需求 372

19.6.9 讨论:机器需求 372

19.7 需求模型复合 373

19.7.1 概述 373

19.7.2 合并需求刻面规定 373

19.8 讨论:需求刻面 373

19.8.1 概述 373

19.8.2 原则、技术和工具 373

19.9 文献评注 373

19.10 练习 374

19.10.1 序言 374

19.10.2 练习 374

20 需求获取 376

20.1 需求获取和领域模型 376

20.2 基于领域模型的需求获取 377

20.2.1 领域需求获取、预览 377

20.2.2 其余的需求获取、概览 377

20.2.3 其他问题 378

20.3 概念概述 378

20.3.1 需求 378

20.3.2 需求的引出 378

20.3.3 记录需求 378

20.3.4 索引需求规定描述 380

20.4 获取过程 380

20.4.1 参与者联络 381

20.4.2 引出研究 381

20.4.3 引出会谈 381

20.4.4 引出调查问卷 381

20.4.5 引出报告 384

20.5 讨论 385

20.5.1 概念和过程回顾 385

20.5.2 过程迭代 385

20.5.3 描述:获取和分析 385

20.5.4 原则、技术和工具 385

20.6 练习 386

20.6.1 序言 386

20.6.2 练习 386

21 需求分析和概念形成 387

21.1 前言 387

21.2 概念形成 388

21.3 一致性、冲突和完备性 388

21.3.1 不一致性 389

21.3.2 冲突 389

21.3.3 不完备性 389

21.3.4 宽松性和非确定性 389

21.4 从分析到合成 390

21.5 讨论 390

21.5.1 概述 390

21.5.2 原则、技术和工具 390

21.6 文献评注 391

21.7 练习 391

21.7.1 序言 391

21.7.2 练习 391

22 需求的验证和确认 392

22.1 前言 392

22.2 需求验证 393

22.2.1 非形式推理 393

22.2.2 测试 393

22.2.3 形式证明 394

22.2.4 模型检查 394

22.3 需求确认 394

22.3.1 需求确认文档 394

22.3.2 需求确认过程 395

22.3.3 需求开发迭代 395

22.4 讨论 395

22.4.1 简介 395

22.4.2 原则、技术和工具 395

22.5 文献评注 396

22.6 练习 396

22.6.1 序言 396

22.6.2 练习 396

23 需求的可满足性和可行性 397

23.1 前言 397

23.2 满足性研究 397

23.2.1 正确的(检验过的)需求文档 398

23.2.2 无二义性的需求文档 398

23.2.3 完备的需求文档 398

23.2.4 一致的需求文档 398

23.2.5 稳定的需求文档 398

23.2.6 可验证的需求文档 398

23.2.7 可修改的需求文档 398

23.2.8 可追溯的需求文档 399

23.2.9 忠实的需求文档 399

23.2.10 可满足性的讨论 399

23.3 技术可行性研究 399

23.3.1 企业过程再工程的可行性 399

23.3.2 硬件的可行性 399

23.3.3 软件的可行性 400

23.3.4 技术可行性讨论 400

23.4 经济可行性研究 400

23.4.1 可行的开发费用 400

23.4.2 可行的折旧费用 400

23.4.3 收益大于投入? 400

23.4.4 关于经济可行性的讨论 400

23.5 顺从于隐含/派生目标 401

23.5.1 隐含/派生目标的审阅 401

23.5.2 隐含/派生目标的讨论 401

23.6 讨论 401

23.6.1 概述 401

23.6.2 原则、技术和工具 401

23.7 练习 402

23.7.1 序言 402

23.7.2 练习 402

24 需求工程过程模型 403

24.1 前言 403

24.2 需求开发的回顾 403

24.3 回顾需求文档 404

24.4 重复的内容列表 404

24.5 讨论 405

Ⅵ 计算系统设计 409

25 硬件/软件协同设计 409

25.1 前言——关于体系结构 409

25.2 硬件构件和模块 409

25.3 软件构件和模块 410

25.4 硬件/软件协同设计 410

25.5 体系结构的逐步改进 410

25.6 讨论 411

25.7 原则、技术和工具 411

26 软件体系结构设计 412

26.1 前言 412

26.2 初始的领域需求体系结构 412

26.3 初始机器需求体系结构 414

26.4 一些机器需求的分析 416

26.4.1 性能 416

26.4.2 可用性 416

26.4.3 可存取性 416

26.4.4 适应可维护性 417

26.5 设计决策的优先 417

26.6 相应的设计 417

26.6.1 关于性能的设计决策 417

26.6.2 可用性的设计决策 418

26.6.3 关于可存取性的设计决策 419

26.6.4 关于适应性的设计决策 421

26.7 讨论 421

26.7.1 概述 421

26.7.2 原则和技术 422

26.8 文献评注 422

26.9 练习 423

26.9.1 序言 423

26.9.2 练习 423

27 构件设计的范例分析 424

27.1 概述性前言 424

27.1.1 系统复杂性 424

27.1.2 建议的解决办法 425

27.1.3 逐步开发 425

27.1.4 逐阶段迭代 425

27.2 示例概述 425

27.3 方法论概述 426

27.3.1 原则 426

27.3.2 技术 427

27.4 步骤0:文件和页 428

27.4.1 “快照” 428

27.4.2 抽象的形式模型 428

27.4.3 抽象和具体的基本动作 429

27.4.4 具体动作 431

27.5 步骤1:编目、磁盘和存储器 431

27.5.1 编目目录 431

27.5.2 抽象 434

27.5.3 动作 435

27.5.4 适当性和充分性 437

27.5.5 正确性 437

27.6 步骤2:磁盘 439

27.6.1 数据精化 439

27.6.2 磁盘类型 439

27.6.3 FS0、FS1、FS2类型 440

27.6.4 磁盘类型不变式 440

27.6.5 磁盘类型抽象 441

27.6.6 适当性、充分性、操作和正确性 441

27.7 步骤3:高速缓存 441

27.7.1 技术考虑 441

27.7.2 高速缓存的目录和页访问 441

27.7.3 不变性 443

27.7.4 抽象 443

27.7.5 动作 444

27.7.6 适当性、充分性和正确性 445

27.8 步骤4:存储崩溃 445

27.8.1 存储和磁盘 445

27.8.2 具体语义类型 445

27.8.3 不变性 446

27.8.4 一致的存储和磁盘 446

27.8.5 抽象 448

27.8.6 垃圾收集 448

27.8.7 新动作 449

27.8.8 一些以前的命令 449

27.9 步骤5:扁平化存储和磁盘 450

27.9.1 “扁平”存储和磁盘 450

27.9.2 “其他” 451

27.10 步骤6:磁盘空间管理 451

27.10.1 问题 451

27.10.2 “其他” 452

27.11 讨论 452

27.11.1 概述 452

27.11.2 原则和技术 452

27.12 文献评注 453

27.13 练习 453

27.13.1 序言 453

27.13.2 练习 453

28 特定领域的体系结构 455

28.1 前言 455

28.1.1 概述 455

28.1.2 一些定义 455

28.1.3 关于体系结构 456

28.1.4 问题框架 456

28.1.5 章节结构 457

28.2 翻译器体系结构 457

28.2.1 翻译器领域 457

28.2.2 翻译器需求 458

28.2.3 翻译器设计 459

28.2.4 翻译器开发的过程图 461

28.3 信息储存库体系结构 464

28.3.1 信息储存库领域 465

28.3.2 信息储存库需求 467

28.3.3 信息储存库设计 468

28.4 客户端/服务器体系结构 477

28.4.1 客户端/服务器领域/需求模型 477

28.4.2 一些元RSL/CSP结构 480

28.4.3 单客户端、单服务器模型 482

28.4.4 多客户端、多服务器模型 485

28.4.5 客户端/服务器事件管理器模型 486

28.4.6 讨论 493

28.5 工件体系结构 494

28.5.1 工件领域 494

28.5.2 工件需求 494

28.5.3 工件系统设计 497

28.6 反应系统体系结构 497

28.6.1 反应系统领域 497

28.6.2 反应系统控制需求 499

28.6.3 反应系统控制设计 500

28.6.4 反应系统设计的讨论 500

28.7 连接框架 501

28.7.1 连接领域 501

28.7.2 连接需求 502

28.7.3 连接系统设计 504

28.8 讨论 504

28.8.1 概述 504

28.8.2 原则、技术和工具 504

28.9 练习 505

28.9.1 序言 505

28.9.2 练习 505

29 其他:编码及其全部! 508

29.1 从形式规约到程序设计 508

29.1.1 从规约到程序 508

29.1.2 从抽象类型到数据结构 509

29.1.3 从应用式到命令式程序 509

29.1.4 翻译到并发程序 509

29.1.5 从RSL到SML、Java、C#和其他语言 509

29.2 程序设计之美 509

艺术、规范、工艺、科学、逻辑、实践 509

29.3 程序设计实践 510

29.3.1 结构化程序设计 510

29.3.2 极限程序设计 510

29.3.3 面向对象和UML程序设计 511

29.3.4 主程序员的程序设计 511

29.4 构建信任的软件开发 511

29.4.1 什么时候验证、模型检查和测试 512

29.4.2 演示→框架→原型→系统 513

29.5 验证、模型检查和测试 515

29.5.1 验证 516

29.5.2 模型检查 517

29.5.3 测试 518

29.5.4 讨论 520

29.6 讨论 520

29.7 练习 520

29.7.1 序言 520

29.7.2 练习 520

30 计算系统设计过程模型 521

30.1 前言 521

30.2 软件设计的回顾 521

30.2.1 过程模型 521

30.2.2 讨论 523

30.3 软件设计文档回顾 523

30.4 讨论 525

Ⅶ 结束语 529

31 三部曲开发过程模型 529

31.1 时期过程模型 529

31.2 时期文档编制目录 531

31.3 结论 533

32 尾章 537

32.1 非形式和形式软件工程 537

32.1.1 非形式软件工程 537

32.1.2 形式软件工程 537

32.1.3 结论 538

32.2 形式方法的神话和戒律 538

32.2.1 头七个神话 538

32.2.2 其他的七个神话 539

32.2.3 十个形式方法戒律 540

32.3 FAQ(Frequently Asked Questions):常见问题 541

32.3.1 概述 541

32.3.2 领域 542

32.3.3 需求 543

32.4 研究和工具开发 543

32.4.1 演化的原则、技术和工具 543

32.4.2 巨大的挑战 544

32.5 应用领域 545

32.5.1 其他领域 546

32.5.2 示例 546

32.6 结束语 547

32.6.1 程序设计、工程和管理 547

32.6.2 目前的软件工程综合体系 547

32.6.3 目前的软件工程术语 548

32.6.4 软件工程的全新视角 548

Ⅷ 附录 551

A RSL入门 551

A.1 类型 551

A.1.1 类型表达式 551

A.1.2 类型定义 552

A.2 RSL谓词演算 554

A.2.1 命题表达式 554

A.2.2 简单谓词表达式 554

A.2.3 量化表达式 554

A.3 具体RSL类型 555

A.3.1 集合枚举 555

A.3.2 笛卡尔枚举 555

A.3.3 列表枚举 555

A.3.4 映射枚举 556

A.3.5 集合操作 557

A.3.6 笛卡尔操作 558

A.3.7 列表操作 559

A.3.8 映射操作 561

A.4 λ演算和函数 563

A.4.1 λ演算句法 563

A.4.2 自由和约束变量 563

A.4.3 代入 563

A.4.4 α重命名和β归约 564

A.4.5 函数基调 564

A.4.6 函数定义 564

A.5 其他的应用式表达式 565

A.5.1 let表达式 565

A.5.2 条件 566

A.5.3 操作符/操作数表达式 567

A.6 命令式结构 567

A.6.1 变量和赋值 567

A.6.2 语句序列和skip 568

A.6.3 命令式条件 568

A.6.4 迭代条件式 568

A.6.5 迭代序列化 568

A.7 进程结构 568

A.7.1 进程通道 568

A.7.2 进程复合 569

A.7.3 输入/输出事件 569

A.7.4 进程定义 569

A.8 简单RSL规约 570

B 术语表 571

参考文献 573