JPH06342369A - 多重バージョン機能実現方法および開発支援システム - Google Patents
多重バージョン機能実現方法および開発支援システムInfo
- Publication number
- JPH06342369A JPH06342369A JP5130557A JP13055793A JPH06342369A JP H06342369 A JPH06342369 A JP H06342369A JP 5130557 A JP5130557 A JP 5130557A JP 13055793 A JP13055793 A JP 13055793A JP H06342369 A JPH06342369 A JP H06342369A
- Authority
- JP
- Japan
- Prior art keywords
- version
- module
- unit
- information
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】多重バージョンプログラム開発コストの増加を
抑え、バージョン構成モジュール間接合部の高信頼化を
はかる手段を提供すること。 【構成】入力部41、多重バージョン実行部42、多数
決部43、出力部44を有して構成される。42内部に
おいて、例えば、作成された8つの、一連の機能を実現
するバージョンが実行される。また、各バージョンは、
例えば、3つのモジュールを有して構成されている。
多数決部43は、実行結果を多数決し、結果を出力部4
4に送る構成になっている。 【効果】複数モジュールより構成される一連の機能に対
し、各モジュールについて少なくとも1つ以上のバージ
ョンを作成し、その組み合わせにより構成する複数個の
バージョンの一連の機能は、低コストで生成でき、か
つ、モジュール間接合部の冗長度が高くなるため、多数
決実行による高信頼化が図れる。
抑え、バージョン構成モジュール間接合部の高信頼化を
はかる手段を提供すること。 【構成】入力部41、多重バージョン実行部42、多数
決部43、出力部44を有して構成される。42内部に
おいて、例えば、作成された8つの、一連の機能を実現
するバージョンが実行される。また、各バージョンは、
例えば、3つのモジュールを有して構成されている。
多数決部43は、実行結果を多数決し、結果を出力部4
4に送る構成になっている。 【効果】複数モジュールより構成される一連の機能に対
し、各モジュールについて少なくとも1つ以上のバージ
ョンを作成し、その組み合わせにより構成する複数個の
バージョンの一連の機能は、低コストで生成でき、か
つ、モジュール間接合部の冗長度が高くなるため、多数
決実行による高信頼化が図れる。
Description
【0001】
【産業上の利用分野】高信頼性が要求される計算機、コ
ントローラ等の情報処理装置において、冗長モジュール
を使用した高信頼化技術、特に、フォールトトレランス
技術に関する。
ントローラ等の情報処理装置において、冗長モジュール
を使用した高信頼化技術、特に、フォールトトレランス
技術に関する。
【0002】
【従来の技術】冗長モジュールを使用した高信頼化のた
めの技術のうち、いわゆる、Nバージョン(多重バージ
ョン)プログラムの使用が提案されている。
めの技術のうち、いわゆる、Nバージョン(多重バージ
ョン)プログラムの使用が提案されている。
【0003】これは、同一の仕様にもとづいて作成され
た、N(Nは2以上の整数)個のバージョンを実行し、
個々のバージョンに残存するバグを、相互にチェックす
るか、あるいは、多数決を使用してマスクキングするこ
とにより正確な答えを出力する、ソフトウェア・フォー
ルトトレランス技術である。
た、N(Nは2以上の整数)個のバージョンを実行し、
個々のバージョンに残存するバグを、相互にチェックす
るか、あるいは、多数決を使用してマスクキングするこ
とにより正確な答えを出力する、ソフトウェア・フォー
ルトトレランス技術である。
【0004】多重バージョンプログラムに関する従来技
術は、例えば、文献:「J-C Laprieet al,"Definition
and Analysis of Hardware- and Software-Fault-Tolar
anct Architectures",Computer, Vol. 23, No. 7, Jul.
1990, pp. 39-51」等に記載されている。
術は、例えば、文献:「J-C Laprieet al,"Definition
and Analysis of Hardware- and Software-Fault-Tolar
anct Architectures",Computer, Vol. 23, No. 7, Jul.
1990, pp. 39-51」等に記載されている。
【0005】
【発明が解決しようとする課題】多重バージョン実行に
よる信頼性を向上するためには、バージョン数Nを大き
くすればよい。しかしながら、ソフトウェアの開発、保
守等に必要なコストまでもが、N倍、あるいは、それ以
上になってしまう。
よる信頼性を向上するためには、バージョン数Nを大き
くすればよい。しかしながら、ソフトウェアの開発、保
守等に必要なコストまでもが、N倍、あるいは、それ以
上になってしまう。
【0006】本発明が解決する第1の課題は、ソフトウ
ェアの開発、保守に必要なコストの増加を抑え、さら
に、信頼性を向上させることにある。
ェアの開発、保守に必要なコストの増加を抑え、さら
に、信頼性を向上させることにある。
【0007】一方、ソフトウェアの巨大化、複雑化、品
質管理能力の向上および生産性向上に対応するために、
ソフトウェアの開発は、複数個のモジュールに分割化さ
れ、作成されるのが一般的である。
質管理能力の向上および生産性向上に対応するために、
ソフトウェアの開発は、複数個のモジュールに分割化さ
れ、作成されるのが一般的である。
【0008】これにより、ソフトウェアの開発、保守等
は、基本的には「モジュール単位」で行なわれる。
は、基本的には「モジュール単位」で行なわれる。
【0009】その結果、個々のモジュール内部に残存す
るバグは、ほぼ完全に近い形で摘出することが可能とな
り、モジュール自体の信頼性は高くなる。
るバグは、ほぼ完全に近い形で摘出することが可能とな
り、モジュール自体の信頼性は高くなる。
【0010】すなわち、分割化により、個々のモジュー
ルの規模が小さくなり、モジュール自体がとりうる状態
の数がそれほど大きくならないからである。
ルの規模が小さくなり、モジュール自体がとりうる状態
の数がそれほど大きくならないからである。
【0011】ところで、ソフトウェア全体の高信頼化を
実現するためには、上記に加え、ソフトウェアを構成す
る複数個のモジュール間のデータ入出力処理や、共有資
源アクセス処理といった機能を有する、いわゆるモジュ
ール間の接合部(以下、単に「モジュール間接合部」と
称することが多い)の高信頼化を実現する必要がある。
実現するためには、上記に加え、ソフトウェアを構成す
る複数個のモジュール間のデータ入出力処理や、共有資
源アクセス処理といった機能を有する、いわゆるモジュ
ール間の接合部(以下、単に「モジュール間接合部」と
称することが多い)の高信頼化を実現する必要がある。
【0012】しかしながら、一般に、複数のモジュール
同士の相互作用により、各モジュールがとりうる状態の
数は、非常に大きく、対象が巨大化、複雑化してしまう
ため、デバッグが十分に行えないことになる。
同士の相互作用により、各モジュールがとりうる状態の
数は、非常に大きく、対象が巨大化、複雑化してしまう
ため、デバッグが十分に行えないことになる。
【0013】また、仕様書は、モジュール内部の仕様に
関しては詳細に記述されているのに対し、モジュール間
のインタフェースに関しては、それほど厳格には記述さ
れていない。
関しては詳細に記述されているのに対し、モジュール間
のインタフェースに関しては、それほど厳格には記述さ
れていない。
【0014】そのため、ソフトウェアに残存するバグ
は、モジュール自体よりも、むしろ、モジュール間接合
部に多く存在する傾向がある。したがって、モジュール
間接合部の高信頼化を図ることが、今後、非常に重要な
ことになると予想される。
は、モジュール自体よりも、むしろ、モジュール間接合
部に多く存在する傾向がある。したがって、モジュール
間接合部の高信頼化を図ることが、今後、非常に重要な
ことになると予想される。
【0015】さらに、他のソフトウェアにて使用されて
いるモジュールを組み合わせることにより、新しいソフ
トウェアを開発するといったモジュールの再利用が、ソ
フトウェアの生産性向上のために、今後、より一層行わ
れることが予想される。
いるモジュールを組み合わせることにより、新しいソフ
トウェアを開発するといったモジュールの再利用が、ソ
フトウェアの生産性向上のために、今後、より一層行わ
れることが予想される。
【0016】その際、モジュール間の整合性(例えば、
モジュール間で伝送するデータのサイズ等)を保証する
必要があり、整合性のチェックを行なったり、場合によ
っては、整合性を保証するインタフェースモジュール
(これもモジュール間接合部である)を新たに作成する
必要もある。
モジュール間で伝送するデータのサイズ等)を保証する
必要があり、整合性のチェックを行なったり、場合によ
っては、整合性を保証するインタフェースモジュール
(これもモジュール間接合部である)を新たに作成する
必要もある。
【0017】モジュール自体は、既に他のソフトウェア
にて使用されていたのであるから、実績があり、信頼性
も高いといえる。これに比べ、モジュール間接合部は、
新規に作成したものであるため、実績がない上に、状態
数も大きく、デバッグが複雑である場合が非常に多い、
すなわち、信頼性に劣る可能性が非常に高い。
にて使用されていたのであるから、実績があり、信頼性
も高いといえる。これに比べ、モジュール間接合部は、
新規に作成したものであるため、実績がない上に、状態
数も大きく、デバッグが複雑である場合が非常に多い、
すなわち、信頼性に劣る可能性が非常に高い。
【0018】ところで、モジュール間接合部の高信頼化
を実現するためには、モジュール間の整合不良、すなわ
ち、バグを取り除くことが必要であるが、上記理由によ
り、多大なコストを要し、バグを完全に摘出すること
は、非常に困難であることは経験的事実の示すところで
ある。そのうち、特にデバッグが難しいモジュール間に
おける整合不良は、例えば、モジュール間の共有資源に
対するアクセス不良であり、また、かかるアクセス不良
は、データの破壊、データ一貫性の欠如、デッドロック
等を発生させる。このような不良は、各モジュールを1
タスクとしたマルチタスクによる並行処理において、特
に発生しやすい傾向にある。
を実現するためには、モジュール間の整合不良、すなわ
ち、バグを取り除くことが必要であるが、上記理由によ
り、多大なコストを要し、バグを完全に摘出すること
は、非常に困難であることは経験的事実の示すところで
ある。そのうち、特にデバッグが難しいモジュール間に
おける整合不良は、例えば、モジュール間の共有資源に
対するアクセス不良であり、また、かかるアクセス不良
は、データの破壊、データ一貫性の欠如、デッドロック
等を発生させる。このような不良は、各モジュールを1
タスクとしたマルチタスクによる並行処理において、特
に発生しやすい傾向にある。
【0019】そこで、モジュール間接合部の高信頼化を
実現するためには、フォールトトレランス技術を適用し
て、モジュール間の整合不良をマスキングすることが必
要となる。
実現するためには、フォールトトレランス技術を適用し
て、モジュール間の整合不良をマスキングすることが必
要となる。
【0020】しかしながら、モジュール間接合部に対す
るフォールトトレランス技術の適用は、従来は行なわれ
ていなかった。
るフォールトトレランス技術の適用は、従来は行なわれ
ていなかった。
【0021】以上のように、本発明が解決する第2の課
題は、モジュール間接合部の高信頼化を図ることであ
る。
題は、モジュール間接合部の高信頼化を図ることであ
る。
【0022】
【課題を解決するための手段】上記の課題を解決するた
め、主に、以下の6つの手段が考えられる。
め、主に、以下の6つの手段が考えられる。
【0023】第1の手段は、与えられた単一の仕様に基
づき、実現すべき一連の機能を複数のモジュールの構成
により実現する方法であって、各モジュールについて、
少なくとも1以上のバージョンを作成し、各モジュール
ごとにmi(miは、モジュールiのバージョン数、i
は、モジュールの番号である)個のバージョンの中から
任意の1個を選択し、選択されたモジュールを組み合わ
せていくことによりn(n>mi)個の異なるバージョン
の一連の機能を実現する手段である。
づき、実現すべき一連の機能を複数のモジュールの構成
により実現する方法であって、各モジュールについて、
少なくとも1以上のバージョンを作成し、各モジュール
ごとにmi(miは、モジュールiのバージョン数、i
は、モジュールの番号である)個のバージョンの中から
任意の1個を選択し、選択されたモジュールを組み合わ
せていくことによりn(n>mi)個の異なるバージョン
の一連の機能を実現する手段である。
【0024】第2の手段は、第1の手段において、異な
るバージョン間の機能の実行結果の一致/不一致の情報
にもとづいて、故障箇所を特定する手段である。
るバージョン間の機能の実行結果の一致/不一致の情報
にもとづいて、故障箇所を特定する手段である。
【0025】第3の手段は、前記故障箇所を特定した後
に、故障バージョンを、故障箇所を有さない、他のバー
ジョンと取り換える手段である。
に、故障バージョンを、故障箇所を有さない、他のバー
ジョンと取り換える手段である。
【0026】第4の手段は、第2の手段を有し、故障箇
所をユーザに表示する機能を有する多重バージョン機能
デバッガである。
所をユーザに表示する機能を有する多重バージョン機能
デバッガである。
【0027】第5の手段は、前記多重バージョン機能デ
バッガを具備し、与えられた仕様にもとづいて、コーデ
ングからバージョン生成、デバッグまでの一連の作業を
支援する多重バージョン機能開発支援システムである。
バッガを具備し、与えられた仕様にもとづいて、コーデ
ングからバージョン生成、デバッグまでの一連の作業を
支援する多重バージョン機能開発支援システムである。
【0028】第5の手段は、複数のモジュールを有して
構成される一連の機能に対し、モジュール同士を接続す
る接合部を、複数個のバージョンを使用して多重構成と
し、該接合部の機能は、多重バージョンの実行結果の相
互チェック処理に基づいて実現する手段である。
構成される一連の機能に対し、モジュール同士を接続す
る接合部を、複数個のバージョンを使用して多重構成と
し、該接合部の機能は、多重バージョンの実行結果の相
互チェック処理に基づいて実現する手段である。
【0029】
【作用】上記第1の手段により、実現される一連の機能
を有するバージョン数をnとすると、nは、各モジュー
ル毎に作成されたバージョン数mi(iは、モジュールの
番号である)の積となる。すなわち、 n=m1×m2×…×mi×…mf (fは、一連の機能を構
成するモジュール数 )となる。
を有するバージョン数をnとすると、nは、各モジュー
ル毎に作成されたバージョン数mi(iは、モジュールの
番号である)の積となる。すなわち、 n=m1×m2×…×mi×…mf (fは、一連の機能を構
成するモジュール数 )となる。
【0030】また、2モジュールi,j間の接合部の多
重度(冗長度)をnijとすると: nij=mi×mj となる。
重度(冗長度)をnijとすると: nij=mi×mj となる。
【0031】さらに、3モジュールi,j,k間の接合
部の多重度(冗長度)をnijkとすると: nijk=mi×mj×mk となる。4モジュール以上のモジュール間の接合部も同
様に多重化される。
部の多重度(冗長度)をnijkとすると: nijk=mi×mj×mk となる。4モジュール以上のモジュール間の接合部も同
様に多重化される。
【0032】上記第2の手段は、上記第1の手段により
実現される異なるバージョン間の機能の実行結果の一致
/不一致の情報にもとづいて、故障箇所を特定する処理
を行う。
実現される異なるバージョン間の機能の実行結果の一致
/不一致の情報にもとづいて、故障箇所を特定する処理
を行う。
【0033】また、上記第3の手段は、故障バージョン
を、故障箇所を有さない、他のバージョンと取り換え処
理を行う。
を、故障箇所を有さない、他のバージョンと取り換え処
理を行う。
【0034】さらに、上記第4の手段は、上記手段を、
機能開発における一過程であるデバッグ処理に適用する
ことにより、バージョン内に存在する故障箇所、すなわ
ち、バグを特定、表示し、デバッグ処理の効率を向上さ
せる。
機能開発における一過程であるデバッグ処理に適用する
ことにより、バージョン内に存在する故障箇所、すなわ
ち、バグを特定、表示し、デバッグ処理の効率を向上さ
せる。
【0035】さらにまた、上記第4の手段は、与えられ
た仕様にもとづいて、コーデングからバージョン生成、
デバッグまでの一連の作業を支援し、ソフトウエアの開
発効率を向上させる。
た仕様にもとづいて、コーデングからバージョン生成、
デバッグまでの一連の作業を支援し、ソフトウエアの開
発効率を向上させる。
【0036】また、上記第6の手段によって、モジュー
ル間接合部の複数個のバージョンのうち、いずれかがエ
ラーを発生しても、相互チェック処理によって、当該エ
ラーはマスキングされ、モジュール間同士で、正確な情
報の伝達が行なわれることになる。
ル間接合部の複数個のバージョンのうち、いずれかがエ
ラーを発生しても、相互チェック処理によって、当該エ
ラーはマスキングされ、モジュール間同士で、正確な情
報の伝達が行なわれることになる。
【0037】
【実施例】以下、本発明による一実施例を図面を参照し
て説明する。ここでは説明を簡単にするため、3つのモ
ジュールを有して構成される一連の機能に対し、各モジ
ュールについてバージョンを2個ずつ作成する場合を例
にとり説明する。
て説明する。ここでは説明を簡単にするため、3つのモ
ジュールを有して構成される一連の機能に対し、各モジ
ュールについてバージョンを2個ずつ作成する場合を例
にとり説明する。
【0038】この場合、モジュールの組み合わせによ
り、8つ(2×2×2=8)のバージョンが生成される
ことになる。
り、8つ(2×2×2=8)のバージョンが生成される
ことになる。
【0039】また本実施例では、同時に実行する一連の
機能のバージョン数が、3以上の場合を扱っているため
に、該バージョン間の機能実行結果の相互チェックは、
いわゆる多数決で実現している。バージョン数が2の場
合は、機能実行結果の相互チェックは、結果が一致しな
いエラー発生時のみ報告を行なうようにすればよい。
機能のバージョン数が、3以上の場合を扱っているため
に、該バージョン間の機能実行結果の相互チェックは、
いわゆる多数決で実現している。バージョン数が2の場
合は、機能実行結果の相互チェックは、結果が一致しな
いエラー発生時のみ報告を行なうようにすればよい。
【0040】なお一連の機能を構成するモジュール数、
各モジュールの作成数が、いくつになっても、本発明は
有効であることはいうまでもない。
各モジュールの作成数が、いくつになっても、本発明は
有効であることはいうまでもない。
【0041】図1は、多重バージョン機能実現方法を表
すブロック図である。
すブロック図である。
【0042】各構成要素は、例えば、CPU、ROM、
RAM、および、プログラム等によって実現できる。
RAM、および、プログラム等によって実現できる。
【0043】図中、31は、一連の機能を記載した仕様部
(例えば、入力データの加工処理手順等を記載してあ
る)、そのうち1A, 1B, 1Cは、一連の機能を構成する
ための3つのモジュールA,B,Cの仕様を表す。32は、
コーデング部を示し、与えられた仕様に対してコーデン
グ処理を行う。1A0,1A1は、1Aに対する2種類のコーデ
ィングA0, A1、また、1B0,1B1は、1Bに対する2種類
のコーディングB0, B1、さらに、1C0, 1C1は、1Cに対
する2種類のコーディングC0,C1を表す。
(例えば、入力データの加工処理手順等を記載してあ
る)、そのうち1A, 1B, 1Cは、一連の機能を構成する
ための3つのモジュールA,B,Cの仕様を表す。32は、
コーデング部を示し、与えられた仕様に対してコーデン
グ処理を行う。1A0,1A1は、1Aに対する2種類のコーデ
ィングA0, A1、また、1B0,1B1は、1Bに対する2種類
のコーディングB0, B1、さらに、1C0, 1C1は、1Cに対
する2種類のコーディングC0,C1を表す。
【0044】また、33は、モジュールを作成する手段で
あるモジュール作成部を表す。34は、作成されたモジュ
ールを格納しておくモジュール格納部を表し、2a0,2a
1,2b0,2b1,2c0,2c1は、それぞれ1A0,1A1,1B0,1B
1,1C0,1C1を、33によって作成したモジュールa0,a
1,b0,b1,c0,c1を表す。
あるモジュール作成部を表す。34は、作成されたモジュ
ールを格納しておくモジュール格納部を表し、2a0,2a
1,2b0,2b1,2c0,2c1は、それぞれ1A0,1A1,1B0,1B
1,1C0,1C1を、33によって作成したモジュールa0,a
1,b0,b1,c0,c1を表す。
【0045】35は、多重バージョンを生成する多重バー
ジョン生成部を表す。
ジョン生成部を表す。
【0046】36は、生成されたバージョンを格納するバ
ージョン格納部を表し、20,21,22,23,24,25,26,
27は、それぞれ、34内に格納されたモジュールを、35に
よって生成した一連の機能のバージョンV0,V1,V2,V
3,V4,V5,V6,V7を表し、28は、生成された一連の機
能のバージョン構成情報を格納しておくバージョン情報
格納部を表す。37は、多重バージョン実行装置を表し、
41は入力情報を受け付ける入力部、42は、多重バージョ
ン実行部、43は多数決処理を行う多数決部、44は、情報
を出力する出力部を表す。
ージョン格納部を表し、20,21,22,23,24,25,26,
27は、それぞれ、34内に格納されたモジュールを、35に
よって生成した一連の機能のバージョンV0,V1,V2,V
3,V4,V5,V6,V7を表し、28は、生成された一連の機
能のバージョン構成情報を格納しておくバージョン情報
格納部を表す。37は、多重バージョン実行装置を表し、
41は入力情報を受け付ける入力部、42は、多重バージョ
ン実行部、43は多数決処理を行う多数決部、44は、情報
を出力する出力部を表す。
【0047】以下、図1の動作を説明する。
【0048】3つのモジュールA,B,Cを有して構成さ
れる一連の機能を記載した仕様31にもとづき、コーディ
ング部32にて、コーディング処理、例えば、プログラミ
ングを行なう。この場合、仕様1Aに対応して2種類のコ
ーデング1A0,1A1を、仕様1Bに対応して2種類のコーデ
ング1B0,1B1を、仕様1Cに対応して2種類のコーデング
1C0,1C1を行なう。
れる一連の機能を記載した仕様31にもとづき、コーディ
ング部32にて、コーディング処理、例えば、プログラミ
ングを行なう。この場合、仕様1Aに対応して2種類のコ
ーデング1A0,1A1を、仕様1Bに対応して2種類のコーデ
ング1B0,1B1を、仕様1Cに対応して2種類のコーデング
1C0,1C1を行なう。
【0049】すなわち、各モジュール仕様より2個ず
つ、合計6個のコーディングを行なうことになる。
つ、合計6個のコーディングを行なうことになる。
【0050】次に、モジュール作成部33によって、32に
て行なわれた各コーデングに対してモジュールを作成す
る。33は、例えば、32がソフトウェアのソースファイル
の場合は、ソースファイルに対応してオブジェクトファ
イルを作成するコンパイラに相当する。
て行なわれた各コーデングに対してモジュールを作成す
る。33は、例えば、32がソフトウェアのソースファイル
の場合は、ソースファイルに対応してオブジェクトファ
イルを作成するコンパイラに相当する。
【0051】さらに、多重バージョン生成部35により、
作成された各モジュールごとに、複数個のバージョンの
中から1個を選択し、選択された各モジュールを組み合
わせて、仕様31を満足する異なるバージョンを生成す
る。該バージョンは、一連の機能を実現する。
作成された各モジュールごとに、複数個のバージョンの
中から1個を選択し、選択された各モジュールを組み合
わせて、仕様31を満足する異なるバージョンを生成す
る。該バージョンは、一連の機能を実現する。
【0052】図14に、多重バージョン生成部35の動
作をフローチャートにて表す。図において、 U:一連の機能を構成するモジュール数 i:モジュール番号、1≦i≦U j(i):モジュールiのバージョン番号、1≦j(i)≦m(i) m(i):モジュールiのバージョン数、i:モジュール番号 Mi j(i):モジュールiのバージョンj(i) Π:モジュール間結合手段 Σ:バージョン番号選択手段 とする。また、ステップ901〜911は、フローチャート上
の各種動作を表す。
作をフローチャートにて表す。図において、 U:一連の機能を構成するモジュール数 i:モジュール番号、1≦i≦U j(i):モジュールiのバージョン番号、1≦j(i)≦m(i) m(i):モジュールiのバージョン数、i:モジュール番号 Mi j(i):モジュールiのバージョンj(i) Π:モジュール間結合手段 Σ:バージョン番号選択手段 とする。また、ステップ901〜911は、フローチャート上
の各種動作を表す。
【0053】まずステップ902にて、各モジュールのバ
ージョン番号j(1)〜j(U)を初期化にする。次に、ステッ
プ903にて、変数kに1を代入し、ステップ904にて、モ
ジュールkのバージョン番号j(k)を、1だけインクリメ
ントする。
ージョン番号j(1)〜j(U)を初期化にする。次に、ステッ
プ903にて、変数kに1を代入し、ステップ904にて、モ
ジュールkのバージョン番号j(k)を、1だけインクリメ
ントする。
【0054】ステップ905にて、j(k)とモジュールkのバ
ージョン数m(k)とを比較し、j(k)がm(k)より大きけれ
ば、ステップ906にて、j(k)を「0」に設定し、ステッ
プ907にて、kを1だけインクリメントする。
ージョン数m(k)とを比較し、j(k)がm(k)より大きけれ
ば、ステップ906にて、j(k)を「0」に設定し、ステッ
プ907にて、kを1だけインクリメントする。
【0055】ステップ908にて、kの値を、一連の機能を
構成するモジュール数Uと比較し、kがUよりも大きけれ
ば処理を終了する。そうでなければ、ステップ904に戻
る。
構成するモジュール数Uと比較し、kがUよりも大きけれ
ば処理を終了する。そうでなければ、ステップ904に戻
る。
【0056】また、ステップ905にて、j(k)がm(k)より
大きくなければ、ステップ910にて、その時点での各モ
ジュールのバージョンj(1)〜j(U)、すなわち、M1 j(1)
〜MUj(U)を結合し、一連の機能が実現可能なバージョ
ンを生成する。
大きくなければ、ステップ910にて、その時点での各モ
ジュールのバージョンj(1)〜j(U)、すなわち、M1 j(1)
〜MUj(U)を結合し、一連の機能が実現可能なバージョ
ンを生成する。
【0057】そして、ステップ911にて、k=1か否かをチ
ェックし、k=1ならばステップ904に戻る。それ以外な
ら、ステップ903に戻る。
ェックし、k=1ならばステップ904に戻る。それ以外な
ら、ステップ903に戻る。
【0058】なお、ステップ910によるモジュール結合
処理は、例えば、各モジュールのバージョンを表すオブ
ジェクトファイルから、1つの実行ファイルを生成す
る、リンク処理にて実現される。また、モジュール結合
処理とあわせて、生成された一連の機能のバージョンを
構成するモジュールに関する情報として、例えば、構成
モジュールのバージョン番号:j(1)〜j(U)を、図1に示
すバージョン情報格納部28に格納する。
処理は、例えば、各モジュールのバージョンを表すオブ
ジェクトファイルから、1つの実行ファイルを生成す
る、リンク処理にて実現される。また、モジュール結合
処理とあわせて、生成された一連の機能のバージョンを
構成するモジュールに関する情報として、例えば、構成
モジュールのバージョン番号:j(1)〜j(U)を、図1に示
すバージョン情報格納部28に格納する。
【0059】以上より、多重バージョン生成部35によっ
て、「n=m(1)×…×m(U)」個の異なるバージョンが生
成され、各バージョンは、一連の機能を実現する。
て、「n=m(1)×…×m(U)」個の異なるバージョンが生
成され、各バージョンは、一連の機能を実現する。
【0060】本実施例では、各モジュールは、2個ずつ
冗長に作成されており(mA=mB=mC=2、mAは、モジュール
Aのバージョン数、mBは、モジュールBのバージョン数、
mCは、モジュールCのバージョン数)、生成される一連
の機能のバージョン数nは、各モジュール作成バージョ
ン数(冗長モジュール数)の積、すなわち、n=mA×mB
×mC=2×2×2=8個になる。
冗長に作成されており(mA=mB=mC=2、mAは、モジュール
Aのバージョン数、mBは、モジュールBのバージョン数、
mCは、モジュールCのバージョン数)、生成される一連
の機能のバージョン数nは、各モジュール作成バージョ
ン数(冗長モジュール数)の積、すなわち、n=mA×mB
×mC=2×2×2=8個になる。
【0061】最後に、多重バージョン実行装置37によ
り、生成された一連の機能のバージョンを実行する。37
では、入力部41を介して入力されたバージョンに対し
て、多重バージョン実行部42が、該バージョンを同時に
実行する処理を行う。そして、各バージョンの実行結果
を43にて多数決し、多数決の結果、メジャーとなった結
果を、出力部44に出力する。
り、生成された一連の機能のバージョンを実行する。37
では、入力部41を介して入力されたバージョンに対し
て、多重バージョン実行部42が、該バージョンを同時に
実行する処理を行う。そして、各バージョンの実行結果
を43にて多数決し、多数決の結果、メジャーとなった結
果を、出力部44に出力する。
【0062】以上の動作により、低コストで、一連の機
能を実現可能なバージョン数を大きくできるため、多数
決による信頼性の向上を図ることができる。
能を実現可能なバージョン数を大きくできるため、多数
決による信頼性の向上を図ることができる。
【0063】図1を参照して説明している実施例によれ
ば、3つのモジュールを有して構成される一連の機能に
対し、各モジュールのバージョンを各々2つずつ作成す
れば、従来の一連の機能の2バージョン作成分のコスト
によって、8バージョン生成されることになり、該バー
ジョン数が大きくなるため、多数決による、より一層の
高信頼化を図れる効果がある。
ば、3つのモジュールを有して構成される一連の機能に
対し、各モジュールのバージョンを各々2つずつ作成す
れば、従来の一連の機能の2バージョン作成分のコスト
によって、8バージョン生成されることになり、該バー
ジョン数が大きくなるため、多数決による、より一層の
高信頼化を図れる効果がある。
【0064】さらにモジュール間接合部の高信頼化をも
図ることが可能であるが、この効果については、以下の
図2を参照して説明する。
図ることが可能であるが、この効果については、以下の
図2を参照して説明する。
【0065】図2は、多重バージョン実行装置の構成例
を示すブロック図である。
を示すブロック図である。
【0066】図中、41は入力部、42は多重バージョン実
行部、43は多数決部、44は出力部を表す。
行部、43は多数決部、44は出力部を表す。
【0067】42内部において、20,21,22,23,24,2
5,26,27は、それぞれ、作成されたバージョンV0,V
1,V2,V3,V4,V5,V6,V7を表す。
5,26,27は、それぞれ、作成されたバージョンV0,V
1,V2,V3,V4,V5,V6,V7を表す。
【0068】さらに、各バージョン内部において、2a0
1,2a02,2a03,2a04は、モジュールa0を、2a11,2a1
2,2a13,2a14は、モジュールa1を、2b01,2b02,2b0
3,2b04は、モジュールb0を、2b11,2b12,2b13,2b14
は、モジュールb1を、2c01,2c02,2c03,2c04は、モジ
ュールc0を、2c11,2c12,2c13,2c14は、モジュールc1
を表す。
1,2a02,2a03,2a04は、モジュールa0を、2a11,2a1
2,2a13,2a14は、モジュールa1を、2b01,2b02,2b0
3,2b04は、モジュールb0を、2b11,2b12,2b13,2b14
は、モジュールb1を、2c01,2c02,2c03,2c04は、モジ
ュールc0を、2c11,2c12,2c13,2c14は、モジュールc1
を表す。
【0069】多重バージョン実行装置37の動作は、入力
部41を介して入力された入力情報に対して、多重バージ
ョン実行部42にて生成された、一連の機能を有するバー
ジョン20,21,22,23,,24,25,26,27を、同時に実
行する。
部41を介して入力された入力情報に対して、多重バージ
ョン実行部42にて生成された、一連の機能を有するバー
ジョン20,21,22,23,,24,25,26,27を、同時に実
行する。
【0070】各バージョンは、自バージョンを構成する
3つのモジュールを実行し、実行結果を出力する。な
お、図2では、各モジュール間の実行の流れを連続的に
書いているが、モジュール間で行われる処理は、例え
ば、マルチタスクによる並行処理によって行われるもの
であってもよい。
3つのモジュールを実行し、実行結果を出力する。な
お、図2では、各モジュール間の実行の流れを連続的に
書いているが、モジュール間で行われる処理は、例え
ば、マルチタスクによる並行処理によって行われるもの
であってもよい。
【0071】そして、各バージョンの実行により出力さ
れた実行結果を、43にて多数決し、メジャーとなった結
果を、出力部44に出力する。
れた実行結果を、43にて多数決し、メジャーとなった結
果を、出力部44に出力する。
【0072】多重バージョン実行部42における冗長度
は、以下のようになる。
は、以下のようになる。
【0073】仕様書のモジュールA(1A)にもとづいて作
成されたモジュールのバージョンは、a0とa1の2つであ
るため、モジュールAの冗長度は、「2」となる。他の
モジュールB,C(1B,1C)の冗長度も同様である。また、
仕様書のモジュールAとB(1Aと1B)間の組み合わせは、a0
とb0、a0とb1、a1とb0、a1とb1の4通りが存在するた
め、モジュールAB間接合部の冗長度は、「4」になる。
他のモジュール間接合部BC,CA(1Bと1C,1Cと1A)の冗長
度も同様である。 さらに、仕様書のモジュールAとBと
C(1Aと1Bと1C)間の組み合わせは、生成された、一連の
機能を有するバージョン数だけ存在するため、モジュー
ルABC間接合部の冗長度は、「8」になる。
成されたモジュールのバージョンは、a0とa1の2つであ
るため、モジュールAの冗長度は、「2」となる。他の
モジュールB,C(1B,1C)の冗長度も同様である。また、
仕様書のモジュールAとB(1Aと1B)間の組み合わせは、a0
とb0、a0とb1、a1とb0、a1とb1の4通りが存在するた
め、モジュールAB間接合部の冗長度は、「4」になる。
他のモジュール間接合部BC,CA(1Bと1C,1Cと1A)の冗長
度も同様である。 さらに、仕様書のモジュールAとBと
C(1Aと1Bと1C)間の組み合わせは、生成された、一連の
機能を有するバージョン数だけ存在するため、モジュー
ルABC間接合部の冗長度は、「8」になる。
【0074】このように、冗長モジュールの組み合わせ
により、モジュール間接合部の冗長度が高くなる。した
がって、多重バージョン実行装置37を備えた効果は、上
述のように、冗長モジュールの組み合わせによって、モ
ジュール間接合部の冗長度が高くなるために、モジュー
ル間接合部に対して、多数決による高信頼化を図れるこ
とにある。
により、モジュール間接合部の冗長度が高くなる。した
がって、多重バージョン実行装置37を備えた効果は、上
述のように、冗長モジュールの組み合わせによって、モ
ジュール間接合部の冗長度が高くなるために、モジュー
ル間接合部に対して、多数決による高信頼化を図れるこ
とにある。
【0075】次に、2モジュールを有して構成される一
連の機能において、各モジュールについて2バージョン
を生成する場合を例にとり、従来例と本実施例による信
頼度を比較する。
連の機能において、各モジュールについて2バージョン
を生成する場合を例にとり、従来例と本実施例による信
頼度を比較する。
【0076】図12は、上記の例における、従来例と本
実施例による信頼度を説明図である。
実施例による信頼度を説明図である。
【0077】本実施例によれば、図12(2)のように、
2モジュール間は、a0-b0,a0-b1,a1-b0,a1-b1間接合
部により4重化された構成となっている。ここでは、説
明を簡略化するために、各モジュールの信頼度は全て等
しく、各モジュール間接合部の信頼度も全て等しいとす
る。 さて、モジュールの信頼度をr、モジュール間接
合部の信頼度をsとする。また、従来とと本発明にかか
る機能自体の信頼度をR0,R1とする。なお、ここで述
べられている信頼度は、機能の一部が故障しいても正し
い出力が得られる確率を指す。
2モジュール間は、a0-b0,a0-b1,a1-b0,a1-b1間接合
部により4重化された構成となっている。ここでは、説
明を簡略化するために、各モジュールの信頼度は全て等
しく、各モジュール間接合部の信頼度も全て等しいとす
る。 さて、モジュールの信頼度をr、モジュール間接
合部の信頼度をsとする。また、従来とと本発明にかか
る機能自体の信頼度をR0,R1とする。なお、ここで述
べられている信頼度は、機能の一部が故障しいても正し
い出力が得られる確率を指す。
【0078】従来の機能において、A系「a0〜a0−b0〜
b0」は直列に接続されているため、全てのモジュールが
正常でなければ、A系より正しい出力は得られない。し
たがってA系の信頼度は、「r2s」になる。B系「a1
〜b1−a1〜b1」の信頼度も同じである。逆にA、B系が
故障する確率は、ともに「1−r2s」になる。従来の
機能においては、A、B系が並列接続されているため、
いずれか一方が正常なら、換言すれば、双方とも故障し
てしまう状況以外ならば、正しい出力が得られる。よっ
てR0は、「1−(A系が故障する確率)×(B系が故
障する確率)」で表され、次式1となる。
b0」は直列に接続されているため、全てのモジュールが
正常でなければ、A系より正しい出力は得られない。し
たがってA系の信頼度は、「r2s」になる。B系「a1
〜b1−a1〜b1」の信頼度も同じである。逆にA、B系が
故障する確率は、ともに「1−r2s」になる。従来の
機能においては、A、B系が並列接続されているため、
いずれか一方が正常なら、換言すれば、双方とも故障し
てしまう状況以外ならば、正しい出力が得られる。よっ
てR0は、「1−(A系が故障する確率)×(B系が故
障する確率)」で表され、次式1となる。
【0079】
【数1】
【0080】次に、本発明にかかる機能においては、a
0、a1のいずれか一方が正常で、かつ、a0-b0,a0-b1,a
1-b0,a1-b1のうちいずれかが正常で、かつ、b0,b1の
いずれか一方が正常であれば、正しい出力を得れる。換
言すれば、a0、a1が双方故障してしまう状況以外で、か
つ、a0-b0,a0-b1,a1-b0,a1-b1が全て故障する状況以
外で、かつ、b0,b1が双方故障してしまう状況以外であ
れば、正しい結果が得れる。ここでa0、a1が双方故障す
る確率は「(a0が故障する確率)×(a1が故障する確
率)」=(1−r)×(1−r)=(1−r)2であ
る。b0、b1が双方故障する確率も同じである。また、a0
-b0,a0-b1,a1-b0,a1-b1が全て故障する確率は、
「(a0-b0が故障する確率)×(a0-b1が故障する確率)
×(a1-b0が故障する確率)×(a1-b1が故障する確
率)」=(1−s)×(1−s)×(1−s)×(1−s)
=(1−s)4となる。
0、a1のいずれか一方が正常で、かつ、a0-b0,a0-b1,a
1-b0,a1-b1のうちいずれかが正常で、かつ、b0,b1の
いずれか一方が正常であれば、正しい出力を得れる。換
言すれば、a0、a1が双方故障してしまう状況以外で、か
つ、a0-b0,a0-b1,a1-b0,a1-b1が全て故障する状況以
外で、かつ、b0,b1が双方故障してしまう状況以外であ
れば、正しい結果が得れる。ここでa0、a1が双方故障す
る確率は「(a0が故障する確率)×(a1が故障する確
率)」=(1−r)×(1−r)=(1−r)2であ
る。b0、b1が双方故障する確率も同じである。また、a0
-b0,a0-b1,a1-b0,a1-b1が全て故障する確率は、
「(a0-b0が故障する確率)×(a0-b1が故障する確率)
×(a1-b0が故障する確率)×(a1-b1が故障する確
率)」=(1−s)×(1−s)×(1−s)×(1−s)
=(1−s)4となる。
【0081】次に、a0、a1が双方故障する以外の確率
は、「1−(a0、a1が双方故障する確率)」=1−(1
−r)2 となる。b0、b1が双方故障する以外の確率も
同じである。また、a0-b0,a0-b1,a1-b0,a1-b1が全て
故障する以外の確率は、「1−(a0-b0,a0-b1,a1-b
0,a1-b1が全て故障する確率)」=1−(1−s)4 と
なる。したがって信頼度R1は、「(a0、a1が双方故障
する以外の確率)×(b0、b1が双方故障する以外の確
率)×(a0-b0,a0-b1,a1-b0,a1-b1が全て故障する以
外の確率)」となり、式2にて表される。
は、「1−(a0、a1が双方故障する確率)」=1−(1
−r)2 となる。b0、b1が双方故障する以外の確率も
同じである。また、a0-b0,a0-b1,a1-b0,a1-b1が全て
故障する以外の確率は、「1−(a0-b0,a0-b1,a1-b
0,a1-b1が全て故障する確率)」=1−(1−s)4 と
なる。したがって信頼度R1は、「(a0、a1が双方故障
する以外の確率)×(b0、b1が双方故障する以外の確
率)×(a0-b0,a0-b1,a1-b0,a1-b1が全て故障する以
外の確率)」となり、式2にて表される。
【0082】
【数2】
【0083】ここで、信頼度を比較するため、f(s)=
(R1−R0)/rsとして計算を進めると、
(R1−R0)/rsとして計算を進めると、
【0084】
【数3】
【0085】となる。この時、f(0)、f(1)は、
【0086】
【数4】
【0087】
【数5】
【0088】となる。また、式3をsで微分すると:
【0089】
【数6】
【0090】となる。 この時、f’(0)、f’(1)
は:
は:
【0091】
【数7】
【0092】
【数8】
【0093】となる。 また、式3をsで2階微分する
と、
と、
【0094】
【数9】
【0095】となる。
【0096】したがって、0<r<1、0<s<1にお
いて、式3は、下に凸であり、かつ、sの3次関数であ
ることより、図13のようになる。
いて、式3は、下に凸であり、かつ、sの3次関数であ
ることより、図13のようになる。
【0097】以上より、f(s)=(R1−R0)/rs>0 すなわち、R1>R0 が成立する。これは、本発明によ
って信頼性の向上が図れたことにほかならない。
って信頼性の向上が図れたことにほかならない。
【0098】一連の機能実現ために使用されるモジュー
ル数、モジュールについて生成されるバージョン数が、
他の場合であっても同様のことがいえる。
ル数、モジュールについて生成されるバージョン数が、
他の場合であっても同様のことがいえる。
【0099】なお、図2に示す、各々の、一連の機能を
実現するバージョンが、ソフトウェアの場合、多重バー
ジョン実行装置の実行環境としては、生成バージョン数
と同数のプロセッサを備えたマルチプロセッサ構成によ
る並列処理の場合や、生成されたバージョンを、1台の
プロセッサにて、マルチタスクによる並行処理を利用し
て実行する等、生成バージョン数が、プロセッサ数より
多い場合が考えられるが、いずれの場合においても、本
発明は有効であることはいうまでもない。
実現するバージョンが、ソフトウェアの場合、多重バー
ジョン実行装置の実行環境としては、生成バージョン数
と同数のプロセッサを備えたマルチプロセッサ構成によ
る並列処理の場合や、生成されたバージョンを、1台の
プロセッサにて、マルチタスクによる並行処理を利用し
て実行する等、生成バージョン数が、プロセッサ数より
多い場合が考えられるが、いずれの場合においても、本
発明は有効であることはいうまでもない。
【0100】さて、図3に、エラー制御付き多重バージ
ョン実行装置の構成を表すブロック図の一例を示す。
ョン実行装置の構成を表すブロック図の一例を示す。
【0101】図中、37aは、エラー制御付き多重バージ
ョン実行装置を表し、41は入力部、42は多重バージョン
実行部、43は多数決部、44は出力部を表す。45は、エラ
ー制御部を表し、451は、fault箇所特定部、452は、構
成制御部を表す。
ョン実行装置を表し、41は入力部、42は多重バージョン
実行部、43は多数決部、44は出力部を表す。45は、エラ
ー制御部を表し、451は、fault箇所特定部、452は、構
成制御部を表す。
【0102】また36は、バージョン格納部を表し、ま
た、20,21,22,23,24,25,26,27は、バージョンV
0,V1,V2,V3,V4,V5,V6,V7を表し、さらに、28
は、バージョン構成する情報を格納してあるバージョン
情報格納部を表す。
た、20,21,22,23,24,25,26,27は、バージョンV
0,V1,V2,V3,V4,V5,V6,V7を表し、さらに、28
は、バージョン構成する情報を格納してあるバージョン
情報格納部を表す。
【0103】図3において、エラー制御付き多重バージ
ョン実行装置37aの動作は、41〜44に関しては37と同様
であり、入力部41を介して入力された入力情報に対し
て、多重バージョン実行部42にて、生成された一連の機
能を実現するバージョンを同時に実行し、各バージョン
の実行結果を43にて多数決し、メジャーとなった結果
を、出力部44に出力する。
ョン実行装置37aの動作は、41〜44に関しては37と同様
であり、入力部41を介して入力された入力情報に対し
て、多重バージョン実行部42にて、生成された一連の機
能を実現するバージョンを同時に実行し、各バージョン
の実行結果を43にて多数決し、メジャーとなった結果
を、出力部44に出力する。
【0104】さらに、多数決部43は、多重バージョン実
行部42の実行結果にもとづいて、エラーを発生したバー
ジョン(多数決で、メジャーとなった結果以外を出力し
た、一連の機能を実現するバージョン)を、エラー制御
部45に通知する。エラー制御部45では、内部のfault箇
所特定部451が、バージョン格納部36内のバージョン情
報格納部28に格納されたバージョンの構成に関する情報
と、多数決部43からの入力情報にもとづいて、バージョ
ン内の故障箇所を特定する。
行部42の実行結果にもとづいて、エラーを発生したバー
ジョン(多数決で、メジャーとなった結果以外を出力し
た、一連の機能を実現するバージョン)を、エラー制御
部45に通知する。エラー制御部45では、内部のfault箇
所特定部451が、バージョン格納部36内のバージョン情
報格納部28に格納されたバージョンの構成に関する情報
と、多数決部43からの入力情報にもとづいて、バージョ
ン内の故障箇所を特定する。
【0105】続いて、構成制御部452にて、fault箇所特
定部451からの故障箇所特定結果とバージョンの構成に
関する情報にもとづいて、多重バージョン実行部42と多
数決部43に対し、故障箇所を有する故障バージョンの実
行停止を報告する。
定部451からの故障箇所特定結果とバージョンの構成に
関する情報にもとづいて、多重バージョン実行部42と多
数決部43に対し、故障箇所を有する故障バージョンの実
行停止を報告する。
【0106】そして報告を受け取った多重バージョン実
行部42は、故障バージョンの実行を取りやめる。また、
多数決部43では、故障バージョンからの入力を遮断す
る。
行部42は、故障バージョンの実行を取りやめる。また、
多数決部43では、故障バージョンからの入力を遮断す
る。
【0107】ところで、一連の機能を実現するために使
用されるモジュール数が多いと、それだけ、多数のバー
ジョンが生成されることになる。しかし、ハードウェア
資源あるいは処理時間の制約により、生成された全ての
バージョンを実行することは困難であるため、実行バー
ジョン数が、生成バージョン数よりも少なくなり、未実
行のバージョンが存在する場合がある。このような場
合、実行中に特定された故障バージョンを、共通の故障
箇所を有さない、他のバージョンと取り換えることによ
り、多重バージョン実行の信頼性が、故障発生前と同一
のレベルまで回復できることになる。
用されるモジュール数が多いと、それだけ、多数のバー
ジョンが生成されることになる。しかし、ハードウェア
資源あるいは処理時間の制約により、生成された全ての
バージョンを実行することは困難であるため、実行バー
ジョン数が、生成バージョン数よりも少なくなり、未実
行のバージョンが存在する場合がある。このような場
合、実行中に特定された故障バージョンを、共通の故障
箇所を有さない、他のバージョンと取り換えることによ
り、多重バージョン実行の信頼性が、故障発生前と同一
のレベルまで回復できることになる。
【0108】図4は、構成制御部452の故障バージョン
特定方法の一例を表すブロック図である。
特定方法の一例を表すブロック図である。
【0109】図中、4521は、fault箇所特定部451からの
入力情報、4522は比較器、28はバージョン情報(バージ
ョンが、どのようなモジュールを有して構成されている
かを示す情報)を表す。 入力情報4521は、例えば、6
ビットの情報で表され、各ビットは、上位ビットより、
それぞれ、モジュールa0,a1,b0,b1,c0,c1に関する
状態を表す。
入力情報、4522は比較器、28はバージョン情報(バージ
ョンが、どのようなモジュールを有して構成されている
かを示す情報)を表す。 入力情報4521は、例えば、6
ビットの情報で表され、各ビットは、上位ビットより、
それぞれ、モジュールa0,a1,b0,b1,c0,c1に関する
状態を表す。
【0110】そして、モジュールの「正常」をビット・
オフ(=0)、「故障」をビット・オン(=1)で表
す。図4では、b0およびc1に対応するビットが、オンに
なっているが、これは、b0およびc1の接合部に故障が発
生していることを意味する。
オフ(=0)、「故障」をビット・オン(=1)で表
す。図4では、b0およびc1に対応するビットが、オンに
なっているが、これは、b0およびc1の接合部に故障が発
生していることを意味する。
【0111】またバージョン情報280(バージョン情報
格納部28に格納されている情報)は、例えば、図のよう
に「8×8ビット」のマトリクス状の図で表され、
「行」は、上からそれぞれバージョンV0,V1,V2,V3,
V4,V5,V6,V7を表し、「列」は、最初の6列が、バー
ジョンを構成する各モジュールを表し、左からそれぞ
れ、モジュールa0,a1,b0,b1,c0,c1を表し、ビット
・オンのモジュールで、バージョンが構成されている。
例えば、バージョンV0は、モジュールa0,b0,c0を有し
て構成されていることを表す。
格納部28に格納されている情報)は、例えば、図のよう
に「8×8ビット」のマトリクス状の図で表され、
「行」は、上からそれぞれバージョンV0,V1,V2,V3,
V4,V5,V6,V7を表し、「列」は、最初の6列が、バー
ジョンを構成する各モジュールを表し、左からそれぞ
れ、モジュールa0,a1,b0,b1,c0,c1を表し、ビット
・オンのモジュールで、バージョンが構成されている。
例えば、バージョンV0は、モジュールa0,b0,c0を有し
て構成されていることを表す。
【0112】また7列目は、バージョンの故障を表すビ
ットで、ビット・オンで「故障」を表す。最後の8列目
が、バージョンの使用状態を表すビットで、ビット・オ
ンで「未使用」であることを表す。図4では、V4,V7が
未使用である。
ットで、ビット・オンで「故障」を表す。最後の8列目
が、バージョンの使用状態を表すビットで、ビット・オ
ンで「未使用」であることを表す。図4では、V4,V7が
未使用である。
【0113】構成制御部452による故障バージョンの特
定方法は、fault箇所特定部451からの、入力情報4521
を、比較器4522にて、バージョン情報280の各行の最初
の6列と比較する。
定方法は、fault箇所特定部451からの、入力情報4521
を、比較器4522にて、バージョン情報280の各行の最初
の6列と比較する。
【0114】そして、入力情報4521を包含するバージョ
ンは、故障とみなされ、7列目のバージョンの故障を表
すビットをオンにする。図4の例では、バージョンV1お
よびV5に対して、故障ビットがオンになる。これは、入
力情報4521は、モジュールb0およびc1の接合部が故障し
ていることを表しているが、バージョン情報280を参照
すると、バージョンV1とV5がモジュールb0とc1を有して
いるためである。
ンは、故障とみなされ、7列目のバージョンの故障を表
すビットをオンにする。図4の例では、バージョンV1お
よびV5に対して、故障ビットがオンになる。これは、入
力情報4521は、モジュールb0およびc1の接合部が故障し
ていることを表しているが、バージョン情報280を参照
すると、バージョンV1とV5がモジュールb0とc1を有して
いるためである。
【0115】次に、故障部位を有しないバージョンを、
未使用バージョンの中から取り出す。バージョン情報28
0の8列目より、未使用バージョンはV4およびV7の2つ
であり、また7列目の情報より、このうちのいずれも
が、故障部位を有していないことがわかる。従って、故
障バージョンV1とV5を、V4とV7に交換することにし、多
重バージョン実行部42と多数決部43に対し報告する。そ
して、バージョン情報280の8列目のV4とV7に対応する
ビットをオフにする。
未使用バージョンの中から取り出す。バージョン情報28
0の8列目より、未使用バージョンはV4およびV7の2つ
であり、また7列目の情報より、このうちのいずれも
が、故障部位を有していないことがわかる。従って、故
障バージョンV1とV5を、V4とV7に交換することにし、多
重バージョン実行部42と多数決部43に対し報告する。そ
して、バージョン情報280の8列目のV4とV7に対応する
ビットをオフにする。
【0116】以上のように、図3に示すエラー制御付き
多重バージョン実行装置37aによれば、故障箇所を有す
る故障バージョンの実行を取りやめることにより、信頼
性を回復させることができる。
多重バージョン実行装置37aによれば、故障箇所を有す
る故障バージョンの実行を取りやめることにより、信頼
性を回復させることができる。
【0117】さらに、構成制御部452にて、故障バージ
ョンを未実行バージョンと取り換える処理を行うため、
多重バージョン実行の信頼性が、故障発生前と同一のレ
ベルまで回復できる。
ョンを未実行バージョンと取り換える処理を行うため、
多重バージョン実行の信頼性が、故障発生前と同一のレ
ベルまで回復できる。
【0118】次に、fault箇所特定部451について説明す
る。
る。
【0119】まずfault箇所特定部451の動作の基本的な
考え方を説明する。
考え方を説明する。
【0120】図5は、fault箇所特定部451の基本動作説
明図である。説明を簡略化するために、バージョンV0,
V1,V5が有するモジュールを要素として表したベン図を
用いる。
明図である。説明を簡略化するために、バージョンV0,
V1,V5が有するモジュールを要素として表したベン図を
用いる。
【0121】図中に示されているモジュールは、各バー
ジョンの構成モジュールを表し、例えば、a0は、V0,V1
に属するが、V5には属さないことを表す。
ジョンの構成モジュールを表し、例えば、a0は、V0,V1
に属するが、V5には属さないことを表す。
【0122】ここで、多数決により、バージョンV1,V5
にてエラーが発生したと判定されたとする。 この場
合、故障箇所は、V1,V5の交わり部分に属するモジュー
ルb0,c1、あるいは、これらのモジュール間接合部b0-c
1が考えられる。しかし、例えば、モジュールb0は、バ
ージョンV0にも属し、また、V0は、エラーを発生してい
ないのであるから、b0自体の故障ではない。さらに、V0
以外の他のバージョン(c1を有している)においてもエ
ラーが発生していないことを考慮すると、c1自体の故障
でもない。結局、考えられる故障箇所は、モジュール間
接合部 b0-c1ということになる。以上が、fault箇所特
定部451の動作の基本的な考え方である。
にてエラーが発生したと判定されたとする。 この場
合、故障箇所は、V1,V5の交わり部分に属するモジュー
ルb0,c1、あるいは、これらのモジュール間接合部b0-c
1が考えられる。しかし、例えば、モジュールb0は、バ
ージョンV0にも属し、また、V0は、エラーを発生してい
ないのであるから、b0自体の故障ではない。さらに、V0
以外の他のバージョン(c1を有している)においてもエ
ラーが発生していないことを考慮すると、c1自体の故障
でもない。結局、考えられる故障箇所は、モジュール間
接合部 b0-c1ということになる。以上が、fault箇所特
定部451の動作の基本的な考え方である。
【0123】図6は、fault箇所特定の動作の説明図で
ある。
ある。
【0124】図中、81は、多数決部43より送られてくる
多数決結果、801〜826は、モジュール間接合部あるいは
モジュール自体の故障検出ノード、80は、各ノードの状
態(故障か否かの状態)を受け付けるノードチェック部
を表す。
多数決結果、801〜826は、モジュール間接合部あるいは
モジュール自体の故障検出ノード、80は、各ノードの状
態(故障か否かの状態)を受け付けるノードチェック部
を表す。
【0125】多数決結果81は、例えば8ビットの情報で
表され、上位ビットより、それぞれバージョンV0,V1,
V2,V3,V4,V5,V6,V7の状態を表す。また、エラーを
発生した場合に、該当するバージョンのビットをオンに
する。図6では、V1,V5が、エラーを発生したことを表
す。
表され、上位ビットより、それぞれバージョンV0,V1,
V2,V3,V4,V5,V6,V7の状態を表す。また、エラーを
発生した場合に、該当するバージョンのビットをオンに
する。図6では、V1,V5が、エラーを発生したことを表
す。
【0126】また、ノード801〜808は、それぞれ3モジ
ュール間、a0-b0-c0,a0-b0-c1,a0-b1-c0,a0-b1-c1,
a1-b0-c0,a1-b0-c1,a1-b1-c0,a1-b1-c1間の接合部の
故障検出ノードを表す。 ノード809〜820は、それぞれ
2モジュール間、a0-b0,a0-b1,a1-b0,a1-b1,b0-c
0,b0-c1,b1-c0,b1-c1,c0-a0,c0-a1,c1-a0,c1-a1
間の接合部の故障検出ノードを表す。 ノード821〜826
はそれぞれモジュールa0,a1,b0,b1,c0,c1自体の故
障検出ノードを表す。
ュール間、a0-b0-c0,a0-b0-c1,a0-b1-c0,a0-b1-c1,
a1-b0-c0,a1-b0-c1,a1-b1-c0,a1-b1-c1間の接合部の
故障検出ノードを表す。 ノード809〜820は、それぞれ
2モジュール間、a0-b0,a0-b1,a1-b0,a1-b1,b0-c
0,b0-c1,b1-c0,b1-c1,c0-a0,c0-a1,c1-a0,c1-a1
間の接合部の故障検出ノードを表す。 ノード821〜826
はそれぞれモジュールa0,a1,b0,b1,c0,c1自体の故
障検出ノードを表す。
【0127】次に、多数決結果81の各ビット、および、
ノード801〜826間の接続関係について説明する。
ノード801〜826間の接続関係について説明する。
【0128】多数決結果81の各ビットは、該ビットに対
応するバージョンを構成するモジュールを有するノード
に接続される。従って多数決結果81の各ビットは、上位
よりそれぞれノード801〜808に一対一に接続される。
応するバージョンを構成するモジュールを有するノード
に接続される。従って多数決結果81の各ビットは、上位
よりそれぞれノード801〜808に一対一に接続される。
【0129】また、ノード801〜808は、各ノードに属す
る3モジュールより選択される、2モジュール間接合部
を構成するノードに接続される。
る3モジュールより選択される、2モジュール間接合部
を構成するノードに接続される。
【0130】従って、801は、809,813,817に、802
は、809,814,819に、803は、810,815,817に、804
は、810,816,819に、805は、811,813,818に、806
は、811,814,820に、807は、812,815,818に、808
は、812,816,820に、それぞれ接続される。
は、809,814,819に、803は、810,815,817に、804
は、810,816,819に、805は、811,813,818に、806
は、811,814,820に、807は、812,815,818に、808
は、812,816,820に、それぞれ接続される。
【0131】さらに、ノード809〜820は、各ノードに属
する2モジュールそれぞれを表すノードに接続される。
従って、809は、821,823に、810は、821,824に、811
は、822,823に、812は、822,824に、813は、823,825
に、814は、823,826に、815は、824,825に、816は、8
24,826に、817は、821,825に、818は、822,825に、8
19は、821,826に、820は、822,826にそれぞれ接続さ
れる。
する2モジュールそれぞれを表すノードに接続される。
従って、809は、821,823に、810は、821,824に、811
は、822,823に、812は、822,824に、813は、823,825
に、814は、823,826に、815は、824,825に、816は、8
24,826に、817は、821,825に、818は、822,825に、8
19は、821,826に、820は、822,826にそれぞれ接続さ
れる。
【0132】なお、各ノード801〜826は、ノードチェッ
ク部80に接続する。なお、これらの接続は、例えば信号
線によって実現される。
ク部80に接続する。なお、これらの接続は、例えば信号
線によって実現される。
【0133】ここで、fault箇所特定部451の動作を説明
する前に、fault箇所特定部の内部に備えられたノード
の動作を説明する。
する前に、fault箇所特定部の内部に備えられたノード
の動作を説明する。
【0134】図7は、fault箇所特定部内に備えられる
ノード814の構成を表すブロック図である。
ノード814の構成を表すブロック図である。
【0135】図中、814は、b0-c1間接合部故障検出ノー
ド、8141は加算器、8142,8143は、カウンタ、8144は、
故障判定部を表す。また、802,806,823,826は、それ
ぞれa0-b0-c1間接合部,a1-b0-c1間接合部,b0自体,c1
自体の故障検出ノード、80は、ノードチェック部を表
し、2ノードより入力し、2ノードへ出力する構成をと
っている。
ド、8141は加算器、8142,8143は、カウンタ、8144は、
故障判定部を表す。また、802,806,823,826は、それ
ぞれa0-b0-c1間接合部,a1-b0-c1間接合部,b0自体,c1
自体の故障検出ノード、80は、ノードチェック部を表
し、2ノードより入力し、2ノードへ出力する構成をと
っている。
【0136】b0-c1間接合部故障検出ノード814は、b0-c
1間接合部を含むノード802,806からの入力を、加算器8
141にて足し合わせ、b0自体,c1自体を表すノード823,
826へ出力する。また、ノード802,806からの入
力を、それぞれにてカウンタ0(8142)、カウンタ1(81
43)に加え、その結果を故障判定部8144に渡す。故障判
定部8144では、更新されたカウンタ0,カウンタ1の値に
もとづいて、故障判定を行う。
1間接合部を含むノード802,806からの入力を、加算器8
141にて足し合わせ、b0自体,c1自体を表すノード823,
826へ出力する。また、ノード802,806からの入
力を、それぞれにてカウンタ0(8142)、カウンタ1(81
43)に加え、その結果を故障判定部8144に渡す。故障判
定部8144では、更新されたカウンタ0,カウンタ1の値に
もとづいて、故障判定を行う。
【0137】故障判定方法は、例えば、各カウンタ値
が、予め定められたしきい値以上で、かつ、カウンタ値
間の偏差が、予め定められた偏差限界値以内である場合
に限って、該接合部は、故障であると判定する。故障判
定を行い、故障と判断した場合、ノードチェック部80
に、故障である旨をを通知する。
が、予め定められたしきい値以上で、かつ、カウンタ値
間の偏差が、予め定められた偏差限界値以内である場合
に限って、該接合部は、故障であると判定する。故障判
定を行い、故障と判断した場合、ノードチェック部80
に、故障である旨をを通知する。
【0138】以上が、ノード814の動作説明であるが、
他の2モジュール間接合部故障検出ノード809〜813,81
5〜820の構成および動作も同様である。
他の2モジュール間接合部故障検出ノード809〜813,81
5〜820の構成および動作も同様である。
【0139】また、3モジュール間接合部故障検出ノー
ド801〜808については、1ノードより入力し、3ノード
へ出力する構成となる。また、1ノード入力ゆえ、加算
器は必要無く、カウンタも1個設けておけば良い。ま
た、故障判定は、1入力ゆえ、入力値のしきい値チェッ
クは行なうが、偏差のチェックは行なわない。その他の
構成および動作は、ノード814と同様である。
ド801〜808については、1ノードより入力し、3ノード
へ出力する構成となる。また、1ノード入力ゆえ、加算
器は必要無く、カウンタも1個設けておけば良い。ま
た、故障判定は、1入力ゆえ、入力値のしきい値チェッ
クは行なうが、偏差のチェックは行なわない。その他の
構成および動作は、ノード814と同様である。
【0140】さらに、モジュール自体の故障検出ノード
821〜826については、4ノードからの入力となる。ノー
ドからの出力はないので、加算器は不要である。また、
カウンタは、4ノードからの入力があるため、4個設け
ておく。故障判定は、4入力ゆえ、入力値のしきい値チ
ェックおよび偏差のチェックは、ノード814の場合と同
様である。その他の構成および動作は、ノード814と同
様である。
821〜826については、4ノードからの入力となる。ノー
ドからの出力はないので、加算器は不要である。また、
カウンタは、4ノードからの入力があるため、4個設け
ておく。故障判定は、4入力ゆえ、入力値のしきい値チ
ェックおよび偏差のチェックは、ノード814の場合と同
様である。その他の構成および動作は、ノード814と同
様である。
【0141】以下、fault箇所特定部451の動作例を表を
参照して説明する。
参照して説明する。
【0142】
【表1】
【0143】表1は、多数決結果とfault箇所特定部内
に備えられたノードのカウンタのとりうる値の関係を表
したものである。V0〜V7は、多数決結果を表している。
また、ここでは、モジュール自体の故障特定ノードの代
表として、b0(図6の823)のカウンタ値を、2モジュ
ール間接合故障特定ノードの代表としてa0-b0,b0-c1
(図6の809,814)のカウンタ値を、3モジュール間接
合故障特定ノードの代表として、a0-b0-c1,a1-b1-c0
(図6の802,807)のカウンタ値を表している。
に備えられたノードのカウンタのとりうる値の関係を表
したものである。V0〜V7は、多数決結果を表している。
また、ここでは、モジュール自体の故障特定ノードの代
表として、b0(図6の823)のカウンタ値を、2モジュ
ール間接合故障特定ノードの代表としてa0-b0,b0-c1
(図6の809,814)のカウンタ値を、3モジュール間接
合故障特定ノードの代表として、a0-b0-c1,a1-b1-c0
(図6の802,807)のカウンタ値を表している。
【0144】ノードb0の内部の4つのカウンタ値K0,K
1,K2,K3は、それぞれノードa0-b0,a1-b0,b0-c0,b0
-c1(図6の809,811,813,814)からの出力情報がエ
ラー発生を示す場合に、加算される。ノードa0-b0の内
部の2つのカウンタ値K4,K5は、それぞれノードa0
−b0−c0,a0-b0-c1(図6の801,802)からの出力
情報がエラー発生を示す場合に加算される。ノードb0-c
1の内部の2つのカウンタ値K6,K7は、それぞれノードa
0-b0-c1,a1-b0-c1(図6の802,806)からの出力情報
がエラー発生を示す場合に加算される。
1,K2,K3は、それぞれノードa0-b0,a1-b0,b0-c0,b0
-c1(図6の809,811,813,814)からの出力情報がエ
ラー発生を示す場合に、加算される。ノードa0-b0の内
部の2つのカウンタ値K4,K5は、それぞれノードa0
−b0−c0,a0-b0-c1(図6の801,802)からの出力
情報がエラー発生を示す場合に加算される。ノードb0-c
1の内部の2つのカウンタ値K6,K7は、それぞれノードa
0-b0-c1,a1-b0-c1(図6の802,806)からの出力情報
がエラー発生を示す場合に加算される。
【0145】ノードa0-b0-c1の内部のカウンタ値K8は、
多数決結果81の上位から2ビット目のビット情報がエラ
ー発生を示す場合に加算される。ノードa1-b1-c0の内部
のカウンタ値K9は、多数決結果81の上位から6ビット目
のビット情報がエラー発生を示す場合に加算される。な
お、各カウンタの初期値は0である。
多数決結果81の上位から2ビット目のビット情報がエラ
ー発生を示す場合に加算される。ノードa1-b1-c0の内部
のカウンタ値K9は、多数決結果81の上位から6ビット目
のビット情報がエラー発生を示す場合に加算される。な
お、各カウンタの初期値は0である。
【0146】また、表では、9回分のエラー発生の履歴
を表しており、各行は各回のエラー発生状況を示してい
る。
を表しており、各行は各回のエラー発生状況を示してい
る。
【0147】さらに、本実施例では、一例として、各ノ
ードのしきい値として、モジュール自体のしきい値を
「10」、2モジュール間接続部のしきい値を「5」、
3モジュール間接続部のしきい値を「7」としている。
また、偏差は、例えば、次式で計算している。
ードのしきい値として、モジュール自体のしきい値を
「10」、2モジュール間接続部のしきい値を「5」、
3モジュール間接続部のしきい値を「7」としている。
また、偏差は、例えば、次式で計算している。
【0148】すなわち、偏差=(ノード内最大カウンタ
値−最小カウンタ値)÷カウンタ平均値で表し、各ノー
ドの偏差限界値を0.1としている。なお、しきい値、
偏差を求める式、偏差限界値は、あくまで一例に過ぎな
いので、必要に応じて設定し直せば良い。
値−最小カウンタ値)÷カウンタ平均値で表し、各ノー
ドの偏差限界値を0.1としている。なお、しきい値、
偏差を求める式、偏差限界値は、あくまで一例に過ぎな
いので、必要に応じて設定し直せば良い。
【0149】表1に示されているように、エラーが発生
する毎に、各ノード内のカウンタ値が更新されて行く様
子が分かる。そして、8回目のエラー発生により、ノー
ドb0-c1の内部カウンタK6,K7が、ともに、しきい値5
以上になり、かつ、偏差は「0」で、偏差限界値以下を
満足しているので、b0-c1間接合部が故障と判定され、
かかる判定情報をノードチェック部80に通知する。
する毎に、各ノード内のカウンタ値が更新されて行く様
子が分かる。そして、8回目のエラー発生により、ノー
ドb0-c1の内部カウンタK6,K7が、ともに、しきい値5
以上になり、かつ、偏差は「0」で、偏差限界値以下を
満足しているので、b0-c1間接合部が故障と判定され、
かかる判定情報をノードチェック部80に通知する。
【0150】さらに、9回目のエラー発生により、ノー
ドa1-b1-c0の内部カウンタK9が、しきい値7以上になる
ので、a1-b1-c0間接合部が故障と判定され、かかる判定
情報をノードチェック部80に通知する。
ドa1-b1-c0の内部カウンタK9が、しきい値7以上になる
ので、a1-b1-c0間接合部が故障と判定され、かかる判定
情報をノードチェック部80に通知する。
【0151】そして、ノードチェック部80では、ノード
からの故障判定通知にもとづいて、故障特定情報を構成
制御部452に通知する。
からの故障判定通知にもとづいて、故障特定情報を構成
制御部452に通知する。
【0152】なお、a1-b1-c0間接合部の故障特定のよう
に、バージョンを構成する全モジュール間の整合部の故
障特定に対しては、特にバージョンがソフトウェアで構
成されている場合、以下の問題が生じる。
に、バージョンを構成する全モジュール間の整合部の故
障特定に対しては、特にバージョンがソフトウェアで構
成されている場合、以下の問題が生じる。
【0153】すなわち、バージョンを構成する全モジュ
ール間の接合部は、唯一のバージョンにのみ存在し、か
つ、該バージョンを実行するハードウェアが単一である
ため、このままでは、故障が特定されても、ソフトウェ
アの故障であるのか、あるいは、ハードウェアの故障で
あるのか区別できないという問題が発生する。
ール間の接合部は、唯一のバージョンにのみ存在し、か
つ、該バージョンを実行するハードウェアが単一である
ため、このままでは、故障が特定されても、ソフトウェ
アの故障であるのか、あるいは、ハードウェアの故障で
あるのか区別できないという問題が発生する。
【0154】したがって、このような場合には、該バー
ジョンを、別のハードウェアにて実行し、再度エラー発
生の履歴をとることにより、故障箇所を特定することが
好ましい。
ジョンを、別のハードウェアにて実行し、再度エラー発
生の履歴をとることにより、故障箇所を特定することが
好ましい。
【0155】以上より、fault箇所特定部451は、上記に
示した統計的手法にもとづいて、各バージョンの実行状
態の違いより生じる以下の状況、すなわち、故障箇所を
有する全てのバージョンが必ずしも同時にエラーを発生
しない場合や、逆に、複数種類の故障箇所が同時にエラ
ーを発生する場合においても、故障箇所を特定すること
ができる。
示した統計的手法にもとづいて、各バージョンの実行状
態の違いより生じる以下の状況、すなわち、故障箇所を
有する全てのバージョンが必ずしも同時にエラーを発生
しない場合や、逆に、複数種類の故障箇所が同時にエラ
ーを発生する場合においても、故障箇所を特定すること
ができる。
【0156】図8は、多重バージョン機能デバッガを表
すブロック図である。
すブロック図である。
【0157】図中、36は、バージョン格納部である。例
えば、RAM,ディスク装置等によって実現される。
えば、RAM,ディスク装置等によって実現される。
【0158】20,21,22,23,24,25,26,27は、それ
ぞれバージョンV0,V1,V2,V3,V4,V5,V6,V7であ
り、前記バージョン格納部に格納される。
ぞれバージョンV0,V1,V2,V3,V4,V5,V6,V7であ
り、前記バージョン格納部に格納される。
【0159】28は、バージョンの構成に関する情報であ
るバージョン情報の格納部である。
るバージョン情報の格納部である。
【0160】385は、入出力ペアの格納部を表す。テス
ト用入出力ペア作成部381にて作成された、入出力ペア
が、前記入出力ペア格納部385に格納される。ここで入
出力ペアとは、プログラムが正確に作成されているなら
ば、予め一定の関係を有するようなデータの組をいう。
すなわち、例えば、入力データと、これに対応して、出
力することが予想される出力データをいう。また、テス
ト用入出力ペア作成部381は、例えば、キーボード等に
より実現できる。
ト用入出力ペア作成部381にて作成された、入出力ペア
が、前記入出力ペア格納部385に格納される。ここで入
出力ペアとは、プログラムが正確に作成されているなら
ば、予め一定の関係を有するようなデータの組をいう。
すなわち、例えば、入力データと、これに対応して、出
力することが予想される出力データをいう。また、テス
ト用入出力ペア作成部381は、例えば、キーボード等に
より実現できる。
【0161】50は、多重バージョン機能デバッガを表
し、521,522は、それぞれ入力データ格納部、出力デー
タ格納部であり、例えば、RAMにより実現できる。
し、521,522は、それぞれ入力データ格納部、出力デー
タ格納部であり、例えば、RAMにより実現できる。
【0162】531,532は、スイッチであり、例えば、ア
ナログスイッチ等により実現できる。
ナログスイッチ等により実現できる。
【0163】54は、出力データ群格納部であり、例え
ば、RAMにより実現できる。
ば、RAMにより実現できる。
【0164】55は、比較器であり、例えば、CPU、R
OM、RAM、各種CMOS等によって実現できる。
OM、RAM、各種CMOS等によって実現できる。
【0165】56は、表示用データ変換部を表し、データ
を表示に適したデータに加工する処理を行う手段であ
り、例えば、CPU、ROM、RAM、各種CMOS等
によって実現できる。
を表示に適したデータに加工する処理を行う手段であ
り、例えば、CPU、ROM、RAM、各種CMOS等
によって実現できる。
【0166】45aは、エラー制御部、451は、fault箇所
特定部、452aは、fault制御部を表す。
特定部、452aは、fault制御部を表す。
【0167】さらに、42は、多重バージョン実行部、43
は、多数決部である。
は、多数決部である。
【0168】なお、前述の説明で使用した符号と同一の
符号が付された手段は、前述の説明にある手段と同様な
機能を有し、同様に実現可能である。
符号が付された手段は、前述の説明にある手段と同様な
機能を有し、同様に実現可能である。
【0169】また、382はデータ入力部であり、例えば
キーボード等により実現される。
キーボード等により実現される。
【0170】383は、モード切換え部であり、データ入
力部あるいはテスト用入出力ペア作成部のいずれかを起
動させるかの切換処理を行う手段であり、例えば、スイ
ッチ、キーボード等により実現される。384は、fault箇
所表示部を表し、該構成要素は、ユーザーにfault箇所
に関する情報を知らしめる機能を有する。例えば、CR
T、液晶ディスプレイ等により実現できる。
力部あるいはテスト用入出力ペア作成部のいずれかを起
動させるかの切換処理を行う手段であり、例えば、スイ
ッチ、キーボード等により実現される。384は、fault箇
所表示部を表し、該構成要素は、ユーザーにfault箇所
に関する情報を知らしめる機能を有する。例えば、CR
T、液晶ディスプレイ等により実現できる。
【0171】以下、多重バージョン機能デバッガ50の動
作について説明する。
作について説明する。
【0172】まず、多重バージョン実行部42、エラー制
御部45a内に設けられたfault箇所特定部451およびfault
制御部452aは、それぞれ、バージョン格納部36から、バ
ージョン20〜27、バージョン情報格納部28からバージョ
ン情報をロードする。
御部45a内に設けられたfault箇所特定部451およびfault
制御部452aは、それぞれ、バージョン格納部36から、バ
ージョン20〜27、バージョン情報格納部28からバージョ
ン情報をロードする。
【0173】入出力ペア385は、前述した通り、多重バ
ージョンを実行した時に、与えた入力データと、これに
対し予想される正しい出力結果とを含む入出力情報で、
381によって、ユーザーが予め作成し、385に記憶してお
く。
ージョンを実行した時に、与えた入力データと、これに
対し予想される正しい出力結果とを含む入出力情報で、
381によって、ユーザーが予め作成し、385に記憶してお
く。
【0174】多重バージョン機能デバッガ50は、入出力
ペア385を用いたデバッグと、使用者が直接382を介して
行なうデータ入力によるデバッグの2種類のモードを、
必要に応じて選択できるが、モードの切換えは383によ
り行なう。
ペア385を用いたデバッグと、使用者が直接382を介して
行なうデータ入力によるデバッグの2種類のモードを、
必要に応じて選択できるが、モードの切換えは383によ
り行なう。
【0175】入出力ペア格納部385に格納された入出力
ペアを使用したデバッグモードにおいては、fault制御
部452aが、スイッチ531,532によって、521と42を、さ
らに、42と54とを接続する。
ペアを使用したデバッグモードにおいては、fault制御
部452aが、スイッチ531,532によって、521と42を、さ
らに、42と54とを接続する。
【0176】そして、fault制御部452aは、521、522に
対し、入出力ペア格納部385から入力データおよび出力
データを1セットとり、それぞれ、入力データ格納部52
1、出力データ格納部522に格納する。
対し、入出力ペア格納部385から入力データおよび出力
データを1セットとり、それぞれ、入力データ格納部52
1、出力データ格納部522に格納する。
【0177】521に格納された入力データは、42の入力
情報となり、42にて多重バージョン実行され、各バージ
ョンの実行結果が、出力データ群格納部54に蓄えられ
る。そして、比較器55にて、出力データ群格納部54に格
納された実行結果のデータは、各々、出力データ522と
比較され、予め定められた出力データ522と一致しない
実行結果を与えたバージョンは、バグを有すると判断さ
れる。
情報となり、42にて多重バージョン実行され、各バージ
ョンの実行結果が、出力データ群格納部54に蓄えられ
る。そして、比較器55にて、出力データ群格納部54に格
納された実行結果のデータは、各々、出力データ522と
比較され、予め定められた出力データ522と一致しない
実行結果を与えたバージョンは、バグを有すると判断さ
れる。
【0178】55での比較結果をfault箇所特定部451に通
知する。451では、この通知情報にもとづいて、故障箇
所を特定し、その特定結果を表示用データ変換部56とfa
ult制御部452aに送る。 56では、送られてきた情報を
表示用データに変換して、384に故障箇所等を表示させ
る。 表示させる内容は、ユーザーの操作性を考慮し各
種の項目が考えられる。
知する。451では、この通知情報にもとづいて、故障箇
所を特定し、その特定結果を表示用データ変換部56とfa
ult制御部452aに送る。 56では、送られてきた情報を
表示用データに変換して、384に故障箇所等を表示させ
る。 表示させる内容は、ユーザーの操作性を考慮し各
種の項目が考えられる。
【0179】452aは、次々と、521、522に別の入出力デ
ータを格納させ、多重バージョン実行を、順次行なわせ
て行く処理を継続する。また、エラー発生時には、452a
は、同じ入出力データにもとづいて、多重バージョンを
再実行させる機能を有する構成にするのが好ましい。
ータを格納させ、多重バージョン実行を、順次行なわせ
て行く処理を継続する。また、エラー発生時には、452a
は、同じ入出力データにもとづいて、多重バージョンを
再実行させる機能を有する構成にするのが好ましい。
【0180】データ入力部382を介して、直接、必要な
データを入力せしめデバックを行うデバッグモードで
は、fault制御部452aが、スイッチ531、532の切換によ
り、382と42、42と43を接続する。
データを入力せしめデバックを行うデバッグモードで
は、fault制御部452aが、スイッチ531、532の切換によ
り、382と42、42と43を接続する。
【0181】42にて、データ入力部382を介して与えら
れた入力データを、多重バージョン実行し、さらに、各
バージョンの実行結果は、43にて多数決され、また、そ
の結果は、fault箇所特定部451に通知される。451で
は、通知情報にもとづいて故障箇所を特定し、その特定
結果を、表示用データ変換56とfault制御452aに送る。5
6では、送られてきた情報を、表示用データに変換し
て、384に、故障箇所等を表示させる。
れた入力データを、多重バージョン実行し、さらに、各
バージョンの実行結果は、43にて多数決され、また、そ
の結果は、fault箇所特定部451に通知される。451で
は、通知情報にもとづいて故障箇所を特定し、その特定
結果を、表示用データ変換56とfault制御452aに送る。5
6では、送られてきた情報を、表示用データに変換し
て、384に、故障箇所等を表示させる。
【0182】なお、入出力ペアを使用したデバッグモー
ドは、残存バグの比較的多い、デバッグ初期段階におい
て有効であり、直接データを入力するデバッグモード
は、残存バグが少なくなったデバッグ終期段階にて有効
である。
ドは、残存バグの比較的多い、デバッグ初期段階におい
て有効であり、直接データを入力するデバッグモード
は、残存バグが少なくなったデバッグ終期段階にて有効
である。
【0183】以上のように、デバッガに、多重バージョ
ン実行機能を付随させ、生成された全てのバージョンを
同時に実行すると、冗長度の高い部位のエラー発生率
は、確率的に高くなる。 したがって、エラー制御部に
よる故障箇所の特定と、冗長度の高いモジュール間接合
不良の検出が一層正確に行われることにより、効率的な
デバッグが可能になる。
ン実行機能を付随させ、生成された全てのバージョンを
同時に実行すると、冗長度の高い部位のエラー発生率
は、確率的に高くなる。 したがって、エラー制御部に
よる故障箇所の特定と、冗長度の高いモジュール間接合
不良の検出が一層正確に行われることにより、効率的な
デバッグが可能になる。
【0184】また、各バージョンにおけるエラー発生状
況を記録しておくことにより、図3にて述べた実行バー
ジョン数が、生成バージョン数より少ない場合におい
て、エラー発生頻度の少ないバージョンから順番に実行
バージョンとしていくことにより、実行バージョンの信
頼度が、他の未実行バージョンより高いため、より信頼
性の高い多重バージョン実行が可能となる。
況を記録しておくことにより、図3にて述べた実行バー
ジョン数が、生成バージョン数より少ない場合におい
て、エラー発生頻度の少ないバージョンから順番に実行
バージョンとしていくことにより、実行バージョンの信
頼度が、他の未実行バージョンより高いため、より信頼
性の高い多重バージョン実行が可能となる。
【0185】図9は、多重バージョン機能付開発支援シ
ステムの構成例を示すブロック図である。
ステムの構成例を示すブロック図である。
【0186】各構成要素は、例えば、CPU、ROM、
RAM、各種CMOS、プログラム、キーボード、CR
Tディスプレイ等のうち、少なくともいずれか一つを使
用して実現できる。
RAM、各種CMOS、プログラム、キーボード、CR
Tディスプレイ等のうち、少なくともいずれか一つを使
用して実現できる。
【0187】また、前述の説明で使用した符号と同一の
符号が付された手段は、前述の説明にある手段と同様な
機能を有し、同様に実現可能である。
符号が付された手段は、前述の説明にある手段と同様な
機能を有し、同様に実現可能である。
【0188】図中、31は、一連の機能を記載した仕様、
そのうち1A,1B,1Cは、該機能を実現するために使用さ
れる3つのモジュールA,B,Cの仕様を表す。
そのうち1A,1B,1Cは、該機能を実現するために使用さ
れる3つのモジュールA,B,Cの仕様を表す。
【0189】32はコーデング部であり、1A0,1A1は、1A
のコーディングA0,A1、また、1B0,1B1は、1Bのコーデ
ィングB0,B1、さらに、1C0,1C1は、1Cのコーディング
C0,C1を表す。33は、モジュール作成部を表す。
のコーディングA0,A1、また、1B0,1B1は、1Bのコーデ
ィングB0,B1、さらに、1C0,1C1は、1Cのコーディング
C0,C1を表す。33は、モジュール作成部を表す。
【0190】34は、作成されたモジュールを格納してお
くモジュール格納部を表し、2a0,2a1,2b0,2b1,2c
0,2c1は、それぞれ、1A0,1A1,1B0,1B1,1C0,1C1
を、33によって作成した、モジュールa0,a1,b0,b1,
c0,c1を表す。61は、モジュール別デバッガ、62は第1
修正箇所判定部、35は、多重バージョン生成部を表す。
36は、生成されたバージョンを格納するバージョン格納
部を表し、20,21,22,23,24,25,26,27は、それぞ
れ、34に格納されていた各モジュールを使用して、35に
よって生成したバージョンV0,V1,V2,V3,V4,V5,V
6,V7を表し、また、28は、生成されたバージョンの構
成に関する情報を格納するバージョン情報格納部、385
は、入出力ペアを格納する入出力ペア格納部を表す。
くモジュール格納部を表し、2a0,2a1,2b0,2b1,2c
0,2c1は、それぞれ、1A0,1A1,1B0,1B1,1C0,1C1
を、33によって作成した、モジュールa0,a1,b0,b1,
c0,c1を表す。61は、モジュール別デバッガ、62は第1
修正箇所判定部、35は、多重バージョン生成部を表す。
36は、生成されたバージョンを格納するバージョン格納
部を表し、20,21,22,23,24,25,26,27は、それぞ
れ、34に格納されていた各モジュールを使用して、35に
よって生成したバージョンV0,V1,V2,V3,V4,V5,V
6,V7を表し、また、28は、生成されたバージョンの構
成に関する情報を格納するバージョン情報格納部、385
は、入出力ペアを格納する入出力ペア格納部を表す。
【0191】50は、多重バージョン機能デバッガ、63
は、第2修正箇所判定部を表す。
は、第2修正箇所判定部を表す。
【0192】381は、テスト用の入出力ペアを作成する
ためのテスト用入出力ペア作成部、382は、直接データ
を入力するためのデータ入力、383は、モード切換え
部、384は、fault箇所表示部を表す。
ためのテスト用入出力ペア作成部、382は、直接データ
を入力するためのデータ入力、383は、モード切換え
部、384は、fault箇所表示部を表す。
【0193】以下、多重バージョン機能開発支援システ
ムの動作を説明する。
ムの動作を説明する。
【0194】まず、3つのモジュールA,B,Cを有して
構成される、一連の機能を記載した仕様31にもとづい
て、コーディング部32にてコーディング処理を行なう。
構成される、一連の機能を記載した仕様31にもとづい
て、コーディング部32にてコーディング処理を行なう。
【0195】次に、モジュール作成部33により、32にて
作成された各コーデングに対して、モジュールを作成す
る。作成された各モジュールは、それぞれ個別に、モジ
ュール別デバッガ61にてデバッグされる。
作成された各コーデングに対して、モジュールを作成す
る。作成された各モジュールは、それぞれ個別に、モジ
ュール別デバッガ61にてデバッグされる。
【0196】61は、通常使用される、汎用のデバッガで
ある。
ある。
【0197】第1修正箇所判定部は、61による修正の必
要箇所があるか否かを判断する機能を有する。 修正の
必要箇所がある間は、32に戻って、該当箇所の修正作業
を行なうことになる。修正箇所が無くなった時に、多重
バージョン生成部35が、作成されたモジュールを組み合
わせて、仕様31を満足するバージョンを生成する。ま
た、35は、各バージョンを構成するモジュールに関する
情報を作成し、バージョン情報格納部28に格納する。さ
らに、381により、テスト用の入出力ペアを作成し、36
内に設けられた入出力ペア格納部385に格納する。 次
に、36に格納された各種情報とデータ入力部382、モー
ド切換え部383を使用して多重バージョン機能デバッガ5
0を起動させ、デバッグを行なう。
要箇所があるか否かを判断する機能を有する。 修正の
必要箇所がある間は、32に戻って、該当箇所の修正作業
を行なうことになる。修正箇所が無くなった時に、多重
バージョン生成部35が、作成されたモジュールを組み合
わせて、仕様31を満足するバージョンを生成する。ま
た、35は、各バージョンを構成するモジュールに関する
情報を作成し、バージョン情報格納部28に格納する。さ
らに、381により、テスト用の入出力ペアを作成し、36
内に設けられた入出力ペア格納部385に格納する。 次
に、36に格納された各種情報とデータ入力部382、モー
ド切換え部383を使用して多重バージョン機能デバッガ5
0を起動させ、デバッグを行なう。
【0198】第2修正箇所判定部は、50による修正の必
要箇所があるか否かを判断する機能を有する。 修正の
必要箇所がある間は、fault箇所表示部384に表示され
る、故障箇所情報にもとづいて、32に戻って、該当箇所
の修正作業を行なうことになる。修正箇所が無くなった
時点で、動作を終了する。
要箇所があるか否かを判断する機能を有する。 修正の
必要箇所がある間は、fault箇所表示部384に表示され
る、故障箇所情報にもとづいて、32に戻って、該当箇所
の修正作業を行なうことになる。修正箇所が無くなった
時点で、動作を終了する。
【0199】以上のように、ソフトウェア開発に、多重
バージョン実行を適用し、かつ、故障箇所の特定および
冗長度の高いモジュール間接合不良の検出の加速化が可
能な、多重バージョン機能デバッガを使用することによ
り、信頼性の高いソフトウェアの開発を、効率良く行な
うことが可能になる。
バージョン実行を適用し、かつ、故障箇所の特定および
冗長度の高いモジュール間接合不良の検出の加速化が可
能な、多重バージョン機能デバッガを使用することによ
り、信頼性の高いソフトウェアの開発を、効率良く行な
うことが可能になる。
【0200】次に、モジュール間整合部の信頼性を向上
するため、モジュール間整合部のみの冗長化を図るため
の実施例について説明する。本実施例では、モジュール
間整合部を3重化する場合を例に取り説明しているが、
本発明の適用例が3重化に限られないことはいうまでも
ない。
するため、モジュール間整合部のみの冗長化を図るため
の実施例について説明する。本実施例では、モジュール
間整合部を3重化する場合を例に取り説明しているが、
本発明の適用例が3重化に限られないことはいうまでも
ない。
【0201】さて、図10に、モジュール間接合部冗長
構成例を表す。
構成例を表す。
【0202】図中、2a,2bは、モジュールa,bを表
す。2ab1,2ab2,2ab3は、モジュール間接合部1,2,3
を、21a,22a,23aは、モジュールaの受け入れチェッ
ク部a1,a2,a3を表す。
す。2ab1,2ab2,2ab3は、モジュール間接合部1,2,3
を、21a,22a,23aは、モジュールaの受け入れチェッ
ク部a1,a2,a3を表す。
【0203】2ab11,2ab12,2ab13は、情報変換部1,2,
3を表す。21b,22b,23bは、モジュールbの受け入れチ
ェック部b1,b2,b3を表す。また43aは、多数決部を表
す。
3を表す。21b,22b,23bは、モジュールbの受け入れチ
ェック部b1,b2,b3を表す。また43aは、多数決部を表
す。
【0204】図10の動作は、以下のようになる。
【0205】2a、すなわちモジュールaから、2b、すな
わちモジュールbへの情報伝達時に、2aからの出力は、
2ab1,2ab2,2ab3に分岐する。2ab1,2ab2,2ab3は、同
一仕様にもとづいて作成された、モジュール間接合部で
ある。各モジュール間接合部の内部では、 ・2aからの出力情報の受入れチェック、 ・両モジュール間それぞれの入出力情報の規約の違いを
吸収するための情報変換、 ・2bへの入力情報の受入れチェック を行ない、各処理は、a1,a2,a3、2ab11,2ab12,2ab1
3、b1,b2,b3にて、それぞれ実行される。そして、各
モジュール間接合部2ab1,2ab2,2ab3からの出力を、43
aにて多数決を行ない、その結果を2bに送る。
わちモジュールbへの情報伝達時に、2aからの出力は、
2ab1,2ab2,2ab3に分岐する。2ab1,2ab2,2ab3は、同
一仕様にもとづいて作成された、モジュール間接合部で
ある。各モジュール間接合部の内部では、 ・2aからの出力情報の受入れチェック、 ・両モジュール間それぞれの入出力情報の規約の違いを
吸収するための情報変換、 ・2bへの入力情報の受入れチェック を行ない、各処理は、a1,a2,a3、2ab11,2ab12,2ab1
3、b1,b2,b3にて、それぞれ実行される。そして、各
モジュール間接合部2ab1,2ab2,2ab3からの出力を、43
aにて多数決を行ない、その結果を2bに送る。
【0206】なお、情報変換は、一般に、仕様書に詳細
に記載されているので、信頼性の高いものである場合に
は、2ab11,2ab12,2ab13については、同一のものを使
用する構成が考えられる。さらに、図11に示すよう
に、a1,a2,a3の出力を、43bにて多数決し、その結果
を一つだけ設けられている情報変換部2ab11に送り、2ab
11の出力結果は、b1,b2,b3に3分岐し、それらの実行
結果を、43aにて多数決し、その結果を2bに送るという
構成も考えられる。
に記載されているので、信頼性の高いものである場合に
は、2ab11,2ab12,2ab13については、同一のものを使
用する構成が考えられる。さらに、図11に示すよう
に、a1,a2,a3の出力を、43bにて多数決し、その結果
を一つだけ設けられている情報変換部2ab11に送り、2ab
11の出力結果は、b1,b2,b3に3分岐し、それらの実行
結果を、43aにて多数決し、その結果を2bに送るという
構成も考えられる。
【0207】以上のように、本発明によれば、特に、モ
ジュール自体の信頼度が運用実績等により非常に高い場
合において、モジュール間接合部の高信頼化を図ること
により、実現すべき機能全体の信頼度を向上させること
が可能となる。さらに、モジュール自体を冗長化する従
来の多重バージョン実行に比べ、コストの低減が図れ
る。
ジュール自体の信頼度が運用実績等により非常に高い場
合において、モジュール間接合部の高信頼化を図ること
により、実現すべき機能全体の信頼度を向上させること
が可能となる。さらに、モジュール自体を冗長化する従
来の多重バージョン実行に比べ、コストの低減が図れ
る。
【0208】
【発明の効果】本発明によれば、低コストで、多数個の
バージョンの一連の機能を実現することができ、信頼性
が向上する。特に、モジュール間接合部の多重化が図
れ、モジュール間接合部の信頼性が向上する。
バージョンの一連の機能を実現することができ、信頼性
が向上する。特に、モジュール間接合部の多重化が図
れ、モジュール間接合部の信頼性が向上する。
【図1】多重バージョン機能実現手段のブロック図であ
る。
る。
【図2】多重バージョン実行装置のブロック図である。
【図3】エラー制御付き多重バージョン実行装置のブロ
ック図である。
ック図である。
【図4】構成制御部の故障バージョン特定方法を表す図
である。
である。
【図5】fault箇所特定の基本概念の説明図である。
【図6】fault箇所特定の動作説明図である。
【図7】fault箇所特定内のノード814の構成を表すブロ
ック図である。
ック図である。
【図8】多重バージョン機能デバッガのブロック図であ
る。
る。
【図9】多重バージョン機能開発支援システムのブロッ
ク図である。
ク図である。
【図10】モジュール間接合部冗長構成を表すブロック
図である。
図である。
【図11】モジュール間接合部冗長構成を表すブロック
図である。
図である。
【図12】モジュール間組み合わせによる効果の説明図
である。
である。
【図13】本発明の信頼度と従来の信頼度の関係を表す
グラフである。
グラフである。
【図14】多重バージョン生成部の動作を表すフローチ
ャートである。
ャートである。
31…仕様、32…コーデング部、33…モジュール作
成部、34…モジュール格納部、35…多重バージョン
生成部、36…バージョン格納、28…バージョン情報
格納部、37…多重バージョン実行装置、41…入力部、
42…多重バージョン実行部、43…多数決部、44…
出力部、37a…エラー制御付き多重バージョン実行装
置、45…エラー制御部、451…fault箇所特定部、
452…構成制御部、4521…fault箇所特定部45
1からの入力情報、4522…比較器、801〜826
…モジュール間接合部あるいはモジュール自体の故障検
出ノード、80…ノードチェック部、8141…加算
器、8142、8143…カウンタ、8144…故障判
定部、50…多重バージョン機能デバッガ、521…入
力データ格納部、522…出力データ格納部、531…
スイッチ、532…スイッチ、54…出力データ群格納
部、55…比較器、56…表示用データ変換部、45a
…エラー制御部、452a…fault制御部、381…テス
ト用入出力ペア作成部、382…データ入力部、383
…モード切換え部、384…fault箇所表示部、61…
モジュール別デバッガ、62…第1修正箇所判定部、6
3…第2修正箇所判定部、2a…モジュールa,2b…モ
ジュールb、2ab1…モジュール間接合部1、2ab2…
モジュール間接合部2、2ab3…モジュール間接合部
3、21a…チェック部a1、22a…チェック部a2、2
3a…チェック部…a3、2ab11…情報変換部1、2ab
12…情報変換部2、2ab13…情報変換部3、21b
…チェック部b1、22b…チェック部b2、23b…チェ
ック部b3、43a…多数決部、43b…多数決部
成部、34…モジュール格納部、35…多重バージョン
生成部、36…バージョン格納、28…バージョン情報
格納部、37…多重バージョン実行装置、41…入力部、
42…多重バージョン実行部、43…多数決部、44…
出力部、37a…エラー制御付き多重バージョン実行装
置、45…エラー制御部、451…fault箇所特定部、
452…構成制御部、4521…fault箇所特定部45
1からの入力情報、4522…比較器、801〜826
…モジュール間接合部あるいはモジュール自体の故障検
出ノード、80…ノードチェック部、8141…加算
器、8142、8143…カウンタ、8144…故障判
定部、50…多重バージョン機能デバッガ、521…入
力データ格納部、522…出力データ格納部、531…
スイッチ、532…スイッチ、54…出力データ群格納
部、55…比較器、56…表示用データ変換部、45a
…エラー制御部、452a…fault制御部、381…テス
ト用入出力ペア作成部、382…データ入力部、383
…モード切換え部、384…fault箇所表示部、61…
モジュール別デバッガ、62…第1修正箇所判定部、6
3…第2修正箇所判定部、2a…モジュールa,2b…モ
ジュールb、2ab1…モジュール間接合部1、2ab2…
モジュール間接合部2、2ab3…モジュール間接合部
3、21a…チェック部a1、22a…チェック部a2、2
3a…チェック部…a3、2ab11…情報変換部1、2ab
12…情報変換部2、2ab13…情報変換部3、21b
…チェック部b1、22b…チェック部b2、23b…チェ
ック部b3、43a…多数決部、43b…多数決部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 大辻 信也 茨城県日立市大みか町七丁目1番1号 株 式会社日立製作所日立研究所内
Claims (14)
- 【請求項1】一連の機能を実現するソフトウエアを、複
数のモジュールを組み合わせて実現する方法であって、
各モジュールの機能を記述してある、与えられた仕様に
もとづき、各モジュールについてMi(Miは、モジュー
ルiのバージョン数で2以上の整数である)個のバージ
ョンを作成し、各モジュールごとに、Mi個存在するバ
ージョンの中から1個を選択し、選択されたモジュール
を組み合わせることにより、異なるn(nは、整数であ
る)個の、一連の機能を実現するバージョンを作成する
ことを特徴とする多重バージョン機能実現方法。 - 【請求項2】請求項1において、作成された異なるn
(nは、整数である)個の、一連の機能を実現するバージ
ョンの各々に対応して、その各々を構成するモジュール
の組合せを表すモジュール情報を生成することを特徴と
する多重バージョン機能実現方法。 - 【請求項3】請求項1において、さらに、作成された異
なるn個(nは、3以上の整数である)のバージョンの
一連の機能を同時に実行し、実行結果を多数決判定し、
メジャーとなった実行結果を、唯一の実行結果として出
力することを特徴とする多重バージョン機能実現方法。 - 【請求項4】請求項3において、さらに、一連の機能を
実現するバージョンの各々に対応して、その各々を構成
するモジュールの組合せを表すモジュール情報、およ
び、各バージョンの実行結果の一致・不一致の情報にも
とづいて、予め定めた規則にしたがって、モジュール、
および、モジュール間の接合部であるモジュール間接合
部を含む故障箇所を特定することを特徴とする多重バー
ジョン機能実現方法。 - 【請求項5】請求項4において、前記予め定めた規則
は、異なるバージョン間の実行結果の一致・不一致の情
報を参照したとき、メジャーとなっていない実行結果を
出力した各バージョンの有するモジュール情報間におけ
る共通箇所である、モジュールまたはモジュール間接合
部のいずれかを少なくとも含む箇所を、故障箇所とする
多重バージョン機能実現方法。 - 【請求項6】請求項4において、前記予め定めた規則
は、異なるバージョン間の実行結果の一致・不一致の情
報を参照したとき、メジャーとなっていない実行結果を
出力した各バージョンの有するモジュール情報間におけ
る共通箇所である、モジュールまたはモジュール間接合
部のいずれかを少なくとも含む箇所の出現回数が、予め
定めたしきい値以上になったとき、該箇所を故障箇所と
する多重バージョン機能実現方法。 - 【請求項7】請求項4において、故障箇所を特定後、故
障箇所を有するバージョンを、故障箇所を有さないバー
ジョンと取り換えることを特徴とする多重バージョン機
能実現方法。 - 【請求項8】一連の機能を実現するソフトウエアを、複
数のモジュールを組み合わせて実現する方法であって、
各モジュールの機能を記述してある、与えられた仕様に
もとづき、各モジュールについてMi(Miは、モジュー
ルiのバージョン数で2以上の整数である)個のバージ
ョンを作成し、各モジュールごとに、Mi個存在するバ
ージョンの中から1個を選択し、選択されたモジュール
を組み合わせることにより、異なるn(nは、整数であ
る)個の、一連の機能を実現するバージョンを作成し、
さらに、異なる(n−R)個(n、Rは、整数である)
のバージョンの一連の機能を同時に実行し、実行結果を
多数決判定し、メジャーとなった実行結果を、唯一の実
行結果として出力し、さらにまた、一連の機能を実現す
るバージョンの各々に対応して、その各々を構成するモ
ジュールの組合せを表すモジュール情報、および、各バ
ージョンの実行結果の一致・不一致の情報にもとづい
て、予め定めた規則にしたがって、モジュール、およ
び、モジュール間の接合部であるモジュール間接合部を
含む故障箇所を特定し、故障バージョンの取り換えに際
し、特定した故障箇所の情報と前記モジュール情報を比
較し、共通の故障箇所を有さず、かつ、未使用である一
連の機能を実現するR個のバージョン内からバージョン
を選択し、該選択したバージョンと故障バージョンを取
り換えることを特徴とする多重バージョン機能実現方
法。 - 【請求項9】複数のモジュールを組み合わせて構成する
一連の機能の実現方法であって、 モジュール同士を接続する接合部を、複数個のバージョ
ンからなる多重バージョンを使用して多重構成とし、多
重バージョンの実行結果を多数決し、メージャとなった
実行結果を出力するバージョンによって、接合部の有す
る機能を実現するモジュール間接合部機能実現方法。 - 【請求項10】請求項9において、前記接合部は、接合
部に情報を入力する出力モジュールと、接合部から情報
を出力する入力モジュールとを備えておき、 第一に、出力モジュールからの情報が、予め予想される
ものと一致するか否かのチェックを行い、第二に、チェ
ックにより妥当と判断された情報を、出力モジュールか
ら入力モジュールへ送るために所定の変換を行い、第三
に、入力モジュールへ与える情報が、予め予想されるも
のと一致するか否かのチェックを行い、チェックにより
妥当とされた情報を入力モジュールに出力することを特
徴とするモジュール間接合部機能実現方法。 - 【請求項11】各モジュールの機能を記述してある、与
えられた仕様にもとづき、各モジュールについてMi(M
iは、モジュールiのバージョン数で2以上の整数であ
る)個のバージョンを作成し、記憶しておく記憶手段
と、各モジュールごとに、Mi個存在するバージョンの
中から1個を選択し、選択されたモジュールを組み合わ
せることにより、異なるn(nは、整数である)個の一連
の機能を実現し、与えられたデータに対して実行を行う
実行部と、一連の機能を実現する機能を有する複数のバ
ージョンの実行結果を、多数決処理する多数決部と、該
多数決部の出力結果および一連の機能を実現するバージ
ョンの各々を構成するモジュールの組合せを表すバージ
ョン情報にもとづいて、モジュール、モジュール間接合
部を含む故障箇所を特定する故障箇所特定部と、特定さ
れた故障箇所を含む故障情報を表示する表示部と、前記
記憶手段に格納された、モジュール、モジュール間に存
在する接合部の少なくとも一つを修正可能なデバッガ用
入力装置とを具備する多重バージョン実行用デバッガ装
置。 - 【請求項12】請求項11において、さらに、入力デー
タと作成されたバージョンが仕様を満足しているとき得
られるべき出力データとを入出力ペアとして、該入出力
ペアを少なくとも1以上格納する入出力ペア格納部と、
前記入力データを与えて前記実行部を起動したときに得
られる実行結果と前記出力データが一致しているか否か
を比較する比較部と、該比較部の出力結果と前記バージ
ョン情報にもとづいて、モジュール、モジュール間接合
部を含む故障箇所を特定する、新たな故障箇所特定部
と、特定された故障箇所を含む故障情報にもとづき、該
入力データを与えて前記実行部を起動する処理の再実
行、あるいは、新たな入出力ペアを構成する新たな入力
データを前記実行部に与える新たな実行のうち、少なく
とも一方を実行する故障箇所制御部と、前記故障情報を
前記表示部に表示させる表示制御部とを備えたことを特
徴とする多重バージョン実行用デバッガ装置。 - 【請求項13】請求項12において、さらに、デバッグ
モード選択手段を備え、該デバッグモード選択手段は、
該デバッガ選択手段の選択動作により、前記デバッガ用
入力装置を介してのデバッグモード、および、前記入出
力ペア格納部に格納された入出力ペアを使用してのデバ
ッグモードのいずれかを選択可能にしたことを特徴とす
る多重バージョン実行用デバッガ装置。 - 【請求項14】一連の機能を実現するソフトウエアを、
複数のモジュールを組み合わせて実現するため、各モジ
ュールの機能を記述してある与えられた仕様にもとづ
き、各モジュールについてMi(Miは、モジュールiのバ
ージョン数で2以上の整数である)個のバージョンをコ
ーディングするモジュールコーディング部と、各コーデ
ィングを実行ファイルに変換するモジュール作成部と、
作成した各実行ファイルを直接デバッグ可能なモジュー
ル別デバッガと、生成した各実行ファイルにおいて、各
モジュールごとに、Mi個存在するバージョンの中から
1個を選択し、選択されたモジュールを組み合わせるこ
とにより、異なるn(nは、整数である)個の、一連の機
能を実現するバージョンの実行ファイルおよび各バージ
ョンを構成するモジュールを示すモジュール情報を作成
する多重バージョン作成部と、前記コーディング、モジ
ュールの実行ファイル、モジュール情報、および一連の
機能を実現するバージョンの実行ファイルを少なくとも
格納する格納部と、前記一連の機能を実現するバージョ
ンの実行ファイルの実行を少なくとも行う実行部と、多
重バージョン機能デバッガ部と、第1および第2故障検
出手段とを具備し、 前記多重バージョン機能デバッガ部は、 表示手段と、前記記憶手段に格納された内容を修正可能
なデバッガ用入力装置と、前記第1および第2故障検出
手段の切換手段とを備え、 前記第1故障検出手段は、 前記実行部の実行結果を多数決する多数決部と、多数決
の結果と前記モジュール情報にもとづいて故障箇所を特
定する第1故障箇所特定部と、特定された故障箇所を含
む故障情報を前記表示手段に表示する第1表示処理部と
を備え、 前記第2故障検出手段は、 入力データと作成されたバージョンが仕様を満足してい
るとき得られるべき出力データとを入出力ペアとして、
該入出力ペアを少なくとも1以上格納する入出力ペア格
納部と、前記入力データを与えて前記実行部を起動した
ときに得られる実行結果と前記出力データが一致してい
るか否かを比較する比較部と、該比較部の出力結果と前
記バージョン情報にもとづいて故障箇所を特定する第2
故障箇所特定部と、特定された故障箇所を含む故障情報
にもとづき、該入力データを与えて前記実行部を起動す
る処理の再実行、あるいは、新たな入出力ペアを構成す
る新たな入力データを前記実行部に与える新たな実行の
うち、少なくとも一方を実行する故障箇所制御部と、特
定された故障箇所を含む故障情報を前記表示手段に表示
する第2表示処理部とを備えたことを特徴とする多重バ
ージョン機能開発支援装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5130557A JPH06342369A (ja) | 1993-06-01 | 1993-06-01 | 多重バージョン機能実現方法および開発支援システム |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP5130557A JPH06342369A (ja) | 1993-06-01 | 1993-06-01 | 多重バージョン機能実現方法および開発支援システム |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH06342369A true JPH06342369A (ja) | 1994-12-13 |
Family
ID=15037117
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP5130557A Pending JPH06342369A (ja) | 1993-06-01 | 1993-06-01 | 多重バージョン機能実現方法および開発支援システム |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH06342369A (ja) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7870439B2 (en) | 2003-05-28 | 2011-01-11 | Nec Corporation | Fault tolerant multi-node computing system using periodically fetched configuration status data to detect an abnormal node |
| US9753437B2 (en) | 2011-01-31 | 2017-09-05 | Mitsubishi Heavy Industries, Ltd. | Safety device and computation method for safety device |
| JP2020013500A (ja) * | 2018-07-20 | 2020-01-23 | 日本信号株式会社 | 保安装置 |
-
1993
- 1993-06-01 JP JP5130557A patent/JPH06342369A/ja active Pending
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7870439B2 (en) | 2003-05-28 | 2011-01-11 | Nec Corporation | Fault tolerant multi-node computing system using periodically fetched configuration status data to detect an abnormal node |
| US9753437B2 (en) | 2011-01-31 | 2017-09-05 | Mitsubishi Heavy Industries, Ltd. | Safety device and computation method for safety device |
| JP2020013500A (ja) * | 2018-07-20 | 2020-01-23 | 日本信号株式会社 | 保安装置 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0333620B1 (en) | On-line problem management for data-processing systems | |
| US20030204370A1 (en) | Apparatus and method for event correlation and problem reporting | |
| JP2022028619A (ja) | 製造システムにおける故障の根本原因分析用の故障拡張システムモデルを構築するためのシステム及び方法 | |
| EP1295205A2 (en) | Embedded diagnostic system and method | |
| CN114546849A (zh) | 代码测试方法及装置 | |
| Yuan et al. | How are distributed bugs diagnosed and fixed through system logs? | |
| JPH06342369A (ja) | 多重バージョン機能実現方法および開発支援システム | |
| US5280606A (en) | Fault recovery processing for supercomputer | |
| JP3085917B2 (ja) | 耐ソフトウェア障害構成を有したデータ処理装置 | |
| Maia et al. | Xception/sup tm/-enhanced automated fault-injection environment | |
| CN118820011A (zh) | 一种功能安全监控系统、功能安全监控方法及车载终端 | |
| CN118351735A (zh) | 基于故障模型库的快响卫星通用演训系统 | |
| Wang et al. | Analysis and experimental evaluation of comparison-based system-level diagnosis for multiprocessor systems | |
| JPH02132529A (ja) | 自動監視切替制御装置 | |
| Khan | Fault-tolerant architecture for high performance embedded system applications | |
| CN120044895A (zh) | 一种基于流水线机制的取2校核方法和系统 | |
| Xu et al. | Modeling and analysing operation processes for dependability | |
| KR100390402B1 (ko) | 삼중 중복형 모듈러 장치 | |
| JPH1185713A (ja) | マルチコンピュータシステム | |
| Giordano et al. | Re-engineering the test development process | |
| CN117290177A (zh) | 一种面向流程管理的零代码系统实现方法及系统 | |
| Virkkunen | Implementing a Parameterized and Flexible Test Automation Solution for Airbus Defence and Space | |
| Kuna | The methodology of N-version programming | |
| Varadaraju | A survey of introducing artificial intelligence into the safety critical system software design process | |
| CN114968749A (zh) | 一种脚本调试方法以及相关设备 |