図面 (/)

技術 多重バージョン機能実現方法および開発支援システム

出願人 株式会社日立製作所
発明者 鈴木昭二金川信康佐藤美道大辻信也
出願日 1993年6月1日 (26年5ヶ月経過) 出願番号 1993-130557
公開日 1994年12月13日 (24年11ヶ月経過) 公開番号 1994-342369
状態 未査定
技術分野 デバッグ/監視 ストアードプログラム制御 ストアードプログラム ストアードプログラム
主要キーワード 最小カウンタ 終期段階 冗長モジュール 故障箇所情報 加工処理手順 生成バー モジュール仕様 出力データ群
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1994年12月13日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (15)

目的

多重バージョンプログラム開発コストの増加を抑え、バージョン構成モジュール間接合部の高信頼化をはかる手段を提供すること。

構成

入力部41、多重バージョン実行部42、多数決部43、出力部44を有して構成される。42内部において、例えば、作成された8つの、一連の機能を実現するバージョンが実行される。また、各バージョンは、例えば、3つのモジュールを有して構成されている。 多数決部43は、実行結果を多数決し、結果を出力部44に送る構成になっている。

効果

複数モジュールより構成される一連の機能に対し、各モジュールについて少なくとも1つ以上のバージョンを作成し、その組み合わせにより構成する複数個のバージョンの一連の機能は、低コストで生成でき、かつ、モジュール間接合部の冗長度が高くなるため、多数決実行による高信頼化が図れる。

概要

背景

冗長モジュールを使用した高信頼化のための技術のうち、いわゆる、Nバージョン(多重バージョン)プログラムの使用が提案されている。

これは、同一の仕様にもとづいて作成された、N(Nは2以上の整数)個のバージョンを実行し、個々のバージョンに残存するバグを、相互にチェックするか、あるいは、多数決を使用してマスクキングすることにより正確な答えを出力する、ソフトウェアフォールトトレランス技術である。

多重バージョンプログラムに関する従来技術は、例えば、文献:「J-C Laprieet al,"Definition and Analysis of Hardware- and Software-Fault-Tolaranct Architectures",Computer, Vol. 23, No. 7, Jul. 1990, pp. 39-51」等に記載されている。

概要

多重バージョンプログラム開発コストの増加を抑え、バージョン構成モジュール間接合部の高信頼化をはかる手段を提供すること。

入力部41、多重バージョン実行部42、多数決部43、出力部44を有して構成される。42内部において、例えば、作成された8つの、一連の機能を実現するバージョンが実行される。また、各バージョンは、例えば、3つのモジュールを有して構成されている。 多数決部43は、実行結果を多数決し、結果を出力部44に送る構成になっている。

複数モジュールより構成される一連の機能に対し、各モジュールについて少なくとも1つ以上のバージョンを作成し、その組み合わせにより構成する複数個のバージョンの一連の機能は、低コストで生成でき、かつ、モジュール間接合部の冗長度が高くなるため、多数決実行による高信頼化が図れる。

目的

効果

実績

技術文献被引用数
0件
牽制数
2件

この技術が所属する分野

(分野番号表示ON)※整理標準化データをもとに当社作成

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項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(Miは、モジュール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表示処理部とを備えたことを特徴とする多重バージョン機能開発支援装置

技術分野

0001

高信頼性が要求される計算機コントローラ等の情報処理装置において、冗長モジュールを使用した高信頼化技術、特に、フォールトトレランス技術に関する。

背景技術

0002

冗長モジュールを使用した高信頼化のための技術のうち、いわゆる、Nバージョン(多重バージョン)プログラムの使用が提案されている。

0003

これは、同一の仕様にもとづいて作成された、N(Nは2以上の整数)個のバージョンを実行し、個々のバージョンに残存するバグを、相互にチェックするか、あるいは、多数決を使用してマスクキングすることにより正確な答えを出力する、ソフトウェア・フォールトトレランス技術である。

0004

多重バージョンプログラムに関する従来技術は、例えば、文献:「J-C Laprieet al,"Definition and Analysis of Hardware- and Software-Fault-Tolaranct Architectures",Computer, Vol. 23, No. 7, Jul. 1990, pp. 39-51」等に記載されている。

発明が解決しようとする課題

0005

多重バージョン実行による信頼性を向上するためには、バージョン数Nを大きくすればよい。しかしながら、ソフトウェアの開発、保守等に必要なコストまでもが、N倍、あるいは、それ以上になってしまう。

0006

本発明が解決する第1の課題は、ソフトウェアの開発、保守に必要なコストの増加を抑え、さらに、信頼性を向上させることにある。

0007

一方、ソフトウェアの巨大化、複雑化、品質管理能力の向上および生産性向上に対応するために、ソフトウェアの開発は、複数個モジュールに分割化され、作成されるのが一般的である。

0008

これにより、ソフトウェアの開発、保守等は、基本的には「モジュール単位」で行なわれる。

0009

その結果、個々のモジュール内部に残存するバグは、ほぼ完全に近い形で摘出することが可能となり、モジュール自体の信頼性は高くなる。

0010

すなわち、分割化により、個々のモジュールの規模が小さくなり、モジュール自体がとりうる状態の数がそれほど大きくならないからである。

0011

ところで、ソフトウェア全体の高信頼化を実現するためには、上記に加え、ソフトウェアを構成する複数個のモジュール間のデータ入出力処理や、共有資源アクセス処理といった機能を有する、いわゆるモジュール間の接合部(以下、単に「モジュール間接合部」と称することが多い)の高信頼化を実現する必要がある。

0012

しかしながら、一般に、複数のモジュール同士の相互作用により、各モジュールがとりうる状態の数は、非常に大きく、対象が巨大化、複雑化してしまうため、デバッグが十分に行えないことになる。

0013

また、仕様書は、モジュール内部の仕様に関しては詳細に記述されているのに対し、モジュール間のインタフェースに関しては、それほど厳格には記述されていない。

0014

そのため、ソフトウェアに残存するバグは、モジュール自体よりも、むしろ、モジュール間接合部に多く存在する傾向がある。したがって、モジュール間接合部の高信頼化を図ることが、今後、非常に重要なことになると予想される。

0015

さらに、他のソフトウェアにて使用されているモジュールを組み合わせることにより、新しいソフトウェアを開発するといったモジュールの再利用が、ソフトウェアの生産性向上のために、今後、より一層行われることが予想される。

0016

その際、モジュール間の整合性(例えば、モジュール間で伝送するデータのサイズ等)を保証する必要があり、整合性のチェックを行なったり、場合によっては、整合性を保証するインタフェースモジュール(これもモジュール間接合部である)を新たに作成する必要もある。

0017

モジュール自体は、既に他のソフトウェアにて使用されていたのであるから、実績があり、信頼性も高いといえる。これに比べ、モジュール間接合部は、新規に作成したものであるため、実績がない上に、状態数も大きく、デバッグが複雑である場合が非常に多い、すなわち、信頼性に劣る可能性が非常に高い。

0018

ところで、モジュール間接合部の高信頼化を実現するためには、モジュール間の整合不良、すなわち、バグを取り除くことが必要であるが、上記理由により、多大なコストを要し、バグを完全に摘出することは、非常に困難であることは経験的事実の示すところである。そのうち、特にデバッグが難しいモジュール間における整合不良は、例えば、モジュール間の共有資源に対するアクセス不良であり、また、かかるアクセス不良は、データの破壊データ一貫性欠如デッドロック等を発生させる。このような不良は、各モジュールを1タスクとしたマルチタスクによる並行処理において、特に発生しやすい傾向にある。

0019

そこで、モジュール間接合部の高信頼化を実現するためには、フォールトトレランス技術を適用して、モジュール間の整合不良をマスキングすることが必要となる。

0020

しかしながら、モジュール間接合部に対するフォールトトレランス技術の適用は、従来は行なわれていなかった。

0021

以上のように、本発明が解決する第2の課題は、モジュール間接合部の高信頼化を図ることである。

課題を解決するための手段

0022

上記の課題を解決するため、主に、以下の6つの手段が考えられる。

0023

第1の手段は、与えられた単一の仕様に基づき、実現すべき一連の機能を複数のモジュールの構成により実現する方法であって、各モジュールについて、少なくとも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は、一連の機能を構成するモジュール数
)となる。

0030

また、2モジュールi,j間の接合部の多重度(冗長度)をnijとすると:
nij=mi×mj
となる。

0031

さらに、3モジュールi,j,k間の接合部の多重度(冗長度)をnijkとすると:
nijk=mi×mj×mk
となる。4モジュール以上のモジュール間の接合部も同様に多重化される。

0032

上記第2の手段は、上記第1の手段により実現される異なるバージョン間の機能の実行結果の一致/不一致の情報にもとづいて、故障箇所を特定する処理を行う。

0033

また、上記第3の手段は、故障バージョンを、故障箇所を有さない、他のバージョンと取り換え処理を行う。

0034

さらに、上記第4の手段は、上記手段を、機能開発における一過程であるデバッグ処理に適用することにより、バージョン内に存在する故障箇所、すなわち、バグを特定、表示し、デバッグ処理の効率を向上させる。

0035

さらにまた、上記第4の手段は、与えられた仕様にもとづいて、コーデングからバージョン生成、デバッグまでの一連の作業を支援し、ソフトウエアの開発効率を向上させる。

0036

また、上記第6の手段によって、モジュール間接合部の複数個のバージョンのうち、いずれかがエラーを発生しても、相互チェック処理によって、当該エラーはマスキングされ、モジュール間同士で、正確な情報の伝達が行なわれることになる。

0037

以下、本発明による一実施例を図面を参照して説明する。ここでは説明を簡単にするため、3つのモジュールを有して構成される一連の機能に対し、各モジュールについてバージョンを2個ずつ作成する場合を例にとり説明する。

0038

この場合、モジュールの組み合わせにより、8つ(2×2×2=8)のバージョンが生成されることになる。

0039

また本実施例では、同時に実行する一連の機能のバージョン数が、3以上の場合を扱っているために、該バージョン間の機能実行結果の相互チェックは、いわゆる多数決で実現している。バージョン数が2の場合は、機能実行結果の相互チェックは、結果が一致しないエラー発生時のみ報告を行なうようにすればよい。

0040

なお一連の機能を構成するモジュール数、各モジュールの作成数が、いくつになっても、本発明は有効であることはいうまでもない。

0041

図1は、多重バージョン機能実現方法を表すブロック図である。

0042

各構成要素は、例えば、CPU、ROM、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を表す。

0044

また、33は、モジュールを作成する手段であるモジュール作成部を表す。34は、作成されたモジュールを格納しておくモジュール格納部を表し、2a0,2a1,2b0,2b1,2c0,2c1は、それぞれ1A0,1A1,1B0,1B1,1C0,1C1を、33によって作成したモジュールa0,a1,b0,b1,c0,c1を表す。

0045

35は、多重バージョンを生成する多重バージョン生成部を表す。

0046

36は、生成されたバージョンを格納するバージョン格納部を表し、20,21,22,23,24,25,26,27は、それぞれ、34内に格納されたモジュールを、35によって生成した一連の機能のバージョンV0,V1,V2,V3,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を行なう。

0049

すなわち、各モジュール仕様より2個ずつ、合計6個のコーディングを行なうことになる。

0050

次に、モジュール作成部33によって、32にて行なわれた各コーデングに対してモジュールを作成する。33は、例えば、32がソフトウェアのソースファイルの場合は、ソースファイルに対応してオブジェクトファイルを作成するコンパイラに相当する。

0051

さらに、多重バージョン生成部35により、作成された各モジュールごとに、複数個のバージョンの中から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は、フローチャート上の各種動作を表す。

0053

まずステップ902にて、各モジュールのバージョン番号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だけインクリメントする。

0055

ステップ908にて、kの値を、一連の機能を構成するモジュール数Uと比較し、kがUよりも大きければ処理を終了する。そうでなければ、ステップ904に戻る。

0056

また、ステップ905にて、j(k)がm(k)より大きくなければ、ステップ910にて、その時点での各モジュールのバージョンj(1)〜j(U)、すなわち、M1 j(1)〜MUj(U)を結合し、一連の機能が実現可能なバージョンを生成する。

0057

そして、ステップ911にて、k=1か否かをチェックし、k=1ならばステップ904に戻る。それ以外なら、ステップ903に戻る。

0058

なお、ステップ910によるモジュール結合処理は、例えば、各モジュールのバージョンを表すオブジェクトファイルから、1つの実行ファイルを生成する、リンク処理にて実現される。また、モジュール結合処理とあわせて、生成された一連の機能のバージョンを構成するモジュールに関する情報として、例えば、構成モジュールのバージョン番号:j(1)〜j(U)を、図1に示すバージョン情報格納部28に格納する。

0059

上より、多重バージョン生成部35によって、「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個になる。

0061

最後に、多重バージョン実行装置37により、生成された一連の機能のバージョンを実行する。37では、入力部41を介して入力されたバージョンに対して、多重バージョン実行部42が、該バージョンを同時に実行する処理を行う。そして、各バージョンの実行結果を43にて多数決し、多数決の結果、メジャーとなった結果を、出力部44に出力する。

0062

以上の動作により、低コストで、一連の機能を実現可能なバージョン数を大きくできるため、多数決による信頼性の向上を図ることができる。

0063

図1を参照して説明している実施例によれば、3つのモジュールを有して構成される一連の機能に対し、各モジュールのバージョンを各々2つずつ作成すれば、従来の一連の機能の2バージョン作成分のコストによって、8バージョン生成されることになり、該バージョン数が大きくなるため、多数決による、より一層の高信頼化を図れる効果がある。

0064

さらにモジュール間接合部の高信頼化をも図ることが可能であるが、この効果については、以下の図2を参照して説明する。

0065

図2は、多重バージョン実行装置の構成例を示すブロック図である。

0066

図中、41は入力部、42は多重バージョン実行部、43は多数決部、44は出力部を表す。

0067

42内部において、20,21,22,23,24,25,26,27は、それぞれ、作成されたバージョンV0,V1,V2,V3,V4,V5,V6,V7を表す。

0068

さらに、各バージョン内部において、2a01,2a02,2a03,2a04は、モジュールa0を、2a11,2a12,2a13,2a14は、モジュールa1を、2b01,2b02,2b03,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を、同時に実行する。

0070

各バージョンは、自バージョンを構成する3つのモジュールを実行し、実行結果を出力する。なお、図2では、各モジュール間の実行の流れを連続的に書いているが、モジュール間で行われる処理は、例えば、マルチタスクによる並行処理によって行われるものであってもよい。

0071

そして、各バージョンの実行により出力された実行結果を、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」になる。

0074

このように、冗長モジュールの組み合わせにより、モジュール間接合部の冗長度が高くなる。したがって、多重バージョン実行装置37を備えた効果は、上述のように、冗長モジュールの組み合わせによって、モジュール間接合部の冗長度が高くなるために、モジュール間接合部に対して、多数決による高信頼化を図れることにある。

0075

次に、2モジュールを有して構成される一連の機能において、各モジュールについて2バージョンを生成する場合を例にとり、従来例と本実施例による信頼度を比較する。

0076

図12は、上記の例における、従来例と本実施例による信頼度を説明図である。

0077

本実施例によれば、図12(2)のように、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となる。

0079

0080

次に、本発明にかかる機能においては、a0、a1のいずれか一方が正常で、かつ、a0-b0,a0-b1,a1-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-b0,a1-b1が全て故障する確率)」=1−(1−s)4 となる。したがって信頼度R1は、「(a0、a1が双方故障する以外の確率)×(b0、b1が双方故障する以外の確率)×(a0-b0,a0-b1,a1-b0,a1-b1が全て故障する以外の確率)」となり、式2にて表される。

0082

0083

ここで、信頼度を比較するため、f(s)=(R1−R0)/rsとして計算を進めると、

0084

0085

となる。この時、f(0)、f(1)は、

0086

0087

0088

となる。また、式3をsで微分すると:

0089

0090

となる。 この時、f’(0)、f’(1)は:

0091

0092

0093

となる。 また、式3をsで2階微分すると、

0094

0095

となる。

0096

したがって、0<r<1、0<s<1において、式3は、下に凸であり、かつ、sの3次関数であることより、図13のようになる。

0097

以上より、f(s)=(R1−R0)/rs>0
すなわち、R1>R0 が成立する。これは、本発明によって信頼性の向上が図れたことにほかならない。

0098

一連の機能実現ために使用されるモジュール数、モジュールについて生成されるバージョン数が、他の場合であっても同様のことがいえる。

0099

なお、図2に示す、各々の、一連の機能を実現するバージョンが、ソフトウェアの場合、多重バージョン実行装置の実行環境としては、生成バージョン数と同数プロセッサを備えたマルチプロセッサ構成による並列処理の場合や、生成されたバージョンを、1台のプロセッサにて、マルチタスクによる並行処理を利用して実行する等、生成バージョン数が、プロセッサ数より多い場合が考えられるが、いずれの場合においても、本発明は有効であることはいうまでもない。

0100

さて、図3に、エラー制御付き多重バージョン実行装置の構成を表すブロック図の一例を示す。

0101

図中、37aは、エラー制御付き多重バージョン実行装置を表し、41は入力部、42は多重バージョン実行部、43は多数決部、44は出力部を表す。45は、エラー制御部を表し、451は、fault箇所特定部、452は、構成制御部を表す。

0102

また36は、バージョン格納部を表し、また、20,21,22,23,24,25,26,27は、バージョンV0,V1,V2,V3,V4,V5,V6,V7を表し、さらに、28は、バージョン構成する情報を格納してあるバージョン情報格納部を表す。

0103

図3において、エラー制御付き多重バージョン実行装置37aの動作は、41〜44に関しては37と同様であり、入力部41を介して入力された入力情報に対して、多重バージョン実行部42にて、生成された一連の機能を実現するバージョンを同時に実行し、各バージョンの実行結果を43にて多数決し、メジャーとなった結果を、出力部44に出力する。

0104

さらに、多数決部43は、多重バージョン実行部42の実行結果にもとづいて、エラーを発生したバージョン(多数決で、メジャーとなった結果以外を出力した、一連の機能を実現するバージョン)を、エラー制御部45に通知する。エラー制御部45では、内部のfault箇所特定部451が、バージョン格納部36内のバージョン情報格納部28に格納されたバージョンの構成に関する情報と、多数決部43からの入力情報にもとづいて、バージョン内の故障箇所を特定する。

0105

続いて、構成制御部452にて、fault箇所特定部451からの故障箇所特定結果とバージョンの構成に関する情報にもとづいて、多重バージョン実行部42と多数決部43に対し、故障箇所を有する故障バージョンの実行停止を報告する。

0106

そして報告を受け取った多重バージョン実行部42は、故障バージョンの実行を取りやめる。また、多数決部43では、故障バージョンからの入力を遮断する。

0107

ところで、一連の機能を実現するために使用されるモジュール数が多いと、それだけ、多数のバージョンが生成されることになる。しかし、ハードウェア資源あるいは処理時間の制約により、生成された全てのバージョンを実行することは困難であるため、実行バージョン数が、生成バージョン数よりも少なくなり、未実行のバージョンが存在する場合がある。このような場合、実行中に特定された故障バージョンを、共通の故障箇所を有さない、他のバージョンと取り換えることにより、多重バージョン実行の信頼性が、故障発生前と同一のレベルまで回復できることになる。

0108

図4は、構成制御部452の故障バージョン特定方法の一例を表すブロック図である。

0109

図中、4521は、fault箇所特定部451からの入力情報、4522は比較器、28はバージョン情報(バージョンが、どのようなモジュールを有して構成されているかを示す情報)を表す。 入力情報4521は、例えば、6ビットの情報で表され、各ビットは、上位ビットより、それぞれ、モジュールa0,a1,b0,b1,c0,c1に関する状態を表す。

0110

そして、モジュールの「正常」をビット・オフ(=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を有して構成されていることを表す。

0112

また7列目は、バージョンの故障を表すビットで、ビット・オンで「故障」を表す。最後の8列目が、バージョンの使用状態を表すビットで、ビット・オンで「未使用」であることを表す。図4では、V4,V7が未使用である。

0113

構成制御部452による故障バージョンの特定方法は、fault箇所特定部451からの、入力情報4521を、比較器4522にて、バージョン情報280の各行の最初の6列と比較する。

0114

そして、入力情報4521を包含するバージョンは、故障とみなされ、7列目のバージョンの故障を表すビットをオンにする。図4の例では、バージョンV1およびV5に対して、故障ビットがオンになる。これは、入力情報4521は、モジュールb0およびc1の接合部が故障していることを表しているが、バージョン情報280を参照すると、バージョンV1とV5がモジュールb0とc1を有しているためである。

0115

次に、故障部位を有しないバージョンを、未使用バージョンの中から取り出す。バージョン情報280の8列目より、未使用バージョンはV4およびV7の2つであり、また7列目の情報より、このうちのいずれもが、故障部位を有していないことがわかる。従って、故障バージョンV1とV5を、V4とV7に交換することにし、多重バージョン実行部42と多数決部43に対し報告する。そして、バージョン情報280の8列目のV4とV7に対応するビットをオフにする。

0116

以上のように、図3に示すエラー制御付き多重バージョン実行装置37aによれば、故障箇所を有する故障バージョンの実行を取りやめることにより、信頼性を回復させることができる。

0117

さらに、構成制御部452にて、故障バージョンを未実行バージョンと取り換える処理を行うため、多重バージョン実行の信頼性が、故障発生前と同一のレベルまで回復できる。

0118

次に、fault箇所特定部451について説明する。

0119

まずfault箇所特定部451の動作の基本的な考え方を説明する。

0120

図5は、fault箇所特定部451の基本動作説明図である。説明を簡略化するために、バージョンV0,V1,V5が有するモジュールを要素として表したベン図を用いる。

0121

図中に示されているモジュールは、各バージョンの構成モジュールを表し、例えば、a0は、V0,V1に属するが、V5には属さないことを表す。

0122

ここで、多数決により、バージョンV1,V5にてエラーが発生したと判定されたとする。 この場合、故障箇所は、V1,V5の交わり部分に属するモジュールb0,c1、あるいは、これらのモジュール間接合部b0-c1が考えられる。しかし、例えば、モジュールb0は、バージョンV0にも属し、また、V0は、エラーを発生していないのであるから、b0自体の故障ではない。さらに、V0以外の他のバージョン(c1を有している)においてもエラーが発生していないことを考慮すると、c1自体の故障でもない。結局、考えられる故障箇所は、モジュール間接合部 b0-c1ということになる。以上が、fault箇所特定部451の動作の基本的な考え方である。

0123

図6は、fault箇所特定の動作の説明図である。

0124

図中、81は、多数決部43より送られてくる多数決結果、801〜826は、モジュール間接合部あるいはモジュール自体の故障検出ノード、80は、各ノードの状態(故障か否かの状態)を受け付けるノードチェック部を表す。

0125

多数決結果81は、例えば8ビットの情報で表され、上位ビットより、それぞれバージョン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-c0,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間の接続関係について説明する。

0128

多数決結果81の各ビットは、該ビットに対応するバージョンを構成するモジュールを有するノードに接続される。従って多数決結果81の各ビットは、上位よりそれぞれノード801〜808に一対一に接続される。

0129

また、ノード801〜808は、各ノードに属する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に、それぞれ接続される。

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は、824,826に、817は、821,825に、818は、822,825に、819は、821,826に、820は、822,826にそれぞれ接続される。

0132

なお、各ノード801〜826は、ノードチェック部80に接続する。なお、これらの接続は、例えば信号線によって実現される。

0133

ここで、fault箇所特定部451の動作を説明する前に、fault箇所特定部の内部に備えられたノードの動作を説明する。

0134

図7は、fault箇所特定部内に備えられるノード814の構成を表すブロック図である。

0135

図中、814は、b0-c1間接合部故障検出ノード、8141は加算器、8142,8143は、カウンタ、8144は、故障判定部を表す。また、802,806,823,826は、それぞれa0-b0-c1間接合部,a1-b0-c1間接合部,b0自体,c1自体の故障検出ノード、80は、ノードチェック部を表し、2ノードより入力し、2ノードへ出力する構成をとっている。

0136

b0-c1間接合部故障検出ノード814は、b0-c1間接合部を含むノード802,806からの入力を、加算器8141にて足し合わせ、b0自体,c1自体を表すノード823,826へ出力する。また、ノード802,806からの入力を、それぞれにてカウンタ0(8142)、カウンタ1(8143)に加え、その結果を故障判定部8144に渡す。故障判定部8144では、更新されたカウンタ0,カウンタ1の値にもとづいて、故障判定を行う。

0137

故障判定方法は、例えば、各カウンタ値が、予め定められたしきい値以上で、かつ、カウンタ値間の偏差が、予め定められた偏差限界値以内である場合に限って、該接合部は、故障であると判定する。故障判定を行い、故障と判断した場合、ノードチェック部80に、故障である旨をを通知する。

0138

以上が、ノード814の動作説明であるが、他の2モジュール間接合部故障検出ノード809〜813,815〜820の構成および動作も同様である。

0139

また、3モジュール間接合部故障検出ノード801〜808については、1ノードより入力し、3ノードへ出力する構成となる。また、1ノード入力ゆえ、加算器は必要無く、カウンタも1個設けておけば良い。また、故障判定は、1入力ゆえ、入力値のしきい値チェックは行なうが、偏差のチェックは行なわない。その他の構成および動作は、ノード814と同様である。

0140

さらに、モジュール自体の故障検出ノード821〜826については、4ノードからの入力となる。ノードからの出力はないので、加算器は不要である。また、カウンタは、4ノードからの入力があるため、4個設けておく。故障判定は、4入力ゆえ、入力値のしきい値チェックおよび偏差のチェックは、ノード814の場合と同様である。その他の構成および動作は、ノード814と同様である。

0141

以下、fault箇所特定部451の動作例を表を参照して説明する。

0142

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)のカウンタ値を表している。

0144

ノードb0の内部の4つのカウンタ値K0,K1,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-c1の内部の2つのカウンタ値K6,K7は、それぞれノードa0-b0-c1,a1-b0-c1(図6の802,806)からの出力情報がエラー発生を示す場合に加算される。

0145

ノードa0-b0-c1の内部のカウンタ値K8は、多数決結果81の上位から2ビット目ビット情報がエラー発生を示す場合に加算される。ノードa1-b1-c0の内部のカウンタ値K9は、多数決結果81の上位から6ビット目のビット情報がエラー発生を示す場合に加算される。なお、各カウンタの初期値は0である。

0146

また、表では、9回分のエラー発生の履歴を表しており、各行は各回のエラー発生状況を示している。

0147

さらに、本実施例では、一例として、各ノードのしきい値として、モジュール自体のしきい値を「10」、2モジュール間接続部のしきい値を「5」、3モジュール間接続部のしきい値を「7」としている。また、偏差は、例えば、次式で計算している。

0148

すなわち、偏差=(ノード内最大カウンタ値−最小カウンタ値)÷カウンタ平均値で表し、各ノードの偏差限界値を0.1としている。なお、しきい値、偏差を求める式、偏差限界値は、あくまで一例に過ぎないので、必要に応じて設定し直せば良い。

0149

表1に示されているように、エラーが発生する毎に、各ノード内のカウンタ値が更新されて行く様子が分かる。そして、8回目のエラー発生により、ノードb0-c1の内部カウンタK6,K7が、ともに、しきい値5以上になり、かつ、偏差は「0」で、偏差限界値以下を満足しているので、b0-c1間接合部が故障と判定され、かかる判定情報をノードチェック部80に通知する。

0150

さらに、9回目のエラー発生により、ノードa1-b1-c0の内部カウンタK9が、しきい値7以上になるので、a1-b1-c0間接合部が故障と判定され、かかる判定情報をノードチェック部80に通知する。

0151

そして、ノードチェック部80では、ノードからの故障判定通知にもとづいて、故障特定情報を構成制御部452に通知する。

0152

なお、a1-b1-c0間接合部の故障特定のように、バージョンを構成する全モジュール間の整合部の故障特定に対しては、特にバージョンがソフトウェアで構成されている場合、以下の問題が生じる。

0153

すなわち、バージョンを構成する全モジュール間の接合部は、唯一のバージョンにのみ存在し、かつ、該バージョンを実行するハードウェアが単一であるため、このままでは、故障が特定されても、ソフトウェアの故障であるのか、あるいは、ハードウェアの故障であるのか区別できないという問題が発生する。

0154

したがって、このような場合には、該バージョンを、別のハードウェアにて実行し、再度エラー発生の履歴をとることにより、故障箇所を特定することが好ましい。

0155

以上より、fault箇所特定部451は、上記に示した統計的手法にもとづいて、各バージョンの実行状態の違いより生じる以下の状況、すなわち、故障箇所を有する全てのバージョンが必ずしも同時にエラーを発生しない場合や、逆に、複数種類の故障箇所が同時にエラーを発生する場合においても、故障箇所を特定することができる。

0156

図8は、多重バージョン機能デバッガを表すブロック図である。

0157

図中、36は、バージョン格納部である。例えば、RAM,ディスク装置等によって実現される。

0158

20,21,22,23,24,25,26,27は、それぞれバージョンV0,V1,V2,V3,V4,V5,V6,V7であり、前記バージョン格納部に格納される。

0159

28は、バージョンの構成に関する情報であるバージョン情報の格納部である。

0160

385は、入出力ペアの格納部を表す。テスト用入出力ペア作成部381にて作成された、入出力ペアが、前記入出力ペア格納部385に格納される。ここで入出力ペアとは、プログラムが正確に作成されているならば、予め一定の関係を有するようなデータの組をいう。すなわち、例えば、入力データと、これに対応して、出力することが予想される出力データをいう。また、テスト用入出力ペア作成部381は、例えば、キーボード等により実現できる。

0161

50は、多重バージョン機能デバッガを表し、521,522は、それぞれ入力データ格納部、出力データ格納部であり、例えば、RAMにより実現できる。

0162

531,532は、スイッチであり、例えば、アナログスイッチ等により実現できる。

0163

54は、出力データ群格納部であり、例えば、RAMにより実現できる。

0164

55は、比較器であり、例えば、CPU、ROM、RAM、各種CMOS等によって実現できる。

0165

56は、表示用データ変換部を表し、データを表示に適したデータに加工する処理を行う手段であり、例えば、CPU、ROM、RAM、各種CMOS等によって実現できる。

0166

45aは、エラー制御部、451は、fault箇所特定部、452aは、fault制御部を表す。

0167

さらに、42は、多重バージョン実行部、43は、多数決部である。

0168

なお、前述の説明で使用した符号と同一の符号が付された手段は、前述の説明にある手段と同様な機能を有し、同様に実現可能である。

0169

また、382はデータ入力部であり、例えばキーボード等により実現される。

0170

383は、モード切換え部であり、データ入力部あるいはテスト用入出力ペア作成部のいずれかを起動させるかの切換処理を行う手段であり、例えば、スイッチ、キーボード等により実現される。384は、fault箇所表示部を表し、該構成要素は、ユーザーにfault箇所に関する情報を知らしめる機能を有する。例えば、CRT液晶ディスプレイ等により実現できる。

0171

以下、多重バージョン機能デバッガ50の動作について説明する。

0172

まず、多重バージョン実行部42、エラー制御部45a内に設けられたfault箇所特定部451およびfault制御部452aは、それぞれ、バージョン格納部36から、バージョン20〜27、バージョン情報格納部28からバージョン情報をロードする。

0173

入出力ペア385は、前述した通り、多重バージョンを実行した時に、与えた入力データと、これに対し予想される正しい出力結果とを含む入出力情報で、381によって、ユーザーが予め作成し、385に記憶しておく。

0174

多重バージョン機能デバッガ50は、入出力ペア385を用いたデバッグと、使用者が直接382を介して行なうデータ入力によるデバッグの2種類のモードを、必要に応じて選択できるが、モードの切換えは383により行なう。

0175

入出力ペア格納部385に格納された入出力ペアを使用したデバッグモードにおいては、fault制御部452aが、スイッチ531,532によって、521と42を、さらに、42と54とを接続する。

0176

そして、fault制御部452aは、521、522に対し、入出力ペア格納部385から入力データおよび出力データを1セットとり、それぞれ、入力データ格納部521、出力データ格納部522に格納する。

0177

521に格納された入力データは、42の入力情報となり、42にて多重バージョン実行され、各バージョンの実行結果が、出力データ群格納部54に蓄えられる。そして、比較器55にて、出力データ群格納部54に格納された実行結果のデータは、各々、出力データ522と比較され、予め定められた出力データ522と一致しない実行結果を与えたバージョンは、バグを有すると判断される。

0178

55での比較結果をfault箇所特定部451に通知する。451では、この通知情報にもとづいて、故障箇所を特定し、その特定結果を表示用データ変換部56とfault制御部452aに送る。 56では、送られてきた情報を表示用データに変換して、384に故障箇所等を表示させる。 表示させる内容は、ユーザーの操作性を考慮し各種の項目が考えられる。

0179

452aは、次々と、521、522に別の入出力データを格納させ、多重バージョン実行を、順次行なわせて行く処理を継続する。また、エラー発生時には、452aは、同じ入出力データにもとづいて、多重バージョンを再実行させる機能を有する構成にするのが好ましい。

0180

データ入力部382を介して、直接、必要なデータを入力せしめデバックを行うデバッグモードでは、fault制御部452aが、スイッチ531、532の切換により、382と42、42と43を接続する。

0181

42にて、データ入力部382を介して与えられた入力データを、多重バージョン実行し、さらに、各バージョンの実行結果は、43にて多数決され、また、その結果は、fault箇所特定部451に通知される。451では、通知情報にもとづいて故障箇所を特定し、その特定結果を、表示用データ変換56とfault制御452aに送る。56では、送られてきた情報を、表示用データに変換して、384に、故障箇所等を表示させる。

0182

なお、入出力ペアを使用したデバッグモードは、残存バグの比較的多い、デバッグ初期段階において有効であり、直接データを入力するデバッグモードは、残存バグが少なくなったデバッグ終期段階にて有効である。

0183

以上のように、デバッガに、多重バージョン実行機能付随させ、生成された全てのバージョンを同時に実行すると、冗長度の高い部位のエラー発生率は、確率的に高くなる。 したがって、エラー制御部による故障箇所の特定と、冗長度の高いモジュール間接合不良の検出が一層正確に行われることにより、効率的なデバッグが可能になる。

0184

また、各バージョンにおけるエラー発生状況を記録しておくことにより、図3にて述べた実行バージョン数が、生成バージョン数より少ない場合において、エラー発生頻度の少ないバージョンから順番に実行バージョンとしていくことにより、実行バージョンの信頼度が、他の未実行バージョンより高いため、より信頼性の高い多重バージョン実行が可能となる。

0185

図9は、多重バージョン機能付開発支援システムの構成例を示すブロック図である。

0186

各構成要素は、例えば、CPU、ROM、RAM、各種CMOS、プログラム、キーボード、CRTディスプレイ等のうち、少なくともいずれか一つを使用して実現できる。

0187

また、前述の説明で使用した符号と同一の符号が付された手段は、前述の説明にある手段と同様な機能を有し、同様に実現可能である。

0188

図中、31は、一連の機能を記載した仕様、そのうち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は、モジュール作成部を表す。

0190

34は、作成されたモジュールを格納しておくモジュール格納部を表し、2a0,2a1,2b0,2b1,2c0,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,V6,V7を表し、また、28は、生成されたバージョンの構成に関する情報を格納するバージョン情報格納部、385は、入出力ペアを格納する入出力ペア格納部を表す。

0191

50は、多重バージョン機能デバッガ、63は、第2修正箇所判定部を表す。

0192

381は、テスト用の入出力ペアを作成するためのテスト用入出力ペア作成部、382は、直接データを入力するためのデータ入力、383は、モード切換え部、384は、fault箇所表示部を表す。

0193

以下、多重バージョン機能開発支援システムの動作を説明する。

0194

まず、3つのモジュールA,B,Cを有して構成される、一連の機能を記載した仕様31にもとづいて、コーディング部32にてコーディング処理を行なう。

0195

次に、モジュール作成部33により、32にて作成された各コーデングに対して、モジュールを作成する。作成された各モジュールは、それぞれ個別に、モジュール別デバッガ61にてデバッグされる。

0196

61は、通常使用される、汎用のデバッガである。

0197

第1修正箇所判定部は、61による修正の必要箇所があるか否かを判断する機能を有する。 修正の必要箇所がある間は、32に戻って、該当箇所の修正作業を行なうことになる。修正箇所が無くなった時に、多重バージョン生成部35が、作成されたモジュールを組み合わせて、仕様31を満足するバージョンを生成する。また、35は、各バージョンを構成するモジュールに関する情報を作成し、バージョン情報格納部28に格納する。さらに、381により、テスト用の入出力ペアを作成し、36内に設けられた入出力ペア格納部385に格納する。 次に、36に格納された各種情報とデータ入力部382、モード切換え部383を使用して多重バージョン機能デバッガ50を起動させ、デバッグを行なう。

0198

第2修正箇所判定部は、50による修正の必要箇所があるか否かを判断する機能を有する。 修正の必要箇所がある間は、fault箇所表示部384に表示される、故障箇所情報にもとづいて、32に戻って、該当箇所の修正作業を行なうことになる。修正箇所が無くなった時点で、動作を終了する。

0199

以上のように、ソフトウェア開発に、多重バージョン実行を適用し、かつ、故障箇所の特定および冗長度の高いモジュール間接合不良の検出の加速化が可能な、多重バージョン機能デバッガを使用することにより、信頼性の高いソフトウェアの開発を、効率良く行なうことが可能になる。

0200

次に、モジュール間整合部の信頼性を向上するため、モジュール間整合部のみの冗長化を図るための実施例について説明する。本実施例では、モジュール間整合部を3重化する場合を例に取り説明しているが、本発明の適用例が3重化に限られないことはいうまでもない。

0201

さて、図10に、モジュール間接合部冗長構成例を表す。

0202

図中、2a,2bは、モジュールa,bを表す。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は、多数決部を表す。

0204

図10の動作は、以下のようになる。

0205

2a、すなわちモジュールaから、2b、すなわちモジュールbへの情報伝達時に、2aからの出力は、2ab1,2ab2,2ab3に分岐する。2ab1,2ab2,2ab3は、同一仕様にもとづいて作成された、モジュール間接合部である。各モジュール間接合部の内部では、
・2aからの出力情報の受入れチェック、
両モジュール間それぞれの入出力情報の規約の違いを吸収するための情報変換、
・2bへの入力情報の受入れチェック
を行ない、各処理は、a1,a2,a3、2ab11,2ab12,2ab13、b1,b2,b3にて、それぞれ実行される。そして、各モジュール間接合部2ab1,2ab2,2ab3からの出力を、43aにて多数決を行ない、その結果を2bに送る。

0206

なお、情報変換は、一般に、仕様書に詳細に記載されているので、信頼性の高いものである場合には、2ab11,2ab12,2ab13については、同一のものを使用する構成が考えられる。さらに、図11に示すように、a1,a2,a3の出力を、43bにて多数決し、その結果を一つだけ設けられている情報変換部2ab11に送り、2ab11の出力結果は、b1,b2,b3に3分岐し、それらの実行結果を、43aにて多数決し、その結果を2bに送るという構成も考えられる。

0207

以上のように、本発明によれば、特に、モジュール自体の信頼度が運用実績等により非常に高い場合において、モジュール間接合部の高信頼化を図ることにより、実現すべき機能全体の信頼度を向上させることが可能となる。さらに、モジュール自体を冗長化する従来の多重バージョン実行に比べ、コストの低減が図れる。

発明の効果

0208

本発明によれば、低コストで、多数個のバージョンの一連の機能を実現することができ、信頼性が向上する。特に、モジュール間接合部の多重化が図れ、モジュール間接合部の信頼性が向上する。

図面の簡単な説明

0209

図1多重バージョン機能実現手段のブロック図である。
図2多重バージョン実行装置のブロック図である。
図3エラー制御付き多重バージョン実行装置のブロック図である。
図4構成制御部の故障バージョン特定方法を表す図である。
図5fault箇所特定の基本概念の説明図である。
図6fault箇所特定の動作説明図である。
図7fault箇所特定内のノード814の構成を表すブロック図である。
図8多重バージョン機能デバッガのブロック図である。
図9多重バージョン機能開発支援システムのブロック図である。
図10モジュール間接合部冗長構成を表すブロック図である。
図11モジュール間接合部冗長構成を表すブロック図である。
図12モジュール間組み合わせによる効果の説明図である。
図13本発明の信頼度と従来の信頼度の関係を表すグラフである。
図14多重バージョン生成部の動作を表すフローチャートである。

--

0210

31…仕様、32…コーデング部、33…モジュール作成部、34…モジュール格納部、35…多重バージョン生成部、36…バージョン格納、28…バージョン情報格納部、37…多重バージョン実行装置、41…入力部、42…多重バージョン実行部、43…多数決部、44…出力部、37a…エラー制御付き多重バージョン実行装置、45…エラー制御部、451…fault箇所特定部、452…構成制御部、4521…fault箇所特定部451からの入力情報、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修正箇所判定部、63…第2修正箇所判定部、2a…モジュールa,2b…モジュールb、2ab1…モジュール間接合部1、2ab2…モジュール間接合部2、2ab3…モジュール間接合部3、21a…チェック部a1、22a…チェック部a2、23a…チェック部…a3、2ab11…情報変換部1、2ab12…情報変換部2、2ab13…情報変換部3、21b…チェック部b1、22b…チェック部b2、23b…チェック部b3、43a…多数決部、43b…多数決部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

(分野番号表示ON)※整理標準化データをもとに当社作成

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

  • 神山義尚の「 コード自動記述2ソフトウェアを記録した記録媒体」が 公開されました。( 2019/09/19)

    【課題】多分岐処理のプログラムを短時間で記述できる様になり、人件費の削減効果が大きく期待できる技術を提供する。【解決手段】複数個の変数や複数個の配列に代入された数値の組合せによる分岐処理を行うプログラ... 詳細

  • 日本電気株式会社の「 システム管理装置、システム管理方法、およびプログラム」が 公開されました。( 2019/09/12)

    【課題】システムの一部を構成する定義ファイルを更新する際、その更新に伴って影響を受ける可能性がある部分を分かりやすく提示する。【解決手段】受信部は、システムの更新要求を受信し(S1,S2)、影響範囲判... 詳細

  • オムロン株式会社の「 コンピュータおよびその制御方法」が 公開されました。( 2019/09/12)

    【課題】コンピュータの異常を精度よく診断する。【解決手段】CPU(31)は、イベントログをイベントログ部51に書き込む。CPU(31)の異常をWDT(41)が検知すると、バックアップ部(42)がバック... 詳細

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ