学位論文要旨



No 111627
著者(漢字) 渡邉,亜紀
著者(英字)
著者(カナ) ワタナベ,アキ
標題(和) 自然な設計分散に基づいた設計フォールトトレランスに関する研究
標題(洋) A Study of Design Fault Tolerance Based on Natural Design Diversity
報告番号 111627
報告番号 甲11627
学位授与日 1996.03.29
学位種別 課程博士
学位種類 博士(理学)
学位記番号 博理第2991号
研究科 理学系研究科
専攻 情報科学専攻
論文審査委員 主査: 東京大学 教授 益田,隆司
 東京大学 教授 平木,敬
 東京大学 教授 小柳,義夫
 東京大学 助教授 金田,康正
 東京工業大学 教授 南谷,崇
内容要旨

 近年、コンピュータシステムは我々の日常生活のあらゆる面に浸透してきており、その障害はただ単に不便さをもたらすばかりではなく、人命にかかわるような極めて重大な事態を引き起こす危険性をもっている。従来、システムの障害は、構成要素の物理的な故障により引き起こされることが多かったが、最近、システムの大規模化、複雑化、高機能化が進み、設計故障がシステムの障害の最も大きな要因となってきている。ここで設計故障とはいわゆるバグのことである。こうした状況を解決するための方策として、近年、システム稼働段階において、設計故障が原因となってエラーが起こっても、システムが動作し続けられることを目的とした、設計フォールトトレランスというアプレーチが脚光を浴びている。

 設計分散(design diversity)は、設計フォールトトレランスを実現するための最も広く使われている手法の1つである。設計分散は、多重系を構成する際の要素として同じ実装を用いるのではなく、同じ外部仕様をもとに複数のチームが独立に開発した、設計が異なる実装を用いる。設計分散は、ある入力に対して一部の実装で設計故障に起因したエラーが起きた場合にも、他の実装が正しい結果を出せば、システム全体としては正しい処理を続けることができる、という考え方に基づいている。現在、NASAのスペースシャトル、ボーイング777、エアバスA320といった主要民間航空機の飛行制御装置、原子力発電所の安全停止装置、そして、ATC(自動鉄道制御装置)などといった高信頼性を必要とするシステムに設計分散は広く導入されている。しかし、これまで、設計分散に対しては、適用するためにかかる膨大な開発コストに見合う程には、システムの信頼性を向上させないのではないか、という多くの批判があった。設計分散は、コスト効率が低く、その適用は膨大な開発コストを許容できるような一部のクリティカル・システムに限られるべきである、と言われてきた。

 独立した開発という点に関して、設計分散の実現アプローチは次の2つに分類することができる。1つは、異なる開発チームに対して、異なる言語で記述された異なる外部仕様、異なるプログラミング言語、異なるアルゴリズム、異なるデータ形式を採用することを強制する「強制的な」設計分散である。「強制的な」設計分散はより多様な実装を開発することを目的としている。そして、もう1つはそのような制約を課さない「自然な」設計分散である。ここで注目すべきは、この「自然な」設計分散が、複数のインブリメンタが共通の外部仕様をもとに独立に実装を開発する標準化アプローチと概念的に等しいことである。例えば、TRONプロジェクトではシステム全体をアプリケーション・マンマシン階層、オペレーティングシステム階層、インストラクション・プロセッサ階層の3階層に分割し、それぞれの階層の外部仕様を定義するという標準化アプローチをとっている。現在、我々はTRONプロジェクトを基盤として、システム全体をアプリケーションプログラム、オペレーティングシステム、ハードウェアの3つの階層に分割し、それぞれの階層に1つの外部仕様を与えて設計分散を適用する多階層設計分散(Multi-Layered Design Diversity,MLDD)アーキテクチャを研究している。本研究の主な成果の1つは、標準化プロジェクトが、設計分散を実現するための有効な基盤となる得ることを示したことである。これにより、設計分散の適用可能分舒を大幅に拡大することできるようになる。

 本研究の目的は、「自然な」設計分散に基づいて設計フォールトトレランスを実現する機構を設計、実装、評価することである。本研究では、MLDDアーキテクチャを提案し、本アプローチが有効となるために必要な仮定が成立することを示した。そして、その設計フォールトトレランス機能を考案し、TRONプロジェクトにおいて開発された実装を用いて実現し評価した。次に、より具体的に本研究の成果を挙げる。

 MLDDアーキテクチャでは、各階層のすべての実装が同じ外部仕様を用いる。MLDDアーキテクチャが有効となるためには、1つの外部仕様を使うことが、複数の実装間に相関関係のある設計故障を生むことにつながらない、という仮定が成立する必要がある。本研究では、産業用の組み込みシステムに使用することを目的として作られたITRON2リアルタイムマルチタスクオペレーティングシステム外部仕様をもとに3つの企業が独立に開発した3つの製品のリリース後3年間において発覚した設計故障を分析することで、この仮定が成立すると期待できることを確認した。

 また、本研究では、異なるオペレーティングシステムの実装同士をシステム稼働時に組み換えることで後方エラーリカパリーを提供する機構を考案した。本機構では、周期的にオペレーティングシステムのエラー検出を行い、エラーを検出した場合には、現在のオペレーティングシステムの実装を設計が異なる別の実装に組み換えて、最新のチェックポイントから再実行する。本機構は、大きく分けて、エラー検出機構、チェクポイント機構、実装間の組み換え機構の3つから構成される。

 オペレーティングシステムの動作は現在のシステム内部状態に依存する。よって、新しい実装が元の実装の動作を引き継ぐためには、元の実装の内部状態を引き継ぐ必要がある。しかし、独立に開発された実装間では、内部状態の構造は異なるので、新しい実装は、元の実装の内部状態をそのままでは使用することはできない。そこで,元の実装の内部状態の構造を、標準構造を介して、新しい実装の内部状態の構造に変換するような機能を伴った実装間の組み換え機構を考案した。そして、ITRON2オペレーティングシステム外部仕様をもとに3つの企業が独立に開発したを実装を用いて実現した。この際、各実装の全体のソースコードを高々7.6%書き換えた。

 実行時エラー検出テストは、先に述べた後方エラーリカパリー機構とって重要なばかりではなく、コスト制約が大きいシステムに設計フォールトトレランス機能を持たせるという点からも重要である。しかし、これまでにエラー検出テストのシステマティックな生成手法は確立されていなかった。我々は、実行時エラー検出テスト生成手法として、SBACCG(Specification-Based Consistency Checks Generation、仕様に基づいた適応化一貫性チェック生成)手法を提案した。SBACCG手法は、導出段階と適応化段階の2つの段階から構成される。導出段階では、モデル指向の形式的外仕様記述言語で記述された仕様から、一貫性テストの集合が1つ生成される。次の適応化段階では、導出段階で生成された一貫性テストが各実装の内部構造に応じて適応化される。現段階では、最も広く用いられている形式的仕様記述言語の1つであるZを採用している。本論文では、ITRON2仕様をもとに2つの企業が独立に開発したオペレーティングシステムに対してSBACCG手法を適用した例を紹介する。

 我々は、考案した後方エラーリカパリー機構を2つのITRON2オペレーティングシステムの実装を用いて実現した。そして、実装した機構のエラーの潜伏(error latency)、および、エラーの伝搬(error propagation)を評価するためにフォールト・インジェクション技法を用いた実験を行った。ITRON2オペレーティングシステムの稼働段階において残存する設計故障に関する分析結果を参考にして、我々は95個の挿入する設計故障を選んだ。実験の結果、我々が提案した後方エラーリカパリー機構は、低いエラー潜伏率、および、小さいエラー伝搬を達成できることが分かった。

 多くの構成要素がコスト制約をもつような我々の生活環境においては、できるだけ低いコストで提供できるフォールトトレランス機能が望まれる。本研究で提案したSBACCG手法が生成するようた、実行時エラー検出テストを使用することは、1つの有望なアプローチと考えることができる。しかし、これまで、実行時エラー検出テストがどれ程のエラー検出能力をもつのかは確認されていない。ところで、仮に、設計故障がない実装を開発することができるならば、設計フォールトトレランスは不要であろう。しかし、現段階では、このようなことは通常の実用システムには当てはまらない。実行時エラー検出テストには、テスト段階において見逃された設計故障に対応することが求められる。

 開発コストや期間の点で効率良く、高い信頼性をもった設計を実現するためには、設計フォールトトレランス手法と従来の設計フォールトアボイダンス手法を補完的に採用するべきである。設計フォールトアボイダンスとは、開発段階において、できるだけ設計故障が生じないようにしたり、生じてしまった設計故障をできるだけ除去する、といったアプローチのことである。我々は、これまで、設計フォールトトレランスだけではなく、設計フォールトアボイダンスに関しても研究を行ってきた。設計フォールトアボイダンスに関しては、SBATCG(Specification-Based Adaptive Test Case Generation、仕様に基づいた適応化テストケース生成)手法を開発した。

 SBATCG手法は、仕様の記述と各実装の内部構造の双方を考慮してテストケースを生成する。しかし、通常の規模をもった実際の実装の内部構造の隅々を、すべての可能な入力のもとで活性化することは現実的には難しい。このため、テスト段階で見過ごされる設計故障が生じてしまう。我々は、フォールト・インジェクション技法を用いた実験を行うことで、SBATCG手法が生成したテストケースが取り除くことができなかった設計故障を、SBACCG手法が生成したエラー検出テストが検出できることを示した。

審査要旨

 近年、システム稼働段階において、設計故障(バグ)が原因となってエラーが起こっても、システムが動作し続けられることを目的とした、設計フォールトトレランスというアプローチが脚光を浴びている。設計分散は、設計フォールトトレランスを実現するための最も広く使われている手法の1つであり、多重系を構成するための実装として、同じものを用いるのではなく、同じ外部仕様をもとに、複数のインプリメンタが独立に開発した内部設計が異なる実装を用いる。ここで、「自然な」設計分散とは、独立に開発するという点に関して、各インプリメンタに対して異なるプログラミング言語やアルゴリズム、データ構造を用いることを強制しない設計分散のことである。本研究では、「自然な」設計分散と、複数のインプリメンタが共通の外部仕様をもとに独立に実装を開発する標準化方策が概念的に等しいことに着目し、標準化方策に基づいてオペレーティングシステムの設計フォールトトレランス、ひいては、テストなどを含めた設計フォールトアボイダンスを提供することを探求している。

 本論文は8章と結論からなり、第1章では、研究の動機、目的、背景、及び論文の構成について述べられている。第2章では、本研究が用いる基本概念である設計分散の関連研究を十分に網羅している。

 第3章では、「自然な」設計分散が有効となるために必要な仮定を実験的に評価した結果を報告している。本研究では、産業用の組み込みシステムに使用することを目的として開発されたITRON2オペレーティングシステム外部仕様をもとに3つの企業が独立に開発した3つの製品のリリース後3年間において発覚した設計故障を分析することで、本仮定が成立すると期待できることを確認した。従来、設計分散に関する実験的評価は、実験コスト上の制限から、インプリメンタとして大学院生を用いるなど、実際に設計分散が適用されている航空機制御システムなどといった高信頼性システムの開発条件とは、かけはなれた条件の下で行われていた。本評価結果は設計分散の分野において貴重であると言える。

 第4章では、異なるオペレーティングシステムの実装同士をシステム稼働時に組み換えることで後方エラーリカバリーを提供する機構について、特に、異なるオペレーティングシステムを組み換える機構に焦点を置いて述べられている。実際に、3つのITRON2オペレーティングシステムの実装を用いて、考案した組み換え機構を実現することにより、非常に少ないソースコードの変更により本機構を実現可能であることを示した。一見、全く独立に開発された実装間において内部状態を共有することは非現実的に考えられがちである。本機構の実装結果は興味深いと言える。

 第5章では、オペレーティングシステムのような決定的有限状態遷移マシンとしてモデル化できるシステムのための、実行時エラー検出テストを生成するための、SBACCG(Specification-Based Consistency Checks Generation)手法について述べている。これまで、実行時エラー検出テストをシステマティックに生成する手法は提案されていなかった。実行時エラー検出テストは、コスト制約が大きいシステムに設計フォールトトレランス機能を持たせるという点から重要である。本手法の設計フォールトトレランスにおける貢献度は大きいと言える。

 第6章では、第4章で述べた異なる実装間の組み換えを伴う後方エラーリカバリー機構をフォールト・インジェクション技法を用いて評価した結果が報告されている。従来、フォールト・インジェクション技法を適用する際には、ランダムに設計故障を生成することが主流であった。しかし、本評価実験では、プログラムのコントロール・フローに基づいて挿入する設計故障を生成していた。これは、フォールト・インジェクション技法に新見地を提供するものであり極めて興味深い。

 第7章では、決定的有限状態遷移マシンとしてモデル化できるシステムのためのテストケースを生成するSBATCG(Specification-Based Test Case Generation)手法について述べている。本手法はモデル指向の仕様記述言語で書かれた仕様を用いる。従来のモデル指向の仕様記述言語で書かれた仕様ベースのテスト手法は、抽象データ構造や入力のみに依存して動作するシステムだけを対象としていた。本手法により、モデル指向の仕様記述言語で用いた仕様ベースのテスト手法の適用可能分野を拡張される。本手法の貢献度は高いと言える。

 第8章では、設計フォールトアボイダンスが見過ごした設計故障に設計フォールトトレランスが対処できることが、具体的には、SBATCG手法により生成されたテストケースが見過ごした設計故障が原因となって起きたエラーを、SBACCG手法により生成された実行時エラー検出テストが検出できることが実験的に示されている。これまで、設計フォールトアボイダンスはソフトウェア工学の分野で、設計フォールトトレランスはフォールトトレランスの分野でといった具合に主に異なるコミュニティで研究されてきた。本評価実験は双方の分野の橋渡しをするものであり極めて興味深い。

 審査担当者は、以上のような理由により、本論文は博士(理学)の学位論文として十分な内容を持つものであると一致して判定した。なお、本論文第1章の一部は高田広章氏、本論文全体は坂村健氏との共同研究であるが、論文提出者が主体となって設計、実装及び評価を行ったもので、論文提出者の寄与が十分であると判断する。

UTokyo Repositoryリンク