# Handbook of Software Reliability Engineering
## 概要
Michael R. Lyu が編者となり、ソフトウェア信頼性工学(software reliability engineering, SRE)の各領域の第一人者に章を分担執筆させて編んだハンドブック。編者自身が「この分野を排他的かつ網羅的に扱う本を探したが見つからなかったので、自分で企画した」と述べており、枠組みの設計と構成要素の同定、重複の排除を編者が担い、各章の深さは分担執筆者が担うという役割分担で作られている(Source: [[wiki/entities/Handbook of Software Reliability Engineering|Handbook of Software Reliability Engineering]] Preface)。
本書を貫く主題は、ソフトウェア信頼性工学の技法を**実務のなかで定式化し、適用し、評価すること**であり、信頼性を定性的な性質ではなく定量的に扱う姿勢が全編にわたる(Source: 同 Preface)。刊行から30年近くを経てなお、信頼性成長モデル・運用プロファイル・直交欠陥分類・フォールトトレランス・故障の木解析といった中核技法の一次的な参照点であり続けている。
## 書誌情報
- **書名**: Handbook of Software Reliability Engineering
- **編者**: Michael R. Lyu(AT&T Bell Laboratories, Murray Hill, New Jersey)
- **出版**: IEEE Computer Society Press および McGraw-Hill Book Company, 1996
- **構成**: 全17章 + 付録A・B(3部構成)、用語集・文献リスト・索引つき
- **序文**: Alfred V. Aho、Richard A. DeMillo の2篇
- **分担執筆者**: 29名(City University London, IBM Research, AT&T Bell Laboratories, University of Virginia, NSWC, University of Illinois, LAAS-CNRS, Tandem Computers, Bellcore, Purdue, NCSU, JPL, Mitre ほか)
- **付属 CD-ROM**: ソフトウェアプロジェクトの障害データと、CASRE・SMERFS・AT&T SRE Toolkit・SoftRel の各ツール。データ件数は序文が「公刊・未公刊あわせて40件」とするのに対し、編者の公開サイトの CD 目録は「45件の産業プロジェクト障害データ」と記しており一致しない
- **公開 URL**: https://www.cse.cuhk.edu.hk/~lyu/book/reliability/(編者により全文が無償公開されている)
## 構成と主要テーマ
全17章と付録2篇を取り込み済み(全19ページ)。
### Part 1: Technical Foundations(第1〜5章)
信頼性を定量的に扱うための用語体系・数理モデル・測定の枠組みを据える部。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 1 Introduction]] — 編者 Lyu 自身による導入章。fault/error/failure の用語基盤を定義し、信頼性達成の4技法(障害予防・障害除去・障害耐性・障害/故障予測)への分類を示したうえで、本書が主に障害/故障予測にスコープを置くことを明示する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 2 Software Reliability and System Reliability]] — Laprie と Kanoun が、ハードウェアとソフトウェアを区別しない「X-ware」統一モデルでディペンダビリティ概念と信頼性・可用性の数理を提示する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 3 Software Reliability Modeling Survey]] — Farr が Musa-Okumoto の5属性分類体系を軸に、指数型・Weibull/ガンマ型・無限故障・ベイズ型の主要な信頼性成長モデルを仮定・数式・推定手順とともに整理する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 4 Techniques for Prediction Analysis and Recalibration]] — Brocklehurst と Littlewood が、モデルの当てはまりでなく将来予測の精度を問う立場へ転換し、PLR・u-plot・y-plot による評価と、u-plot を補正関数として使う再較正を示す。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 5 The Operational Profile]] — Musa らが、運用プロファイル(顧客型→ユーザー型→システムモード→機能→運用プロファイルの5段階)の作成手続きとテスト選択への適用を、AT&T の3実プロジェクトの事例とともに報告する。
### Part 2: Practices and Experiences(第6〜11章)
理論を現場に持ち込んだときに何が起きるかを、組織の導入手順と実測データで示す部。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 6 Best Current Practice of SRE]] — AT&T 社内の約70名の実務者の合意に基づく "best current practice" として、SRE を開発ライフサイクル全体に組み込む組織プロセス(活動配置・コスト実績・段階的導入手順)として提示する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 7 Software Reliability Measurement Experience]] — Nikora と Lyu が JPL・Bellcore への適用を通じ、単一最良のモデルは存在しないこと、データ収集の実務的欠落が予測精度を制約すること、複数モデルの線形結合が個別モデルより一貫して優れることを実証する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 8 Measurement-Based Analysis of Software Reliability]] — Iyer と Lee が Tandem GUARDIAN・IBM MVS・DEC VAX/VMS の稼働ログと技術報告を用いた計測ベース解析により、ソフトウェア信頼性の実証的な挙動を明らかにする。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 9 Orthogonal Defect Classification]] — Chillarege が、統計的欠陥モデルと根本原因分析の中間を埋めるべく、defect type・trigger という少数の意味論的属性で欠陥を分類し工程と検証の効果を測定する ODC を提示する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 10 Trend Analysis]] — Kanoun と Laprie が、劣加法性という数学的性質でデータの信頼性成長・劣化・定常を統計的に判定し、成長モデルを当てはめる前段の診断層として機能させる。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 11 Field Data Analysis]] — Jones と Vouk が、出荷後の現場データの収集原則(データ品質・稼働量測定の困難)と暦時間/稼働時間解析の対比を、IBM・Hitachi・Nortel・NASA スペースシャトルの実データで示す。
### Part 3: Emerging Techniques(第12〜17章)
1996年時点で研究途上だった手法群。静的メトリクス、テストとの接続、多版冗長化、故障の木、シミュレーション、ニューラルネットワーク。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 12 Software Metrics for Reliability Assessment]] — Munson と Khoshgoftaar が、静的な複雑性メトリクスを主成分分析で多重共線性を除いた直交ドメインへ縮約し、相対複雑度指標と判別分析・重回帰による故障傾向モジュール予測へ結びつける。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 13 Software Testing and Reliability]] — Horgan と Mathur が、カバレッジ規準の階層と飽和効果を実証し、飽和が信頼性を最大3.33倍過大評価しうることを示したうえで、カバレッジ情報で故障データをフィルタリングする保守的推定を提案する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 14 Fault-Tolerant Software Reliability Engineering]] — McAllister と Vouk が多版冗長方式(RB/NVP/NSCP/CRB)を整理し、20版アビオニクス実験で独立故障の仮定が大きく崩れる(9版同時故障の期待8回に対し実測約105回)ことを定量的に示す。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 15 Software System Analysis Using Fault Trees]] — Dugan が故障の木解析をソフトウェアを含む系へ拡張し、単一タスクの故障の木と、恒久ハードウェア故障による再構成を表すマルコフ連鎖の組み合わせで耐障害アーキテクチャを定量評価する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 16 Software Reliability Simulation]] — Tausworthe と Lyu が、解析モデルが閉形式解のために置く仮定を緩める代わりに事象を確率的に生成するレートベースシミュレーションを示し、Galileo 探査機の搭載ソフトウェアへの適用で従来モデルを上回る予測を実証する。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 17 Neural Networks for Software Reliability Engineering]] — Karunanithi と Malaiya が、ニューラルネットワークを関数形を仮定しないノンパラメトリックな信頼性成長モデルとして、また静的メトリクスによる故障傾向モジュール分類器として応用する。
### 付録
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Appendix A Software Reliability Tools]] — Stark が1996年時点の推定ツール6種をカタログ化し、組織レベルとアナリストレベルの2階層で選定基準を提示する、本書最短のセクション。
→ [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Appendix B Review of Reliability Theory, Analytical Techniques, and Basic Statistics]] — 編者 Lyu による数学的下敷きの復習。表記法と分布、信頼性理論、解析手法、統計的手法の4部からなり、各章が前提とする道具を本書内で自己完結させる。
## 影響と位置づけ
本書の価値は個々の章の水準よりも、**章をまたいで初めて見える構造**にある。取り込みの過程で次の3点が浮かび上がった。
**信頼性成長モデルをめぐる4層の役割分担。** 第3章がモデルを分類・定義し、第4章が「当てはまりではなく予測精度で判定せよ」と評価軸を与え、第10章が「そもそも成長しているのか」をモデル適用の前に検定し、第7章が実プロジェクトへの適用経験を報告する。診断 → 選択 → 検証というこのパイプラインは、どの章を単独で読んでも見えない。しかもその第7章が、JPL・Bellcore のいずれも実行時間や運用プロファイル情報を体系的に記録していないと報告しており、**パイプラインの入口そのものが現場では欠落している**という留保が同じ書物のなかに置かれている(Source: [[@1996__McGrawHill__Handbook of Software Reliability Engineering - Chapter 7 Software Reliability Measurement Experience]] ch.7)。
**編者と分担執筆者の用語のずれ。** 第1章(Lyu)はフォールト→故障の二段階連鎖で用語を要約するが、第2章(Laprie & Kanoun)はフォールト→誤り→故障の三段階連鎖を必須構造とする。第1章自身が §1.5 で Laprie の枠組みに依拠すると明言しながら、自章の要約でその三段階を踏襲していない。編著書における用語統制の限界を示す実例で、詳細は [[wiki/concepts/ディペンダビリティ|ディペンダビリティ]] に矛盾として記録した。
**同じ問題に対する異なる仮定。** 多版ソフトウェアの故障の相関を、第15章(Dugan)は無関係故障と関連故障が統計的に独立と仮定するのに対し、Arlat/Kanoun/Laprie の元モデルは排反と仮定する。第14章 §14.7 が同じ分岐を両論併記しており、独立した2章が食い違いの実在を相互に裏づけている。
なお編者 Lyu 自身が11年後に *Software Reliability Engineering: A Roadmap*([[@2007__FOSE__Software Reliability Engineering - A Roadmap]])で本分野を総括しており、本書の主張がその後どう位置づけ直されたかは各 concept ページの `## 横断的知見` で突き合わせている。
## 関連
- 概念: [[wiki/concepts/ソフトウェア信頼性工学|ソフトウェア信頼性工学]] / [[wiki/concepts/ソフトウェア信頼性成長モデル|ソフトウェア信頼性成長モデル]] / [[wiki/concepts/ディペンダビリティ|ディペンダビリティ]] / [[wiki/concepts/運用プロファイル|運用プロファイル]] / [[wiki/concepts/直交欠陥分類|直交欠陥分類]] / [[wiki/concepts/テストカバレッジ|テストカバレッジ]] / [[wiki/concepts/フィールドデータ解析|フィールドデータ解析]] / [[wiki/concepts/ソフトウェア耐障害性|ソフトウェア耐障害性]] / [[wiki/concepts/故障の木解析|故障の木解析]] / [[wiki/concepts/障害傾向分析|障害傾向分析]]
- 実体: [[Michael R. Lyu]](編者)/ [[John Musa]] / [[Jean-Claude Laprie]] / [[Karama Kanoun]] / [[Bev Littlewood]] / [[Ram Chillarege]] / [[Ravishankar K. Iyer]] / [[Joanne Bechta Dugan]]
- 同梱ツール: [[CASRE]] / [[SMERFS]] / [[AT&T SRE Toolkit]] / [[SoftRel]]
- 既存ノート: [[books/Handbook of Software Reliability Engineering|books/ の書誌メモ]](2022年作成の目次控え。本 entity とは別レイヤーとして温存する)
- MOC: [[structures/SRE - MOC]]
## 出典
- Michael R. Lyu (ed.), *Handbook of Software Reliability Engineering*, IEEE Computer Society Press / McGraw-Hill, 1996.
- 原本: `.raw/books/handbook-of-software-reliability-engineering-1996/`