(57)【特許請求の範囲】
【請求項１】
組込みシステムの物理的な構成要素である複数のデバイスをデバイス間の物理媒体で関係付けるとともにデバイスをノードとしデバイス間の関係を有向枝で表現したデバイスダイヤグラム、およびデバイスにおいて情報を処理するプロセスの単位ごとに入力情報と出力情報とで関係付けるとともにプロセスをノードとしプロセス間の関係を有向枝で表現したプロセスダイヤグラムで構成された情報フローダイヤグラムを記憶部に登録するダイヤグラム作成部と、記憶部に登録された情報フローダイヤグラムを追跡することにより、組込みシステムにおいて発生しうる異常現象と異常現象を発生させる原因との因果関係を障害シナリオとして抽出する分析機能部と、プロセスダイヤグラムにおけるプロセスの出力情報が正常から逸脱する場合に、当該出力情報により生じる現象を例外現象として入力する入力部と、分析機能部で抽出された障害シナリオを出力する出力部とを有するソフトウェア開発支援システムであって、情報フローダイヤグラムでは、プロセスダイヤグラムの各プロセスは、デバイスダイヤグラムの各デバイスのうちそれぞれのプロセスの機構となるデバイスと関係リンクで結合されており、ダイヤグラム作成部が、入力部から入力された例外現象を記憶部の情報フローダイヤグラムにおけるプロセスの出力情報に追加した後、分析機能部が、各プロセスの例外現象をそれぞれ起点として当該プロセスと関係リンクで結合されたデバイスを抽出し、当該デバイスの故障の現象に前記例外現象と同種の現象が存在する場合に、当該現象を例外条件として抽出するトップダウン分析を行うことによって、例外条件と例外現象との局所的な因果関係を、例外現象と例外条件とのいずれかを内容とするノードデータのリスト構造で表した障害シナリオ断片を生成して記憶部に格納し、さらに、障害シナリオに含まれる例外現象と内容が同じであるノードデータを含んだ障害シナリオ断片が記憶部に存在する場合に、当該障害シナリオ断片を障害シナリオに含めるボトムアップ分析を行うことによって、少なくとも１個の障害シナリオ断片を含む組込みシステム全体の障害シナリオを生成して出力部から出力することを特徴とするソフトウェア開発支援システム。
【請求項２】
前記分析機能部は、前記トップダウン分析において、障害シナリオ断片が複数個生成されると、前記ボトムアップ分析において、障害シナリオ断片を相互に連結することにより組込みシステム全体の障害シナリオを生成することを特徴とする請求項１記載のソフトウェア開発支援システム。
【請求項３】
前記デバイスダイヤグラムのデバイスは、要求仕様で規定される内的要素と、組込みシステムが動作する環境の外的要素とを含むことを特徴とする請求項１または請求項２記載のソフトウェア開発支援システム。
【請求項４】
前記ダイヤグラム作成部は、前記プロセスダイヤグラムに含まれるすべてのプロセスにプロセスごとに例外条件を追加することを特徴とする請求項１ないし請求項３のいずれか１項に記載のソフトウェア開発支援システム。
【請求項５】
前記分析機能部は、前記ボトムアップ分析の際に、障害シナリオ断片の先端のノードデータである故障の現象を起点に用いることを特徴とする請求項１ないし請求項４のいずれか１項に記載のソフトウェア開発支援システム。
【請求項６】
前記分析機能部は、着目する例外現象の原因となる例外条件を抽出するトップダウン分析の際に、着目する例外現象を生じるプロセスに関係リンクで結合されたデバイスに加えて、着目する例外現象の原因となるプロセスも遡って例外条件を求めることを特徴とする請求項１ないし請求項５のいずれか１項に記載のソフトウェア開発支援システム。
【請求項７】
前記ダイヤグラム作成部は、組込みシステムが回避すべき既知の現象を当該現象に関連するプロセスの出力情報に追加した後に、前記例外現象の追加を行うことを特徴とする請求項１ないし請求項６のいずれか１項に記載のソフトウェア開発支援システム。
【請求項８】
前記分析機能部は、着目する例外現象を原因として生じる現象を抽出するボトムアップ分析の際に、追跡したプロセスとそのプロセスの出力情報との組がすでに生成された障害シナリオ断片に含まれる場合は、当該障害シナリオ断片を用いて追跡を省略することを特徴とする請求項１ないし請求項７のいずれか１項に記載のソフトウェア開発支援システム。
【請求項９】
前記分析機能部は、着目する例外現象の原因となる例外条件を抽出するトップダウン分析の際に、前記情報フローダイヤグラムにおいて例外条件を追跡する有向枝が存在しない場合と、前記情報フローダイヤグラムにおいて例外条件を追跡する有向枝が存在しても当該例外条件は生じないことが他に判断される場合とには、当該例外条件を入力情報とするプロセスとそのプロセスに関係リンクで結合されたデバイスとに戻って他の例外条件を追跡することを特徴とする請求項１ないし請求項８のいずれか１項に記載のソフトウェア開発支援システム。
【請求項１０】
前記分析機能部は、着目する例外現象を原因として生じる現象を抽出するボトムアップ分析の際に、着目するプロセスに与えた情報から得られる結果としての出力情報が例外現象ではないことが他に判断される場合には、当該プロセスに与えた情報では例外現象が生じないと判断し、当該プロセスに情報を与えるプロセスに戻ってボトムアップ分析を行うことを特徴とする請求項１ないし請求項９のいずれか１項に記載のソフトウェア開発支援システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込みシステムのソフトウェアを開発するにあたり、組込みシステムの要求仕様に基づいて、組込みシステムの誤作動、誤操作などを考慮した例外条件を抽出し、ソフトウェアの設計仕様への例外条件の組み入れを支援するソフトウェア開発支援システムに関するものである。
【背景技術】
【０００２】
近年、マイクロコンピュータを組み込んだ機器ないし製品が電化製品等において種々提供されている。ハードウェアを制御するマイクロコンピュータを組み込んだこの種の組込みシステムでは、機器動作の様々な条件に応じた制御が可能であり、機器の高機能化に貢献している。しかしながら、組込みシステムを構成するマイクロコンピュータを動作させるためのソフトウェアは、機器が高機能化するほど複雑になり、その一方で、顧客ニーズの多様化に伴う多品種少量生産や機器のライフサイクルの短縮化に伴って、ソフトウェアの開発期間の短縮を要望する圧力が高まっている。このような事情から、組込みシステムのソフトウェアの品質の維持には多大な労力が必要になっている。
【０００３】
また、組込みシステムでは、内蔵したソフトウェアを意識することなく機器ないし製品をどのようなユーザでも使用できることが要求され、また、機器ないし製品の使用環境はユーザによって様々であるから、どのような使用環境であっても、安全性、信頼性、保全性を確保することが期待される。
【０００４】
組込みシステムのソフトウェアを開発するにあたっては、システムが提供すべき機能の情報と、安全基準などにより決まるシステムが回避すべき障害の情報とを含む要求仕様が与えられ、要求仕様に対する要求分析を行うことによって、要求仕様を満たすのに必要なハードウェアおよびソフトウェアモジュールが決定される。これらのハードウェアおよびソフトウェアモジュールは、要求仕様を満たすための必須要素である。このように要求仕様のみから決まる必須要素を正常系の要素と呼ぶことにする。
【０００５】
組込みシステムに実際に用いるソフトウェアを作成するためのシステム定義のためには、機器ないし製品を使用するユーザによる誤操作、機器ないし製品の使用環境あるいはユーザの誤操作に起因する誤作動などを考慮して、要求仕様から逸脱させる条件についても配慮する必要がある。
【０００６】
ソフトウェアモジュールには安全基準などにより決まる正常系の要素も含まれるが、多くは正常系の要素ではない。システム設計を行う前には、組込みシステムの動作を要求仕様から逸脱させる例外条件を分析し、例外条件が生じても要求仕様を逸脱しないための非正常系の要素を正常系の要素とともに抽出することが必要である。
【０００７】
しかしながら、非正常系の要素を抽出するには、ハードウェアに関する知識とシステムの動作環境に関する知識とが必要になるから、一般のソフトウェア開発者にとっては例外条件を見出して分析することは容易ではない。したがって、例外条件の見落としによる設計仕様の不備が、開発見積もりの誤りやソフトウェア設計のやり直しによる開発遅れにつながり、場合によっては、組込みシステムの製品の品質や安全性に問題をもたらす場合もある。
【０００８】
ところで、ソフトウェアの障害を分析するシステムが従来提供されている（たとえば、特許文献１参照）。このシステムはソフトウェアにおいて発生した障害の名称や、障害が発生した環境、症状や対応者が特定した発生原因、登録した日付などを登録し、これら登録した情報を用いて、障害の分析やグラフ化などを自動的に実行し、発生原因の割合の分析を行うものである。
【０００９】
また、商品出荷後におけるフィールド稼働後の障害情報の管理を含めてハードウェアの障害を多面的に分析するシステムが提供されている（特許文献２）。
【００１０】
特許文献１に示されるシステムはソフトウェアの障害管理を行うシステムであるが、ソフトウェア作成後における障害分析に使用するものであって、ソフトウェアを作成するに当たって障害等の分析を行い、作成しようとするソフトウェアの仕様に盛り込むというものではない。
【００１１】
また、特許文献２に示されるシステムもフィールド稼働後の障害管理を目的とするものであり、特許文献１と同様に、ソフトウェアを作成するにあたり、障害等の分析を行い作成しようとするソフトウェアの仕様に盛り込むというものではない。
【００１２】
これに対して、本発明者らは、ハードウェアの故障、異常動作、劣化、動作環境におけるオーバーロード、誤操作、誤使用、誤動作など正常系の要素から逸脱する非正常系の要素に対応するための仕様の洗い出しを支援することにより、開発対象のソフトウェアの品質改善を図ることができるソフトウェア開発支援システムを提案した（非特許文献１）。
【特許文献１】特開２０００−２９３１１１号公報
【特許文献２】特開２００３−２３３６８６号公報
【非特許文献１】新屋敷泰史，三瀬敏郎，江浦洋平，畑中久典，橋本正明，鵜林尚靖，片峰恵一，中谷多哉子「組込みソフトウェア非正常系の概念モデル」；情報処理学会研究報告  Ｖｏｌ．２００４，Ｎｏ．８７，ｐ．１０５（２００４）
【発明の開示】
【発明が解決しようとする課題】
【００１３】
ところで、上述したソフトウェア開発支援システムでは、あらかじめ与えられた重大リスクの発生の可能性を分析するトップダウン分析と、特定のデバイスで発生した故障パターンから重大リスクが生じる可能性を分析するボトムアップ分析とを個別に独立して実施している。トップダウン分析では、分析の起点となる重大リスクをユーザが入力する必要があり、正確なトップダウン分析には入力する重大リスクの種類が必要十分でなければならない。一方、ボトムアップ分析では、故障パターンの影響が波及する可能性が多岐に亘るから、それだけ分析に要する処理時間が長くなる。
【００１４】
また、トップダウン分析を行った後に、ボトムアップ分析い、両者の結果を比較すれば、ソフトウェア開発に必要な仕様を詳細に抽出することができると考えられるが、トップダウン分析とボトムアップ分析との両方を単純に行うと、分析に要する処理時間がさらに長くなるという問題を生じる。
【００１５】
本発明は上記事由に鑑みて為されたものであり、その目的は、トップダウン分析を局所的に行うことにより障害シナリオ断片を生成するとともに、ボトムアップ分析にあたっては、障害シナリオ断片による制約条件を課すことにより分析の範囲を制限して分析に要する処理時間の増加を抑制し、しかも障害シナリオ断片を結合した障害シナリオを生成することにより、局所的な分析結果から全体の分析結果を得ることを可能として、ソフトウェア開発に必要な仕様を詳細に洗い出すことを可能にしたソフトウェア開発支援システムを提供することにある。
【課題を解決するための手段】
【００１６】
請求項１の発明は、組込みシステムの物理的な構成要素である複数のデバイスをデバイス間の物理媒体で関係付けるとともにデバイスをノードとしデバイス間の関係を有向枝で表現したデバイスダイヤグラム、およびデバイスにおいて情報を処理するプロセスの単位ごとに入力情報と出力情報とで関係付けるとともにプロセスをノードとしプロセス間の関係を有向枝で表現したプロセスダイヤグラムで構成された情報フローダイヤグラムを記憶部に登録するダイヤグラム作成部と、記憶部に登録された情報フローダイヤグラムを追跡することにより、組込みシステムにおいて発生しうる異常現象と異常現象を発生させる原因との因果関係を障害シナリオとして抽出する分析機能部と、プロセスダイヤグラムにおけるプロセスの出力情報が正常から逸脱する場合に、当該出力情報により生じる現象を例外現象として入力する入力部と、分析機能部で抽出された障害シナリオを出力する出力部とを有するソフトウェア開発支援システムであって、情報フローダイヤグラムでは、プロセスダイヤグラムの各プロセスは、デバイスダイヤグラムの各デバイスのうちそれぞれのプロセスの機構となるデバイスと関係リンクで結合されており、ダイヤグラム作成部が、入力部から入力された例外現象を記憶部の情報フローダイヤグラムにおけるプロセスの出力情報に追加した後、分析機能部が、各プロセスの例外現象をそれぞれ起点として当該プロセスと関係リンクで結合されたデバイスを抽出し、当該デバイスの故障の現象に前記例外現象と同種の現象が存在する場合に、当該現象を例外条件として抽出するトップダウン分析を行うことによって、例外条件と例外現象との局所的な因果関係を、例外現象と例外条件とのいずれかを内容とするノードデータのリスト構造で表した障害シナリオ断片を生成して記憶部に格納し、さらに、障害シナリオに含まれる例外現象と内容が同じであるノードデータを含んだ障害シナリオ断片が記憶部に存在する場合に、当該障害シナリオ断片を障害シナリオに含めるボトムアップ分析を行うことによって、少なくとも１個の障害シナリオ断片を含む組込みシステム全体の障害シナリオを生成して出力部から出力することを特徴とする。
【００１７】
請求項２の発明では、請求項１の発明において、前記分析機能部は、前記トップダウン分析において、障害シナリオ断片が複数個生成されると、前記ボトムアップ分析において、障害シナリオ断片を相互に連結することにより組込みシステム全体の障害シナリオを生成することを特徴とする。
【００１８】
請求項３の発明では、請求項１または請求項２の発明において、前記デバイスダイヤグラムのデバイスは、要求仕様で規定される内的要素と、組込みシステムが動作する環境の外的要素とを含むことを特徴とする。
【００１９】
請求項４の発明では、請求項１ないし請求項３のいずれかの発明において、前記ダイヤグラム作成部は、前記プロセスダイヤグラムに含まれるすべてのプロセスにプロセスごとに例外条件を追加することを特徴とする。
【００２０】
請求項５の発明では、請求項１ないし請求項４のいずれかの発明において、前記分析機能部は、前記ボトムアップ分析の際に、障害シナリオ断片の先端のノードデータである故障の現象を起点に用いることを特徴とする。
【００２１】
請求項６の発明では、請求項１ないし請求項５のいずれかの発明において、前記分析機能部は、着目する例外現象の原因となる例外条件を抽出するトップダウン分析の際に、着目する例外現象を生じるプロセスに関係リンクで結合されたデバイスに加えて、着目する例外現象の原因となるプロセスも遡って例外条件を求めることを特徴とする。
【００２２】
請求項７の発明では、請求項１ないし請求項６のいずれかの発明において、前記ダイヤグラム作成部は、組込みシステムが回避すべき既知の現象を当該現象に関連するプロセスの出力情報に追加した後に、前記例外現象の追加を行うことを特徴とする。
【００２３】
請求項８の発明では、請求項１ないし請求項７のいずれかの発明において、前記分析機能部は、着目する例外現象を原因として生じる現象を抽出するボトムアップ分析の際に、追跡したプロセスとそのプロセスの出力情報との組がすでに生成された障害シナリオ断片に含まれる場合は、当該障害シナリオ断片を用いて追跡を省略することを特徴とする。
【００２４】
請求項９の発明では、請求項１ないし請求項８のいずれかの発明において、前記分析機能部は、着目する例外現象の原因となる例外条件を抽出するトップダウン分析の際に、前記情報フローダイヤグラムにおいて例外条件を追跡する有向枝が存在しない場合と、前記情報フローダイヤグラムにおいて例外条件を追跡する有向枝が存在しても当該例外条件は生じないことが他に判断される場合とには、当該例外条件を入力情報とするプロセスとそのプロセスに関係リンクで結合されたデバイスとに戻って他の例外条件を追跡することを特徴とする。
【００２５】
請求項１０の発明では、請求項１ないし請求項９のいずれかの発明において、前記分析機能部は、着目する例外現象を原因として生じる現象を抽出するボトムアップ分析の際に、着目するプロセスに与えた情報から得られる結果としての出力情報が例外現象ではないことが他に判断される場合には、当該プロセスに与えた情報では例外現象が生じないと判断し、当該プロセスに情報を与えるプロセスに戻ってボトムアップ分析を行うことを特徴とする。
【発明の効果】
【００２６】
請求項１の発明の構成によれば、情報フローダイヤグラムにおいてプロセスの例外現象を起点として当該プロセスと関係リンクで結合されたデバイスを抽出し、デバイスの故障の現象を用いたトップダウン分析により例外条件と例外現象との局所的な因果関係の障害シナリオ断片を抽出し、さらに、障害シナリオのノードデータと同じ内容のノードデータを持つ障害シナリオ断片を障害シナリオに含めるボトムアップ分析を行うことにより、障害シナリオを生成するから、トップダウン分析の結果として得られる障害シナリオ断片を用いてボトムアップ分析を行うことにより、トップダウン分析において生成される障害シナリオ断片では異常現象を引き起こす可能性がない現象が含まれず、この障害シナリオ断片をボトムアップ分析で追跡することにより、異常現象に関わりのない現象を追跡の対象外とすることで、トップダウン分析とボトムアップ分析とを個別に行う場合に比較すると、同程度の分析精度を確保しながらも処理の高速化を図ることができる。
【００２７】
請求項２の発明の構成によれば、トップダウン分析により複数の障害シナリオ断片が得られたときに、ボトムアップ分析において障害シナリオ断片を相互に連結することによって、因果関係が重複しないように障害シナリオを生成することが可能になる。
【００２８】
請求項３の発明の構成によれば、要求仕様で規定される内的要素だけではなく、組込みシステムの使用環境に関する外的要素をデバイスとして含むことにより、内的要素であるデバイスにより実施されるすべてのプロセスに入力情報と出力情報とを規定することが可能になる。
【００２９】
請求項４の発明の構成によれば、すべてのプロセスにプロセスごとに例外条件を追加するから、総当たり的に例外条件を設定することになり、障害シナリオの見落としをより確実に防止することができる。
【００３０】
請求項５の発明の構成によれば、障害シナリオ断片のすべてのノードデータについてそれぞれを起点にしてボトムアップ分析を行う場合に比較すると、ボトムアップ分析の際に同じ因果関係を重複して追跡するのを防止しながらも、ほぼ網羅的に因果関係の追跡を行うことができるから、ボトムアップ分析に要する時間の短縮につながる。
【００３１】
請求項６の発明の構成によれば、トップダウン分析の際に、プロセスダイヤグラムとデバイスダイヤグラムとを遡って例外現象の原因である例外条件を求めるから、例外現象と例外条件との因果関係を、デバイスとプロセスへの入力情報との単独または組み合わせによって表すことができ、プロセスのみで分析する場合よりもより広範に例外条件を抽出することができる。
【００３２】
請求項７の発明の構成によれば、組込みシステムが回避すべき既知の障害である現象を出力情報に含めておくことができ、トップダウン分析の際に例外現象とともに障害シナリオ断片の生成に利用することが可能になる。したがって、既知の障害である現象を、例外条件に対する処理と同じトップダウン分析とボトムアップ分析とに組み込んで障害シナリオを生成することができる。
【００３３】
請求項８の発明の構成によれば、ボトムアップ分析の際にすでに生成された障害シナリオ断片に含まれるプロセスについては、因果関係がすでに明らかになっているものと判断し、逐次的に追跡するのを省略するから、処理速度の向上が期待できる。
【００３４】
請求項９の発明の構成によれば、トップダウン分析において情報フローダイヤグラムの中で現象から原因に遡る有向枝が存在しないか、現象から原因に遡る必要がないと判断されている場合には、当該現象を入力情報とするプロセスとそのプロセスに関係リンクで結合されたデバイスとに戻って例外条件を追跡するから、トップダウン分析の際に複数の分岐を有するプロセスについて各分岐ごとのトップダウン分析が可能になる。
【００３５】
請求項１０の発明の構成によれば、ボトムアップ分析において情報フローダイヤグラムの中で着目するプロセスに与えた情報から得られる結果としての出力情報が例外現象ではないと判断できるときに、当該プロセスに情報を与えるプロセスに戻ってボトムアップ分析を行うから、ボトムアップ分析の際に複数の分岐を有するプロセスについて各分岐ごとのボトムアップ分析が可能になる。
【発明を実施するための最良の形態】
【００３６】
本発明のソフトウェア開発支援システムは、組込みシステムに用いる組込み計算機（組込み用マイクロコンピュータ）のソフトウェア（プログラム）開発を支援することを目的とするものであり、とくに、組込みシステムが提供すべき機能の情報と、安全基準などにより決まるシステムが回避すべき障害の情報とを含む要求仕様のみから決まる正常系の要素に付加する非正常系の要素の抽出を支援するものである。
【００３７】
非正常系の要素は、ユーザの誤操作や動作環境に伴う誤動作に対処するのに必要な要素であり、正常系の要素と非正常系の要素とを合わせることによって、ソフトウェア仕様が決定されるものである。ただし、非正常系の要素は、従来は熟練した開発者の能力に依存して抽出されていたものであり、非正常系の要素の抽出には組込みシステムの開発者の能力によるばらつきがあった。
【００３８】
以下に説明する実施形態では、組込みシステムを構築しているハードウェアが、複数個のデバイスを要素として構成されるとともに、デバイス間が力、熱、光、音などの物理媒体により関連付けられているとみなしている。また、各デバイスは物理媒体で与えられた入力情報を処理して出力情報を得る機能を持ち、この機能をプロセスと呼ぶ。１つのデバイスは少なくとも１つのプロセスを備える。組込みシステムはデバイスとプロセスを構成要素とし、デバイス間の関係とプロセス間の関係とに加え、デバイスとプロセスとの関係によって機能を表すことができる。
【００３９】
ところで、組込みシステムのシステム要求では、デバイスやプロセス間の依存性の検討が重要であることが指摘されている。たとえば、デバイスに与えられる情報が、誤動作や誤操作により想定していないパターンやタイミングで発生したときに、デバイスは他のデバイスに誤った情報を伝達したり、デバイスにおいて情報を処理するプロセスで得られる出力情報に誤りが生じる可能性がある。
【００４０】
各構成要素の単位で捉えると、この種の誤動作は、各構成要素での情報の入力→情報の変換→情報の出力という３過程において、情報に誤りが生じることによって生じると考えることができる。すなわち、システムの誤動作の原因は、構成要素の間で情報が誤って伝達ないし処理されることであると考えられる。組込みシステムで生じる障害も誤動作により引き起こされるものとみなせば、障害もまた情報が誤って伝達ないし処理されることによって引き起こされると捉えることができる。
【００４１】
上述したように、構成要素間の依存性に起因して、言い換えると構成要素間の情報の伝達に起因して、情報の伝達に誤りが生じ、情報の伝達の誤りによって誤動作や障害が生じると言える。このように障害の発生は、情報伝達に関する因果関係の連鎖として示すことができる。以下では、このように障害を発生させる情報伝達の因果関係の連鎖を、「障害シナリオ」と呼ぶことにする。
【００４２】
情報伝達の因果関係は、ハードウェアについては、デバイスをノードとし、デバイスの間で情報を伝達する物理媒体（以下、「キャリア」という）を有向枝とする形の有向グラフとして表現することができ、デバイスで情報を変換する機能は、情報の変換（すなわち、「プロセス」）をノードに持ち、情報の流れを示す有向枝を持つ形の有向グラフとして表現することができる。このように表現した有向グラフを、情報フローダイヤグラムＩＦＤと呼ぶ。情報フローダイヤグラムＩＦＤは、デバイスをノードに持つデバイスダイヤグラムＤＤと、プロセスをノードに持つプロセスダイヤグラムＰＤとで構成される（図５、図６参照）。
【００４３】
キャリアは情報を伝達する物理媒体であり、デバイスの用いる媒体が電気である場合には、電圧、電流、周波数などの媒体におけるパラメータの種類を意味し、デバイスの用いる媒体が電気以外の場合には、熱、光、摩擦力などの物理量の種類を意味する。もちろん、電気以外の媒体でも単位を持つ諸量（温度、光の強度や光量）をキャリアに用いることができる。
【００４４】
プロセスダイヤグラムＰＤは、アクティビティという単位で体系付けた機能モデルとして知られているＩＤＥＦ０という機能モデリング手法に基づいて記述している。ただし、ＩＤＥＦ０をそのまま用いるのではなく、プロセスダイヤグラムＰＤでは、アクティビティに代えてプロセスを単位とする。
【００４５】
ＩＤＥＦ０では、各アクティビティは、入力された情報を「機構」（メカニズム）と呼ばれる変換規則により変換して情報を出力する。また、入力された情報を機構により処理する際の条件を「制約」（コントロール）と呼んでいる。プロセスダイヤグラムＰＤにおける各プロセスもまた入力された情報を、制約の下で機構を適用して出力の情報に変換するものであり、入力される情報と出力される情報とが有向枝によって表される。この点でプロセスダイヤグラムＰＤはＩＤＥＦ０と類似しているが、プロセスダイヤグラムＰＤでは、入力情報を処理（変換）して出力情報を得る機構がデバイスになる。したがって、各プロセスは、機構となるデバイスとの間が関係リンクで結合される。
【００４６】
以下の実施形態では、主として上述した障害シナリオの抽出を支援することを目的として、コンピュータを用いた作業を行うことについて説明する。障害シナリオを抽出する作業にあたっては、コンピュータのモニタ装置の画面に情報フローダイヤグラムＩＦＤを表示する。デバイスダイヤグラムＤＤとプロセスダイヤグラムＰＤとは一画面上に表示され、デバイスダイヤグラムＤＤとプロセスダイヤグラムＰＤとの間でノード間を連結する有向枝を設定することにより、デバイスとプロセスとの間の情報の流れが示される。
【００４７】
以上の説明により、デバイス、プロセス、キャリア、機構、制約、障害シナリオ、情報フローダイヤグラムＩＦＤ（情報フローダイヤグラム）、デバイスダイヤグラムＤＤ、プロセスダイヤグラムＰＤ、正常系の要素、非正常系の要素の概念を簡単に説明したが、これらの具体的な内容については、以下の実施形態の説明においてさらに明確にする。
【００４８】
また、以下の説明では、正常系の要素が抽出され、正常系の情報フローダイヤグラムＩＦＤはすでに生成されているものとし、正常系の情報フローダイヤグラムＩＦＤにおけるプロセスダイヤグラムＰＤにプロセスを追加することによって、非正常系の要素を抽出し、非正常系の要素を正常系の要素と併せて用いることによって、障害シナリオを生成する技術について説明する。
【００４９】
（実施形態１）
本実施形態では、組込みシステムとして、図２に示すような街灯システムを例に示す。この街灯システムは、主柱１の上端部に光源を内蔵した灯具２が取り付けられ、周囲の明るさを検出する昼光センサ３を備えたボックス４が主柱１の中間の高さ位置に取り付けられたものである。
【００５０】
本実施形態では、灯具２の詳細構造については言及せず、主柱１に機械的に結合されている点と、灯具２に内蔵した照明回路への電圧の印加の有無によって光源が点消灯する点とにのみ着目する。したがって、以下では、灯具２を照明回路として説明する。すなわち、以下において照明回路２は、灯具自身と灯具に内蔵した回路との両方を意味する。
【００５１】
昼光センサ３は、図３に示すように、組込み計算機（以下、「ＣＰＵ」と略称する）５とともに回路基板（図示せず）に実装され、この回路基板がボックス４に収納される。また、回路基板は信号ケーブルにより照明回路２と接続される。つまり、街灯システムは、電気回路を構成する要素として、昼光センサ３とＣＰＵ５と照明回路２とを備える。
【００５２】
上述した街灯システムは、昼光センサ３で検出された周囲の明るさによって、ＣＰＵ５が昼夜の別を判断し、照明回路２の点消灯を行うことが基本的な機能であり、夜間には照明回路２を点灯させて街路６を照明することにより通行人の安全を確保し、昼間には照明回路２を消灯させることにより無駄な電力消費を削減する機能を有する。
【００５３】
上述した街路システムを要求仕様で規定する内的要素としてのデバイスは、上述の説明から明らかなように、主柱１、照明回路２、昼光センサ３、ボックス４、ＣＰＵ５の５種類になる。また、各デバイスに入力されるキャリア（入力キャリア）と、各デバイスが出力するキャリア（出力キャリア）とは、表１のように考えることができる。
【００５４】
【表１】
0005215606.tif 000002
【００５５】
たとえば、昼光センサ３というデバイスでは、入力キャリアに圧力、光、熱、摩擦力があり、出力キャリアには電圧がある。昼光センサ３は、基本的には、光を入力キャリアとし、受光強度に応じた電圧を出力キャリアとするものである。また、温度によって特性が変化したり、圧力を加えることによって破損することから、出力キャリアである電圧は圧力や温度に依存性があるから圧力や熱も入力キャリアになる。さらに、昼光センサ３をボックス２に取り付けるにあたっては、昼光センサ３を固定するためのねじの摩擦力が固定強度に関係するから、摩擦力も昼光センサ３のキャリアになる。
【００５６】
表１に示すデータは、「デバイス」の種類、デバイスに関する「入力キャリア」と「出力キャリア」、各デバイスに関する故障について類型化した「故障パターン」と、故障パターンによる「故障の現象」と、その現象による「影響」との６つ組を登録したデバイステーブルＴｂ１である。「故障パターン」は、「故障の現象」を生じさせた原因に相当し、「影響」は「故障の現象」により生じる障害に関するデータが含まれる。「デバイス」「入力キャリア」「出力キャリア」は要求仕様から抽出されるが、「故障パターン」「故障の現象」「影響」は、街灯システムや他の組込みシステムを開発している熟練者へのインタビューや、過去に生じた故障事例のドキュメントなどにより獲得される。
【００５７】
たとえば、照明回路２に関して言えば、「故障パターン」「故障の現象」「影響」は、街灯システムの設計者ばかりではなく、他の屋外用の照明器具を設計する設計者などへのインタビューによっても獲得される。
【００５８】
このような類型化した知識（上述した６つ組）は、街灯システムとして一括して用いるだけではなく、デバイスごとに単独で用いることが可能であり、他の組込みシステムを構築する際にはデバイス単位で他の組込みシステムの設計を支援する知識として採用することができる。したがって、他に主柱１を用いる組込みシステムがあれば、その組込みシステムを設計するにあたって、街灯システムの主柱１に関する知識を利用することが可能である。
【００５９】
本実施形態では、表１に示したデバイスに関する知識のほか、表２のように「キャリア」に関する知識も用いる。表２に示すデータは、「キャリア」の種類、キャリアの「属性」、各キャリアに関する故障について類型化した「故障パターン」と、その要因による「故障の現象」と、その現象による「影響」との５つ組を登録したキャリアテーブルＴｂ２である。「キャリア」は要求仕様から抽出されるが、「故障パターン」「故障の現象」「影響」は、街灯システムや他の組込みシステムを開発している熟練者へのインタビューや、過去に生じた故障事例のドキュメントなどにより獲得される。
【００６０】
【表２】
0005215606.tif 000003
【００６１】
本実施形態において用いるソフトウェア開発支援システムは、図１に示すように、マイクロプロセッサからなる演算処理部１０と、演算処理部１０を動作させるプログラムおよびデバイステーブルＴｂ１やキャリアテーブルＴｂ２が格納される記憶部１１と、ユーザインターフェイス部（以下、「ユーザＩ／Ｆ部」と略称）１２と、を備えるコンピュータシステムにより構成される。記憶部１１には、後述する情報フローダイヤグラムが格納され、演算処理部１０は記憶部１１に格納された情報フローダイヤグラムを検索することにより後述の障害シナリオを生成する。ユーザＩ／Ｆ部１２は、キーボードやポインティングデバイス、あるいは他装置からのデータを読み込む装置（外部装置接続用のインターフェイスや光学ディスク装置）からなる入力手段（入力部）１２ａと、モニタ装置からなる出力手段（出力部）１２ｂとを備える。
【００６２】
演算処理部１０は、ソフトウェア開発支援システムのユーザが入力手段１２ａを用いて入力したデータに基づいて、図５に示すような情報フローダイヤグラムＩＦＤを作成するためのダイヤグラム作成部１０ａと、出力手段１２ｂであるモニタ装置に表示された情報フローダイヤグラムＩＦＤを用い入力手段１２ａで必要なデータを入力する対話型の処理によって障害シナリオを抽出する分析機能部１０ｂとを有している。分析機能部１０ｂは、記憶部１１に格納されたデバイステーブルＴｂ１やキャリアテーブルＴｂ２を用いて障害シナリオを生成する。
【００６３】
ダイヤグラム作成部１０ａは、ソフトウェア開発支援システムのユーザが情報フローダイヤグラムＩＦＤを作成するのに必要な編集機能を備え、情報フローダイヤグラムＩＦＤを構成するノードおよび有向枝のシンボルや他のシンボルの入力や編集を可能にし、また必要なテキストデータの入力や編集を可能にする。ここに、編集とは修正や削除や位置の移動の作業を意味する。要するに、ダイヤグラム作成部１０ａでは、モニタ装置である出力手段１２ｂの画面にダイアグラム作成画面を表示し、ダイアグラム作成画面において、ポイントデバイスやキーボードなどの入力手段１２ａを用いて情報フローダイヤグラムＩＦＤの所要データをユーザが入力することで、情報フローダイヤグラムＩＦＤを作成するとともに必要な編集を施すことが可能になっている。
【００６４】
デバイスダイヤグラムＤＤにおいて、デバイスＤｖは、図４（ａ）に示すように、矩形のシンボルで表され、上下３段の欄を設けてある。各欄には、それぞれデバイスの名称、デバイスの属性、デバイスで生じる可能性のある故障パターンを記述する。デバイスＤｖを表すに書き込むテキストデータは、デバイステーブルＴｂ１およびキャリアテーブルＴｂ２を参照して入力される。デバイスの属性は、デバイスに関連するキャリア（入力キャリア、出力キャリア）のうちで、分析機能部１０ｂによる障害シナリオの推論に必要となるキャリアの「属性」が用いられる。また、故障パターンは、デバイステーブルＴｂ１における各デバイスに対応する「故障パターン」が用いられる。
【００６５】
ユーザは、デバイスＤｖを表すシンボルを画面上に配置し、各シンボルにテキストデータを与えた後に、各デバイス間の物理的な結合関係を示すために、関連するデバイスＤｖを表すシンボルの間を矢印状の有向枝Ｌｎ１を用いて結合する。有向枝Ｌｎ１の向きは、デバイス間の情報の流れの向きとする。また、デバイス間で情報を伝達するキャリアＣｒは、図４（ｂ）に示すように、菱形のシンボルを用いて表す。各シンボルには、キャリアＣｒの名称を付記し、さらにキャリアＣｒの属性を付記する。
【００６６】
一方、プロセスダイヤグラムＰＤにおけるプロセスＰｒは、図４（ｃ）に示すように、矩形のシンボルを用いて表される。シンボルの中にはプロセスＰｒの機能がテキストデータとして記述される。プロセスＰｒを表すシンボルに書き込むテキストデータは、デバイステーブルＴｂ１およびキャリアテーブルＴｂ２を参照して入力される。また、プロセスに入力される情報と出力される情報とが必要に応じて矢印状の有向枝Ｌｎ２を用いて表され、デバイスダイヤグラムＤＤの各デバイスＤｖとの間は、各デバイスＤｖの処理を機構とする矢印状の関係リンクＬｎ３で連結される。
【００６７】
プロセスダイヤグラムＰＤはＩＤＥＦ０に基づいているから、ＩＤＥＦ０と同様に、階層的に詳細化して表現することが可能であり、プロセスダイヤグラムＰＤの階層化に伴ってデバイスダイヤグラムＤＤにおいてもデバイスをサブシステムにまとめて階層化するように表現することが可能である。
【００６８】
以下では、上述したダイヤグラム作成部１０ａと分析機能部１０ｂとを用いて障害シナリオを対話的に生成する手順について説明する。デバイステーブルＴｂ１およびキャリアテーブルＴｂ２は、記憶部１１にあらかじめ登録されているものとする。
【００６９】
障害シナリオを生成する際には、（正常系の情報フローダイヤグラムの入力）→（例外現象の列挙）→（トップダウン分析）→（ボトムアップ分析）→（障害シナリオの出力）の各作業を行う。本発明の特徴は、（トップダウン分析）→（ボトムアップ分析）→（障害シナリオの出力）の手順にある。以下では、各作業について詳述する。
【００７０】
（正常系の情報フローダイヤグラムの入力）
まず、入力手段１２ａと出力手段１２ｂとを用いて要求仕様に従うデバイスおよびプロセスを対話的に入力し、正常系の情報フローダイヤグラムＩＦＤを作成する。ここで、街灯システムの要求仕様で与えられる内的要素としてのデバイスは、上述のように、主柱１、照明回路２、昼光センサ３、ボックス４、ＣＰＵ５の５要素になる。ただし、正常系の要素として、図５に示すように、「太陽」と「街路」とが付加される。すなわち、組込みシステムの構成要素は、組込みシステムを構成する内的要素のほかに、組込みシステムが動作する環境の外的要素として街路６と太陽７（図１参照）とがデバイスに含まれる。外的要素のデバイスは、内的要素のいずれかのデバイスに対して有向枝Ｌｎ１を用いて結合される。
【００７１】
具体的には、昼光センサ３にキャリア（光）を入力させる「太陽」と、照明回路２がキャリア（光）を出力する相手先である「街路」とを外的要素として記述している。したがって、街灯システムを構成する内的要素であるすべてのデバイスに入力情報と出力情報とを与えることができる。このように、正常系の要素としては、組込みシステムを構成するデバイスだけではなく、組込みシステムの外部世界から組込みシステムの基本動作に関連するキャリアを入力する要素と、組込みシステムの基本動作において組込みシステムが外部世界に発生するキャリアを受け取る要素とを、デバイスダイヤグラムＤＤのデバイスとして記述する。このように太陽と街路とをデバイスとして扱うから、表３のように、他のデバイスと同様のデバイステーブルＴｂ１を設定する。
【００７２】
【表３】
0005215606.tif 000004
【００７３】
図５は正常系の要素からなる情報フローダイヤグラムＩＦＤであって、デバイス間の基本的な情報の流れは、太陽→（光）→昼光センサ３→（電圧）→ＣＰＵ５→（電圧）→照明回路２→（光）→街路になり（括弧内はキャリアを示す）、主柱１やボックス４と昼光センサ３、ＣＰＵ５、照明回路２は、機械的結合を行う属性としてのねじによって作用する摩擦力がキャリアになる。このとき、プロセスダイヤグラムＰＤも同時に入力し、デバイスダイヤグラムＤＤの各デバイスとプロセスダイヤグラムＰＤの各プロセスを関係リンクＬｎ３により結合する。
【００７４】
次に、開発対象の組込みシステム（ここでは、街灯システム）が回避すべき現象（以下、「障害現象」という）を情報フローダイヤグラムＩＦＤに追記する。この種の障害現象は、通常は安全基準などによって与えられる要求仕様の一部である。ここでは、表４に示す「燃焼」と「感電」を障害現象として入力するものとする。障害現象は、その障害現象を引き起こすキャリアとともにデータテーブルとして記憶部１１に格納される。つまり、記憶部１１には、表４に示す形式の障害テーブルＴｂ３を格納する記憶領域が設けられており、ユーザは入力手段１２ａおよび出力手段１２ｂを用いて障害現象を障害テーブルＴｂ３に書き込む。障害テーブルＴｂ３の作成は、障害現象を情報フローダイヤグラムＩＦＤに追記する前であればいつ行ってもよい。
【００７５】
【表４】
0005215606.tif 000005
【００７６】
障害現象の追記は、演算処理部１０の分析機能部１０ｂが表１のデバイステーブルＴｂ１を参照して自動的に行う。分析機能部１０ｂは、まず障害テーブルＴｂ３から障害現象を選択する。ここでは、表４の「燃焼」が選択された場合を例として説明する。分析機能部１０ｂでは、障害現象「燃焼」を選択すると障害テーブルＴｂ３から「燃焼」に対応するキャリア「熱」を抽出する。
【００７７】
次に、分析機能部１０ｂでは、表１における出力キャリアと照合し、情報フローダイヤグラムＩＦＤのデバイスダイヤグラムＤＤに記述されたすべてのデバイスについて、キャリア「熱」を出力キャリアとするデバイスを抽出する。
【００７８】
ここで、出力キャリアに「熱」が含まれるデバイスとして、「照明回路」が抽出されるから、分析機能部１０ｂはダイヤグラム作成部１０ａに指示し、図６に示すように、情報フローダイヤグラムＩＦＤのプロセスダイヤグラムＰＤにプロセスとして「燃焼」を追記するとともに、デバイスダイヤグラムＤＤのデバイスである「照明回路」から関係リンクＬｎ３が張られている（つまり、照明回路を機構とする）プロセスについて、「燃焼」への有向枝Ｌｎ２を追記する。図示例では、プロセスダイヤグラムＰＤにおいて「照明回路」との間に関係リンクＬｎ３が張られているプロセスは、「点消灯」のみであるが「照明回路」との間に関係リンクＬｎ３が張られているプロセスが複数存在するときには、それらのすべてのプロセスから「燃焼」への有向枝Ｌｎ２を追記する。
【００７９】
上述のように、障害テーブルＴｂ３を参照することにより障害現象を引き起こすキャリアを抽出し、デバイステーブルＴｂ１の出力キャリアにおいて障害現象を引き起こすキャリアと同じものがあれば、当該出力キャリアを出力するデバイスを抽出し、プロセスダイヤグラムＰＤのプロセスとして障害現象を追記する。さらに、抽出したデバイスから関係リンクＬｎ３が張られているプロセスから追記した障害現象のプロセスに向かう有向枝Ｌｎ２を設定するとともに、抽出したデバイスから追記した障害現象のプロセスに向かう関係リンクＬｎ３を設定するのである。このように設定された正常系の情報フローダイヤグラムＩＦＤは記憶部１１に格納される。
【００８０】
なお、障害テーブルＴｂ３から障害現象を選択する処理は、分析機能部１０ｂが自動的に行うようにして、すべての障害現象について上述の処理を行うのが望ましいが、障害テーブルＴｂ３の内容をモニタ装置に表示し、表示された障害現象からユーザＩ／Ｆ部１２を用いてユーザが所望の障害現象を選択することも可能である。後者の処理では、重要度の高い障害現象をユーザが選択することになる。障害現象に対応するキャリアがデバイステーブルＴｂ１から抽出されないときには、ユーザＩ／Ｆ部１２を通してユーザに判断結果が通知される。この場合、選択された障害現象がプロセスとして情報フローダイヤグラムＩＦＤに追記されることはない。
【００８１】
上述の動作例では、障害現象に対応するデバイスとして「照明回路」のみが抽出された場合を示しているが、障害現象に対応するデバイスが複数抽出される場合には、デバイスの数と同数のプロセスを追記し、各プロセスに各デバイスを機構として対応付ける。また、抽出されたすべてのデバイスについてプロセスを追記することは必須ではなく、ユーザＩ／Ｆ部１２により対話的に処理を行うことによって、追記するプロセスを適宜に選択するようにしてもよい。図示例では、障害現象「感電」についてはプロセスとして追記しなかった場合を示している。
【００８２】
（例外現象の列挙）  
ところで、記憶部１１には表５に示す形式のガイドワードリストＴｂ４を登録する領域が設けられている。ガイドワードリストＴｂ４は、正常系の要素では想定されていない望ましくない現象を発見しやすくするためのキーワードを「影響種別」という項目別に分類したものである。このようなガイドワードリストＴｂ４は、組込みシステムの開発を行う熟練者などへのインタビューなどによって作成することができる。ガイドワードリストＴｂ４は、情報フローダイヤグラムＩＦＤとともにモニタ装置に表示され、プロセスダイヤグラムＰＤにおいてプロセスの出力となる有向枝Ｌｎ２にガイドワードを適用したときに生じる現象を想定することにより、正常な動作の現象から逸脱した例外現象の抽出を容易にする。
【００８３】
【表５】
0005215606.tif 000006
【００８４】
ガイドワードは、正常な情報から逸脱した情報（逸脱情報）を与えるためのヒントになるキーワードであって、組込みシステムに対して逸脱情報を与えたときにどのような影響が生じるかの分析を支援する。つまり、ガイドワードを適用することにより見落としやすい現象を捉え、発見しにくい非正常系の要素を抽出することが可能になる。なお、逸脱情報は、組込みシステムに対して必ずしも障害を発生させるとは限らないから、障害を発生させない逸脱情報を取り除いて障害を発生させる逸脱情報を抽出するのが望ましい。
【００８５】
逸脱情報を抽出することができると、非正常系の要素により生じる例外現象の候補を抽出することが可能になる。まず、プロセスダイヤグラムＰＤに記載された各プロセスごとに出力側のすべての有向枝Ｌｎ２について、出力される情報とガイドワードとを組み合わせることにより、望ましくない例外現象の候補を抽出する。要するに、各プロセスの出力情報にガイドワードを適用したときに、当該情報の意味が望ましくない意味になるかどうかを判断し、望ましくない意味になる場合には、その情報により生じる現象を例外現象の候補とする。
【００８６】
つまり、表６に示すように、各プロセスを結合する有向枝ごとにガイドワードを参照することによって例外現象の候補を想定する。また、各例外現象の候補にはそれぞれ識別子（例外現象ＩＤ）を付与する。ここにおいて、ユーザＩ／Ｆ部１２を用いて対話的な処理を行い、例外現象の候補のうちで発生しないことが明らかであると判断できるものについては、棄却現象として記憶し、例外現象として適用されないようにしてもよい。例外現象を含む情報フローダイヤグラムＩＦＤは記憶部１１に格納される。
【００８７】
【表６】
0005215606.tif 000007
【００８８】
なお、ガイドワードを用いて例外現象の候補を抽出する際には、各プロセスの出力情報に対してガイドワードを適用することにより組み合わせを抽出すればよいから、情報の種類に対して適用可能なガイドワードの範囲を制限しておけば、意味解析を行うことなく組み合わせ的に例外現象の候補を抽出することが可能である。あるいはまた、必要に応じて意味解析を行うことにより、例外現象の候補を抽出することが可能である。
【００８９】
たとえば、プロセス「明暗の判断」に対してガイドワードから「停止」「過少」「一時的」の３種類を選択し、「明暗の判断」から「昼夜判断」に向かう有向枝Ｌｎ２により示される出力情報に、これらのガイドワードを適用すると、次のような例外現象の候補を作成することができる。「停止」：→「出力情報が発信されない」、「過少」：→「入力情報「明るい」に対して「暗い」が発信される」、「一時的」：→「「暗い」の発信が続く中、ごく短時間の「明るい」が発信される」という例外現象の候補を生成することができる。
【００９０】
（トップダウン分析）
例外現象の候補を抽出した後には、分析機能部１０ｂにおいて、プロセスダイヤグラムＰＤにおいて障害発生の要因（例外条件）と例外現象との因果関係を抽出する。例外現象の候補を適用することにより抽出される障害に関する情報伝達の因果関係は、局所的な因果関係を示していると考えられる。このようにして抽出した情報フローダイヤグラムＩＦＤにおける例外条件と例外現象との局所的な因果関係をツリー構造で表したデータを、情報フローダイヤグラムＩＦＤの全体での因果関係を意味する障害シナリオに対して、「障害シナリオ断片」と呼ぶことにする。
【００９１】
以下では、プロセスダイヤグラムＰＤのプロセスとして「照明制御」から「点消灯」に向かう有向枝Ｌｎ２について、ガイドワード「停止」が適用され、例外現象の候補として「（照らすべきときに）消灯と指示する」（例外現象ＩＤ＝４）が抽出された場合を想定する。
【００９２】
この場合、「照明制御」が着目プロセスになる。障害シナリオ断片を取り出すために、まず着目プロセスの機構になるデバイスを抽出する。ここでは、「照明制御」に対して「ＣＰＵ」が抽出される。次に、表１のデバイステーブルＴｂ１を参照し、抽出したデバイスに対応する故障の現象の中に例外現象と同種のものが存在するか否かを判断する。存在する場合には、その現象に対応する故障パターンを例外条件として採用する。表１ではデバイス「ＣＰＵ」に関して、例外現象に呼応する故障の現象が存在しないので、例外条件はないと判断される。
【００９３】
次に、着目プロセスの入力情報あるいは制約を一つ選択し、情報フローダイヤグラムＩＦＤにおけるデバイスダイヤグラムＤＤ上で、着目プロセスについて選択した入力情報あるいは制約を伝達するキャリアを求める。このキャリアは、デバイス「ＣＰＵ」の出力キャリアに相当するから、デバイス「ＣＰＵ」の出力キャリアを表２のキャリアテーブルＴｂ２に照合し、故障の現象の中に例外現象と同種のものが存在するか否かを確認する。存在する場合は、その現象に対応する故障パターンを例外条件に用いる。
【００９４】
表２では「ＣＰＵ」の出力キャリア「電圧」に対応する故障の現象において、「（照らすべきときに）消灯と指示する」という例外現象の候補に対応するものがないと判断される。要するに、プロセス「照明制御」の入力情報あるいは制約は、デバイス「ＣＰＵ」からデバイス「ＣＰＵ」への情報伝達であるから、出力キャリア「電圧」が抽出されるが、例外条件に相当する故障の現象が存在しないから、例外現象が採用されることはない。
【００９５】
さらに、着目プロセスの入力情報あるいは制約を一つ選択し、情報フローダイヤグラムＩＦＤのプロセスダイヤグラムＰＤ上で、着目プロセスについて選択した入力情報あるいは制約の出力元になっているプロセスに関してすべての例外現象の候補の中から適宜の現象を選択する。
【００９６】
表６を例として説明すると、「照明制御」の入力情報あるいは制約は、「昼夜判断」「回路の固定」があり、表６によれば「昼夜判断−照明制御」「回路の固定−照明制御」に対応する例外現象の候補は、例外現象ＩＤが９〜１４の６種類であることがわかる。ここでは、仮に「夜と伝えるべきが、昼と伝える」（例外現象ＩＤ＝９）を採用するものとする。
【００９７】
採用した仮の例外現象は、プロセス「照明制御」に対する例外条件と言えるから、再び採用した仮の例外現象に対する例外条件の有無を判断する。例外条件が存在する場合には、採用した仮の例外現象を例外条件として扱う。
【００９８】
上述の例では、仮の例外現象「夜と伝えるべきが、昼と伝える」（例外現象ＩＤ＝９）に対しては例外条件が存在すると判断されるから例外条件として採用する。
【００９９】
採用するか否かを検討したすべての例外現象の候補について、例外現象の候補が複数同時に満たされることによって、分析する現象が発生するかどうかを確認する。本実施形態では、例外現象の候補が「故障パターン」の場合には、表１と表３とにおける「故障の現象」と「影響」とを参照し、例外現象の候補の組み合わせの結果、「影響」においてキャリアの補正が２個以上重複する場合には、その現象が発生するものと判断する。
【０１００】
いま、表６の「明るいと伝えるべきが、暗いと伝える」（例外現象ＩＤ＝１５）を例とする。表１に示すデバイステーブルＴｂ１において、デバイス「昼光センサ」の故障パターン「経年劣化」は、入力キャリアである「光」の補正がマイナスになっている。一方、表２によればキャリア「光」について、故障パターンに「干渉物設置」があり、この場合の影響も、補正がマイナスになっている。つまり、「経年劣化」という故障パターンと「干渉物設置」という故障パターンとが同時に生じたときには、キャリア「光」の補正についてマイナスが重複する。このような場合には、デバイス「昼光センサ」への情報が「明るい」であるべきが「暗い」となると判断する。
【０１０１】
分析機能部１０ｂでは、例外現象の候補の原因となる例外条件を抽出する処理を上述の手順で行った結果、例外条件が存在しないと判断した場合には、例外現象の候補が発生する可能性がないと判断し、例外現象の候補を仮の例外条件としていた現象について分析する処理に戻る。そして、上述の手順で得られた例外現象を引き起こす例外条件の組み合わせは記憶部１１に記憶される。
【０１０２】
上述したように、現象（例外現象）から現象を発生させる要因に遡って例外条件を抽出する分析をトップダウン分析と呼ぶ。なお、現象に対して要因となる複数の例外条件が存在しており、そのうちのいずれかが成立したときに現象が生じる場合には、当該例外条件をＯＲ条件と呼び、複数の例外条件のすべてが成立したときに現象が生じる場合には、当該例外条件をＡＮＤ条件と呼ぶ。記憶部１１には、現象と例外条件とが図７に示すようなノードデータの関係として格納される。
【０１０３】
各ノードデータにおいて、「ＡＤＤＲ」は記憶部１１におけるノードデータのアドレスを示し、「内容」には例外現象、故障パターン、故障の現象が格納され、「ＣＯＮＤ」は「内容」に格納された現象の要因となる例外条件を表すノードデータの記憶部１１内でのアドレスが格納され、「ＯＲ」には同じ現象に対して「内容」に記述された例外条件とＯＲ条件の関係である例外条件を持つノードデータの記憶部１１内でのアドレス、「ＡＮＤ」には同じ現象に対して「内容」に記述された例外条件とＡＮＤ条件の関係である例外条件を持つノードデータの記憶部１１内でのアドレスがそれぞれ格納される。ＣＯＮＤ、ＯＲ、ＡＮＤには該当するアドレスが存在しない場合には、内容を「ＮＵＬＬ」とする。
【０１０４】
ノードデータは、ＣＯＮＤ、ＯＲ、ＡＮＤに格納されたアドレスを用いて結合されたリスト構造をなし、例外条件と現象との因果関係を示すＡＮＤ／ＯＲツリーを形成する。ノードデータはアドレスにより結合されるから、ノードデータの結合関係を仮想的にリンクと呼ぶ。つまり、ノードデータにおいてＣＯＮＤとＯＲとＡＮＤとのいずれかに「ＮＵＬＬ」ではないアドレスが格納されているときに、着目するノードデータとアドレスで示されたノードデータとはリンクにより結合されていると言う。また、リンクにより結合された複数のノードデータ間の例外条件と例外現象との因果関係の連鎖を障害シナリオ断片とする。障害シナリオ断片は、トップダウン分析によって１個だけ生成される場合と、複数個生成される場合とがある。
【０１０５】
（ボトムアップ分析）
トップダウン分析により障害シナリオ断片が生成されると、障害シナリオ断片に含まれる現象を起点とし当該現象を原因として生じる現象を追跡して抽出するボトムアップ分析を行う。ボトムアップ分析はトップダウン分析の後に行うが、ボトムアップ分析の後にトップダウン分析を再度行ってもよい。
【０１０６】
ボトムアップ分析では、表１および表３に示したデバイステーブルＴｂ１に含まれるデバイスに関して、それぞれの故障パターンごとに、障害シナリオを生成する。障害シナリオは、上述した形式のノードデータを接続したツリー構造のデータであって、故障の現象を起点とし故障パターン（すなわち、原因）に至るまでの経路をツリー構造で表したものである。
【０１０７】
ボトムアップ分析が開始されると、分析機能部１０ｂでは、各デバイスに関する故障パターンから１つを選択する。故障パターンには上述のようにして抽出された例外現象を用いることもできる。次に、選択した故障パターン（または例外現象）を「内容」に持つノードデータを含んだ障害シナリオ断片を記憶部１１から検索し、検索した故障パターン（または例外現象）を「内容」に持つシナリオ断片が記憶部１１に存在していれば、当該障害シナリオ断片を障害シナリオに含める。
【０１０８】
ここで、すでに障害シナリオの一部が生成されており、障害シナリオを構成しているいずれかのノードデータが障害シナリオ断片のいずれかのノードデータに接続可能であれば、障害シナリオ断片を障害シナリオに接続する。言い換えると、障害シナリオ断片が複数存在するときは、障害シナリオ断片を相互に接続する。また、障害シナリオ断片が１個しか存在しないときには、その障害シナリオ断片から障害シナリオを生成する。
【０１０９】
また、選択した故障パターン（あるいは例外現象）を含む障害シナリオ断片が記憶部１１に複数存在する場合は、障害シナリオ断片を検索した時点における障害シナリオの複製を、抽出された障害シナリオ断片の個数分だけ生成し、各障害シナリオに障害シナリオ断片をそれぞれ接続する。
【０１１０】
逆に、選択した故障パターンあるいは例外現象を含む障害シナリオ断片が記憶部１１に存在しない場合、故障パターンを選択したときには、当該故障パターンによる障害シナリオを新規に作成し、例外現象を選択したときには、何も行わずに次処理に移行する。
【０１１１】
いま、図９に示すようにノードデータ（１）〜（７）を含む障害シナリオ断片があらかじめ生成されているものとして、障害シナリオ断片に例外現象を組み込む場合の処理例を示す。ここでは、例外現象として、ノードデータ（Ｘ）が選択され、例外現象（Ｘ）を生じる原因はノードデータ（７）で表されているものとする（破線により因果関係を示している）。
【０１１２】
図示例では、ノードデータ（Ｘ）と同じ内容のノードデータ（４）が障害シナリオ断片の中に存在しているので、ノードデータ（Ｘ）のＣＯＮＤのデータ（ノードデータ（７）のアドレス）をノードデータ（４）のＣＯＮＤのデータとして複製し、ノードデータ（Ｘ）を削除する。このような処理によって、ノードデータ（Ｘ）の例外現象は、障害シナリオ断片に組み込まれる。したがって、ノードデータ（Ｘ）の代わりにノードデータ（４）を選択した例外現象として以後の処理を行う。
【０１１３】
次に、選択した故障パターン（あるいは例外現象）について、選択した故障パターン（あるいは例外現象）が単独で、あるいは他の故障パターン（あるいは例外現象）との組み合わせで、新たな例外現象が発生するか否かを分析する。このような例外現象が発生する可能性は、以下の手順で分析する。
【０１１４】
まず、プロセスダイヤグラムＰＤにおいて、選択した故障パターン（あるいは例外現象）によって影響を受けた情報を、有向枝Ｌｎ２により接続された後続のプロセスに引き渡す。さらに、後続のプロセスに入力される他の入力情報、制約、後続のプロセスの機構となるデバイスについて、正常な場合と例外現象が発生した場合との情報を想定し、後続のプロセスにおいて、これらの情報と機構（デバイスの挙動）との組み合わせによって、後続のプロセスの出力情報が受ける影響を、当該デバイスの仕様に関する情報と比較する。
【０１１５】
ここで、当該デバイスの仕様に関する情報において、異常と判断される影響が見出された場合には、障害シナリオとしてマーク付けを行う。仕様に関する情報に比較対象がない場合には、障害シナリオとしてマーク付けを行うか、ユーザＩ／Ｆ部１２を用いてユーザと対話することによって判断を決定する。マーク付けを行った後、分析を継続する。
【０１１６】
本実施形態では障害シナリオとしてのマーク付けは、異常と判断される影響が見出された時点で、着目している現象のデータのアドレスによって示す。
【０１１７】
選択した故障パターン（あるいは例外現象）によって影響を受けた情報の送信先となる後続のプロセスが、デバイスダイヤグラムＤＤにおいて異なるデバイスと関係リンクＬｎ３が設定されている場合には、デバイスダイヤグラムＤＤにおいて当該情報を伝達しているキャリアを抽出する。さらに、抽出したキャリアを入力キャリアに持つデバイスを、表１に示したデバイステーブルＴｂ１から選択し、選択したデバイスを機構に持つすべてのプロセスに対して、影響を受けた情報が入力された場合の出力を判断する。この処理は、デバイスダイヤグラムＤＤにおいて直接接続されているか否かにかかわらず行う。また、ユーザＩ／Ｆ部１２を用いてユーザと対話を行い、選択されたデバイスのうち影響を及ぼすことがないと判断されるものは取捨選択してもよい。
【０１１８】
上述したように、選択されたデバイスを機構とするすべてのプロセスにおいて、入力情報、制約、機構（デバイスの挙動）の組み合わせに影響を受けた情報が入力されたときに、当該プロセスがどのような影響を受けるかを、そのデバイスの仕様情報と比較する。仕様情報において、異常と判断される影響が見出された場合には、障害シナリオとしてマーク付けを行う。ここで、仕様情報に記載のない組み合わせの場合には、障害シナリオとしてマーク付けを行うか、ユーザＩ／Ｆ部１２を用いてユーザと対話することによって判断を決定する。マーク付けを行った後、分析を継続する。
【０１１９】
選択した故障パターン（あるいは例外現象）を原因とし、結果として影響を受けた現象が抽出された場合には、選択した故障パターン（あるいは例外現象）に至るまでの障害シナリオと、影響を受けた現象とのデータを因果関係として接続する。ここで、影響を受けた現象が複数発見された場合には、選択した故障パターン（あるいは例外現象）に至るまでの障害シナリオを発見された現象の数だけ複製し、複製された各障害シナリオに対してそれぞれ影響を受けた現象のデータを接続する。
【０１２０】
図８にデバイス「主柱」に関して故障パターン「変形」が選択された場合を例示する。デバイス「主柱」に関係リンクＬｎ３で接続されているプロセスは「機器の固定」であり（図２参照）、「機器の固定」の後続のプロセスは「回路の固定」と「点消灯」とである。これらのプロセスに対応するデバイスは、「ボックス」と「照明回路」とである。「ボックス」に対応するプロセス「回路の固定」は、「主柱」の出力キャリア「摩擦力」による影響を受けているから、キャリアテーブルＴｂ２によれば、故障パターンとして「設置不良」を抽出することができる。また、プロセス「点消灯」に対応するデバイスは「照明回路」であり、キャリアテーブルＴｂ２によれば「照明回路」も故障パターンとして「設置不良」が抽出される。
【０１２１】
要するに、デバイス「主柱」について、故障パターン「変形」選択されると、プロセス「回路の固定」に対応して故障パターン「設置不良」が抽出され、プロセス「点消灯」に対応して故障パターン「設置不良」が抽出される。したがって、図８（ａ）のように「変形」をデバイス「主柱」の故障パターンとし、その原因をプロセス「回路の固定」についての故障パターン「設置不良」との間で因果関係を設定するときに、「主柱」の故障パターン「変形」には、プロセス「点消灯」の故障パターン「設置不良」も因果関係を設定することができるから、図８（ｂ）のように、「主柱」に対応するノードデータの複製を生成し、このノードデータにプロセスを「点消灯」として故障パターンを「設置不良」とするノードデータを連結する。
【０１２２】
選択した故障パターン（あるいは例外現象）に対して、上述のように分析した結果、影響を受けた現象が発見されなかった場合には、障害シナリオはそのままとし、既存の障害シナリオデータのうちでまだ分析対象として選択していない故障パターンあるいは例外現象を選択し、その故障パターンについて、上述した手順でボトムアップ分析を行う。分析対象として選択していない故障パターンあるいは例外現象がなくなったら、分析を完了する。
【０１２３】
（障害シナリオの出力）
ボトムアップ分析が終了すると、マーク付けされた例外現象あるいは障害現象（以下、「マーク現象」という）を内容とするノードデータを用いて、以下のルールに従って障害シナリオを生成する。まず、マーク現象を内容とするノードデータを着目ノードデータとして、以下のルール１〜５を適用することにより、マーク現象の発端の原因を抽出する。
ルール１：着目ノードデータのＣＯＮＤに「ＮＵＬＬ」ではないアドレスが格納されているならば、着目ノードデータの内容であるマーク現象の原因は、着目ノードデータのＣＯＮＤに格納されたアドレスで結合された下流側のノードデータの内容である。
ルール２：着目ノードデータのＯＲに「ＮＵＬＬ」ではないアドレスが格納されているならば、着目ノードデータの内容であるマーク現象と、ＯＲに格納されたアドレスで結合された下流側のノードデータの内容とはいずれかが成立することによって、着目ノードデータの上流側のノードデータの内容である現象が生じるＯＲ条件である。
ルール３：着目ノードデータのＡＮＤに「ＮＵＬＬ」ではないアドレスが格納されているならば、着目ノードデータの内容であるマーク現象と、ＡＮＤに格納されたアドレスで結合された下流側のノードデータの内容とは同時に成立することによって、着目ノードデータの上流側のノードデータの内容である現象が生じるＡＮＤ条件である。
ルール４：着目ノードデータにリンクで結合された下流側のノードデータにおいて、ＣＯＮＤとＯＲとＡＮＤとのいずれかに「ＮＵＬＬ」でないアドレスが格納されているときには、下流側の当該ノードデータにルール１〜３を適用する。つまり、ルール１〜４は再帰的に適用される。
ルール５：着目ノードデータが、上流側のノードデータのＣＯＮＤに結合され、かつ着目ノードデータのＣＯＮＤとＯＲとＡＮＤとのすべてが「ＮＵＬＬ」である場合は、着目ノードデータの内容を障害の発端の原因とする。
【０１２４】
マーク現象を内容に持つノードデータを出発点として、上述したルール１〜５を適用すれば、マーク現象の発端の原因を抽出することができるから、ユーザＩ／Ｆ部１２における出力手段１２ｂに、マーク現象を結果とするときの発端の原因を含む障害シナリオを提示する。すなわち、マーク現象の生じる障害シナリオをユーザに提示することができる。
【０１２５】
図８に示した障害シナリオに上述したルール１〜５を適用することにより、ユーザに示す障害シナリオを生成した例を図１０に示す。図１０に示す障害シナリオの例では、マーク現象を内容とするノードデータを（１）としたときに、ノードデータ（１）の内容の現象を結果とする原因は、ノードデータ（２）の内容、またはノードデータ（３）の内容、またはノードデータ（４）の内容およびノードデータ（５）の内容が原因であり、ノードデータ（３）の内容を生じる原因はノードデータ（６）の内容であり、ノードデータ（６）の内容を生じる原因はノードデータ（８）の内容になるというように因果関係の連鎖を辿ることができる。
【０１２６】
また、図示例では、ノードデータ（４）の内容を生じる原因は、ノードデータ（７）の内容になる。ノードデータ（７）はノードデータ（４）のＣＯＮＤのアドレスで結合されており、ノードデータ（７）のＣＯＮＤとＯＲとＡＮＤとはいずれもが「ＮＵＬＬ」であるから、ノードデータ（７）が発端の原因になる。ただし、ノードデータ（７）の上流側のノードデータ（４）はＯＲ条件の一つであるから、他にも発端の原因があることになる。
【０１２７】
以上のようにして、障害シナリオが生成されると、各ノードデータの結合関係とノードデータの内容とを用いることにより、障害シナリオを文章化して出力することが可能になる。図１０の障害シナリオを例とすると、以下のような文章化が可能である。
『障害「点消灯」の現象「照らすべきときに照らさない」の原因は、
デバイス「照明回路」の故障パターン「破損」が発生するか、
プロセス「照明制御」の現象「照らすべきときに消灯指示」が発生するか、
プロセス「照明制御」の現象「点消灯の指示をしない」とプロセス「点消灯」の仕様「消灯状態である」が同時に発生するかのいずれかである。
【０１２８】
このうち、プロセス「照明制御」の現象「照らすべきときに消灯指示」の原因は、
プロセス「照明制御」の現象「照らすべきときに消灯指示」が発生することである。
【０１２９】
また、プロセス「照明制御」の現象「点消灯の指示をしない」の原因は、
キャリア「電圧」の故障パターン「信号ケーブル断線」が発生することである。
【０１３０】
このうち、プロセス「照明制御」の現象「照らすべきときに消灯指示」の原因は、
プロセス「昼夜判断」の現象「夜と伝えるべきが、昼と伝える」が発生することである。』
ユーザＩ／Ｆ部１２の出力手段１２ｂを用いて障害シナリオを提示するにあたっては、組込みシステムに関わるすべての障害シナリオを羅列することが可能であるが、障害シナリオを編集して提示するのが望ましい。障害シナリオの編集にあたっては、（１）同一の例外現象から複数の障害シナリオに派生するケースをまとめて表示したり、（２）多数の障害シナリオに共通して現れる故障パターンや例外現象を組込みシステムのウィークポイントとして強調表示したり、（３）組込みシステムが回避すべき障害現象に至る障害シナリオ（上述した街灯システムであれば、プロセス「燃焼」を含む障害シナリオ）を優先して表示したりすることが考えられる。これらの編集方法は適宜に選択したり組み合わせたりすることが可能である。
【０１３１】
上述のように、組込みシステムに関して、文章化した障害シナリオを生成して出力手段１２ｂにより提示すれば、組込みシステムのソフトウェアを開発するにあたり、要求仕様で示された組込みシステムの設計内容から生じる障害の可能性を分析し、障害に対処するようにソフトウェアの内容を検討することが可能になる。
【図面の簡単な説明】
【０１３２】
【図１】実施形態を示すブロック図である。
【図２】本発明の適用事例である街灯システムを示す外観図である。
【図３】本発明の適用事例である街灯システムを示すブロック図である。
【図４】実施形態における情報フローダイヤグラムに用いるシンボルを示す図である。
【図５】同上に用いる情報フローダイヤグラムの例を示す図である。
【図６】同上に用いる情報フローダイヤグラムの例を示す図である。
【図７】同上における障害シナリオ断片の例を示す図である。
【図８】同上における分析の過程を示す動作説明図である。
【図９】同上における分析の過程を示す動作説明図である。
【図１０】同上における障害シナリオの例を示す図である。
【符号の説明】
【０１３３】
１  主柱
２  照明回路
３  昼光センサ
４  ボックス
５  ＣＰＵ
６  街路
７  太陽
１０  演算処理部
１０ａ  ダイヤグラム作成部
１０ｂ  分析機能部
１１  記憶部
１２  ユーザＩ／Ｆ部
１２ａ  入力手段
１２ｂ  出力手段
Ｃｒ  キャリア
Ｄｖ  デバイス
Ｐｒ  プロセス
Ｔｂ１  デバイステーブル
Ｔｂ２  キャリアテーブル
Ｔｂ３  障害テーブル
Ｔｂ４  ガイドワードリスト
【図１】
0005215606.tif 000008
【図２】
0005215606.tif 000009
【図３】
0005215606.tif 000010
【図４】
0005215606.tif 000011
【図５】
0005215606.tif 000012
【図６】
0005215606.tif 000013
【図７】
0005215606.tif 000014
【図８】
0005215606.tif 000015
【図９】
0005215606.tif 000016
【図１０】
0005215606.tif 000017