《软件可靠性工程手册》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)(M.R.柳)Michael R. Lyu主编;刘喜成等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:1997
  • ISBN:7505338846
  • 页数:553 页
图书介绍:

第一部分 技术基础 1

第一章 导论 1

1.1 可靠软件的需求 1

1.2 基本定义 2

1.2.1 错误与失效 3

1.2.2 时间 4

1.2.3 操作环境 5

1.2.4 失效数据采集 5

1.2.5 评价与预测 8

1.2.6 其它术语 9

1.2.7 实例 9

1.3 软件可靠性建模 10

1.3.1 建模原理 11

1.3.2 软件可靠性模型评价 11

1.3.3 改进软件可靠性工程的方法 14

1.4 相关技术领域 14

1.4.1 避错 14

1.4.2 排错 15

1.4.3 容错 15

1.4.4 错误/失效预报 15

1.4.5 本书的内容 16

1.5 本书的范围和结构 16

1.6 小结 17

习题 17

第二章 软件可靠性与系统可靠性 19

2.1 引言 19

2.2 可靠性概念 19

2.2.1 基本定义 19

2.2.2 关于可依赖性损害因素 20

2.2.3 关于可依赖性的属性 22

2.2.4 关于可依赖性问题 23

2.3 X软件系统的失效行为 24

2.3.1 原子系统 24

2.3.2 由组件构成的系统 28

2.4 具有服务恢复作用的X软件系统失效行为 33

2.4.1 系统行为的特性 33

2.4.2 维护策略 34

2.4.3 可靠性建模 36

2.4.4 可用性建模 40

2.5 可靠性评价的技术状况 43

2.6 小结 45

习题 46

第三章 软件可靠性建模概述 47

3.1 引言 47

3.2 历史简述与现实 47

3.2.1 历史背景 47

3.2.2 模型分类方案 48

3.2.3 模型限制和实现问题 50

3.3 指数失效时间模型组 51

3.3.1 Jelinski-Moranda De-Eutrophication模型 51

3.3.2 非均匀泊松分布过程(NHPP)模型 52

3.3.3 Schneidewind模型 54

3.3.4 Muss基本执行时间模型 57

3.3.5 超指数模型 59

3.3.6 其它 60

3.4 Weibull和Gamma失效时间模型类 61

3.4.1 Weibull模型 61

3.4.2 S-型可靠性增长模型 63

3.5 无限失效类模型 64

3.5.1 Duane模型 65

3.5.2 几何模型 66

3.5.3 Musa-Okumoto对数泊松分布 67

3.6 贝叶斯模型 69

3.6.1 Littlewood-Verral可靠性增长模型 70

3.6.2 Langberg和Singpurwalla的贝叶斯模型 72

3.7 模型关系 72

3.7.1 通用指数模型类 73

3.7.2 指数有序统计模型类 73

3.8 生命周期初期的软件可靠性预测 74

3.8.1 基于相位的模型 74

3.8.2 由Ada设计预测软件错误 74

3.8.3 Rome实验室的工作 75

3.9 其它软件可靠性建模方法 76

3.10 小结 76

习题 77

第四章 预测分析及重新校准方法 79

4.1 引言 79

4.2 有关模型不一致和不精确的示例 80

4.2.1 简单的短期预测 80

4.2.2 较长时间段预测 82

4.2.3 数据源到数据源模型标准性变化 83

4.2.4 为什么我们不能择选一个最好的先验模型 84

4.2.5 讨论—一种可能的方法 84

4.3 分析预测准确性的方法 85

4.3.1 基本想法——预测和最终结果的递归比较 85

4.3.2 序列似然度比率(PLR) 87

4.3.3 u结构图(u-Plot) 89

4.3.4 y结构图(y-Plot) 93

4.3.5 讨论—预测差错的可靠性质及怎样检测不准确性 94

4.4 重新校准 95

4.4.1 u-结构图作为检测“偏差”的方法 95

4.4.2 重新校准方法 96

4.4.3 有关重新校准效果的示例 97

4.5 工作示例 99

4.6 讨论 104

4.6.1 好消息的总结—我们现在在哪里 104

4.6.2 目前方法的局限 105

4.6.3 改进方法的可能途径 106

4.6.4 对潜在用户的最佳建议 107

4.7 小结 107

习题 108

第五章 操作概图 110

5.1 引言 110

5.2 概念 111

5.3 开发过程 112

5.3.1 客户概图 114

5.3.2 用户概图 114

5.3.3 系统模式概图 115

5.3.4 功能概图 116

5.3.5 操作概图 121

5.4 测试选择 128

5.4.1 选择操作 129

5.4.2 回归测试 130

5.5 特殊问题 130

5.5.1 间接输入变量 130

5.5.2 更新操作概图 131

5.5.3 分布式系统 131

5.6 其它用途 132

5.7 对DEFINITY的应用 133

5.7.1 项目描述 133

5.7.2 开发过程描述 133

5.7.3 描述操作概图 133

5.7.4 执行操作概图 134

5.8 在FASTAR(快速自动恢复)上的应用 135

5.8.1 系统描述 135

5.8.2 FASTAR:SRE的实现 136

5.8.3 FASTAR:SRE的好处 139

5.9 在电力品种资源系统(PQRS)中的应用 140

5.9.1 项目描述 140

5.9.2 开发操作概图 140

5.9.3 测试 142

5.9.4 结论 143

5.10 小结 143

习题 143

第二部分 实践与经验 145

第六章 软件可靠性工程的最优通用实现方法 145

6.1 引言 145

6.2 软件可靠性工程二优点和实现方法 146

6.2.1 价值和优点 146

6.2.2 软件可靠性工程成功应用实例 146

6.2.3 软件可靠性工程的费用 147

6.2.4 软件可靠性工程活动 147

6.2.5 渐进式运用软件可靠性工程 148

6.2.6 在已开展的项目中适用软件可靠性工程 149

6.2.7 在短周期项目中运用软件可靠性工程 149

6.3 可行性与需求分析阶段的软件可靠性工程活动 150

6.3.1 可行性分析阶段 150

6.3.2 需求分析阶段 151

6.4 设计和实现阶段的软件可靠性工程活动 153

6.4.1 设计阶段 153

6.4.2 实现阶段 154

6.5 系统测试及现场运行阶段的软件可靠性工程活动 155

6.5.1 确定操作概图 156

6.5.2 系统测试阶段 156

6.5.3 现场试运行阶段 159

6.6 交付后及维护阶段的软件可靠性工程活动 159

6.6.1 规划发行后的人员需求 159

6.6.2 监视现场可靠性是否达到指标 159

6.6.3 跟踪调查用户的满意程度 161

6.6.4 通过监视可靠性安排新功能的引入时间 162

6.6.5 用可靠性度量指导产品及工程过程的改进 162

6.7 启动软件可靠性工程 162

6.7.1 为开展软件可靠性工程作组织准备 162

6.7.2 获得进一步的信息和支持 164

6.7.3 做关于软件可靠性工程的自我评价 164

6.8 小结 165

习题 166

第七章 软件可靠性度量经验 168

7.1 引言 168

7.2 度量的框架工作 169

7.2.1 确立软件可靠性要求 170

7.2.2 规划数据收集过程 174

7.2.3 定义收集数据 175

7.2.4 预选软件可靠性模型 178

7.2.5 选择可靠性建模工具 179

7.2.6 模型应用和有关问题 179

7.2.7 软件进化的处理 180

7.2.8 超可靠性建模的实际局限 181

7.3 喷气推进实验室项目分析 182

7.3.1 项目选择及特征说明 182

7.3.2 数据特征说明 182

7.3.3 实验结果 183

7.4 贝尔实验室项目分析 184

7.4.1 项目特点 185

7.4.2 数据收集 185

7.4.3 模型应用结果 186

7.5 模型结果的线性组合 190

7.5.1 静态加权线性组合 191

7.5.2 基于模型结果的分级确定权值 191

7.5.3 基于序列似燃度的变化确定权值 191

7.5.4 建模结果举例 191

7.5.5 工程总体结果 192

7.5.6 扩展与改进 194

7.5.7 长期预测能力 196

7.6 小结 197

习题 197

第八章 基于度量的软件可靠性分析 199

8.1 引言 199

8.2 基本框架 199

8.2.1 概述 199

8.2.2 运行及开发阶段的可靠性评估 200

8.2.3 过去的研究 201

8.3 度量技术 202

8.3.1 在线自动记录 202

8.3.2 人工报告 204

8.4 数据的初步分析 206

8.4.1 数据处理 206

8.4.2 故障和错误分类 207

8.4.3 错误传播 209

8.4.4 错误及恢复分布 211

8.5 数据的详细分析 214

8.5.1 关联性分析 214

8.5.2 与硬件有关的软件错误 216

8.5.3 软件容错的评估 216

8.5.4 再次失效 220

8.6 模型识别和模型的分析 223

8.6.1 失效对系统性能的影响 223

8.6.2 运行阶段可靠性模型的建立 225

8.6.3 错误/失效/恢复模型 227

8.6.4 多重错误模型 230

8.7 系统活动的影响 231

8.7.1 从度量得出的统计模型 232

8.7.2 全局的系统行为模型 233

8.8 小结 236

习题 237

第九章 正交缺陷分类 240

9.1 引言 240

9.2 软件缺陷概况 241

9.2.1 软件开发过程中的缺陷 241

9.2.2 缺陷分析的频谱 243

9.3 正交缺陷分类原则 245

9.3.1 直观认识 245

9.3.2 正交缺陷分类的设计 247

9.3.3 必要条件 247

9.3.4 充分条件 248

9.4 缺陷类型属性 248

9.5 用缺陷类型进行相对风险估计 250

9.5.1 增长曲线的主观特征 251

9.5.2 将ODC与增长模型相结合 252

9.6 缺陷触发属性 257

9.6.1 触发概念 257

9.6.2 系统测试触发 258

9.6.3 检查和检验触发 258

9.6.4 功能测试触发 259

9.6.5 触发的使用 259

9.7 多维分析 262

9.8 推广ODC 264

9.9 小结 265

习题 266

第十章 趋向分析 268

10.1 引言 268

10.2 可靠性增强特性 269

10.2.1 可靠性增强的定义 269

10.2.2 次加性的图解 270

10.2.3 次加性分析 271

10.2.4 次加性和趋势变化 272

10.2.5 某些特殊情况 273

10.2.6 结论 273

10.3 趋势分析 274

10.3.1 趋势测试 274

10.3.2 举例 280

10.3.3 从趋势分析中得出的典型结果 284

10.3.4 结论 285

10.4 运用于实际系统 285

10.4.1 系统SS4的软件 286

10.4.2 系统S27的软件 286

10.4.3 系统SS1的软件 286

10.4.4 系统SS2的软件 288

10.4.5 SAV 289

10.5 向静态分析的扩展 290

10.5.1 静态分析产品 290

10.5.2 应用 291

10.6 小结 292

习题 293

第十一章 现场数据分析 296

11.1 引言 296

11.2 数据收集原则 298

11.2.1 研究计划、目标和输入变量 298

11.2.2 失效、故障和相关数据 298

11.2.3 时间 300

11.2.4 使用 300

11.2.5 数据粒度 301

11.2.6 数据维护与有效性确认 302

11.2.7 分析环境 302

11.3 数据分析原则 304

11.3.1 图形和图线 304

11.3.2 数据建模及诊断 307

11.3.3 模型诊断与确定 307

11.3.4 数据转换 309

11.4 现场数据分析中的重要问题 311

11.4.1 日历时间 311

11.4.2 使用时间 311

11.4.3 举例 311

11.5 可靠性的日历时间分析 312

11.5.1 实测研究(IBM公司) 313

11.5.2 实测研究(日立软件工程株式会社) 314

11.5.3 进一步的例子 316

11.6 基于使用的可靠性分析 316

11.6.1 实例研究(Northem Telecom电信系统公司) 317

11.6.2 进一步的例子 318

11.7 特殊事件 318

11.7.1 稀少事件模型 319

11.7.2 实例分析(航天飞机飞行软件) 321

11.8 可用性 323

11.8.1 介绍 323

11.8.2 测试的有用性 323

11.8.3 经验非可用性 324

11.8.4 模型 325

11.9 小组结 327

习题 328

第三部分 工程技术 330

第十二章 软件可靠性估计的度量 330

12.1 引言 330

12.2 静态程序的复杂性 331

12.2.1 软件度量 331

12.2.2 软件属性的域模型 331

12.2.3 主要元素分析 332

12.2.4 度量的使用 334

12.2.5 相对程序复杂度 335

12.2.6 软件的进化 335

12.3 动态程序复杂度 337

12.3.1 执行概况 338

12.3.2 功能复杂度 339

12.3.3 功能复杂度的动态概念 339

12.3.4 操作复杂度 341

12.4 软件复杂度和软件质量 342

12.4.1 介绍 342

12.4.2 应用程序和度量 343

12.4.3 软件质量控制中的多变量分析 345

12.4.4 错误预测模型 346

12.4.5 随增加域覆盖而增加预测模型 349

12.5 软件可靠性建模 351

12.5.1 用软件复杂度度量值进行可靠性建模 352

12.5.2 增加的构成问题 353

12.6 小结 354

习题 355

第十三章 软件测试和可靠性 356

13.1 引言 356

13.2 软件测试概论 356

13.2.1 软件测试的种类 357

13.2.2 由白匣子和黑匣子测试引出的概念 357

13.3 操作概图 358

13.3.1 操作概图估计中的困难 358

13.3.2 用非精确操作概图估计可靠性 359

13.4 基于时间/结构的软件可靠性估计 360

13.4.1 定义和术语 360

13.4.2 基本假设 361

13.4.3 测试方法和饱和效应 361

13.4.4 测试量 361

13.4.5 测试方法的极限 362

13.4.6 饱和效应的试验基础 363

13.4.7 由于饱和效应导致对可靠性的过高估计 363

13.4.8 覆盖与可靠性估计相结合 364

13.4.9 用覆盖信息过滤失效数据 365

13.4.10 选择压缩比 368

13.4.11 处理罕见事件 370

13.5 软件风险的微观模型 370

13.5.1 基于测试的风险衰减模型 370

13.5.2 风险估计——一个例子 371

13.5.3 简单的风险计算 372

13.5.4 风险浏览器 374

13.5.5 风险模型和软件可靠性 374

13.6 小结 375

习题 377

第十四章 软件容错可靠性工程 379

14.1 引言 379

14.2 现状 379

14.3 原理和术语 380

14.3.1 结果验证 381

14.3.2 冗余技术 383

14.3.3 失效和故障 384

14.3.4 表决判定 384

14.3.5 容差 385

14.4 基本技术 387

14.4.1 恢复块 387

14.4.2 N版本程序设计 388

14.5 先进技术 389

14.5.1 一致性恢复块 389

14.5.2 接收表决 389

14.5.3 N自检程序设计 390

14.6 可靠性建模 391

14.6.1 失效的独立性 391

14.6.2 数据域建模 393

14.6.3 时间域建模 397

14.7 存在版本间失效相关情况下的可靠性 398

14.7.1 一个实验 398

14.7.2 失效关联 399

14.7.3 一致性表决 400

14.7.4 一致性恢复块 401

14.7.5 接收表块 403

14.8 多版本容错软件的开发与测试 403

14.8.1 需求与设计 404

14.8.2 校验、有效性确认和测试 404

14.8.3 容错软件的成本 405

14.9 小结 406

习题 407

第十五章 使用故障树对软件系统分析 410

15.1 引言 410

15.2 故障树建模 410

15.2.1 割集的生成 411

15.2.2 故障树分析 413

15.3 软件系统辅助设计故障树 415

15.4 使用故障树确认安全性 416

15.5 容错软件系统分析 418

15.5.1 恢复块系统的故障树模型 420

15.5.2 N个版本程序设计系统的故障树模型 421

15.5.3 N自检程序设计系统的故障树模型 422

15.6 容错软件的定量分析 424

15.6.1 从试验数据中进行参数估计的方法 424

15.6.2 参数估计值的实例研究 427

15.6.3 三个软件容错系统的比较分析 429

15.7 硬件和软件系统的系统级分析 431

15.7.1 系统的可靠性和DRB的安全模型 432

15.7.2 系统可靠性和NVP的安全性模型 433

15.7.3 系统可靠性和NSCP安全性模型 435

15.7.4 系统级分析中的一个实例研究 435

15.8 小结 437

习题 440

第十六章 软件可靠性仿真 442

16.1 引言 442

16.2 可靠性仿真 443

16.2.1 对动态仿真的需要 443

16.2.2 动态仿真方法 444

16.3 可靠性过程 444

16.3.1 过程性质 445

16.3.2 结构和流程 445

16.3.3 元素间的相互依赖性 446

16.3.4 软件环境特性 447

16.4 基于工作产品的仿真 447

16.4.1 仿真器结构 447

16.4.2 结果 450

16.5 基本变化率仿真 451

16.5.1 事件过程统计 451

16.5.2 单一事件过程仿真 452

16.5.3 重复发生事件统计 453

16.5.4 重复发生事件仿真 454

16.5.5 次要事件仿真 455

16.5.6 有效增长仿真 456

16.5.7 通用仿真算法 456

16.6 基于率的可靠性 458

16.6.1 传统模型的率函数 458

16.6.2 仿真器的结构 459

16.6.3 结果显示 460

16.7 应用 460

16.7.1 仿真实验和结果 461

16.7.2 与其它软件可靠性模型比较 463

16.8 小结 465

习题 465

第十七章 软件可靠性工程的神经网络 466

17.1 引言 466

17.2 神经网络 466

17.2.1 处理单元 467

17.2.2 体系结构 468

17.2.3 学习算法 470

17.2.4 后向传播学习 470

17.2.5 级联相关学习结构 471

17.3 神经网络在软件可靠性中的应用 472

17.3.1 动态可靠性增长模型 472

17.3.2 识别故障易发模块 472

17.4 软件可靠性增长模型 473

17.4.1 训练方法 474

17.4.2 数据表达问题 474

17.4.3 预测实验 474

17.4.4 神经网络模型的分析 478

17.5 故障易发软件模块的识别 478

17.5.1 用软件度量来识别易发生故障的模块 478

17.5.2 使用的数据集 479

17.5.3 分类器比较 479

17.5.4 数据表示 480

17.5.5 训练数据的选择 481

17.5.6 实验方法 481

17.5.7 结果 481

17.6 小结 483

习题 483

附录A 软件可靠性估计工具 485

A.1 引言 485

A.2 商业实用工具与一般目的语言及应用程序的对比 485

A.3 选择软件可靠性估计的标准 486

A.4 AT&T的软件可靠性工程工具箱 487

A.5 统计建模和软件可靠性功能估计 487

A.6 统计模型和可靠性程序 488

A.7 软件可靠性程序 490

A.8 计算机辅助软件可靠性工程工具 491

A.9 经济停止测试模型工具 492

A.10 工具比较 493

A.11 总结 493

附录B 软件可靠性理论、分析技术和基本统计 495

B.1 符号和术语 495

B.2 可靠性理论 497

B.3 分析方法 502

B.4 统计技术 508

参考文献 518