(57)【特許請求の範囲】
【請求項１】
時系列データを保存する時系列データ保存部と、
前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新する実時間仕様判定部と、
前記実時間仕様毎に前記実時間仕様の前記判定結果が変化する変化時刻を算出する変化時刻算出部と、
現在時刻が前記変化時刻以後である場合に、前記実時間仕様判定部が前記変化時刻に対応する前記実時間仕様を判定すべきであると判定する期限管理部と
を備え、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記期限管理部が判定すべきであると判定した前記実時間仕様を判定する実行監視装置。
【請求項２】
前記実時間仕様の前記判定結果が変化した場合に、前記判定結果が変化した前記実時間仕様の前記判定結果に依存する、前記監視仕様が含む制約の一部である部分仕様を特定する次計算仕様判定部を備え、
前記実時間仕様判定部は、前記次計算仕様判定部が特定した前記部分仕様の内、前記実時間仕様を判定する請求項１に記載の実行監視装置。
【請求項３】
前記次計算仕様判定部は、前記実時間仕様の前記判定結果が変化した場合に、前記監視仕様に対応したＲｅｔｅネットワークに基づいて、前記実時間仕様の前記判定結果に依存する前記部分仕様を特定する請求項２に記載の実行監視装置。
【請求項４】
前記時系列データ保存部が、前記実時間仕様判定部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合の処理方針を保存する異常処理ポリシ保存部を備え、
前記実時間仕様判定部は、前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記異常処理ポリシ保存部に保存された、前記実時間仕様に対応する前記処理方針に従って処理する請求項１から３のいずれか１項に記載の実行監視装置。
【請求項５】
前記監視仕様と前記実時間仕様との関係性を保存する依存関係保存部と、
前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記依存関係保存部を参照して前記実時間仕様に対応する前記監視仕様を特定し、前記監視仕様の情報を出力する異常出力部と
を備える請求項１から４のいずれか１項に記載の実行監視装置。
【請求項６】
時系列データを保存する時系列データ保存部と、
前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新する実時間仕様判定部と、
前記実時間仕様の前記判定結果が変化した場合に、前記判定結果が変化した前記実時間仕様の前記判定結果に依存する、前記監視仕様が含む制約の一部である部分仕様を特定する次計算仕様判定部と
を備え、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記次計算仕様判定部が特定した前記部分仕様の内、前記実時間仕様を判定する実行監視装置。
【請求項７】
時系列データを保存する時系列データ保存部と、
前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新する実時間仕様判定部と
を備え、
前記時系列データ保存部が、前記実時間仕様判定部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合の処理方針を保存する異常処理ポリシ保存部を備え、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記異常処理ポリシ保存部に保存された、前記実時間仕様に対応する前記処理方針に従って処理する実行監視装置。
【請求項８】
時系列データを保存する時系列データ保存部と、
前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新する実時間仕様判定部と、
前記監視仕様と前記実時間仕様との関係性を保存する依存関係保存部と、
前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記依存関係保存部を参照して前記実時間仕様に対応する前記監視仕様を特定し、前記監視仕様の情報を出力する異常出力部と
を備え、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存する実行監視装置。
【請求項９】
時系列データ保存部が、時系列データを保存し、
実時間仕様判定部が、前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新し、
変化時刻算出部が、前記実時間仕様毎に前記実時間仕様の前記判定結果が変化する変化時刻を算出し、
期限管理部が、現在時刻が前記変化時刻以後である場合に、前記実時間仕様判定部が前記変化時刻に対応する前記実時間仕様を判定すべきであると判定し、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記期限管理部が判定すべきであると判定した前記実時間仕様を判定する実行監視方法。
【請求項１０】
時系列データ保存部が、時系列データを保存し、
実時間仕様判定部が、前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新し、
次計算仕様判定部が、前記実時間仕様の前記判定結果が変化した場合に、前記判定結果が変化した前記実時間仕様の前記判定結果に依存する、前記監視仕様が含む制約の一部である部分仕様を特定し、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記次計算仕様判定部が特定した前記部分仕様の内、前記実時間仕様を判定する実行監視方法。
【請求項１１】
時系列データ保存部が、時系列データを保存し、
実時間仕様判定部が、前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新し、
前記時系列データ保存部が備える異常処理ポリシ保存部が、前記実時間仕様判定部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合の処理方針を保存し、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存し、前記時系列データ保存部が前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記異常処理ポリシ保存部に保存された、前記実時間仕様に対応する前記処理方針に従って処理する実行監視方法。
【請求項１２】
時系列データ保存部が、時系列データを保存し、
実時間仕様判定部が、前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新し、
依存関係保存部が、前記監視仕様と前記実時間仕様との関係性を保存し、
前記時系列データ保存部が備える異常出力部が、前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、前記依存関係保存部を参照して前記実時間仕様に対応する前記監視仕様を特定し、前記監視仕様の情報を出力し、
前記実時間仕様判定部は、前記判定結果を前記実時間仕様判定部の実行前に予約されているメモリの領域に保存する実行監視方法。
【請求項１３】
コンピュータに、
時系列データを保存させ、前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定させ、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新させ、
前記実時間仕様毎に前記実時間仕様の前記判定結果が変化する変化時刻を算出させ、現在時刻が前記変化時刻以後である場合に、前記変化時刻に対応する前記実時間仕様を判定すべきであると判定させ、
前記判定結果を、実行監視プログラムの実行前に予約されているメモリの領域に保存させ、判定すべきであると判定させた前記実時間仕様を判定させる実行監視プログラム。
【請求項１４】
コンピュータに、
時系列データを保存させ、前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定させ、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新させ、
前記判定結果が変化した前記実時間仕様の前記判定結果に依存する、前記監視仕様が含む制約の一部である部分仕様を特定させ、
前記判定結果を、実行監視プログラムの実行前に予約されているメモリの領域に保存させ、
特定させた前記部分仕様の内、前記実時間仕様を判定させる実行監視プログラム。
【請求項１５】
コンピュータに、
時系列データを保存させ、前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定させ、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新させ、
前記コンピュータが前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合の処理方針を保存させ、
前記判定結果を、実行監視プログラムの実行前に予約されているメモリの領域に保存させ、
前記コンピュータが前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、保存させた前記実時間仕様に対応する前記処理方針に従って処理させる実行監視プログラム。
【請求項１６】
コンピュータに、
時系列データを保存させ、前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定させ、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新させ、
前記監視仕様と前記実時間仕様との関係性を保存させ、
前記実時間仕様を判定する際に使用する全ての前記時系列データを保存していない場合に、保存させた前記監視仕様と前記実時間仕様との関係性を参照して前記実時間仕様に対応する前記監視仕様を特定させ、前記監視仕様の情報を出力させ、
前記判定結果を、実行監視プログラムの実行前に予約されているメモリの領域に保存させる実行監視プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子装置の実行監視装置に関する。
【背景技術】
【０００２】
車載システム等の組み込みシステムでは、機能の追加及び更新をすること、セキュリティパッチの適用をすること、並びに、新たな法規制に対応すること等が必要である。そのため、システムの複雑化及び市場リードタイムの削減等が必要となるので、組み込みシステムの事前検証は困難になる一方であるという課題がある。また、組み込みシステムには不確実性を持つＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ：人工知能）が導入されることが増え、網羅的な検証がより難しくなるという課題がある。【０００３】
これらの課題に対応するため、実行時監視（Ｒｕｎｔｉｍｅ  ｍｏｎｉｔｏｒｉｎｇ：ランタイムモニタリング）技術が提案されている。実行時監視とは、組み込みシステムの振る舞いが所定の仕様及び前提条件等（以後、所定の仕様及び前提条件等を、単に監視仕様とよぶ）から逸脱していないか監視する技術である。組み込みシステムの振る舞いが監視仕様から逸脱していないか監視することにより、車両を安全な状態に遷移させる契機としたり、逸脱を開発者にフィードバックして改善を促したり、開発時のテストオラクルとして利用することができる。【０００４】
実行時監視技術に利用可能な技術の１つとして、例えば特許文献１では、ワーキングメモリの枯渇を防止するとともに、ガベージコレクションを働かせなくて済むルールベースシステムを開示している。この技術では、複数の条件項目それぞれにワーキングメモリを固定的に割り当てることで、ワーキングメモリの枯渇を防止している。
また、非特許文献１では、時間拡張したＲｅｔｅアルゴリズムを提案している。【０００５】
Ｒｅｔｅアルゴリズムは、１９７５年に提案されたルール判定アルゴリズムであり、ビジネス用のルールマネジメントエンジン（ＯＰＳ５、ＣＬＩＰＳ、及びＤｒｏｏｌｓ等）に採用されている。Ｒｅｔｅアルゴリズムの利点は、イベントが挿入される度に全てのルールを評価しない点であるが、基本的にはエンタープライズシステム向けであり、リソースの使用量が多いこと及び動的メモリ確保が必要である点に課題がある。【０００６】
非特許文献１では、あるイベントが実時間制約に寄与しなくなったらそのイベントを動的に削除するようにするガベージコレクタを用いて、Ｒｅｔｅアルゴリズムにより実時間制約を監視できるように拡張している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１８−１３２７９６号公報
【非特許文献】
【０００８】
【非特許文献１】Ｋ．  Ｗａｌｚｅｒ，  Ｔ．  Ｂｒｅｄｄｉｎ，  ａｎｄ  Ｍ．  Ｇｒｏｃｈ，  “Ｒｅｌａｔｉｖｅ  ｔｅｍｐｏｒａｌ  ｃｏｎｓｔｒａｉｎｔｓ  ｉｎ  ｔｈｅ  Ｒｅｔｅ  ａｌｇｏｒｉｔｈｍ  ｆｏｒ  ｃｏｍｐｌｅｘ  ｅｖｅｎｔ  ｄｅｔｅｃｔｉｏｎ，”  ｐｒｅｓｅｎｔｅｄ  ａｔ  ｔｈｅ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ｓｅｃｏｎｄ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ｃｏｎｆｅｒｅｎｃｅ  ｏｎ  Ｄｉｓｔｒｉｂｕｔｅｄ  ｅｖｅｎｔ−ｂａｓｅｄ  ｓｙｓｔｅｍｓ，  Ｒｏｍｅ，  Ｉｔａｌｙ，  ２００８．
【非特許文献２】Ａ．  Ｋａｎｅ，  “Ｒｕｎｔｉｍｅ  ｍｏｎｉｔｏｒｉｎｇ  ｆｏｒ  ｓａｆｅｔｙ−ｃｒｉｔｉｃａｌ  ｅｍｂｅｄｄｅｄ  ｓｙｓｔｅｍｓ，”  ２０１５．
【非特許文献３】Ｏ．  Ｍａｌｅｒ，  Ｄ．  Ｎｉｃｋｏｖｉｃ，  ａｎｄ  Ａ．  Ｐｎｕｅｌｉ，  “Ｏｎ  Ｓｙｎｔｈｅｓｉｚｉｎｇ  Ｃｏｎｔｒｏｌｌｅｒｓ  ｆｒｏｍ  Ｂｏｕｎｄｅｄ−Ｒｅｓｐｏｎｓｅ  Ｐｒｏｐｅｒｔｉｅｓ，”  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｖｅｒｉｆｉｃａｔｉｏｎ，  Ｂｅｒｌｉｎ，  Ｈｅｉｄｅｌｂｅｒｇ，  ２００７，  ｐｐ．  ９５−１０７：  Ｓｐｒｉｎｇｅｒ  Ｂｅｒｌｉｎ  Ｈｅｉｄｅｌｂｅｒｇ．
【非特許文献４】Ｒ．  Ｌ．  Ｒｕｄｅｌｌ  ａｎｄ  Ａ．  Ｓａｎｇｉｏｖａｎｎｉ−Ｖｉｎｃｅｎｔｅｌｌｉ，  “Ｍｕｌｔｉｐｌｅ−Ｖａｌｕｅｄ  Ｍｉｎｉｍｉｚａｔｉｏｎ  ｆｏｒ  ＰＬＡ  Ｏｐｔｉｍｉｚａｔｉｏｎ，”  ｉｎ  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ  ｏｆ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ，  ｖｏｌ．  ６，  ｎｏ．  ５，  ｐｐ．  ７２７−７５０，  Ｓｅｐｔｅｍｂｅｒ  １９８７．
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、組み込みシステムで監視すべき監視仕様には、実時間制約を含むものと含まないものがある。【００１０】
前方車両が存在する場合は前方車両に追従し、前方車両が存在しない場合には自動車の速度を一定にするＡＣＣ（Ａｄａｐｔｉｖｅ  Ｃｒｕｉｓｅ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）システムを例に説明する。なお、この例は非特許文献２に記載のものを、一部改変したものである。【００１１】
ＡＣＣシステムにおいて、実時間制約を含まない監視仕様の例としては、「ＡＣＣ有効信号がＴｒｕｅであれば、サービスＡＣＣ信号（エラー信号）はＦａｌｓｅである。」が挙げられる。この仕様は、ＡＣＣ機能に異常がある場合にＡＣＣが有効にならないことを意図した監視仕様である。【００１２】
ＡＣＣシステムにおいて、実時間制約を含む監視仕様の例としては、「ＡＣＣ有効信号がＴｒｕｅであれば、車間距離時間が１秒未満の場合は、５秒以内に１．０秒以上に回復する必要がある。」が挙げられる。この仕様は、前方車両に近付きすぎた場合に、速やかに車間距離をとるということを意図した監視仕様である。【００１３】
実行時監視技術は、組み込みシステムに導入されるため、省リソースであることが必要であり、又、実時間制約が混在した監視仕様に対応する必要がある。さらに、実行時監視技術は、組み込みシステムは複数の機能を持つことが通常であるため、多数の監視仕様を効率よく判定する必要がある。【００１４】
具体例として前述した仕様において、「ＡＣＣ有効信号がＴｒｕｅであれば」の部分は共通しており、これらを共通して判定することができる。【００１５】
しかし、実時間制約を含む監視仕様を組み込みシステムにおいて効率的に判定する技術は、先行技術文献に開示されていない。特許文献１に開示された技術は、実時間制約に対応しておらず、又、多数の監視仕様を効率よく判定することも考慮されていない。非特許文献１に開示された技術は、動的なメモリ確保を採用するため、組み込みシステムに不向きである。従って、特許文献１及び非特許文献１の技術を単純に組み合わせても、上記の課題は解決できない。
【課題を解決するための手段】
【００１６】
この発明の実行監視装置は、
時系列データを保存する時系列データ保存部と、
前記時系列データ保存部に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、メモリのヒープ領域以外の領域に保存されている、前記実時間仕様を満たすか否かを判定した結果である判定結果を更新する実時間仕様判定部と
を備える。
【発明の効果】
【００１７】
この発明の実行監視装置は、監視仕様を判定するために必要なデータの保持において動的なメモリを用いず、実時間制約を持つ監視仕様と持たない監視仕様が混在している場合において、監視仕様を効率的に判定できる。
【図面の簡単な説明】
【００１８】
【図１】ＡＣＣシステムを備える車載システムの概略図。
【図２】ＡＣＣシステムの入出力の概略図。
【図３】ＡＣＣシステムに対する監視仕様。
【図４】演算子Ｕｎｔｉｌのタイミングチャート。
【図５】演算子Ｓｉｎｃｅのタイミングチャート。
【図６】ＤＳＬにより記述した監視仕様。
【図７】Ｕｎｔｉｌを用いずにＤＳＬにより記述した監視仕様。
【図８】Ｒｅｔｅネットワークの作成に関するフローチャート。
【図９】実時間制約に関連する部分式の置換結果。
【図１０】監視仕様のＡＳＴへの変換。
【図１１】監視仕様ｙ１に対応するＡＳＴを示す図。
【図１２】監視仕様ｙ２に対応するＡＳＴを示す図。
【図１３】監視仕様ｙ１及びｙ２をマージしたＡＳＴを示す図。
【図１４】分解前の部分グラフ。
【図１５】分解後の部分グラフ。
【図１６】ノード番号を振ったＲｅｔｅネットワーク。
【図１７】Ｒｅｔｅネットワークを表すテーブル。
【図１８】参照する時刻だけ異なるノードの抽出処理を示す図。
【図１９】参照する時刻だけ異なるノードの抽出処理を示す図。
【図２０】ＡＣＣシステムにおける参照する時刻だけ異なるノードの抽出処理を示す図。
【図２１】実施の形態１に係る実行監視装置２０のハードウェア構成図。
【図２２】実施の形態１に係る実行監視装置２０の構成図。
【図２３】実施の形態１に係る一時バッファ部２２１のデータ構造。
【図２４】実施の形態１に係る判定結果保存部２２４のデータ構造。
【図２５】実施の形態１に係る時系列データ保存部２２５のデータ構造。
【図２６】実施の形態１に係る依存関係保存部２２９のデータ構造。
【図２７】実施の形態１に係る異常処理ポリシ保存部２２８のデータ構造。
【図２８】実施の形態１に係る実行監視装置２０の動作を示すフローチャート。
【図２９】実施の形態１に係る実時間仕様判定部２０４の動作を示すフローチャート。
【図３０】実施の形態１に係る不変仕様判定部２０３の動作を示すフローチャート。
【図３１】実施の形態１に係る計算対象保存部２２３のデータ構造。
【図３２】実施の形態１に係る変化時刻保存部２２６のデータ構造。
【発明を実施するための形態】
【００１９】
実施の形態１．
以下、本実施の形態について、図面を参照しながら詳細に説明する。
なお、本実施の形態の実行監視装置２０は、任意の電子装置の実行を監視することができる。しかし、説明の便宜上、本実施の形態をＡＣＣ（Ａｄａｐｔｉｖｅ  Ｃｒｕｉｓｅ  Ｃｏｎｔｒｏｌ  Ｓｙｓｔｅｍ）システムに応用した例に基づいて説明する。
【００２０】
図１は、ＡＣＣシステムを備える車載システムの概略図である。本図に示すように、前記車載システムは、車両と、データ収集サーバとから構成され、車両と、データ収集サーバとは、公共通信網により接続されている。前記車両は、実行監視装置２０と、ＡＣＣ  ＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）と等を備える。
【００２１】
図２は、ＡＣＣ  ＥＣＵの入出力信号と、実行監視装置２０が電子装置の実行時監視（Ｒｕｎｔｉｍｅ  ｍｏｎｉｔｏｒｉｎｇ：ランタイムモニタリング）に係る監視仕様の判定に用いる信号を表した図である。本図に示すように、実行監視装置２０は、ＡＣＣ  ＥＣＵの入出力信号を用いて監視仕様を判定し、監視仕様の判定結果を出力する。
【００２２】
図３は、監視仕様の具体例を示したものである。なお、本図に示す監視仕様は例示に過ぎず、また、この監視仕様は完全なものではない。監視仕様ＩＤは、監視仕様を識別するために、一意に割り当てた識別子である。
【００２３】
＊＊＊ＤＳＬの作成方法＊＊＊
【００２４】
監視仕様式を、下記の［数式１］の通り、バッカスナウア記法を用いて、ＤＳＬ（Ｄｏｍａｉｎ  Ｓｐｅｃｉｆｉｃ  Ｌａｎｇｕａｇｅ：  ドメイン記述言語）により再帰的に定義する。監視仕様式は、Ｃ言語のブール代数に関する演算子の一部に、論理包含と、実時間を使用する制約である実時間制約に関する演算子とを追加したものである。なお、監視仕様式は、［非特許文献３］におけるＭＴＬ−Ｂを参考に作成したものである。本実施の形態が扱う監視仕様は、監視仕様式を用いて表現することができる。
【００２５】
［数式１］
＜監視仕様式＞  ：：＝
｛＜信号制約＞｝｜  …（１）
！＜監視仕様式＞｜  …（２）
＜監視仕様式＿１＞  ｜｜  ＜監視仕様式＿２＞｜  …（３）
＜監視仕様式＿１＞  ＆＆  ＜監視仕様式＿２＞  ｜  …（４）
＜監視仕様式＿１＞  →  ＜監視仕様式＿２＞  ｜  …（５）
＜監視仕様式＿１＞  Ｕ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＿２＞｜  …（６）
＜監視仕様式＿１＞  Ｓ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＿２＞  …（７）
【００２６】
［数式１］の３点リーダ及び（１）から（７）の表記は、説明の便宜上付した、＜監視仕様式＞の各項を示す表記であり、＜監視仕様式＞を構成するものではない。＜監視仕様式＞の文法の説明を以下で行う。
【００２７】
（１）は、＜信号制約＞の真理値（“Ｔｒｕｅ”及び“Ｆａｌｓｅ”）を表す。以下、｛＜信号制約＞｝を信号命題と呼び、信号命題の真理値を信号真理値と呼ぶ。＜信号制約＞は、１の信号（信号の値の取り得る値が、“Ｔｒｕｅ”又は“Ｆａｌｓｅ”であるもの限る）であっても良く、複数の信号の比較であっても良い。また、＜信号制約＞は、真理値であっても良い。
【００２８】
具体例としては、｛ＡＣＣ有効信号｝と表記した監視仕様は、「ＡＣＣ有効信号が“Ｔｒｕｅ”である」という監視仕様と同義であり、｛ＡＣＣ設定速度＞規制速度｝と表記した監視仕様は、「ＡＣＣ設定速度が規制速度より大きい」という監視仕様と同義である。従って、信号制約の値域は、“Ｔｒｕｅ”及び“Ｆａｌｓｅ”である。
【００２９】
（２）の「！」は、否定を表す。具体例としては、＜監視仕様式＞が！｛“Ｔｒｕｅ”｝である場合、＜監視仕様式＞の真理値は“Ｆａｌｓｅ”であり、＜監視仕様式＞が！｛“Ｆａｌｓｅ”｝である場合、＜監視仕様式＞の真理値は“Ｔｒｕｅ”である。
【００３０】
（３）の「｜｜」は、論理和を表す。具体例としては、＜監視仕様式＞が｛“Ｔｒｕｅ”｝  ｜｜  ｛“Ｆａｌｓｅ”｝である場合、＜監視仕様式＞の真理値は“Ｔｒｕｅ”であり、＜監視仕様式＞が｛“Ｆａｌｓｅ”｝  ｜｜  ｛“Ｆａｌｓｅ”｝である場合、＜監視仕様式＞の真理値は“Ｆａｌｓｅ”である。なお、＜監視仕様式＿１＞及び＜監視仕様式＿２＞は、＜監視仕様式＞と同等であり、２の＜監視仕様式＞を区別するために用いている表記である。
【００３１】
（４）の「＆＆」は、論理積を表す。具体例としては、＜監視仕様式＞が｛“Ｔｒｕｅ”｝  ＆＆  ｛“Ｆａｌｓｅ”｝である場合、＜監視仕様式＞の真理値は“Ｆａｌｓｅ”であり、＜監視仕様式＞が｛“Ｔｒｕｅ”｝  ＆＆  ｛“Ｔｒｕｅ”｝である場合、＜監視仕様式＞の真理値は“Ｔｒｕｅ”である。
【００３２】
（５）の「→」は、論理包含を表す。（５）の真理値は、＜監視仕様式＿１＞の真理値が“Ｆａｌｓｅ”であるとき、又は、＜監視仕様式＿２＞の真理値が“Ｔｒｕｅ”であるとき、“Ｔｒｕｅ”となる。具体例としては、（５）の真理値は、＜監視仕様式＞が、“Ｔｒｕｅ”  →  “Ｔｒｕｅ”である場合、及び、“Ｆａｌｓｅ”  →  “Ｆａｌｓｅ”である場合、“Ｔｒｕｅ”である。
【００３３】
（６）の「Ｕ」は、Ｕｎｔｉｌを表す。（６）の真理値は、＜監視仕様式＿２＞の真理値が現在時刻の＜実数値１＞秒後から現在時刻の＜実数値２＞秒後までの間のある時刻において“Ｔｒｕｅ”であり、かつ、＜監視仕様式＿１＞の真理値が現在時刻から前記時刻までの間、常に“Ｔｒｕｅ”である場合にのみ、“Ｔｒｕｅ”である。図４は、（６）の真理値が“Ｔｒｕｅ”となる場合を示した図である。
【００３４】
ここで、＜実数値１＞及び＜実数値２＞は、実数値を表す。＜実数値２＞及び＜実数値１＞の大小関係について、＜実数値２＞は、＜実数値１＞以上である。
【００３５】
（７）の「Ｓ」は、Ｓｉｎｃｅを表す。（７）の真理値は、＜監視仕様式＿２＞の真理値が現在時刻の＜実数値２＞秒前から現在時刻の＜実数値１＞秒前までの間のある時刻において“Ｔｒｕｅ”であり、かつ、＜監視仕様式＿１＞の真理値が前記時刻から現在時刻までの間、常に“Ｔｒｕｅ”である場合にのみ、“Ｔｒｕｅ”である。図５は、（７）の真理値が“Ｔｒｕｅ”となる場合を示した図である。
【００３６】
また、丸括弧を用いて＜監視仕様式＞の演算の優先順位を示すことにする。
【００３７】
監視仕様式の文法を用いて、演算子Ｆ＿ｆ及びＧ＿ｆを定義する。
【００３８】
［数式２］
Ｆ＿ｆ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００３９】
［数式２］は、“Ｅｖｅｎｔｕａｌｌｙ  ｉｎ  ｔｈｅ  ｆｕｔｕｒｅ”を表す。［数式２］の真理値が“Ｔｒｕｅ”である場合、現在時刻の＜実数値１＞秒後から現在時刻の＜実数値２＞秒後までの間のある時刻において、＜監視仕様式＞の真理値が“Ｔｒｕｅ”である。Ｆ＿ｆは、Ｕｎｔｉｌを用いて、［数式３］のように表すことができる。
【００４０】
［数式３］
｛“Ｔｒｕｅ”｝  Ｕ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００４１】
［数式４］
Ｇ＿ｆ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００４２】
［数式４］は、“Ａｌｗａｙｓ  ｉｎ  ｔｈｅ  ｆｕｔｕｒｅ”を表す。［数式４］の真理値が“Ｔｒｕｅ”である場合、現在時刻の＜実数値１＞秒後から現在時刻の＜実数値２＞秒後までの間、常に＜監視仕様式＞の真理値が“Ｔｒｕｅ”である。Ｇ＿ｆは、“Ｅｖｅｎｔｕａｌｌｙ  ｉｎ  ｔｈｅ  ｆｕｔｕｒｅ”を用いて、［数式５］のように表すことができる。
【００４３】
［数式５］
！（Ｆ＿ｆ［＜実数値１＞，＜実数値２＞］  ！＜監視仕様式＞）
【００４４】
図６は、図３に示した監視仕様を、上記のＤＳＬを用いて表したものである。
【００４５】
ところで、監視仕様２、４、５、６、及び７は、現在時刻よりも未来の信号の値を参照しているため、ある時刻において、これらの監視仕様に対応する監視仕様式の真理値が“Ｔｒｕｅ”であるか“Ｆａｌｓｅ”であるかを決定することができない。一般に、監視仕様が１つのみである場合、ある時刻における監視結果を前記時刻から一定時間経過してから出力するようにすれば良い。しかし、監視仕様が複数ある場合、監視仕様が１つである場合と同様の処理を行うと、監視仕様毎に判定することになるため処理効率が低下する。
【００４６】
［非特許文献３］には、未来の信号の値を参照する監視仕様式を、過去の信号の値を参照する監視仕様式に変換する手法が開示されている。前記手法を用いて、未来の信号の値を参照する監視仕様式を変換する。
【００４７】
説明の簡便化のため、以下のように、演算子Ｆ＿ｐ及びＧ＿ｐを定義する。
【００４８】
［数式６］
Ｆ＿ｐ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００４９】
［数式６］は、“Ｅｖｅｎｔｕａｌｌｙ  ｉｎ  ｔｈｅ  ｐａｓｔ”を表す。［数式６］の真理値が“Ｔｒｕｅ”である場合、現在時刻の＜実数値２＞秒前から現在時刻の＜実数値１＞秒前までの間のある時刻において、＜監視仕様式＞の真理値が“Ｔｒｕｅ”である。［数式６］は、Ｓｉｎｃｅを用いて、［数式７］のように表すことができる。
【００５０】
［数式７］
｛“Ｔｒｕｅ”｝  Ｓ  ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００５１】
［数式８］
Ｇ＿ｐ［＜実数値１＞，＜実数値２＞］  ＜監視仕様式＞
【００５２】
［数式８］は、“Ａｌｗａｙｓ  ｉｎ  ｔｈｅ  ｐａｓｔ”を表す。［数式８］の真理値が“Ｔｒｕｅ”である場合、現在時刻の＜実数値２＞秒前から現在時刻の＜実数値１＞秒前までの間、常に＜監視仕様式＞の真理値が“Ｔｒｕｅ”である。［数式８］は、“Ｅｖｅｎｔｕａｌｌｙ  ｉｎ  ｔｈｅ  ｐａｓｔ”を用いて、［数式９］のように表すことができる。
【００５３】
［数式９］
！（Ｆ＿ｐ［＜実数値１＞，＜実数値２＞］  ！＜監視仕様式＞）
【００５４】
上記のものを用いることにより、未来の値を参照する監視仕様を、未来の値を参照しない監視仕様に変換できる。
【００５５】
図７は、［非特許文献３］の手法を用いて、図６に示した監視仕様式を、ＤＳＬを用いて書き直したものである。なお、論理積（＆＆）と論理包含（ｉｍｐｌｙ）とを含まない形式に変換してある。ただし、＜実数値＞は実数値を表し、Ｄ［＜監視仕様式＞，＜実数値＞］は現在時刻の＜実数値＞秒前における信号に基づく＜監視仕様式＞の真理値を表す。
【００５６】
＊＊＊Ｒｅｔｅネットワークの作成方法＊＊＊
ＤＳＬで記述した監視仕様式を、実時間制約に対応したＲｅｔｅネットワークに変換する方法について説明する。
図８は、前記方法を示すフローチャートである。
【００５７】
（ステップＳ００１：信号変換処理）
ステップＳ００１では、監視仕様を信号命題から成る論理式とするために、実時間制約に関連する部分式を仮想的な信号を導入して信号命題に変換する。実時間制約に関連する部分式とは、具体的には、演算子Ｄ、演算子Ｆ＿ｐ、演算子Ｇ＿ｐ、及び、演算子Ｓのいずれか１の演算子のみから成る論理式である。実時間制約に関連する部分式が監視仕様に含まれる場合、仮想的な信号を導入して前記部分式を信号命題に変換し、前記仮想的な信号及び前記仮想的な信号に対応する監視仕様式を記録する。
【００５８】
［数式１０］
Ｄ［！｛ＡＣＣ有効信号｝，５］  ｜｜  Ｄ［！｛車間距離  ＜  理想車間距離｝，５］  ｜｜  Ｆ＿ｐ［０，５］（！｛車間距離  ＜  理想車間距離｝）
【００５９】
［数式１０］に示す５秒前の監視仕様２の監視仕様式を用いて、実時間制約に関連する部分式を仮想的な信号を用いた形に変換する具体例を説明する。［数式１０］には、実時間制約に関連する部分式として、２の演算子Ｄと、１の演算子Ｆ＿ｐが含まれている。
【００６０】
まず、Ｄ又はＦ＿ｐを含む部分を、仮想的な信号を導入して置き換える。置き換えた結果は、以下のようになる。
【００６１】
［数式１１］
｛Ｄ＿１｝  ｜｜  ｛Ｄ＿２｝  ｜｜  ｛Ｆ＿ｐ＿１｝
【００６２】
Ｄ＿１、Ｄ＿２、及びＦ＿ｐ＿１は、仮想的な信号であり、Ｄ＿１、Ｄ＿２、及びＦ＿ｐ＿１の末尾の数字は、便宜的に振ったものである。図９に示すように、導入した仮想的な信号の信号名と、前記信号名に対応する実時間制約に関連する部分式が参照する監視仕様式とから成るペアを記録しておく。このとき、前記信号名に、前記信号名に対応する監視仕様式の真理値を求める際に参照する信号が取得された時刻に関する情報を含める。具体例としては、Ｄ＿１［５］と記載した場合、Ｄ＿１［５］の真理値を求める際に、５秒前におけるＤ＿１に対応する監視仕様式の真理値を参照することを表す。
【００６３】
変換後の監視仕様式が実時間制約に関連する部分式を含む場合、再帰的に実時間制約に関連する部分式を仮想的な信号を用いて信号命題に変換する。この変換処理を、全ての監視仕様に対応する監視仕様式に対して行うことにより、監視仕様に対応する監視仕様式から成る監視仕様式のリストの実時間制約に関連する部分式を、信号命題に変換することができる。これにより、監視仕様式のリストは、通常の論理式のリストとみなせる。
【００６４】
（ステップＳ００２：論理最小化処理）
ステップＳ００２では、全ての実時間制約に関連する部分式を変換した監視仕様式のリストの監視仕様式に対して、論理最小化（Ｌｏｇｉｃ  Ｍｉｎｉｍｉｚａｔｉｏｎ）を適用する。論理最小化とは、論理式を、前記論理式と等価な“ｓｕｍ−ｏｆ−ｐｒｏｄｕｃｔｓ”形式の論理式の内、最も単純な論理式に変換することである。論理最小化をすることにより、計算量を削減することができる。なお、論理式を、論理最小化に対応する論理式に近似する論理式に変換しても良い。論理最小化を多項式時間で実施することはできないが、［非特許文献４］に、論理最小化に対応する論理式に近似する論理式を高速に求める手法が開示されている。
【００６５】
［数式１２］は、監視仕様式に論理最小化を適用した後の論理式の具体例である。なお、［数式１２］を、監視仕様式ｘと呼ぶことにする。ここで、＜信号制約ｎ＞は、仮想的な信号である場合もある。ｎは、自然数を表す。
【００６６】
［数式１２］
（｛＜信号制約１＞｝  ＆＆  ｛＜信号制約２＞｝）  ｜｜  （｛＜信号制約３＞｝  ＆＆  ｛＜信号制約４＞｝）  ｜｜  （｛＜信号制約４＞｝  ＆＆  ｛＜信号制約５＞｝  ＆＆  ｛＜信号制約６＞｝）
【００６７】
（ステップＳ００３：ＡＳＴ変換処理）
ステップＳ００３では、監視仕様式のリストの全ての監視仕様式を、ＡＳＴ（Ａｂｓｔｒａｃｔ  Ｓｙｎｔａｘ  Ｔｒｅｅ）に変換する。図１０は、監視仕様式ｘを、ＡＳＴにより表現したグラフを示すものである。ここで、｛＜信号制約ｎ＞｝を信号真理値ｎと表記することにする。
【００６８】
（ステップＳ００４：同一性判定処理）
ステップＳ００４では、監視仕様式のリストの全ての監視仕様式の全てのサブツリーに対して、同一性の判定を行う。監視仕様式ｙ１と監視仕様式ｙ２とを用いて、本ステップにおける処理を具体的に説明する。図１１は、監視仕様式ｙ１をＡＳＴにより表現したものであり、図１２は、監視仕様式ｙ２をＡＳＴにより表現したものである。
【００６９】
図１１のサブツリー１と、図１２のサブツリー２とは、同一のサブツリーである。なお、サブツリーの同一性を判定する際には、サブツリー同士を比較する単純な方法を採用しても良いし、各サブツリーのハッシュ値を計算し、前記ハッシュ値の同一性を判定する方法を採用しても良い。
【００７０】
（ステップＳ００５：サブツリー接続処理）
ステップＳ００５では、ステップＳ００４において同一であると判定されたサブツリー同士をマージする。これにより、監視仕様式のリストの監視仕様式をＤＡＧ（Ｄｉｒｅｃｔｅｄ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ：有向非循環グラフ）により表現することができる。図１３に示すグラフは、監視仕様式ｙ１に対応するＡＳＴと、監視仕様式ｙ２に対応するＡＳＴとをマージしたグラフである。前記グラフにおいて、サブツリー１と、サブツリー２とをマージした部分グラフを、部分グラフ１としている。
【００７１】
（ステップＳ００６：信号分解処理）
ステップＳ００６では、３以上の論理和又は論理積を表すノードを、２の論理和又は論理積を表す複数のノードに変換する。具体例としては、監視仕様式をＤＡＧにより表現したグラフに、図１４に示す部分グラフが存在する場合、前記部分グラフを図１５に示す部分グラフに変換する。
【００７２】
（ステップＳ００７：ノード番号定義処理）
ステップＳ００７では、Ｒｅｔｅネットワークに対して、トポロジカルソートを実施する。ＲｅｔｅネットワークはＤＡＧであるため、トポロジカルソートを実施できる。図１６は、Ｒｅｔｅネットワークに対してトポロジカルソートを実施した例である。なお、前記Ｒｅｔｅネットワークは、仮想的な信号の信号真理値を求める際に実際の信号を参照する場合、前記信号を含む。前記Ｒｅｔｅネットワークの各ノードに振られた番号は、トポロジカルソートに伴い振られた番号である。また、前記番号を、部分仕様番号と呼ぶことにする。それぞれのノードは、真理値を求めるべきであり、監視仕様が含む制約の一部（以下、部分仕様と記述する）を表す。なお、仮想的な信号の信号真理値を求める際に参照する実際の信号に対応するノードと、監視仕様式ｙ１及び監視仕様式ｙ２に対応するノードとを部分仕様を表すノードとして扱い、前記ノードの真理値は、直上のノードの真理値と同一とする。部分仕様番号は、部分仕様を判定する順序を表す。エッジ及びエッジの向きは、部分仕様間の依存関係を表す。
【００７３】
また、図１７は、図１６に示すＲｅｔｅネットワークに対応する表である。なお、実時間制約を表すノードが依存する信号真理値は、Ｒｅｔｅネットワークのグラフから明らかであるので、前記信号真理値に対応する信号名を別途特定する必要はない。
【００７４】
（ステップＳ００８：信号マージ処理）
ステップＳ００８では、仮想的な信号に対応する複数のノードであって、仮想的な信号の真理値を求める際に参照する信号が同一であるが、前記真理値を求める際に取得された時刻が異なる前記信号を参照する複数のノード（以下、異時刻ノード群）を抽出する。図１８に示すＲｅｔｅネットワークを基に、本ステップの処理を具体的に説明する。本図の枠で囲ったノードは、異時刻ノード群のノードに該当する。
【００７５】
図１９に示す表は、異時刻ノード群の各ノードが信号真理値を求める際に参照する信号の信号名と、前記信号を取得した時刻の情報とをまとめたものである。
Ｆ＿ｐ［ｘ，ｙ］の信号真理値を求めるためには、現在時刻−ｙから現在時刻−ｘまでにおける信号１の値が必要であるため、−ｙ以上−ｘ以下の値を、時刻情報として記録する。なお、本図に示す−ｙ以上−ｘ以下の記録間隔は例であり、前記記録間隔は、実行監視装置２０が信号を取得する周期に依存する。
Ｄ［ｚ］の真理値を求めるためには、現在時刻−ｚにおける信号１の値が必要であるため、−ｚの値を、時刻情報として記録する。
図１８に示すＤＡＧの場合、Ｆ＿ｐ［０，２］とＤ［５］とが存在しているので、図１９に示す表が作成される。図２０は、図７に示す監視仕様の判定において必要である、部分仕様と時刻情報とのペアをまとめた表である。
【００７６】
以上の手順により、実時間制約を含む監視仕様の真理値を求めるために必要なＲｅｔｅネットワークを、本実施の形態に係る実行監視装置２０が扱えるよう構成できる。実行監視装置２０は、図１７に示すＲｅｔｅネットワークを表す表と、図２０に示す、実時間制約を含む監視仕様の真理値を求めるために必要な時系列データを整理した表とを記憶する。
【００７７】
＊＊＊構成の説明＊＊＊
図２２は、本実施の形態に係る実行監視装置２０の構成図である。
本図に示されるように、実行監視装置２０は、前処理部２０１と、次計算仕様判定部２０２と、不変仕様判定部２０３と、実時間仕様判定部２０４と、期限管理部２０５と、変化時刻算出部２０６と、出力部２０７と、異常出力部２０８とを備える。
【００７８】
前処理部２０１は、信号制約に基づいて一時バッファ部２２１に入力された信号を信号真理値に変換する。具体的には、前処理部２０１は、信号の値である実数値と定数値との比較等を行う。
【００７９】
次計算仕様判定部２０２は、それぞれの周期において、判定する部分仕様を特定する。
【００８０】
不変仕様判定部２０３は、実時間制約を含まない部分仕様を満たすか否かを判定し、判定結果保存部２２４に保存されている前記部分仕様を満たすか否かを判定した結果である判定結果を更新する。ここで、前記部分仕様を不変仕様と呼ぶことにする。即ち、不変仕様は、演算子ａｎｄ又はｏｒから成る制約のことである。
【００８１】
実時間仕様判定部２０４は、実時間制約を含む部分仕様を満たすか否かを判定し、判定結果保存部２２４に保存されている前記部分仕様を満たすか否かを判定した結果である判定結果を更新する。ここで、前記部分仕様を実時間仕様と呼ぶことにする。即ち、実時間仕様は、演算子Ｄ、Ｆ＿ｐ、Ｇ＿ｐ、又はＳから成る制約のことである。
また、実時間仕様判定部２０４は、時系列データ保存部２２５に保存された時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間を使用する制約である実時間仕様を満たすか否かを判定し、実時間仕様を満たすか否かを判定した結果である判定結果を更新する。
【００８２】
出力部２０７は、監視結果を出力する。
【００８３】
異常出力部２０８は、実時間仕様判定部２０４がある実時間仕様の判定結果を求めるために必要な時系列データを時系列データ保存部２２５に保存していないときに、前記実時間仕様に関連する監視仕様ＩＤを外部に出力する。
即ち、異常出力部２０８は、時系列データ保存部２２５が実時間仕様を判定する際に使用する全ての時系列データを保存していない場合に、依存関係保存部２２９を参照して実時間仕様に対応する監視仕様を特定し、監視仕様の情報を出力する。
【００８４】
実行監視装置２０は、典型的にはＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に配置する要素として、一時バッファ部２２１と、計算対象保存部２２３と、判定結果保存部２２４と、時系列データ保存部２２５と、変化時刻保存部２２６とを備える。
【００８５】
一時バッファ部２２１は、一時的に実行監視装置２０に入力された信号の値を保存する。信号は任意のタイミングで到着するが、監視処理は周期起動するので、一時バッファ部２２１は、一時的に前記信号の値を保存しておく。一時バッファ部２２１は、１の信号に対応する複数の入力信号を保存することもある。
【００８６】
図２３は、一時バッファ部２２１のデータ構造の例である。一時バッファ部２２１は、タイムスタンプと、信号名と、信号の値とを時系列順に保存する。
【００８７】
計算対象保存部２２３は、判定結果を求める対象である部分仕様の一覧を保存する。
【００８８】
判定結果保存部２２４は、各部分仕様の判定結果を保存する。図２４は、判定結果保存部２２４のデータ構造の例である。判定結果保存部２２４は、部分仕様毎に各周期における部分仕様の判定結果を保存する。なお、図２４では、部分仕様名を参考のために記しているが、発明を実施する際には部分仕様名を保存しなくても良い。以後、図において丸括弧により囲っている項目については同様とする。
【００８９】
また、実時間仕様判定部２０４は、判定結果保存部２２４に前記判定結果を保存させる。即ち、実時間仕様判定部２０４は、実時間仕様判定部２０４の実行前に予約されているメモリの領域に保存する。ここで、実行前に予約されているメモリの領域とは、動的に確保されていないメモリの領域のことであり、典型的には、静的領域又はスタック領域である。スタック領域とは、自動変数等を格納するメモリの領域である。静的領域とは、グローバル変数等を格納するメモリの領域である。
【００９０】
なお、実行監視装置２０の機能は、ソフトウェアである実行監視プログラムによって実現される。
【００９１】
時系列データ保存部２２５は、実時間仕様の判定に必要な時系列データを保存する。即ち、時系列データ保存部２２５は、実時間仕様が依存する部分仕様の判定結果を保存する。具体例としては、図１８に示したＲｅｔｅネットワークの場合、時系列データ保存部２２５は、実時間仕様に依存されているのは｛信号１｝のみであるので、｛信号１｝のみの時系列データを保存する。
【００９２】
部分仕様の判定結果は、“Ｔｒｕｅ”又は“Ｆａｌｓｅ”である。そのため、実行監視装置２０の各部は、時系列データ保存部２２５が、信号が反転した時刻のみを保存していれば、判定結果保存部２２４に保存されている判定結果を参照することで、特定の時刻における前記信号の真理値を得ることができる。
【００９３】
時系列データ保存部２２５は、
信号が反転した全ての時刻を保存する必要はなく、
最後に信号が反転した時刻である最終反転時刻と、反転した時刻及び前記時刻の直近に反転した時刻の間隔とを保存すれば十分である。
【００９４】
実行監視装置２０は組み込みシステムに実装されることを想定するので、保存可能である時系列データの量に限りがある。
そこで、時系列データ保存部２２５は、
実時間仕様に依存されている部分仕様毎に許容する反転の回数を設定し、
ある部分仕様の反転の回数が、前記部分仕様に対応する許容する反転の回数を超えた場合、保存している前記部分仕様の時系列データの内、最も古いデータを破棄する。
【００９５】
上記の方針により、実行監視装置２０が、厳密に監視仕様を判定できない場合が生じる。
実行監視装置２０は、前記場合に対応するため、
許容する変化の回数を適切に設定しておき、
時系列データ保存部２２５に保存している時系列データより過去の時系列データを参照する必要がある場合、フェイルセーフになることを考慮して作成された代替的な判定結果を用いても良い。
【００９６】
図２５は、時系列データ保存部２２５のデータ構造の例である。本例では、許容する変化の回数を３としている。
【００９７】
変化時刻保存部２２６は、実時間仕様毎に、次に部分仕様の判定をする必要がある時刻を保存する。通常のＲｅｔｅネットワークでは、実時間仕様を含まないので、判定すべき部分仕様を特定するには、Ｒｅｔｅネットワークのグラフのみを参照すればよい。しかし、実時間仕様を含む場合には、判定時において実時間仕様が依存する部分仕様の判定結果が反転していない場合であっても、一定時間が経過したことを理由として前記実時間仕様を再度判定する必要があることがある。
【００９８】
図３２は、変化時刻保存部２２６のデータ構造の例である。変化時刻保存部２２６は、本例に示すように、実時間仕様毎に、次に判定する時刻である次回判定時刻を保存する。
【００９９】
実行監視装置２０は、典型的にはＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）に配置される要素として、監視仕様保存部２２２と、変化時刻テーブル保存部２２７と、異常処理ポリシ保存部２２８と、依存関係保存部２２９とを備える。
【０１００】
監視仕様保存部２２２は、監視仕様のグラフ構造を保存する。監視仕様保存部２２２は、図１７に示すように、ノードごとに、部分仕様番号と、部分仕様名と、結合先のノードとを保存する。
【０１０１】
変化時刻テーブル保存部２２７は、部分仕様に依存している実時間仕様を判定するために、前記部分仕様の、どの時刻における真理値が必要であるかについての情報を保存する。変化時刻テーブル保存部２２７が保存するデータのデータ構造の例は、図１９に示した通りである。変化時刻テーブル保存部２２７は、実時間仕様に依存されている部分仕様毎に、時刻情報を保存する。
【０１０２】
異常処理ポリシ保存部２２８は、ある実時間仕様の判定に際し、時系列データ保存部２２５が、実時間仕様判定部２０４が前記実時間仕様を判定する際に使用する全ての時系列データを保存していない場合の処理方針を保存する。実時間仕様判定部２０４は、この場合、正確な判定をすることができない。図２７は、異常処理ポリシ保存部２２８が保存するデータのデータ構造の例である。処理方針は、「“Ｔｒｕｅ”として扱う」、「“Ｆａｌｓｅ”として扱う」、「使用できる最古の値を用いる」、「以後の判定を中止する」のいずれかである。
【０１０３】
処理方針の「以後の判定を中止する」は、処理方針が「以後の判定を中止する」である実時間仕様が、計算対象保存部２２３に追加されないことを意味する。
【０１０４】
依存関係保存部２２９は、実時間仕様毎に、監視仕様と実時間仕様との関係性を保存する。図２６は、依存関係保存部２２９が保存するデータのデータ構造の例である。本図の関連監視仕様ＩＤは、部分仕様に関連する監視仕様の監視仕様ＩＤを表す。「監視仕様ｙ１」及び「監視仕様ｙ２」は、それぞれ、「監視仕様式ｙ１」及び「監視仕様式ｙ２」に対応する監視仕様の監視仕様ＩＤである。なお、部分仕様番号に対応する関連監視仕様は、図１６のＲｅｔｅネットワークの前記部分仕様番号に対応するノードから、終点向き方向に辿ることで得ることができる。
【０１０５】
これらの構成要素は、実行監視装置２０における通信回路、メモリに格納された制御プログラムを実行するプロセッサあるいはデジタル回路等により実現される。
【０１０６】
図２１は、本実施の形態に係る実行監視装置２０のハードウェア構成図である。
実行監視装置２０は、本図に示す一般的なマイクロコンピュータ１０と、通信インタフェース１０４とから構成される。なお、マイクロコンピュータ１０は、一般的なコンピュータであっても良い。コンピュータには、マイクロコンピュータも含まれることとする。
【０１０７】
前処理部２０１と、次計算仕様判定部２０２と、不変仕様判定部２０３と、実時間仕様判定部２０４と、期限管理部２０５と、変化時刻算出部２０６とは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１及びＲＡＭ１０３から構成される。出力部２０７と、異常出力部２０８とは、ＣＰＵ１０１、ＲＡＭ１０３、及び通信インタフェース１０４から構成される。一時バッファ部２２１と、計算対象保存部２２３と、判定結果保存部２２４と、時系列データ保存部２２５と、変化時刻保存部２２６とは、ＲＡＭ１０３から構成される。監視仕様保存部２２２と、変化時刻テーブル保存部２２７と、異常処理ポリシ保存部２２８と、依存関係保存部２２９とは、ＲＯＭ１０２から構成される。
【０１０８】
＊＊＊動作の説明＊＊＊
図２８は、実行監視装置２０による実行監視手順を示すフローチャートである。実行監視装置２０は、ステップＳ２０１〜Ｓ２１５に示すフローを周期的に実行する。
【０１０９】
（ステップＳ２０１：真理値変換処理）
前処理部２０１は、一時バッファ部２２１に保存された信号の信号値を、監視仕様が有する信号制約に基づいて信号真理値に変換する。なお、信号値をそのまま信号真理値として使用すればよい場合、前処理部２０１は実際には入力信号を変換しないが、説明の便宜のために、前処理部２０１が信号値を信号真理値に変換したとみなすことにする。
【０１１０】
また、前処理部２０１は、一時バッファ部２２１に、信号制約に対応するある信号の信号値が複数保存されている場合、
全ての前記信号値を前記信号制約に基づいて信号真理値に変換し、
前記信号真理値の内、少なくとも１つが“Ｆａｌｓｅ”である場合、前記信号制約の信号真理値を“Ｆａｌｓｅ”とし、
それ以外の場合、前記信号制約の信号真理値を“Ｔｒｕｅ”とする。
【０１１１】
（ステップＳ２０２：時系列データ更新処理）
前処理部２０１は、時系列データの更新を行う。
【０１１２】
前処理部２０１は、
変化時刻テーブル保存部２２７を参照して実時間仕様に依存されている信号制約を特定し、
実時間仕様に依存されている信号制約が存在する場合、全ての前記信号制約について、今回の周期における前記信号制約の真理値と、判定結果保存部２２４に記録されている、前記信号制約に対応する真理値とを比較する。
【０１１３】
前処理部２０１は、双方の真理値が相違する場合、
時系列データ保存部２２５に、前記真理値に対応する全ての直近ｎ回目の反転間隔として保存されているデータを、直近ｎ＋１回目の反転間隔として保存し、
時系列データ保存部２２５に保存されている最終判定時刻と現在時刻との差を、直近１回目の反転間隔として保存し、
時系列データ保存部２２５の最終反転時刻に現在時刻を保存する。
ただし、前処理部２０１は、時系列データ保存部２２５に保存されている、前記真理値に対応するデータの数が既に保存できる上限に達している場合、前記データの内、最も古いデータを削除する。
【０１１４】
（ステップＳ２０３：メモリあふれ検出処理）
前処理部２０１は、
時系列データ更新処理においてデータを更新した場合、全ての前記データに対応する信号制約に対して、メモリあふれの検出処理を行い、
それ以外の場合、本ステップの処理を実行せずにステップＳ２０５に進む。
【０１１５】
前処理部２０１は、時系列データ保存部２２５に保存されている、信号制約に関する直近ｎ回目の判定間隔のデータ数が保存できる上限に達している場合、かつ、
時系列データ保存部２２５に保存された最終反転時刻から時系列データ保存部２２５に保存された全ての直近ｎ回目の反転間隔を足した値を引いた時刻が、前記信号制約に依存する実時間仕様の判定結果を求める際に参照する時刻、又は、時刻の区間内の最も過去の時刻よりも未来の時刻である場合、前記信号制約についてメモリあふれを検出したものとして、ステップＳ２０４に進む。
前処理部２０１は、上記以外の場合、ステップＳ２０５に進む。
【０１１６】
（ステップＳ２０４：異常出力処理）
前処理部２０１は、前記信号制約についてメモリあふれを検出した場合、異常処理ポリシ保存部２２８を参照し、前記実時間仕様に対応する処理方針に従って処理する。
前処理部２０１は、前記実時間仕様の判定結果を、前記実時間仕様に対応する処理方針に応じて設定する。
【０１１７】
異常出力部２０８は、
依存関係保存部２２９に保存されている依存関係を参照して、前記実時間仕様に対応する監視仕様を、監視仕様ＩＤを特定することによって特定し、
前記監視仕様の情報である監視仕様ＩＤを外部に出力する。
【０１１８】
（ステップＳ２０５：変化時刻算出処理）
変化時刻算出部２０６は、
実時間仕様毎に、実時間仕様が依存する、時系列データ保存部２２５に保存された信号に関するデータと、変化時刻テーブル保存部２２７に保存されたデータとに基づいて、実時間仕様の判定結果が変化する時刻の内、最も現在時刻に近い未来の時刻を変化時刻として算出し、
前記変化時刻を前記時刻に対応する実時間仕様の次回判定時刻として変化時刻保存部２２６に保存する。
即ち、変化時刻算出部２０６は、実時間仕様毎に、実時間仕様の判定結果が変化する変化時刻を算出する。
【０１１９】
（ステップＳ２０６：反転判定処理）
次計算仕様判定部２０２は、
全ての信号制約の信号真理値について、前処理部２０１が変換した信号真理値と、判定結果保存部２２４に保存されている信号真理値とを比較することにより、前処理部２０１が変換した信号真理値が、１つ前の周期における信号真理値と比較して反転しているか否かを判定し、
信号真理値が反転している場合、監視仕様保存部２２２を参照し、全ての前記信号真理値に直接的に依存する部分仕様を、判定結果が変化し得る部分仕様として特定し、
全ての前記信号真理値に直接的に依存する部分仕様を、計算対象保存部２２３に保存する。なお、次計算仕様判定部２０２は、前記部分仕様が既に計算対象保存部２２３に保存されている場合、前記部分仕様を重複して保存しない。
信号真理値に直接的に依存する部分仕様とは、図１８に示すグラフにおいて、信号真理値に対応するノードと、部分仕様に対応するノードとが接続されており、部分仕様に対応するノードから始点向き方向に１つ進むことにより、信号真理値に対応するノードに辿り着くことを意味する。この信号真理値を、部分仕様等に置き換えた場合においても同様である。
【０１２０】
（ステップＳ２０７：期限管理処理）
期限管理部２０５は、各実時間仕様の判定結果の有効期限が切れている場合に、前記判定結果に対応する実時間仕様を実時間仕様判定部２０４が判定すべきであると判定する。
期限管理部２０５は、具体的には、
実時間仕様毎に、現在時刻が実時間仕様に対応する次回判定時刻以後（即ち、変化時刻以後）であるか否かを判定し、
現在時刻が実時間仕様に対応する次回判定時刻以後である場合、
実時間仕様判定部２０４が、前記次回判定時刻に対応する実時間仕様を判定すべきであると判定し、
前記実時間仕様を、計算対象保存部２２３に保存する。なお、期限管理部２０５は、前記実時間仕様及び前記部分仕様が既に計算対象保存部２２３に保存されている場合、前記部分仕様を重複して保存しない。
【０１２１】
図３１は、本ステップの処理を終えた後の、計算対象保存部２２３が保存するデータ構造の例である。「○」は、「○」に対応する部分仕様が、計算対象保存部２２３に、計算対象として保存されていることを表す。
本例では、
全ての信号真理値は変化せず、
現在時刻がＦ＿ｐ［０，２］の次回判定時刻を過ぎておらず、
現在時刻がＤ［５］の次回判定時刻を過ぎていることを仮定しているため、
Ｄ［５］のみが計算対象とされている。
【０１２２】
（ステップＳ２０８：計算対象判定処理）
次計算仕様判定部２０２は、計算対象である部分仕様の有無を判定する。具体的には、次計算仕様判定部２０２は、計算対象保存部２２３に、計算対象として保存されている部分仕様が存在するか否かを判定する。
実行監視装置２０は、
前記部分仕様が存在しない場合、今回の周期の周期処理を終了し、
前記部分仕様が存在する場合、ステップＳ２０９に進む。
【０１２３】
（ステップＳ２０９：部分仕様特定処理）
次計算仕様判定部２０２は、判定結果を求める対象である１の部分仕様を特定する。具体的には、次計算仕様判定部２０２は、計算対象保存部２２３に、計算対象として記録されている部分仕様の内、部分仕様番号が一番小さい部分仕様を特定する。以下、本ステップで特定した部分仕様を、特定部分仕様と呼ぶ。
【０１２４】
（ステップＳ２１０：実時間仕様判定処理）
次計算仕様判定部２０２は、特定部分仕様が実時間仕様であるか否かを判定する。
【０１２５】
（ステップＳ２１１：実時間仕様演算処理）
本ステップの詳細は、ステップＳ３０１〜Ｓ３１２に記載する。
【０１２６】
（ステップＳ２１２：不変仕様判定処理）
次計算仕様判定部２０２は、特定部分仕様が不変仕様であるか否かを判定する。
実行監視装置２０は、
前記部分仕様が不変仕様である場合、ステップＳ２１３に進み、
それ以外の場合、ステップＳ２１４に進む。
【０１２７】
（ステップＳ２１３：不変仕様演算処理）
本ステップの詳細は、ステップＳ４０１〜Ｓ４０７に記載する。
【０１２８】
（ステップＳ２１４：出力処理）
出力部２０７は、判定結果保存部２２４に保存されている監視仕様の監視結果を外部に出力する。
【０１２９】
（ステップＳ２１５：削除処理）
次計算仕様判定部２０２は、特定部分仕様の記録を、計算対象保存部２２３から削除する。実行監視装置２０は、ステップＳ２０８に進む。
【０１３０】
図２９は、実時間仕様判定部２０４の処理を示すフローチャートである。
【０１３１】
（ステップＳ３０１：Ｄ判定処理）
実時間仕様判定部２０４は、特定部分仕様の演算子がＤであるか否かを判定する。
実時間仕様判定部２０４は、
演算子がＤである場合、ステップＳ３０２に進み、
それ以外の場合、ステップＳ３０３に進む。
【０１３２】
（ステップＳ３０２：Ｄ演算処理）
実時間仕様判定部２０４は、前記演算子Ｄの演算を行う。実時間仕様判定部２０４は、演算子Ｄの第１項に基づいて、時系列データ保存部２２５に保存されている時系列データから、特定部分仕様が参照すべき時刻におけるデータを抽出する。
【０１３３】
実時間仕様判定部２０４は、
前記データに係る値が“Ｔｒｕｅ”である場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｆａｌｓｅ”とする。
【０１３４】
（ステップＳ３０３：Ｆ＿ｐ判定処理）
実時間仕様判定部２０４は、特定部分仕様の演算子がＦ＿ｐであるか否かを判定する。
実時間仕様判定部２０４は、
演算子がＦ＿ｐである場合、ステップＳ３０４に進み、
それ以外の場合、ステップＳ３０５に進む。
【０１３５】
（ステップＳ３０４：Ｆ＿ｐ演算処理）
実時間仕様判定部２０４は、演算子Ｆ＿ｐの演算を行う。
実時間仕様判定部２０４は、
演算子Ｆ＿ｐの第１項及び第２項に基づいて、演算子Ｆ＿ｐの監視仕様式の真理値を参照すべき時刻の区間（以下、Ｆ＿ｐ参照区間）を特定し、
時系列データ保存部２２５に保存されている時系列データから、Ｆ＿ｐ参照区間内における前記監視仕様式に対応するデータを抽出する。
【０１３６】
実時間仕様判定部２０４は、
Ｆ＿ｐ参照区間内において、前記監視仕様式の真理値が“Ｔｒｕｅ”である時刻が少なくとも１存在する場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｆａｌｓｅ”とする。
【０１３７】
（ステップＳ３０５：Ｇ＿ｐ判定処理）
実時間仕様判定部２０４は、特定部分仕様の演算子がＧ＿ｐであるか否かを判定する。
実時間仕様判定部２０４は、
演算子がＧ＿ｐである場合、ステップＳ３０６に進み、
それ以外の場合、ステップＳ３０７に進む。
【０１３８】
（ステップＳ３０６：Ｇ＿ｐ演算処理）
実時間仕様判定部２０４は、前記演算子Ｇ＿ｐの演算を行う。
実時間仕様判定部２０４は、
演算子Ｇ＿ｐの第１項及び第２項に基づいて、演算子Ｇ＿ｐの監視仕様式の真理値を参照すべき時刻の区間（以下、Ｇ＿ｐ参照区間）を特定し、
時系列データ保存部２２５に保存されている時系列データから、Ｇ＿ｐ参照区間内における前記監視仕様式に対応するデータを抽出する。
【０１３９】
実時間仕様判定部２０４は、
Ｇ＿ｐ参照区間内において、前記監視仕様式の真理値が“Ｆａｌｓｅ”である時刻が少なくとも１存在する場合、特定部分仕様の判定結果“Ｆａｌｓｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とする。
【０１４０】
（ステップＳ３０７：Ｓ演算処理）
実時間仕様判定部２０４は、演算子Ｓの演算を行う。
実時間仕様判定部２０４は、
演算子Ｓの、演算子Ｓの定義中の実数値１及び実数値２に対応する項に基づいて、演算子Ｓの２の監視仕様式（本ステップにおいて、Ｓの左に表記する監視仕様式をｓ１、Ｓの右に表記する監視仕様式をｓ２とする）の内、ｓ２の真理値を参照すべき時刻の区間（以下、ｓ２参照区間）を特定し、
時系列データ保存部２２５に保存されている時系列データから、ｓ２参照区間内におけるｓ２に対応するデータを抽出する。
【０１４１】
実時間仕様判定部２０４は、
ｓ２参照区間内において、ｓ２に対応するデータに対応する時刻が現在時刻に近い順に、ｓ２に対応するデータに基づくｓ２の真理値が“Ｔｒｕｅ”であるか否かを確認することにより、ｓ２参照区間内においてｓ２の真理値が“Ｔｒｕｅ”である時刻の内、最も現在時刻に近い時刻を特定し、
時系列データ保存部２２５に保存されている時系列データから、前記最も現在時刻に近い時刻から現在時刻までの区間（以下、ｓ１参照区間）におけるｓ１に対応するデータを抽出する。
【０１４２】
実時間仕様判定部２０４は、
ｓ１参照区間内において、ｓ１に対応するデータに基づくｓ１の真理値が常に“Ｔｒｕｅ”である場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｆａｌｓｅ”とする。
【０１４３】
（ステップＳ３０８：判定結果更新処理）
実時間仕様判定部２０４は、判定結果保存部２２４に記録されている特定部分仕様の判定結果を、上記で求めた判定結果に更新する。
【０１４４】
（ステップＳ３０９：時系列データ更新処理）
実時間仕様判定部２０４は、時系列データの更新を行う。
【０１４５】
実時間仕様判定部２０４は、
変化時刻テーブル保存部２２７を参照して特定部分仕様が実時間仕様に依存されているか判定し、
特定部分仕様が実時間仕様に依存されている場合、今回の周期における特定部分仕様の判定結果と、判定結果保存部２２４に記録されている、特定部分仕様に対応する判定結果とを比較する。
【０１４６】
実時間仕様判定部２０４は、双方の判定結果が相違する場合、
時系列データ保存部２２５に、前記判定結果に対応する全ての直近ｎ回目の反転間隔として保存されているデータを、直近ｎ＋１回目の反転間隔として保存し、
時系列データ保存部２２５に保存されていた最終判定時刻と現在時刻との差を、直近１回目の反転間隔として保存し、
時系列データ保存部２２５の最終反転時刻に現在時刻を保存する。ここで、ｎは自然数とする。
ただし、実時間仕様判定部２０４は、時系列データ保存部２２５に保存されている、前記判定結果に対応するデータの数が既に保存できる上限に達している場合、前記データの内、最も古いデータを削除する。
【０１４７】
（ステップＳ３１０：メモリあふれ検出処理）
実時間仕様判定部２０４は、
時系列データ更新処理において特定部分仕様に対応するデータを更新した場合、前記データに対してメモリあふれの検出処理を行い、
それ以外の場合、本ステップの処理を実行せずに、本フローチャートの処理を終了する。
実時間仕様判定部２０４は、時系列データ保存部２２５に保存されている直近ｎ回目の判定間隔のデータ数が保存できる上限に達している場合、かつ、
時系列データ保存部２２５に保存された最終反転時刻から時系列データ保存部２２５に保存された全ての直近ｎ回目の反転間隔を足した値を引いた時刻が、特定部分仕様に依存する実時間仕様の判定結果を求める際に参照する時刻、又は、時刻の区間内の最も過去の時刻よりも未来の時刻である場合、特定部分仕様についてメモリあふれを検出したものとして、ステップＳ３１１に進む。
実時間仕様判定部２０４は、上記以外の場合、本フローチャートの処理を終了する。
【０１４８】
（ステップＳ３１１：異常出力処理）
実時間仕様判定部２０４は、特定部分仕様についてメモリあふれを検出した場合、異常処理ポリシ保存部２２８を参照して、前記実時間仕様に対応する処理方針に従って処理する。
実時間仕様判定部２０４は、前記実時間仕様の判定結果を、前記実時間仕様に対応する処理方針に応じて設定する。
【０１４９】
異常出力部２０８は、依存関係保存部２２９に保存されている依存関係を参照して、前記実時間仕様に関連する監視仕様ＩＤを特定し、
前記監視仕様ＩＤを外部に出力する。
【０１５０】
（ステップＳ３１２：反転判定処理）
次計算仕様判定部２０２は、
上記のステップにおける特定部分仕様の判定結果と、判定結果保存部２２４に保存されている、特定部分仕様に対応する判定結果とを比較することにより、特定部分仕様の判定結果が、１つ前の周期における判定結果と比較して反転しているか否かを判定し、
判定結果が反転している場合、監視仕様保存部２２２を参照し、特定部分仕様に直接的に依存する部分仕様を、判定結果が変化し得る部分仕様として特定し、
特定部分仕様に直接的に依存する部分仕様を、計算対象保存部２２３に保存する。なお、次計算仕様判定部２０２は、前記部分仕様が既に計算対象保存部２２３に保存されている場合、前記部分仕様を重複して保存しない。
【０１５１】
図３０は、不変仕様判定部２０３の処理を示すフローチャートである。
【０１５２】
（ステップＳ４０１：ａｎｄ判定処理）
不変仕様判定部２０３は、特定部分仕様の演算子がａｎｄであるか否かを判定する。
不変仕様判定部２０３は、
演算子がａｎｄである場合、ステップＳ４０２に進み、
それ以外の場合、ステップＳ４０３に進む。
【０１５３】
（ステップＳ４０２：ａｎｄ演算処理）
不変仕様判定部２０３は、演算子ａｎｄの演算を行う。
不変仕様判定部２０３は、
特定部分仕様の入力である２の真理値が双方とも“Ｔｒｕｅ”である場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｆａｌｓｅ”とする。
【０１５４】
（ステップＳ４０３：ｏｒ演算処理）
不変仕様判定部２０３は、演算子ｏｒの演算を行う。
不変仕様判定部２０３は、
特定部分仕様の入力である２の真理値が双方とも“Ｆａｌｓｅ”である場合、特定部分仕様の判定結果を“Ｆａｌｓｅ”とし、
それ以外の場合、特定部分仕様の判定結果を“Ｔｒｕｅ”とする。
【０１５５】
ステップＳ４０４からＳ４０８までの処理は、ステップＳ３０８からＳ３１２までの処理と同様の処理であるため、説明を省略する。
【０１５６】
＊＊＊実施の形態１の特徴＊＊＊
期限管理部２０５は、現在時刻が変化時刻以後である場合に、実時間仕様判定部２０４が変化時刻に対応する実時間仕様を判定すべきであると判定し、実時間仕様判定部２０４は、期限管理部２０５が判定すべきであると判定した実時間仕様を判定する。
【０１５７】
本実施の形態の実行監視装置２０は、実時間仕様の判定結果が変化した場合に、判定結果が変化する実時間仕様に依存する、監視仕様が含む制約の一部である部分仕様を特定する次計算仕様判定部２０２を備え、
実時間仕様判定部２０４は、次計算仕様判定部２０２が特定した部分仕様の内、実時間仕様を判定する。
【０１５８】
次計算仕様判定部２０２は、実時間仕様の判定結果が変化した場合に、監視仕様に対応したＲｅｔｅネットワークに基づいて、判定結果が依存する部分仕様を特定する。
【０１５９】
実時間仕様判定部２０４は、時系列データ保存部２２５が実時間仕様を判定する際に使用する全ての時系列データを保存していない場合に、異常処理ポリシ保存部２２８に保存された、前記実時間仕様に対応する処理方針に従って処理する。
【０１６０】
＊＊＊実施の形態１の応用例＊＊＊
本実施の形態に係る実行監視装置２０は、ロボット及び電車の実行を監視することができる。具体的には、図２に示す実行監視装置２０が監視仕様の判定に用いる信号を、これらの実行時に発生する信号に適宜置き換え、図３に示すような監視仕様を作成し、前記監視仕様をＤＳＬを用いて表現すれば良い。
【０１６１】
＊＊＊実施の形態１の効果の説明＊＊＊
以上のように、本実施の形態によれば、Ｒｅｔｅアルゴリズムをベースにした判定方法を用いることにより、判定結果が変化し得る部分仕様のみを判定する。そのため、本実施の形態に係る実行監視装置２０は、監視仕様を効率的に判定することができる。
【０１６２】
また、前記実行監視装置２０は、監視仕様の判定に必要な時系列データを時系列データ保存部２２５が保持できないために監視結果が不定となる場合に、前記場合を検出し、前記場合に陥っていることを外部に通知する。また、前記実行監視装置２０は、前記場合に、異常処理ポリシ保存部２２８を参照して処理を行うため、監視結果を安全側のものとする。
【０１６３】
＜変形例１＞
本実施の形態では、実行監視装置２０の各機能をソフトウェアで実現する場合を説明した。しかし、変形例として、前記各機能は、ハードウェアで実現されても良い。
【０１６４】
前記各機能がハードウェアで実現される場合には、マイクロコンピュータ１０は、ＣＰＵ１０１に代えて、電子回路（処理回路）を備える。あるいは、マイクロコンピュータ１０は、ＣＰＵ１０１、ＲＯＭ１０２、及びＲＡＭ１０３に代えて、電子回路を備える。電子回路は、前記各機能（及びＲＯＭ１０２とＲＡＭ１０３）を実現する専用の電子回路である。
【０１６５】
電子回路は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が想定される。
【０１６６】
前記各機能を１つの電子回路で実現してもよいし、前記各機能を複数の電子回路に分散させて実現してもよい。
【０１６７】
あるいは、一部の前記各機能がハードウェアで実現され、他の前記各機能がソフトウェアで実現されてもよい。
【０１６８】
前述したＣＰＵ１０１とＲＡＭ１０２とＲＯＭ１０３と電子回路とを、総称して「プロセッシングサーキットリー」という。つまり、前記各機能は、プロセッシングサーキットリーにより実現される。
【０１６９】
＊＊＊他の実施の形態＊＊＊
前述した実施の形態の任意の構成要素の変形、もしくは実施の形態において任意の構成要素の省略が可能である。
【０１７０】
また、実施の形態は、実施の形態１で示したものに限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１７１】
１０  マイクロコンピュータ、２０  実行監視装置、１０１  ＣＰＵ、１０２  ＲＯＭ、１０３  ＲＡＭ、１０４  通信インタフェース、２０１  前処理部、２０２  次計算仕様判定部、２０３  不変仕様判定部、２０４  実時間仕様判定部、２０５  期限管理部、２０６  変化時刻算出部、２０７  出力部、２０８  異常出力部、２２１  一時バッファ部、２２２  監視仕様保存部、２２３  計算対象保存部、２２４  判定結果保存部、２２５  時系列データ保存部、２２６  変化時刻保存部、２２７  変化時刻テーブル保存部、２２８  異常処理ポリシ保存部、２２９  依存関係保存部。
【要約】
実行監視装置（２０）は、時系列データを保存する時系列データ保存部（２２５）と、実時間仕様判定部（２０４）とを備える。実時間仕様判定部（２０４）は、時系列データ保存部（２２５）に保存された前記時系列データが、電子装置の実行時監視の監視仕様が含む制約の一部であり、実時間仕様判定部（２０４）の実行前に予約されているメモリの領域に保存されており、実時間を使用する制約である実時間仕様を満たすか否かを判定した結果である判定結果を更新する。【図１】
0006664560.tif 000002
【図２】
0006664560.tif 000003
【図３】
0006664560.tif 000004
【図４】
0006664560.tif 000005
【図５】
0006664560.tif 000006
【図６】
0006664560.tif 000007
【図７】
0006664560.tif 000008
【図８】
0006664560.tif 000009
【図９】
0006664560.tif 000010
【図１０】
0006664560.tif 000011
【図１１】
0006664560.tif 000012
【図１２】
0006664560.tif 000013
【図１３】
0006664560.tif 000014
【図１４】
0006664560.tif 000015
【図１５】
0006664560.tif 000016
【図１６】
0006664560.tif 000017
【図１７】
0006664560.tif 000018
【図１８】
0006664560.tif 000019
【図１９】
0006664560.tif 000020
【図２０】
0006664560.tif 000021
【図２１】
0006664560.tif 000022
【図２２】
0006664560.tif 000023
【図２３】
0006664560.tif 000024
【図２４】
0006664560.tif 000025
【図２５】
0006664560.tif 000026
【図２６】
0006664560.tif 000027
【図２７】
0006664560.tif 000028
【図２８】
0006664560.tif 000029
【図２９】
0006664560.tif 000030
【図３０】
0006664560.tif 000031
【図３１】
0006664560.tif 000032
【図３２】
0006664560.tif 000033