説明

ソフトウェアコンポーネントの信頼性評価方法および装置

【課題】ソフトウェアコンポーネントの仕様から、ソフトウェアコンポーネントにおける故障がどのように伝播するかを評価する技術を提供する。
【解決手段】モデルの形式検証機能を有するコンピュータが、ソフトウェアコンポーネントの入力インタフェース仕様、出力インタフェース仕様、内部仕様を含む仕様情報を取得する仕様情報取得ステップと、前記仕様情報中の入力インタフェース仕様を正常値以外に変更した仕様情報に従って、前記形式検証機能によって前記ソフトウェアコンポーネントを検証する検証ステップと、前記検証ステップにおいて前記出力インタフェース仕様を満足しない出力値となる例が発見された場合には、前記正常値以外に変更した入力と、前記出力インタフェース仕様を満たさない出力とを、対応づけて記憶する故障伝播路記憶ステップと、を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ソフトウェアコンポーネントの信頼性を評価するための技術に関する。
【背景技術】
【0002】
大規模なシステム開発では、一般的にソフトウェアを適当なサイズに分割してコンポーネント(ソフトウェアコンポーネント)を構成し、これらの組合せとしてソフトウェア全体を構成する方法が取られる。開発対象のシステムが非常停止装置などの安全に関するシステムである場合には、ソフトウェアにも高い信頼性が求められる。従来、このような安全システムにおけるソフトウェア開発では、開発プロセスの改善による品質向上によって、信頼性を高める手法が取られてきた。また、ソフトウェアアーキテクチャを対象とした信頼性評価が行われる場合でも、評価者が経験に基づいて評価を行うのが一般的であり、コンポーネントの内部構造を詳細に分析して評価を行うことは難しい。これらは手作業のために作業量が多く、また、技術者の経験に強く依存するという問題点もある。
【0003】
これに対して、近年は数学をベースにした、形式的検証と呼ばれるシステム開発手法が取られるようになってきている。形式的検証では、仕様を数学的に記述し、コンピュータを用いて全ての状態を網羅して矛盾が無いか検査を行う。これらを自動化する技術としては、自動定理証明やモデル検査といった技術が研究されている。これらの技術では、自動で全ての条件や状態を調べるので、モデルの完全性が保障されるという利点がある。例えば、形式的検証ツールの一つであるAlloy Analyzerでは、集合論と述語論理を理論基盤に持ち、与えられた仕様に対して指定されたプロパティを満たす例を探したり(述語の検証)や指定されたプロパティを満たさない判例を探したり(表明の検証)することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2010−237855号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記のような形式的検証によるモデル検査は、設計されたモデルが仕様を満足するかどうかを検証することに力点が置かれている。すなわち、ソフトウェアコンポーネントに異常な入力が与えられた場合、すなわち故障(バグ)が与えられた場合にどのように振る舞うのかを明確にすることはできない。外来の故障に対してソフトウェアコンポーネントがどのように振る舞うかが分かれば、故障がどのように伝播するかが分かる。このような情報は、システム全体の評価に用いることができ、例えば、安全性を損なうイベントがどのソフトウェアコンポーネントの故障(バグ)によって引き起こされる可能性があるか等を分析できる。
【0006】
本発明は、ソフトウェアコンポーネントの仕様から、ソフトウェアコンポーネントにおいて故障がどのように伝播するかを評価することを目的とする。
【課題を解決するための手段】
【0007】
本発明のソフトウェアコンポーネントの信頼性評価方法では、
モデルの形式検証機能を有するコンピュータが、
ソフトウェアコンポーネントの入力インタフェース仕様、出力インタフェース仕様、内部仕様を含む仕様情報を取得する仕様情報取得ステップと、
前記仕様情報中の入力インタフェース仕様を正常値以外に変更した仕様情報に従って、前記形式検証機能によって前記ソフトウェアコンポーネントを検証する検証ステップと、
前記検証ステップにおいて前記出力インタフェース仕様を満足しない出力値となる例が発見された場合には、前記正常値以外に変更した入力と、前記出力インタフェース仕様を満たさない出力とを、対応づけて記憶する故障伝播路記憶ステップと、
を実行する。
【0008】
このように、入力インタフェース仕様を正常値以外に変更した仕様情報を用いて形式検証を行うことで、異常(故障)入力があった場合のソフトウェアコンポーネントの振る舞いを調べることができる。形式検証では、出力仕様を満たさない例(反例)を見つけることができる。ここで、どの出力から異常出力があるかを対応づけて記憶することで、異常値が入力された場合に、この異常がどの出力に伝播するかという情報を蓄積することができる。
【0009】
本発明において、前記ソフトウェアコンポーネントは、複数の入力値をとるものであることが好ましく、
前記検証ステップでは、入力値のそれぞれについて、入力インタフェース仕様を正常値以外に変更した仕様情報に従って、ソフトウェアコンポーネントの検証を行うことが好ましい。
【0010】
複数ある入力を1つずつ正常値以外とすることで、個々の異常入力がどの出力に伝播するかを把握することができる。
【0011】
また、本発明において、前記コンピュータが、前記仕様情報取得ステップで取得した仕様情報から、入力値ごとに入力インタフェース仕様を正常値以外にした異常仕様情報を作成するステップ、をさらに含むことも好ましい。
【0012】
仕様情報は形式検証機能が読み取り可能な形式でコンピュータに提供される。ここで、入力値ごとに入力インタフェース仕様を正常値以外にした異常仕様情報をコンピュータが自動的に作成することで、ユーザの手間を省くことができる。
【0013】
また、本発明において、前記コンピュータが、
複数のソフトウェアコンポーネントを含むシステムの各ソフトウェアコンポーネントに対して、前記仕様情報取得ステップ、検証ステップ、故障伝播路記憶ステップを実行し、
前記故障伝播路記憶ステップにおいて関連づけて記憶された入力と出力とに基づいて、前記システムの故障伝播路を表示する、ことが好ましい。
【0014】
個々のソフトウェアコンポーネントについて異常の伝播路を格納しているので、複数のソフトウェアコンポーネントから構成されるシステム全体に対して故障伝播路を表示することができる。これにより、あるソフトウェアコンポーネントで検出された異常の原因が、どのソフトウェアコンポーネントにあるのかをユーザが容易に理解できるようになる。
【0015】
なお、本発明は、上記処理の少なくとも一部を行う信頼性評価方法、またはこの方法を実現するためのプログラムとして捉えることもできる。また、本発明は、上記処理を実行するための各手段を有する信頼性評価装置として捉えることもできる。上記手段および処理の各々は可能な限り互いに組み合わせて本発明を構成することができる。
【発明の効果】
【0016】
本発明によれば、ソフトウェアコンポーネントの仕様から、ソフトウェアコンポーネントにおいて故障がどのように伝播するかを評価することができる。
【図面の簡単な説明】
【0017】
【図1】本実施形態によるソフトウェアコンポーネントの信頼評価手法の概要。
【図2】本実施形態にかかるソフトウェアコンポーネントの信頼性評価装置の機能構成。
【図3】形式記述言語Alloyで記述された仕様情報の例。
【図4】形式記述言語Alloyで記述された異常仕様の例であり、図3の仕様情報から入力仕様の一部が正常値以外に変更されている。
【図5】本実施形態にかかるソフトウェアコンポーネントの信頼性評価処理のフローチャート。
【発明を実施するための形態】
【0018】
以下に図面を参照して、この発明の好適な実施の形態を例示的に詳しく説明する。
【0019】
図1は、本実施形態にかかる信頼性評価技術の概要を示す図である。ここでは、xとyの2つを入力とし、a,bの2つを出力とするソフトウェアコンポーネント100の信頼性を評価する場合を例として説明している。ソフトウェアコンポーネント100の、インタフェース仕様および内部仕様を形式記述言語で記述し、まず第1段階としてこの仕様を基に、形式検証機能を用いて網羅的な検証を行う。これにより、ソフトウェアコンポーネント100にインタフェース仕様および内部仕様に矛盾が無いことが検証される。このような検証方法が、一般的な形式検証機能の利用方法である。
【0020】
本実施形態では、次に、入力仕様を正常値以外に変更する。なお、「正常値」というのは取得したインタフェース仕様で指定された値のことを言う。ここでは、ソフトウェアコンポーネント100はxとyの2つの入力を取るが、いずれか1つの入力を正常値以外に変更する。このように変更した仕様情報に基づいて、形式検証機能を用いて網羅的な検証を行う。ここで、出力インタフェース仕様を満たさないようなインスタンス(反例)が見つかった場合には、仕様を変更した入力に対して異常(故障)が入力された場合に、上記の出力に故障が伝播しうることが分かる。図1では、入力yを正常値以外にした場合に、出力aにおいて出力仕様を満たさない反例が存在することが分かる。従って、入力yに対する故障入力が出力aに伝播することが分かる。
【0021】
このようなソフトウェアコンポーネントに対する異常伝播解析を、システムを構成する複数ソフトウェアコンポーネントに対して実行して、故障伝播路を記憶部に記憶しておく。この解析結果から、ソフトウェアコンポーネント間での故障伝播路を計算可能である。すなわち、システム全体の信頼性も評価することが可能となる。
【0022】
〈構成概要〉
図2は、本実施形態にかかる信頼性評価装置1の機能構成を示す図である。信頼性評価装置1は、ハードウェアとしては、CPU、RAMなどの主記憶装置、HDDやDVD−ROM等の補助記憶装置、キーボードやマウスなどの入力装置、ディスプレイなどの表示装置を含むコンピュータとして構成することができる。HDDなどに記憶されているオペレーティングシステム(OS)やアプリケーションプログラム(AP)がメモリ上に展開されてCPUが実行することで、図2に示す各機能部が実現される。ここでは、一台のコンピュータから信頼性評価装置1が構成される場合の例を説明したが、ネットワーク等を介して接続された複数のコンピュータが連動することで信頼性評価装置1が構成されても良い。また、各機能部の一部または全部を専用のハードウェアによって構成してもかまわない。
【0023】
仕様情報取得部2は、形式記述言語で記述された仕様情報を信頼性評価装置1へ取り込
むための機能部である。図3に形式記述言語Alloyで記述された仕様情報の例を示している。仕様情報の取得方法は種々の態様が考えられる。例えば、HDDやDVD−ROMなどに格納されている仕様情報ファイルを読み込んで取得することが考えられるし、ネットワークを経由して仕様情報ファイルを取得することが考えられる。また、ユーザが入力装置から直接入力してもかまわない。また、アーキテクチャ記述言語(ADL)等で記述された設計情報を取得し、この設計情報から自動的に生成してもかまわない。ADLで記述された設計情報から形式記述言語で記述された仕様情報を作成することは、当業者であれば容易に理解できるであろう。
【0024】
異常仕様作成部3は、仕様情報取得部2が取得した仕様情報のうち、いずれかの入力を正常値以外にした仕様情報(以下、異常仕様と呼ぶ)を作成する機能部である。図4に形式記述言語Alloyで記述された異常仕様の例を示している。異常仕様は、正常仕様における入力インタフェースの制約のうちの一つを反転する(論理否定演算)ことにより作成することができる。なお、入力が取り得る値の範囲が指定されていれば、正常な入力を反転することで一意の異常仕様が得られる。
【0025】
モデル検査部4は、形式記述言語で記述された仕様(モデル)が満たされるかどうかを、数学的手法により網羅的に検証する機能部である。モデル検査部4としては、Alloy Analyzerなどの既知のモデル検査ツールを利用することができる。
【0026】
故障伝播路記憶部5には、異常仕様に基づいてモデル検査を行った場合に出力インタフェース仕様を満たさない出力を、異常な入力と関連づけて記憶する記憶部である。例えば、入力yと出力aを関連づけて記憶することで、入力yに異常な入力があった場合に出力aに故障が伝播する可能性があることが分かる。この情報は、システムの信頼性評価に用いることができる。
【0027】
故障伝播路表示部6は、故障伝播路記憶部5に記憶されている各ソフトウェアコンポーネントの故障伝播路と、システムを構成するソフトウェアコンポーネント間の接続関係とから、システム全体にわたる故障伝播路を表示部に表示させるための機能部である。
【0028】
〈仕様記述〉
図3は、図1に示してある入出力インタフェースおよび内部仕様を形式記述言語Alloyで記述したものである。ここでは、非常に単純な場合を例に採用しているが、より複雑な仕様も記述できる。例えば、複数の出力が同時に取るべき値の条件や、ある出力の時系列的な制約などを記述しても良いし、また、ソフトウェアコンポーネントの内部状態に依存して正常値の範囲が変わるようにしても良い。
【0029】
図4は、図3に示す仕様を基に異常仕様作成部3が作成した異常仕様である。図4は、入力のうちy(InY)を正常値以外に変更した場合の異常仕様である。基本的に、正常な仕様のうち入力に関する制約に対して論理否定を作用させることで、異常仕様の作成ができる。
【0030】
〈処理フロー〉
図5は、本実施形態におけるソフトウェアコンポーネントの信頼性評価処理方法の流れを示すフローチャートである。図5は、一つのソフトウェアコンポーネント、すなわち、一つの仕様記述に対する信頼性評価のフローである。
【0031】
ステップS2において、仕様情報取得部2が検査対象ソフトウェアコンポーネントのインタフェース仕様情報(正常仕様)を取得する。典型的には仕様記述ファイルの読み込みであるが、ADL等で記述された設計情報から自動的に仕様記述ファイルを作成してもか
まわない。
【0032】
ステップS4では、取得した正常仕様情報に基づいて、モデル検査部4を用いて網羅的な検証によるモデル検査を行う。これにより、インタフェース仕様として記述された要件をソフトウェアコンポーネントが満足するか否かが検証される。これは、従来のモデル検査部(Alloy Analyzer等)の利用方法である。この時点で反例が発見された場合には、仕様を再考する。
【0033】
ステップS6においてソフトウェアコンポーネントの入力のうち1つを選択し、ステップS8において選択した入力の仕様を正常値以外を示すように変更した異常仕様を異常仕様作成部3が作成する。ステップS10で、作成した異常仕様を用いてモデル検査を行う。このモデル検査の結果として、反例が見つかったか場合(S12−YES)は、ステップS14で、正常値以外にした入力と仕様を満たさない出力とを関連づけて、故障伝播路記憶部5に記憶する。例えば、入力yと出力aとを関連づけて記憶する。
【0034】
ステップS16で、このソフトウェアコンポーネントについて、全ての入力について入力仕様を正常値以外にしたか判断し、まだ正常値以外にしていない入力がある場合にはステップS6に戻る。次回の検査では、新たな入力だけを正常値以外にした異常仕様を作成する。例えば、入力xのみを正常値以外にしてモデル検査を行った後は、入力yのみを正常値以外にして、入力xについては正常な仕様にしてモデル検査を行う。全ての入力について正常値以外にしたモデル検査を実行した後は、このソフトウェアコンポーネントについての信頼性評価を終了する。
【0035】
このソフトウェアコンポーネントの信頼性評価は、一つのみのコンポーネントに対して行うだけでなく、システムを構成する複数のコンポーネントに対して順次行うことも好ましい。すなわち、各ソフトウェアコンポーネントに対して、図5のフローチャートに示す処理、具体的には、仕様情報の取得、異常仕様の作成、異常仕様に基づくモデル検査、および故障伝播路の記憶を実行する。その結果、各ソフトウェアコンポーネントについて、故障伝播路となる入力と出力の組合せが故障伝播路記憶部5に格納される。
【0036】
このようにして各ソフトウェアコンポーネントに対して異常の伝播路が算出されると、故障伝播路記憶部5に関連づけて記憶された入力と出力に基づいて、システム全体における故障伝播路を把握することができる。例えば、故障伝播路表示部6は、ある個所で発生した故障がどのように伝播するかを表示することができる。また、故障伝播路表示部6は、ある個所で検出された故障の真の原因となり得る個所を表示することもできる。このように、故障に対してシステム全体がどのように振る舞うかを明確にすることができるので、複数のソフトウェアコンポーネントから構成されるシステム(ソフトウェア)全体の評価にも用いることができる。例えば、安全性を損なうようなイベントが、どのソフトウェアコンポーネントの故障(バグ)によって引き起こされる可能性があるか等を分析できる。
【0037】
〈変形〉
ここでは、形式記述言語としてAlloy、モデル検査ツールとしてAlloy Analyzerを例として説明したが、入力仕様、内部仕様、出力仕様を記述可能であり、数学的手法によって上記の仕様が満足するかどうかを検証可能なツールであれば、任意の手法を採用することができる。たとえば、SPIN、Promela、SMV,LTSAなどを利用可能である。
【0038】
上記の説明では、取得した仕様に基づくモデル検査(図5のステップS4)と、入力を正常値以外に変更した仕様に基づくモデル検査(図5のステップS10)の両方を行って
いるが、前者は必ずしも行わなくてもかまわない。すなわち、作成した仕様が無矛盾であることが保障されているならば、異常仕様に基づくモデル検査のみを行って故障がどのように伝播するかだけを調べてもかまわない。
【0039】
また、上記では入力を一つずつ異常に設定する場合のみを説明したが、複数の入力を同時に異常に設定してモデル検査を行ってもかまわない。
【符号の説明】
【0040】
1 信頼性評価装置
2 仕様情報取得部
3 異常仕様作成部
4 モデル検査部
5 故障伝播路記憶部
6 故障伝播路表示部

【特許請求の範囲】
【請求項1】
モデルの形式検証機能を有するコンピュータが、
ソフトウェアコンポーネントの入力インタフェース仕様、出力インタフェース仕様、内部仕様を含む仕様情報を取得する仕様情報取得ステップと、
前記仕様情報中の入力インタフェース仕様を正常値以外に変更した仕様情報に従って、前記形式検証機能によって前記ソフトウェアコンポーネントを検証する検証ステップと、
前記検証ステップにおいて前記出力インタフェース仕様を満足しない出力値となる例が発見された場合には、前記正常値以外に変更した入力と、前記出力インタフェース仕様を満たさない出力とを、対応づけて記憶する故障伝播路記憶ステップと、
を実行する、ソフトウェアコンポーネントの信頼性評価方法。
【請求項2】
前記ソフトウェアコンポーネントは、複数の入力値をとるものであり、
前記検証ステップでは、入力値のそれぞれについて、入力インタフェース仕様を正常値以外に変更した仕様情報に従って、ソフトウェアコンポーネントの検証を行う、
請求項1に記載のソフトウェアコンポーネントの信頼性評価方法。
【請求項3】
前記コンピュータが、前記仕様情報取得ステップで取得した仕様情報から、入力値ごとに入力インタフェース仕様を正常値以外にした異常仕様情報を作成するステップ、をさらに実行する、
請求項2に記載のソフトウェアコンポーネントの信頼性評価方法。
【請求項4】
前記コンピュータが、
複数のソフトウェアコンポーネントを含むシステムの各ソフトウェアコンポーネントに対して、前記仕様情報取得ステップ、検証ステップ、故障伝播路記憶ステップを実行し、
前記故障伝播路記憶ステップにおいて関連づけて記憶された入力と出力とに基づいて、前記システムの故障伝播路を表示する、
請求項1〜3のいずれかに記載のソフトウェアコンポーネントの信頼性評価方法。
【請求項5】
記憶手段と、
ソフトウェアコンポーネントの入力インタフェース仕様、出力インタフェース仕様、内部仕様を含む仕様情報を取得する仕様情報取得手段と、
前記仕様情報中の入力インタフェース仕様を正常値以外に変更した仕様情報に従って、前記ソフトウェアコンポーネントを形式的検証によって検証し、該検証において前記出力インタフェース仕様を満足しない出力値となる例が発見された場合には、前記正常値以外に変更した入力と、前記出力インタフェース仕様を満たさない出力とを、対応づけて前記記憶手段に記憶する検証手段と、
を備える、ソフトウェアコンポーネントの信頼性評価装置。
【請求項6】
前記ソフトウェアコンポーネントは、複数の入力値をとるものであり、
前記検証手段は、入力値のそれぞれについて、入力インタフェース仕様を正常値以外に変更した仕様情報に従って、ソフトウェアコンポーネントの検証を行う、
請求項5に記載のソフトウェアコンポーネントの信頼性評価装置。
【請求項7】
前記仕様情報取得手段が取得した仕様情報から、入力値ごとに入力インタフェース仕様を正常値以外にした異常仕様情報を作成する異常仕様情報作成手段をさらに備える、
請求項6に記載のソフトウェアコンポーネントの信頼性評価装置。
【請求項8】
複数のソフトウェアコンポーネントを含むシステムの各ソフトウェアコンポーネントに対して、前記検証手段による検証を行い、
前記記憶手段において関連づけて記憶された入力と出力とに基づいて、前記システムの故障伝播路を表示する、
請求項5〜7のいずれかに記載のソフトウェアコンポーネントの信頼性評価装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−128727(P2012−128727A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−280602(P2010−280602)
【出願日】平成22年12月16日(2010.12.16)
【出願人】(502087460)株式会社トヨタIT開発センター (232)
【出願人】(000003207)トヨタ自動車株式会社 (59,920)
【Fターム(参考)】