# Software Reliability Engineering: A Roadmap
> [!abstract]
> ソフトウェア信頼性工学は、信頼性を定量的に評価できるソフトウェアシステムを開発・維持するための工学技法に焦点を当てる。ソフトウェアシステムの信頼性を推定・予測するには、開発フェーズと運用フェーズにおいてさまざまな手段で障害データを適切に計測する必要がある。さらに、信頼性の正確な分析と予測のために、ソフトウェア障害プロセスを追跡するための信頼できるソフトウェア信頼性モデルが求められる。ソフトウェア信頼性は過去 35 年にわたり活発な研究テーマであり続けてきたが、課題と未解決の問いは依然として存在する。特に重要な将来目標は、ソフトウェアアーキテクチャ・テスト技法・ソフトウェア障害顕在化メカニズムを考慮した新しいソフトウェア信頼性工学パラダイムの開発である。本論文では、ソフトウェア信頼性工学の歴史、現在の動向と既存の問題、そして具体的な困難を概観する。さらに、ソフトウェア信頼性工学における可能な将来の方向性と有望な研究テーマについても述べる。
## 論文情報
| 項目 | 内容 |
|---|---|
| タイトル | Software Reliability Engineering: A Roadmap |
| 著者 | Michael R. Lyu |
| 所属 | Computer Science and Engineering Department, The Chinese University of Hong Kong |
| 媒体 | Future of Software Engineering (FOSE'07), IEEE-CS Press |
| 発表年 | 2007 |
| 種別 | サーベイ・ロードマップ論文 |
## 概要
ソフトウェア信頼性工学(Software Reliability Engineering、SRE)の 35 年の歴史を振り返りつつ、現状の課題と将来方向を地図化したロードマップ論文である。障害ライフサイクルの 4 技法(障害予防・除去・耐性・予測)と SRE プロセスの 4 構成要素(信頼性目標・操作プロファイル・信頼性モデリング・信頼性検証)を体系的に整理し、将来の研究軸として 5 分野(アーキテクチャ・信頼性設計・テスト・メトリクス・新興アプリケーション)を提示する。AT&T・Lucent・IBM・NASA・Microsoft を含む 50 以上の組織が SRE を採用していた一方、より広い産業採用を妨げる障壁の分析も行っている。
## 問題設定
ソフトウェアの規模と複雑さは過去 40 年で指数関数的に増大し、ソフトウェア障害は重大な結果をもたらす。しかしソフトウェア信頼性工学には以下の根本的な課題が残る。
- **データ収集の問題**: 統合テスト・システムテストの後期フェーズで収集した障害データは設計変更には遅すぎる。社内テストでは実際の運用環境での障害を再現できない場合がある
- **モデルの現実性**: SRGM の基本仮定(障害の独立性・即時障害除去・障害除去によって新障害は生じない)は現実的でない場合がある
- **産業採用の障壁**: SRE のコスト効果が不透明で、可視的なオーバーヘッドに対して便益が見えにくい。信頼性より機能性や革新性が優先される傾向がある
- **ソフトウェアとハードウェアの差異**: ハードウェア障害解析(FMEA、FMECA)がソフトウェアに直接適用できない。ソフトウェア障害は独立に発生せず、同一仕様でも予測不可能なパターンを示す
## 提案手法
### 障害ライフサイクル 4 技法
障害ライフサイクル(fault lifecycle)に基づく 4 技法により信頼性の高いソフトウェアを実現する。
1. **障害予防(fault prevention)**: 構造によって障害の発生を事前に回避する。形式手法・要求仕様のレビュー・規律あるツール支援設計・ソフトウェア再利用などが含まれる
2. **障害除去(fault removal)**: 検証と妥当性確認により障害の存在を検知し除去する。ソフトウェアテストとソフトウェアインスペクションが実用的な 2 手法
3. **障害耐性(fault tolerance)**: 冗長性によって障害が存在してもサービスを継続する。シングルバージョン技法(プログラムモジュール性・チェックポイントと再起動・データ多様性など)とマルチバージョン技法(N-version programming・リカバリブロックなど)の 2 群がある
4. **障害・故障予測(fault/failure forecasting)**: 評価によって障害の存在と故障の発生・影響を推定する。SRGM がこの主要技術
### SRE プロセスの 4 構成要素
![[wiki/sources/_attachments/Lyu-2007---Software-Reliability-Engineering---A-Roadmap/Figure1-SRE-Process-Overview.png]]
**図1**: Software Reliability Engineering Process Overview(Lyu 2007, 図1)
現行の SRE フレームワーク(図1)は以下の 4 要素で構成される。
1. **信頼性目標(reliability objective)**: 顧客視点での定量的な信頼性目標の決定。顧客の障害に対する「許容閾値」を信頼性指標で表現する
2. **操作プロファイル(operational profile)**: システムが実際にどう使われるかを定量化したもの。テストケースを実際の使用確率に応じて選択させ、フィールドでの信頼性推定精度を高める
3. **信頼性モデリングと測定(reliability modeling and measurement)**: テスト中に収集した障害データから信頼性モデルを適用し、現在の信頼性、追加テスト時間、信頼性成長、フィールド予測の 4 情報を得る
4. **信頼性検証(reliability validation)**: 予測フィールド信頼性と実測フィールド信頼性を比較し、フィードバックによって SRE プロセスを継続的に改善する
**テスト圧縮因子(test compression factor)**: 操作プロファイルが完全に開発されていない場合に用いる補正値。運用フェーズのソフトウェア実行時間とテストフェーズの実行時間の比率で定義される。
### ソフトウェア耐障害性技法
シングルバージョン技法には、プログラムモジュール性・システムクロージャ・アクションのアトミック性・エラー検知・例外処理・チェックポイントと再起動・プロセスペア・データ多様性が含まれる。マルチバージョン技法(設計多様性)はリカバリブロック・N-version programming・N 自己検査プログラミングで構成される。
### Design for Reliability の 8 段階
信頼性のある設計には 8 つの段階がある:障害封じ込め(fault confinement)・障害検知・診断・再構成・回復・再起動・修復・再統合。これらは設計の試みとして4軸(障害回避・障害検知・マスキング冗長・動的冗長)に整理される。
## 新規性
1. **35 年のサーベイとロードマップの統合**: 1972 年の Jelinski-Moranda モデル以来の SRGM の進化を体系化しつつ、当時(2007 年)の課題と将来方向を 5 軸で地図化した。単なるサーベイにとどまらず、実行可能な研究アジェンダを示す
2. **産業採用の障壁分析**: コスト効果の不透明さ、過剰なモデル選択肢への実務者の困惑、クロスインダストリー検証の欠如を率直に指摘した
3. **新興アプリケーション領域**: サービス指向アーキテクチャ(SOA)・Web サービス・オープンワールドシステム・パブリッシュ/サブスクライブ方式などを SRE の新たな応用先として位置づけた
## 実験設定
該当なし(サーベイ・ロードマップ論文)。
ただし §3.6 でコードカバレッジと障害検出の関係に関する既存文献の比較調査(表1)を行っている。
![[wiki/sources/_attachments/Lyu-2007---Software-Reliability-Engineering---A-Roadmap/Table1-Code-Coverage-Fault-Coverage.png]]
**表1**: コードカバレッジと障害カバレッジの関係に関する調査比較(Lyu 2007, 表1)
肯定的な知見(Horgan 1994, Frankl 1988, Rapps 1988, Chen 1992, Wong 1994, Frate 1995, Cai 2005)が多数を占める一方で、Briand (2000) はコードカバレッジと障害カバレッジの因果依存性を支持しないという知見を示した。
## 実験結果
該当なし(サーベイ論文)。
## 考察
### 当時の主要課題
- **ソフトウェアとハードウェアの依存性**: ハードウェアと異なりソフトウェア障害は独立して発生せず、FMEA や FMECA の直接適用が困難。コンポーネント間の依存関係を明確にしモデル化できれば産業採用が広がる可能性がある
- **業界採用の障壁**: SRE のコスト効果が不明瞭。オーバーヘッドは可視的だが便益は不可視。これを逆転させる成功事例の蓄積が必要
- **メトリクスの非一致性**: 信頼性関連メトリクスが一貫して定義・解釈されていない。ソフトウェアに物理的属性がないため、達成された信頼性指標がアプリケーションによって異なる
- **クロスインダストリー検証の欠如**: 各組織が独自にデータを収集するが共有しないため、モデルの産業横断的な検証ができない
### 将来方向の 5 軸
1. **ソフトウェアアーキテクチャと COTS コンポーネントの信頼性**: コンポーネントベース開発での障害封じ込め設計・失敗耐性アーキテクチャ・依存関係モデリング
2. **Design for Reliability**: 障害封じ込め・検知・診断・再構成・回復・再起動・修復・再統合の 8 段階による信頼性設計
3. **信頼性評価のためのテスト**: ソフトウェアテストコミュニティと信頼性測定コミュニティの統合。コードカバレッジと操作プロファイルの連携
4. **信頼性予測のためのメトリクス**: ベイジアンビリーフネットワーク(BBN)の活用、テスト時間とカバレッジを統合した閉ループ SRE プロセスの構築
5. **新興ソフトウェアアプリケーションの信頼性**: Web サービス・SOA・パブリッシュ/サブスクライブ・オープンワールドシステムへの対応
## 強み / 弱点・課題
### 強み
- 35 年の歴史と産業実績を一つの枠組みで整理した包括的なロードマップ
- 技術的な正確性だけでなく、産業採用の障壁という実務的な視点を含む
- 将来方向を具体的な 5 軸で示し、研究アジェンダとして機能する
### 弱点・課題
- 2007 年時点の議論であり、クラウドネイティブ・マイクロサービス・LLM 基盤システムなど 2010 年代以降の新興パラダイムは扱えない
- SOA・Web サービスは「新興アプリケーション」として扱われており、当時の実証データが乏しい
- 「ソフトウェア工学が真の工学分野として成熟していない」という指摘は 2007 年時点のもので、その後の進展を反映していない
## 関連
- 概念: [[ソフトウェア信頼性工学]] / [[ソフトウェア信頼性成長モデル]] / [[ソフトウェア耐障害性]] / [[Design for Reliability]]
- エンティティ: [[Michael R. Lyu]] / [[The Chinese University of Hong Kong]]
- 関連 MOC: [[structures/SRE - MOC]]
## 出典
- Lyu, M.R. (2007). "Software Reliability Engineering: A Roadmap." *Future of Software Engineering (FOSE'07)*, IEEE-CS Press.
- Lyu, M.R. (ed.) (1996). *Handbook of Software Reliability Engineering*. IEEE Computer Society Press and McGraw-Hill.