(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023143729
(43)【公開日】2023-10-06
(54)【発明の名称】正確性検証システム、方法、装置、およびプログラム
(51)【国際特許分類】
G06F 11/36 20060101AFI20230928BHJP
【FI】
G06F11/36 196
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023013864
(22)【出願日】2023-02-01
(31)【優先権主張番号】17/704,086
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
2.イーサネット
(71)【出願人】
【識別番号】521042770
【氏名又は名称】ウーブン・バイ・トヨタ株式会社
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100147555
【弁理士】
【氏名又は名称】伊藤 公一
(74)【代理人】
【識別番号】100123593
【弁理士】
【氏名又は名称】関根 宣夫
(74)【代理人】
【識別番号】100133835
【弁理士】
【氏名又は名称】河野 努
(74)【代理人】
【識別番号】100167461
【弁理士】
【氏名又は名称】上木 亮平
(72)【発明者】
【氏名】ジャーン-フランスワー バスティエン
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042HH07
5B042HH39
5B042MA08
5B042MC22
5B042MC33
(57)【要約】
【課題】正確性検証システム、方法、装置、およびプログラムの提供。
【解決手段】電子装置により実行される、システムの構成要素における特性の正確性を決定するための方法であって、方法は、システムの構成要素の既知の特性を設定することと、システムの構成要素の未知の特性を動的に決定することと、ここにおいて、動的に決定することは、動作に対して、動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、動作に対して、動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及びテストを通して、システムの構成要素の未知の特性の限界を識別することを備えており、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することと、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新することと、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
電子装置により実行される、システムの構成要素における特性の正確性を決定するための方法であって、
前記システムの前記構成要素の既知の特性を設定することと、
前記システムの前記構成要素の未知の特性を動的に決定することであって、ここにおいて、前記動的に決定することは、
動作に対して、前記動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、
前記動作に対して、前記動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及び
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することを備えており、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証することと、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新することと、
を備える方法。
【請求項2】
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することは、シミュレートされたシステムでテストすることを備える、
請求項1に記載の方法。
【請求項3】
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することは、ハードウェア構成要素をテストすることを備える、
請求項1又は請求項2に記載の方法。
【請求項4】
前記システムは自律車両である、
請求項1又は請求項2に記載の方法。
【請求項5】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証することは、
最悪のケースの実行時間を決定すること、
最悪のケースの誤差伝播を決定すること、
最悪のケースのスケジュール設定を決定すること、及び、
最悪のケースのネットワーク使用を決定することの少なくとも1つを備える、
請求項1又は請求項2に記載の方法。
【請求項6】
前記システムの前記構成要素の前記既知の特性を設定することは、前記システムの設計を解析すること、前記システムの構成を解析すること、又はプログラムによる導出により前記システムのコンピュータコードを解析すること、を備える、
請求項1又は請求項2に記載の方法。
【請求項7】
前記検証は、前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性が、前記システムの動作範囲内で維持されているかどうかを決定することに基づいて行われる、
請求項1又は請求項2に記載の方法。
【請求項8】
前記構成要素の前記未知の特性の限界を識別することは、前記構成要素の前記未知の特性と関連付けられているコーナーケースを識別することを備える、
請求項1又は請求項2に記載の方法。
【請求項9】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証することは、ブール充足可能性ソルバーを使用して実行される、
請求項1又は請求項2に記載の方法。
【請求項10】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証することは、一次ロジック検証エンジンを使用して実行される、
請求項1又は請求項2に記載の方法。
【請求項11】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性は、機能の安全性、セキュリティ、プライバシー、エネルギー利用、及びリソース利用の少なくとも1つと関連付けられている、
請求項1又は請求項2に記載の方法。
【請求項12】
システムの構成要素における特性の正確性を決定するための装置であって、
命令を格納するように構成されているメモリと、
1つ以上のプロセッサを備え、前記1つ以上のプロセッサは、
前記システムの前記構成要素の既知の特性を設定し、
前記システムの前記構成要素の未知の特性を動的に決定し、ここにおいて、前記動的に決定することは、
動作に対して、前記動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、
前記動作に対して、前記動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及び
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することを備えており、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証し、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新する前記命令を実行するように構成される、
装置。
【請求項13】
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することは、シミュレートされたシステムでテストすることを備える、
請求項12に記載の装置。
【請求項14】
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することは、ハードウェア構成要素をテストすることを備える、
請求項12又は請求項13に記載の装置。
【請求項15】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証することは、
最悪のケースの実行時間を決定すること、
最悪のケースの誤差伝播を決定すること、
最悪のケースのスケジュール設定を決定すること、及び
最悪のケースのネットワーク使用を決定することの少なくとも1つを備える、
請求項12又は請求項13に記載の装置。
【請求項16】
前記システムの前記構成要素の前記既知の特性を設定することは、前記システムの設計を解析すること、前記システムの構成を解析すること、又はプログラムによる導出により前記システムのコンピュータコードを解析することを備える、
請求項12又は請求項13に記載の装置。
【請求項17】
前記検証は、前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性が、前記システムの動作範囲内で維持されているかどうかを決定することに基づいて行われる、
請求項12又は請求項13に記載の装置。
【請求項18】
前記構成要素の前記未知の特性の限界を識別することは、前記構成要素の前記未知の特性と関連付けられているコーナーケースを識別することを備える、
請求項12又は請求項13に記載の装置。
【請求項19】
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性は、機能の安全性、セキュリティ、プライバシー、エネルギー利用、及びリソース利用の少なくとも1つと関連付けられている、
請求項12又は請求項13に記載の装置。
【請求項20】
命令を格納している非一時的コンピュータ読み取り可能媒体であって、前記命令は1つ以上の命令を備えており、前記1つ以上の命令は、装置の1つ以上のプロセッサにより実行されると、言葉の意味を予測し、前記1つ以上のプロセッサに、
前記システムの前記構成要素の既知の特性を設定させ、
前記システムの前記構成要素の未知の特性を動的に決定させ、ここにおいて、前記動的に決定することは、
動作に対して、前記動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、
前記動作に対して、前記動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及び
テストを通して、前記システムの前記構成要素の前記未知の特性の限界を識別することを備えており、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を検証させ、
前記システムの前記構成要素の前記既知の特性、及び前記システムの前記構成要素の前記未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新させる、
非一時的コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【0001】
純粋なソフトウェア、埋め込み型システム、およびネットワークにおける正確性の検証は、一般的に時間の掛かる作業である。ソフトウェアプログラムと埋め込み型システムがますます複雑になるにつれて、これらの複雑なシステムの正確性の検証は、急激により難しくなり、予期せぬ挙動が起こるエッジケース(edge cases)またはコーナーケース(corner cases)においては特にそうである。更に、より高いレベルの制約と正確性を符号化する言語とプログラミング環境が存在するが、それらは通常は、非常にドメインに特定的であり、そのドメインに固有の方法で扱う必要がある。
【発明の概要】
【0002】
実施形態によれば、システムの構成要素における特性の正確性を決定するための方法が提供される。
方法は、電子装置により実行され、
システムの構成要素の既知の特性を設定することと、
システムの構成要素の未知の特性を動的に決定することと、ここにおいて、動的に決定することは、動作に対して、動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、動作に対して、動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及びテストを通して、システムの構成要素の未知の特性の限界を識別することを含んでおり、
システムの構成要素の既知の特性、及びシステムの構成要素の未知の特性を検証することと、
システムの構成要素の既知の特性とシステムの構成要素の未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新することと、を含んでいる。
【0003】
開示の1つの態様によれば、命令を格納している非一時的コンピュータ読み取り可能媒体が提供される。
非一時的コンピュータ読み取り可能媒体は、1つ以上の命令を含んでおり、この1つ以上の命令は、装置の1つ以上のプロセッサにより実行されると、言葉の意味を予測し、1つ以上のプロセッサに、
システムの構成要素の既知の特性を設定させ、
システムの構成要素の未知の特性を動的に決定させ、ここにおいて、動的に決定することは、動作に対して、動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、動作に対して、動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及びテストを通して、システムの構成要素の未知の特性の限界を識別することを含んでおり、
システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証させ、
システムの構成要素の既知の特性とシステムの構成要素の未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新させる。
【0004】
開示の他の態様によれば、システムの構成要素における特性の正確性を決定するための装置が提供される。
装置は、命令を格納するように構成されているメモリと、1つ以上のプロセッサを含み、この1つ以上のプロセッサは、
システムの構成要素の既知の特性を設定し、
システムの構成要素の未知の特性を動的に決定し、ここにおいて、動的に決定することは、動作に対して、動作が正確に実行されるためには満たされなければならない1つ以上の前提条件を定義すること、動作に対して、動作が正確に実行された後に満たされなければならない1つ以上の事後条件を定義すること、及びテストを通して、システムの構成要素の未知の特性の限界を識別することを含んでおり、
システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証し、
システムの構成要素の既知の特性とシステムの構成要素の未知の特性を反映するためにインタフェース定義言語(IDL)プログラムコードを更新する命令を実行するように構成されている。
【図面の簡単な説明】
【0005】
開示の、例としての実施形態の特徴、利点、および重要性は、付随する図面を参照して下記に記述され、図面においては、類似の符号は類似の要素を示している。
【0006】
【
図1】実施形態に係わる、システムの構成要素における特性の正確性を決定するための、例としてのプロセスのフローチャートの図である。
【0007】
【
図2】実施形態に係わる、ここにおいて記述されているシステムおよび/または方法を実現できる、例としての環境の図である。
【0008】
【
図3】実施形態に係わる、
図2の1つ以上の装置の、例としての構成要素の図である。
【0009】
【
図4】実施形態に係わる、システムの構成要素における特性の正確性を決定するための、例としてのプロセスのフローチャートである。
【発明を実施するための形態】
【0010】
本開示の実施形態は、ソフトウェア、ファームウェア、またはハードウェアの正確性を検証することに関することができる。プログラムは一般的には、それらの意味規則を、プログラムコードレベルにおいて特定するが、ソリューションを過剰に制約し、検証を非常に複雑にすることがよくある。従って、プログラムコードまたはハードウェア設計が実現されているように作動しても、プログラムコードまたはハードウェアが意図されたように作動することを確認することは困難である。これは特に、高い利用可能性、セキュリティ、機能の安全性、プライバシー、リソース利用などのような、すべての構成要素の検証を要求するドメインに対してそうである。幾つかの言語およびプログラミング環境は、正確性を検証するために、より高いレベルの制約を符号化するが、それらは、非常にドメインに特定的で、常に適切なアプリケーションドメインであるというわけではないことがよくある。
【0011】
本開示の実施形態は、それらのドメインにおいて良好に受け入れられている既存のプログラミング言語とパラダイムを、システムに符号化できる正確性、協定、制約、および限界情報で増強することに関する。例えば、インタフェース定義言語を使用して、システムが使用されているときに、システムのこれらの特性が維持されていることを検証するために、正確性、協定、制約、および限界情報をシステムに符号化できる。
【0012】
本開示の実施形態によれば、システムの特性またはシステムの構成要素の特性が維持されることを検証することは、これらの特性が、システムの動作範囲において維持されていることの検証を含むことができる。動作範囲は、システムに影響を与えるファクタの記述であってよい。幾つかの実施形態によれば、動作範囲は、システムの構造化された定義、公式の仕様、または、システムまたはシステムの態様のテストまたは保証において使用できる、システムに対する状態空間の記述であってよい。例えば、自律車両の状況においては、動作範囲は、自律車両が走行中に遭遇する可能性のあるすべての環境および他のファクタの記述を含むことができる。
【0013】
車両、ロボット工学、および他の安全性に関する装置は、典型的には、1つ以上の電子演算ユニット(ECU)と、これらのECU間の1つ以上の通信機構を含んでいる。これらの装置の幾つかは、安全性に関して重要である可能性があり、機能の安全性を確実にするために、保証基準に従わなければならず、または、適切な動作限界を証明しなければならなくなる可能性がある。本開示の実施形態は、機能の安全性、セキュリティ、プライバシー、リソース利用、エネルギー利用などと関連付けられている特性に対する正確性検証器を実現することに向けられている。例えば、正確性検証器は、最悪のケースの実行時間、最悪のケースのスケジュール設定、分散型システムにおけるリソースに対する競合、誤差伝播、最悪のケースのネットワーク使用、安全性と保証基準の矛盾しない実現形態を確実にすることなどのような特性を確認できる。例として、正確性検証器は、自律車両が機能的に安全であることを確実にするために、特性を確認でき、自律車両に対する自動車安全水準(ASIL)を実現するコードに関する限界を識別できる。
【0014】
実施形態によれば、構成要素のそのような重要な特性は、制約、協定、または条件を通してIDL層に符号化できる。IDLは、プログラミング言語とは無関係であるように設計されているので、つまり、IDLは、1つのプログラミング言語におけるプログラムから、他のプログラミング言語における他のプログラムへの通信を可能にするように設計されているので、IDLに制約、協定、または条件を符号化することは、システムの構成要素がより高い可搬性を有することを可能にできる。追加的に、制約、協定、または条件をIDLに符号化することは、他のプラットフォームにおいてシステムの構成要素を再使用することをより容易にすることができ、無線による更新などのような方法を通して、構成要素を更新することをより容易にすることができる。
【0015】
向上された可搬性に加えて、制約、契約、または条件をIDLに符号化するので、システムの構成要素の構成可能性も向上させることができる。実施形態によれば、異なる構成要素は、構成要素の特性の入力と出力の限界を知ることができ、および検証できるので、組み合わせること、再実現すること、または破棄することができる。
【0016】
向上した可搬性と構成可能性のこれらの恩典は、単にソフトウェア構成要素のみに制限されなくてもよい。本開示の実施形態に係わる正確性検証器は、ハードウェアと共に、シミュレーションにおいても適用できる。シミュレーションが「バグが多い」可能性があるとき、または、シミュレーションが、実際のハードウェアとは異なる設計を有している可能性があるときは、正確性検証器は、システムの構成要素の挙動が2つの間で相違する状況、状態、または条件を識別するために使用できる。そのため、向上された可搬性と構成可能性に加えて、本開示の実施形態は、システムの構成要素の特性が異なるように挙動する状況、状態、または条件の識別表示を提供できる。そして、この識別された相違は、システム全体の性能を向上するために、シミュレーションまたは実際のハードウェアを再設計するために使用できる。この識別された相違はまた、何れのハードウェア設計特性または機能が特定のソフトウェアの目的のために有用であり、または有害であるかを識別することによりハードウェアとソフトウェアを共通設計するために使用できる。
【0017】
例えば、本開示の実施形態は、自律車両の構成要素の特性が、シミュレーションおよび実際の車両において異なるように挙動する状況、状態、または条件を識別するために使用できる。この相違は、ハードウェアをテストするために、および、ハードウェアが、多様な特定のケースにおいて予期されるように作動できるかどうかを識別するために使用でき、ハードウェアのテストを高速化し、ハードウェア構成要素の正確性を確認するために必要な時間を削減する。この相違はまた、実際の自律車両の何れの構成要素(ECU、センサ、センサの設置および較正など)が、または、自律車両のソフトウェアの何れの構成要素が一緒に作動するか、または再設計が必要かを決定するために使用できる。
【0018】
そのため、本開示の実施形態は、複数の重要な特性に対する正確性検証器を提供する。実際のハードウェアにおけると共に、シミュレーションにおいてテストされる重要な特性は、システムのソフトウェアとハードウェア構成要素の両者の向上された、より高速の設計と、システムのソフトウェアとハードウェア構成要素の設計に係わる人間の労力およびコストの削減を可能にできる。更に、これらの特性をIDLにおいて符号化することは、システムの構成要素の可搬性と構成可能性を向上し、システムの構成要素の効率を効果的に向上する。
【0019】
図1は、ここにおいて記述されている実施形態の概観の図である。
図1において示されているように、プロセス100は、システムの構成要素における特性の正確性を決定できる。
【0020】
図1において示されているように、動作110において、システムの構成要素の既知の特性を設定できる。システムの構成要素の既知の特性は、システムの構成要素が維持または検証することが所望される特性を含むことができる。システムの構成要素の既知の特性は、システムの仕様に基づいて設定できる。システムの仕様は、システムが実行すると想定される、または実行してはいけないものの公式または非公式の記述であってよい。公式の仕様においては、システムの構成要素の特性は、シンタックスまたはドメインに特定的な意味規則などのような特定の構造を使用して表現できる。この公式な構造は、システムの構成要素の特性についての情報、および、システムの構成要素の特性間の関係を推測するために使用できる。実施形態においては、特定の言語を仕様の記述のために使用でき、言語は、下記に制限されないが、抽象状態機械(ASM)、Javaモデリング言語(JML)、アプリカティブコモンLisp(ACL2)に対する演算ロジックなどを含むことができる。例として、車両または自律車両の場合、制動構成要素の既知の特性は、発行された制動コマンドは、最大20ミリ秒の待ち時間を有する可能性があるということであってよい。この既知の特性は、公式の仕様に基づいて設定でき、法律または保証基準から取得または抽出できる。
【0021】
しかし、幾つかの実施形態においては、公式の仕様に加えて、または、公式の仕様なしで、本開示の実施形態によれば、システムの構成要素の既知の特性の設定は、システムの設計を解析することと、システムの構成を解析することと、または、プログラムによる導出によりシステムのコードを解析することを含むことができる。システムの構成要素の既知の特性を設定することは、幾つかの実施形態においては、プログラムコード(例えば、オブジェクト指向プログラミング言語などのような高レベル言語、アセンブリレベル言語などのような低レベル言語、またはバイナリコード)を解析することを含むことができる。プログラムコードは、静的プログラム解析を使用して、または、動的プログラム解析を使用して解析でき、手動または自動で解析できる。幾つかの実施形態においては、プログラムコードを解析することは、リアルタイムで、またはシミュレーションにおいてプログラムを部分的に実行することを含むことができる。幾つかの実施形態においては、システムまたはシステムの構成要素の設計を解析することは、モデルに基づく仕様を解析することを含むことができる。例としては、システム状態モデルを解析することに基づいて設定されている構成要素の特性を含むことができる。幾つかの実施形態においては、システムの構成要素の既知の特性の設定は、システムのモデルから既知の特性を識別することを含むことができる。本開示の実施形態は制限的であることは意図されていない。最先端技術方法の任意の既知の方法状態を、システムの設計を解析するために、システムの構成を解析するために、または、システムの構成要素の既知の特性を設定するためのプログラムによる導出によりシステムのコードを解析するために使用できる。
【0022】
システムの構成要素の既知の特性は、機能の安全性、セキュリティ、プライバシー、エネルギー利用、およびリソース利用の少なくとも1つと関連付けることができる。例えば、既知の特性は、機能の安全性、プライバシー、セキュリティ、リソース利用、誤差伝播、内部よび外部センサ、またはシステム内の通信と関連付けられている産業保証基準に基づくことができる。
【0023】
動作120において、システムの構成要素の未知の特性を動的に決定できる。システムの構成要素の未知の特性は、予測できない特性、その限界が未知の特性、または、その性質が1つ以上のソースから推測できる特性であってよい。例えば、システムの構成要素の未知の特性は、公式の仕様において明示的に特定できず、プログラムコードの部分的な実行から推測する必要のある可能性のあるシステムの構成要素の特性を含むことができる。
【0024】
システムの構成要素の未知の特性は、機能の安全性、セキュリティ、プライバシー、エネルギー、およびリソース利用の少なくとも1つと関連付けることができる。例えば、未知の特性は、機能の安全性、プライバシー、セキュリティ、リソース利用、誤差伝播、内部および外部センサ、またはシステム内の通信と関連付けられている予測できないイベントまたは故障に基づくことができる。
【0025】
幾つかの実施形態によれば、システムの構成要素の未知の特性を動的に決定することは、動作に対する1つ以上の前提条件を定義することを含むことができ、1つ以上の前提条件は、動作が正確に実行されために満たすことができる。前提条件は、動作の実行に先立って真でなければならず、または、動作の実行に対して真でなければならない条件、アサーション(表明)、またはシステム状態を含むことができる。動作は、システムの構成要素の特性と関連付けられている機能またはサブパーツの実行であってよい。例として、自律または自動の車両車線変更動作が起こるためには、真でなければならない前提条件は、「方向転換信号がオンでなければならない」ということを含むことができる。
【0026】
幾つかの実施形態によれば、システムの構成要素の未知の特性を動的に決定することは、動作に対する1つ以上の事後条件を定義することを含むことができ、1つ以上の事後条件は、動作が正確に実行された後に満たすことができる。事後条件は、動作の正確な実行の後に真でなければならず、または、動作の正確な実行を示すために真でなければならない条件、アサーション、またはシステム状態を含むことができる。例として、自律または自動車両の正確な自動の車線変更動作の後に、真でなければならない事後条件は、「方向転換信号は、他の当面の車線変更が行われないのであればオフでなければならない」ということを含むことができる。
【0027】
幾つかの実施形態によれば、システムの構成要素の未知の特性を動的に決定することは、テストを通して、システムの構成要素の未知の特性の限界を識別することを含むことができる。システムの構成要素の未知の特性の限界を識別することは、未知の特性と、それらと関連付けられている値およびシステム状態の理解を可能にする。限界のこの識別はまた、めったに起こり得ないが、システムの構成要素を異常に動作させ得るコーナーケースまたはエッジケースを識別するために不可欠であり得る。前述したように、エッジケースまたはコーナーケースが起こることは極めてまれであるが、起きたときは、重大な影響を有し得る、安全性が重要なシステムにおいては複雑なシステムを使用できる。
【0028】
システムの実施形態によれば、システムの構成要素の未知の特性の限界を識別すること、または証明することは、静的または動的に実行できる。システムの構成要素の未知の特性の限界は、数学的証明またはツールを使用して静的に識別または証明できる。しかし、限界を動的に決定するための1つの方法は、なぜ、どのように、およびどこで静的証明が失敗する、または決定できないかに基づくことができる。システムの構成要素の幾つかの特性は、理論的には拘束されないことが可能であるが、実際に実行され、テストされ、または適用されると、特性の実際的な限界を識別することを支援できる実際的な制限が現れ得る。開示の実施形態によれば、1つ以上のテストプランまたはテストプログラムは、システムの構成要素の未知の特性の識別された限界に基づいて生成できる。生成されたテストプランまたはテストプログラムは、すべての既知または未知の特性を動的にテストするために使用でき、または、システムの構成要素の既知または未知の特性が、システムの動作範囲において維持できることを合理的に確実にするために十分なケースを静的にテストするために使用できる。幾つかの実施形態においては、生成されたテストプランまたはテストプログラムは、システムの構成要素の特定の特性の性能をテストするために更に改良できる。
【0029】
幾つかの実施形態においては、テストを通して、システムの構成要素の未知の特性の限界を識別することは、シミュレートされた(模擬試験(シミュレーション)が行われた)システムでテストすることを含むことができる。幾つかの実施形態においては、テストを通して、システムの構成要素の未知の特性の限界を識別することは、ハードウェア構成要素をテストすることを含むことができる。幾つかの実施形態においては、テストを通して、システムの構成要素の未知の特性の限界を識別することは、シミュレートされたシステムでテストすることを含むことができ、ハードウェア構成要素をテストすることを含むことができる。
【0030】
上述したように、本開示の実施形態によれば、テストは、ハードウェア上でと共に、シミュレーションにおいて実行できる。シミュレーションが「バグが多い」可能性があるとき、または、シミュレーションが、実際のハードウェアとは異なる設計を有している可能性があるときは、シミュレーションとハードウェアの両者を使用するテストを、システムの構成要素の挙動が2つの間で相違する状況、状態、または条件を識別するために使用できる。それはまた、システムの構成要素またはシステム全体についての正確でない仮定に起因する正確でないソリューションまたは限界を見出すことを支援できる。そのため、本開示の実施形態は、システムの構成要素の既知または未知の特性が異なるように挙動する状況、状態、または条件の識別を提供できる。そして、この識別された相違は、システム全体の性能を向上するために、シミュレーションまたは実際のハードウェアを再設計するために使用できる。この識別された相違はまた、何れのハードウェア設計特性または機能が特定のソフトウェアの目的のために有用であり、または有害であり得るかを識別することによりハードウェアとソフトウェアを共通設計するために使用できる。
【0031】
動作130において、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証できる。
【0032】
幾つかの実施形態においては、検証することは、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を、システムの動作範囲内で維持できるかどうかを決定することに基づくことができる。システムの構成要素の既知の特性とシステムの構成要素の未知の特性を、システムの動作範囲内で維持できると決定することは、システムの構成要素またはシステム全体が予期されたように作動したことを決定することを含むことができる。システムの構成要素またはシステム全体が予期されたように作動したかどうかを決定するために、システムの構成要素またはシステム全体の予期される挙動のリストを使用できる。幾つかの実施形態においては、システムの構成要素またはシステム全体の予期される挙動のリストは手動で書くことができる。幾つかの実施形態においては、システムの構成要素またはシステム全体の予期される挙動のリストは符号化できる。例として、予期される挙動は、制約、協定、および条件を通してプログラミング言語を使用して符号化できる。幾つかの実施形態においては、予期される挙動は、産業保証基準または法律に基づくことができる。実施形態によれば、システムの構成要素またはシステム全体の予期される挙動のリストは、公式または非公式の仕様の形状であることができる。システムの構成要素またはシステム全体の予期される挙動のリストが、産業基準またはプログラムコードなどのような非公式の仕様の形状であってよい実施形態においては、機械学習、自然言語処理、または自動プログラム解析などのような任意の適切な技術を、リストを生成するために使用できる。
【0033】
幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、ブール充足可能性ソルバー(boolean satisfiability solver)を使用して実行できる。例として、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、Davis-Putman-Logemann-Loveland(DPLL)ソルバー、矛盾からの節学習(CDCL)ソルバー、パラレルSATソルバーなどのSATソルバーを使用して実行できる。幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、一次検証エンジン(first-order verification engine)を使用して実行できる。例えば、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、充足可能性モジュロ理論(SMT)ソルバーを使用して実行できる。
【0034】
幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、正確性のファジーな意味または近似的な意味に基づいて実行できる。例として、正確性のファジーな意味は、システムの構成要素の既知または未知の特性が無限である可能性があり、または、システムの構成要素のすべての既知または未知の特性をテストすることは、あまりにもリソースを使いすぎる可能性がある幾つかの実施形態において使用できる。例えば、自律車両における、道路上の交通標識の画像を分類するための機械学習済みモデルは、サンプルデータセットにおいて試行の特別な割合で、モデルが特別な特性を識別し、それらの特性を維持した場合に正確であると検証できる。正確性のこのファジーな意味を統合することは、リソースを多く使用する幾つかの特性を検証することを支援できる。これは、より少ないリソースを使用して特性を検証することにより、システムにおけるリソースの使用を最適化できる。
【0035】
幾つかの実施形態によれば、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、システムの構成要素の既知の特性またはシステムの構成要素の未知の特性と関連付けられている最悪のケースの実行時間を決定することを含むことができる。幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、システムの構成要素の既知の特性またはシステムの構成要素の未知の特性と関連付けられている最悪のケースの誤差伝播を決定することを含むことができる。幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、システムの構成要素の既知の特性またはシステムの構成要素の未知の特性と関連付けられている最悪のケースのスケジュール設定を決定することを含むことができる。幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、システムの構成要素の既知の特性またはシステムの構成要素の未知の特性と関連付けられている最悪のケースのネットワーク使用を決定することを含むことができる。
【0036】
動作140において、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を反映するためのインタフェース定義言語(IDL)プログラムコード(Interface Definition Language (IDL) program code)を更新できる。幾つかの実施形態においては、IDLプログラムコードは、システムの構成要素の既知の特性とシステムの構成要素の未知の特性の検証の結果に基づいて自動的に更新できる。幾つかの実施形態においては、IDLプログラムコードは、システムの構成要素の既知の特性とシステムの構成要素の未知の特性の検証の結果に基づいて手動で更新できる。
【0037】
図1は、プロセス100の、例としてのブロックを示しているが、幾つかの実現形態においては、プロセス100は、
図1において示されているブロック以外の追加的ブロック、それらよりも少ないブロック、それらとは異なるブロック、またはそれらとは異なるように配置されているブロックを含むことができる。実施形態においては、プロセス100の例としてのブロックの1つ以上のブロックは、任意の順序または任意の量で組み合わせる、または配置できる。実施形態においては、プロセス100のブロックの2つ以上を平行して実行できる。
【0038】
図2は、ここにおいて記述されているシステムおよび/または方法を実現できる、例としての環境200の図である。
図2において示されているように、環境200は、ユーザ装置210、プラットフォーム220、およびネットワーク230を含むことができる。環境200の装置は、有線接続、無線接続、または有線接続と無線接続の組み合わせを介して相互接続できる。実施形態においては、ネットワーク管理システム100に含まれている要素の機能の何れも、
図2において例示されている要素の任意の組み合わせにより実行できる。例えば、実施形態においては、ユーザ装置210は、ユーザ装置106と関連付けられている1つ以上の機能を実行でき、プラットフォーム220は、低下誘発モジュール102、手順識別表示モジュール104、相関モジュール106、一致モジュール108、または新しい異常識別表示モジュール110の何れかと関連付けられている1つ以上の機能を実行できる。
【0039】
ユーザ装置210は、プラットフォーム220と関連付けられている情報を受信、生成、格納、処理、および/または提供できる1つ以上の装置を含んでいる。例えば、ユーザ装置210は演算装置(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、手持ちコンピュータ、スマートスピーカ、サーバなど)、モバイルフォン(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマート眼鏡またはスマート時計)、または類似の装置、自律車両(例えば、自律自動車、無人空中車両、ドローンなど)を含むことができる。幾つかの実現形態においては、ユーザ装置210は、プラットフォーム220から情報を受信でき、および/または、プラットフォーム220に情報を送信できる。
【0040】
プラットフォーム220は、この文献の何れかにおいて記述されているように、システムの構成要素の特性を決定できる1つ以上の装置を含んでいる。幾つかの実現形態においては、プラットフォーム220は、クラウドサーバまたはクラウドサーバのグループを含むことができる。幾つかの実現形態においては、プラットフォーム220は、特別な必要性に依存して、あるソフトウェア構成要素を交換するために着脱可能なモジュールとして設計できる。そのため、プラットフォーム220は、容易に、および/または、迅速に他の使用に対して再構成できる。
【0041】
幾つかの実現形態においては、示されているように、プラットフォーム220は、クラウド演算環境222において上位装置として機能させることができる。特に、ここにおいて記述されている実現形態は、プラットフォーム220を、クラウド演算環境222において上位装置として機能させられるとして記述しているが、幾つかの実現形態においては、プラットフォーム220はクラウドに基づいておらず(つまり、クラウド演算環境の外部で実現できる)または、部分的にクラウドに基づくことができる。
【0042】
クラウド演算環境222は、プラットフォーム220の上位装置として機能する環境を含んでいる。クラウド演算環境222は、演算、ソフトウェア、データアクセス、格納などの、物理的場所および、プラットフォーム220の上位装置として機能するシステムおよび/または装置の構成についてのエンドユーザ(例えば、ユーザ装置210)の知識を必要としないサービスを提供できる。示されているように、クラウド演算環境222は、演算リソース224のグループ(まとめて「演算リソース224」、個々には、「1つの演算リソース224」と称される)を含むことができる。
【0043】
演算リソース224は、1つ以上のパーソナルコンピュータ、ワークステーションコンピュータ、サーバ装置、または他のタイプの演算および/または通信装置を含んでいる。幾つかの実現形態においては、演算リソース224はプラットフォーム220の上位装置として機能できる。クラウドリソースは、演算リソース224において実行されるコンピュートインスタンス、演算リソース224において提供される格納装置、演算リソース224において提供されるデータ転送装置などを含むことができる。幾つかの実現形態においては、演算リソース224は、有線接続、無線接続、または、有線接続と無線接続の組み合わせを介して他の演算リソース224と通信できる。
【0044】
図2において更に示されているように、演算リソース224は、1つ以上のアプリケーション(「APPs」)224-1、1つ以上の仮想マシン(「VMs」)224-2、仮想化格納装置(「VSs」)224-3、または1つ以上のハイパ-バイザ(「HYPs」)224-4などのようなクラウドリソースのグループを含んでいる。
【0045】
アプリケーション224-1は、ユーザ装置210に提供できる、または、ユーザ装置210によりアクセスできる1つ以上のソフトウェアアプリケーションを含んでいる。アプリケーション224-1は、ソフトウェアアプリケーションをユーザ装置210上でインストールして実行することを不要とさせることができる。例えば、アプリケーション224-1は、プラットフォーム220と関連付けられているソフトウェア、および/または、クラウド演算環境222を介して提供できる任意の他のソフトウェアを含むことができる。幾つかの実現形態においては、1つのアプリケーション224-1は、仮想マシン224-2を介して、1つ以上の他のアプリケーション224-1に情報を送ることができ、および/または、1つ以上の他のアプリケーション224-1から情報を受信できる。
【0046】
仮想マシン224-2は、物理マシンのような、プログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実現形態を含んでいる。仮想マシン224-2は、使用法と、仮想マシン224-2による任意の実際のマシンとの対応の程度に依存して、システム仮想マシンまたはプロセス仮想マシンの何れかであってよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全システムプラットフォームを提供できる。プロセス仮想マシンは単一のプログラムを実行でき、単一のプロセスをサポートできる。幾つかの実現形態においては、仮想マシン224-2は、ユーザ(例えば、ユーザ装置210)の代わりに実行でき、データ管理、同期、または長時間のデータ転送などのようなクラウド演算環境222のインフラストラクチャを管理できる。
【0047】
仮想化格納装置224-3は、格納システム内、または演算リソース224の装置内で仮想化技術を使用する1つ以上の格納システム、および/または、1つ以上の装置を含んでいる。幾つかの実現形態においては、格納システムの状況において、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含むことができる。ブロック仮想化とは、格納システムに、物理的格納装置または異種の構造に無関係にアクセスできるように、物理的格納装置からの論理格納装置への抽象化(または分離)のことを指すことができる。分離は、格納システムの管理者に対して、エンドユーザに対する格納をどのように管理するかにおける柔軟性を可能にできる。ファイル仮想化は、ファイルレベルでアクセスされたデータと、ファイルが物理的に格納されている場所との間の依存性をなくすことができる。これは、格納装置の使用、サーバの統合、および/または、非分割ファイル移行の実行の最適化を可能にできる。
【0048】
ハイーパーバイザ224-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)が、演算リソース224などのようなホストコンピュータ上で同時に実行することを可能にするハードウェア仮想化技術を提供できる。ハイーパーバイザ224-4は、ゲストオペレーティングシステムに仮想動作プラットフォームを提示でき、ゲストオペレーティングシステムの実行を管理できる。多様なオペレーティングシステムの複数のインスタンスは、仮想化ハードウェアリソースを共有できる。
【0049】
ネットワーク230は、1つ以上の有線および/または無線ネットワークを含んでいる。例えば、ネットワーク230は、セルラーネットワーク(例えば、第5世代(5G)ネットワーク、ロングタームエボリューション(LTE)ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公衆陸上移動体通信網(PLMN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、電話ネットワーク(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバに基づくネットワークなど、および/または、これらの、または他のタイプのネットワークの組み合わせを含むことができる。
【0050】
図2において示されている装置とネットワークの数と配置は例として提供されている。実際は、
図2において示されている装置および/またはネットワーク以外の、追加的装置および/またはネットワーク、それらよりも少ない装置および/またはネットワーク、それらとは異なる装置および/またはネットワーク、またはそれらとは異なるように配置されている装置および/またはネットワークがあり得る。更に、
図2において示されている2つ以上の装置は、単一の装置内で実現でき、または、
図2において示されている単一の装置は、複数の、分散された装置として実現できる。追加的に、または代替的に、環境200の装置のセット(例えば、1つ以上の装置)は、環境200の装置の他のセットにより実行されるものとして記述されている1つ以上の機能を実行できる。
【0051】
図3は、装置300の例としての構成要素の図である。装置300は、ユーザ装置210および/またはプラットフォーム220に対応することができる。
図3において示されているように、装置300は、バス310、プロセッサ320、メモリ330、格納構成要素340、入力構成要素350、出力構成要素360、および通信インタフェース370を含むことができる。
【0052】
バス310は、装置300の構成要素間の通信を可能にする構成要素を含んでいる。プロセッサ320は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせにおいて実現される。プロセッサ320は、中央演算処理装置(CPU)、電子制御ユニット(ECU)、グラフィックス処理ユニット(GPU)、アクセラレーテッド処理ユニット(APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、または、他のタイプの処理構成要素である。幾つかの実現形態においては、プロセッサ320は、機能を実行するためにプログラムできる1つ以上のプロセッサを含んでいる。
【0053】
メモリ330は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、および/または、プロセッサ320による使用のための情報および/または命令を格納している他のタイプの動的または静的格納装置(例えば、フラッシュメモリ、磁気メモリ、および/または光メモリ)を含んでいる。
【0054】
格納構成要素340は、装置300の動作と使用に関する情報および/またはソフトウェアを格納している。例えば、格納構成要素340は、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(CD)、デジタル汎用ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、および/または、他のタイプの非一時的コンピュータ読み取り可能媒体を、対応するドライブと共に含むことができる。入力構成要素350は、ユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)を介してなどのように、装置300が情報を受信することを可能にする構成要素を含んでいる。追加的に、または代替的に、入力構成要素350は、情報を感知するためのセンサ(例えば、全地球測位システム(GPS)構成要素、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含むことができる。出力構成要素360は、装置300からの出力情報を提供する構成要素を含んでいる(例えば、ディスプレイ、スピーカ、および/または1つ以上の発光ダイオード(LED))。
【0055】
通信インタフェース370は、有線接続、無線接続、または有線接続と無線接続の組み合わせを介してなどのように、装置300が他の装置と通信することを可能にするトランシーバに類似している構成要素(例えば、トランシーバおよび/または別個の受信機と送信機)を含んでいる。通信インタフェース370は、装置300が他の装置から情報を受信し、および/または、他の装置に情報を提供することを可能にできる。例えば、通信インタフェース370は、イーサネットインタフェース、光インタフェース、同軸インタフェース、赤外線インタフェース、無線周波数(RF)インタフェース、ユニバーサルシリアルバス(USB)インタフェース、Wi-Fiインタフェース、セルラーネットワークインタフェースなどを含むことができる。
【0056】
装置300は、ここにおいて記述されている1つ以上のプロセスを実行できる。装置300は、プロセッサ320が、メモリ330および/または格納構成要素340などのような非一時的コンピュータ読み取り可能媒体により格納されているソフトウェア命令を実行することに応答してこれらのプロセスを実行できる。コンピュータ読み取り可能媒体は、ここにおいては、非一時的メモリ装置として定義されている。メモリ装置は、単一の物理格納装置内のメモリ空間、または、複数の物理格納装置にわたり広がっているメモリ空間を含んでいる。
【0057】
ソフトウェア命令は、他のコンピュータ読み取り可能媒体から、または他の装置から通信インタフェース370を介して、メモリ330および/または格納構成要素340内に読み込むことができる。メモリ330および/または格納構成要素340に格納されているソフトウェア命令は、実行されると、プロセッサ320に、ここにおいて記述されている1つ以上のプロセスを実行させることができる。
【0058】
追加的に、または代替的に、ここにおいて記述されている1つ以上のプロセスを実行するために、配線接続されている回路を、ソフトウェア命令の代わりに、または、ソフトウェア命令との組み合わせにおいて使用できる。そのため、ここにおいて記述されている実現形態は、ハードウェア回路とソフトウェアとの如何なる特定の組み合わせに制限されない。
【0059】
図3において示されている構成要素の数と配置は例として提供されている。実際は、装置300は、
図3において示されている構成要素以外の追加的構成要素、それらよりも少ない構成要素、それらとは異なる構成要素、または、それらとは異なるように配置されている構成要素を含むことができる。追加的に、または代替的に、装置300の構成要素のセット(例えば、1つ以上の構成要素)は、装置300の構成要素の他のセットにより実行されると記述されている1つ以上の機能を実行できる。
【0060】
実施形態においては、
図1の動作の何れも、
図2~3に例示されている要素の何れかにより、またはそれを使用して実現できる。例えば、1つ以上の動作110~140の何れも、ユーザ装置210、プラットフォーム220、演算リソース224、または装置300の1つ以上の構成要素何れか1つ以上により実現でき、またはそれに対応することができる。
【0061】
図4は、ここにおいて記述されている実施形態の概観の図である。
図4において示されているように、プロセス400は、システムの構成要素における特性の正確性を検証するためのテストプランまたはテストプログラムを生成できる。
【0062】
図4において示されているように、動作410において、システムの構成要素の特性を識別できる。システムの構成要素の特性は、システムの構成要素の既知の特性とシステムの未知の特性を含むことができる。システムの構成要素の既知の特性は、システムの仕様に基づいて識別できる。システムの仕様は、システムは何を行うと想定されているか、または何をしてはいけないかの公式または非公式の記述であってよい。公式の仕様においては、システムの構成要素の特性は、シンタックスまたはドメイン特有の意味規則などのような特定の構造を使用して表現できる。この公式の構造は、システムの構成要素の特性についての情報、およびそれらの間の関係を推定するために使用できる。実施形態においては、特定の言語を仕様記述のために使用でき、言語は、下記に制限されないが、抽象状態機械(ASM)、Javaモデリング言語(JML)、アプリカティブコモンリスプ(ACL2)に対する演算ロジックなどを含むことができる。例として、車両または自律車両の場合、制動構成要素の既知の特性は、発行された制動コマンドは、最大20ミリ秒の待ち時間を有する可能性がある。この既知の特性は、公式の仕様に基づいて識別でき、または、法律または保証基準から取得または抽出できる。
【0063】
しかし、幾つかの実施形態においては、本開示の実施形態に係わる公式の仕様に追加して、または公式の仕様なしで、システムの構成要素の既知の特性を識別することは、システムの設計を解析することと、システムの構成を解析することと、または、プログラム導出によりシステムのコードを解析することを含むことができる。
【0064】
幾つかの実施形態においては、システムの構成要素の特性を識別することは、システムの構成要素の未知の特性を動的に決定することを含むことができる。幾つかの実施形態においては、システムの構成要素の未知の特性を動的に決定することは、動作に対する1つ以上の前提条件を定義することを含むことができ、1つ以上の前提条件は、動作が正確に実行されるために満たすことができる。そして、動作に対する1つ以上の事後条件を定義でき、1つ以上の事後条件は、動作が正確に実行された後に満たすことができる。最終的に、システムの構成要素の未知の特性の限界は、テストを通して識別できる。
【0065】
システムの構成要素の既知の特性とシステムの構成要素の未知の特性は、機能の安全性、セキュリティ、プライバシー、エネルギー利用、およびリソース利用の少なくとも1つと関連付けることができる。例えば、既知の特性は、機能の安全性、プライバシー、セキュリティ、リソース利用、誤差伝播、内部および外部センサ、またはシステム内の通信と関連付けられている産業保証基準に基づくことができる。
【0066】
動作420において、システムの構成要素の予期される挙動をリスト化できる。幾つかの実施形態においては、システムの構成要素またはシステム全体の予期される挙動のリストは、手動で書くことができる。幾つかの実施形態においては、システムの構成要素またはシステム全体の予期される挙動のリストは符号化できる。例として、予期される挙動は、制約、協定、および条件を通してプログラミング言語を使用して符号化できる。幾つかの実施形態においては、予期される挙動は、産業保証基準または法律に基づくことができる。実施形態によれば、システムの構成要素またはシステム全体の予期される挙動のリストは、公式または非公式の仕様の形状であってよい。システムの構成要素またはシステム全体の予期される挙動のリストが、産業基準またはプログラムコードなどのような非公式の仕様の形状であってよい実施形態においては、機械学習、自然言語処理、または、自動プログラム解析などのような任意の適切な技術を、リストを生成するために使用できる。
【0067】
動作430において、特性の正確性を検証するためのテストプランまたはテストプログラムを、システムの構成要素の識別された特性と、システムの構成要素の予期される挙動に基づいて生成できる。開示の実施形態によれば、1つ以上のテストプランまたはテストプログラムは、システムの構成要素の既知の特性とシステムの構成要素の未知の特性の識別された限界に基づいて生成できる。生成されたテストプランとテストプログラムは、すべての既知または未知の特性を動的にテストするために使用でき、または、システムの構成要素の既知または未知の特性を、システムの動作範囲において維持できることを合理的に確実にするための十分なケースを静的にテストするために使用できる。幾つかの実施形態においては、生成されたテストプランまたはテストプログラムは更に、システムの構成要素の特定の特性の性能をテストするために洗練できる。
【0068】
動作440において、システムの構成要素の特性の正確性は、生成されたテストプランまたはテストプログラムに基づいて検証できる。生成されたテストプランまたはテストプログラムに基づいて、システムの構成要素の特性の正確性を検証することは、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を、システムの動作範囲において維持できるかどうかをテストまたは決定することを含むことができる。システムの構成要素の既知の特性とシステムの構成要素の未知の特性は、システムの動作範囲内において維持されると決定することは、システムの構成要素またはシステム全体は予期されるように作動したと決定することを含むことができる。システムの構成要素またはシステム全体は予期されるように作動したかどうかを決定するために、システムの構成要素またはシステム全体の予期される挙動のリストを使用できる。
【0069】
幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性の正確性を検証することは、ブール充足可能性ソルバーを使用して実行できる。例として、システムの構成要素の既知の特性とシステムの構成要素の未知の特性の正確性を検証することは、Davis-Putman-Logemann-Loveland(DPLL)ソルバー、矛盾からの節学習(CDCL)ソルバー、パラレルSATソルバーなどのようなSATソルバーを使用して実行できる。幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、一次検証エンジンを使用して実行できる。例えば、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、充足可能性モジュロ理論(SMT)ソルバーを使用して実行できる。
【0070】
幾つかの実施形態においては、システムの構成要素の既知の特性とシステムの構成要素の未知の特性を検証することは、正確性のファジーな意味または近似的な意味に基づいて実行できる。例として、正確性のファジーな意味は、システムの構成要素の既知または未知の特性は無限である可能性があり、または、システムの構成要素のすべての既知または未知の特性をテストすることは、あまりにもリソースを使いすぎる可能性がある幾つかの実施形態において使用できる。
【0071】
図4は、プロセス400の、例としてのブロックを示しているが、幾つかの実現形態においては、プロセス400は、
図4において示されているブロック以外の追加的ブロック、それらよりも少ないブロック、それらとは異なるブロック、またはそれらとは異なるように配置されているブロックを含むことができる。実施形態においては、プロセス400の、例としてのブロックの1つ以上のブロックは、任意の順序または任意の量で組み合わせる、または配置できる。実施形態においては、プロセス400のブロックの2つ以上を平行して実行できる。
【0072】
実施形態においては、問題のシナリオを示している情報は、ネットワークの機能不全と、ネットワークの機能不全に基づいて取り込まれた、例としての信号トレースを識別する情報を含むことができる。
【0073】
実施形態においては、例としての信号トレースは、ネットワークの機能不全に対応する、複数の重要な性能インディケータを示すことができる。
【0074】
図7は、プロセス700の、例としてのブロックを示しているが、幾つかの実現形態においては、プロセス700は、
図7において示されているブロック以外の追加的ブロック、それらよりも少ないブロック、それらとは異なるブロック、またはそれらとは異なるように配置されているブロックを含むことができる。実施形態においては、プロセス700の、例としてのブロックの1つ以上のブロックは、任意の順序または任意の量で組み合わせる、または配置できる。実施形態においては、プロセス700のブロックの2つ以上を平行して実行できる。プロセス400と700の動作のそれぞれは、
図2~3の何れの装置によっても実行できる。
【0075】
本開示の実施形態は、付随する図面を参照する。異なる図面における同じ参照番号は、同じ、または類似の要素を識別することができる。
【0076】
本開示は、例示と記述を提供するが、すべてを網羅することは意図されておらず、また、実現形態を、開示されている正確な形状に制限することも意図されていない。修正と変形は、上記の開示を考慮すれば可能であり、または、実現形態の実践から取得することができる。
【0077】
ここにおいて記述されているシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形状で実現できるということは明白であろう。これらのシステムおよび/または方法を実現するために使用されている実際の特殊化された制御ハードウェアまたはソフトウェアコードは、実現形態を制限するものではない。そのため、システムおよび/または方法の動作と挙動は、ここにおいては、特定のソフトウェアコードに言及せずに記述したが、ソフトウェアとハードウェアは、ここにおける記述に基づいて、システムおよび/または方法を実現するために設計できるということは理解される。
【0078】
この分野においては慣習的であるように、実施形態は、記述されている1つまたは複数の機能を実行するブロックで記述および例示できる。これらのブロックは、ここにおいてはユニットまたはモジュールと称することができ、ロジックゲート、集積回路、マイクロプロセッサ、マイクロコントローラ、メモリ回路、受動電子構成要素、能動電子構成要素、光構成要素、配線接続回路などのようなアナログまたはデジタル回路により物理的に実現でき、ファームウェアとソフトウェアにより駆動できる。回路は、例えば、1つ以上の半導体チップにおいて、または、プリント回路基板などのような基板サポート上で具現化できる。ブロックに含まれている回路は、専用のハードウェアにより、またはプロセッサ(例えば、1つ以上のプログラムされたマイクロプロセッサおよび関連付けられている回路)により、または、ブロックの幾つかの機能を実行するための専用ハードウェアと、ブロックの他の機能を実行するためのプロセッサとの組み合わせにより実現できる。実施形態の各ブロックは、2つ以上の相互作用する、分離したブロックに物理的に分離できる。同様に、実施形態のブロックは、より複雑なブロックに物理的に組み合わせることができる。
【0079】
特徴の特別な組み合わせが、特許請求の範囲において列挙され、および/または明細書において開示されているが、これらの組み合わせは、可能な実現形態の開示を制限することは意図されていない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されていない、および/または明細書において具体的に開示されていない方法で組み合わせることができる。下記に一覧で示されているそれぞれの従属請求項は、1つの請求項のみに直接依存することができるが、可能な実現形態の開示は、請求項のセットにおけるすべての他の請求項との組み合わせにおける各従属請求項を含んでいる。
【0080】
ここにおいて使用されている要素、行動、または命令は何れも、明示的に重要または必要不可欠なものとして記述されない限り、そのように解釈されるべきではない。また、ここにおいて使用されているような冠詞「ある」は、1つ以上の項目を含むことが意図されており、「1つ以上」と交換可能に使用できる。1つの項目のみが意図されているときは、「1つの」という用語または類似の言語が使用される。また、ここにおいて使用されているような用語「有する」、「有している」、「含む」、「含んでいる」などは、何の制約もない用語であることが意図されている。更に、「基づいて」というフレーズは、そうでないと明示的に記述されない限り、「少なくとも部分的には基づいて」を意味することが意図されている。
【0081】
ここにおいて使用されているように、構成要素という用語は、ハードウェア、ファームウェア、ソフトウェア、ソフトウェアの特徴または機能、またはそれらの組み合わせとして広く解釈されることが意図されている。
【外国語明細書】