(57)【要約】【課題】ソフトウェアアーキテクチャに基づいて多様な機能を有する階層化セグメント化システムとしてのソフトウェアを開発する方法と、そのソフトウェアアーキテクチャを用いる航空機とを提供する。【解決手段】無人航空機などのためのソフトウェアアーキテクチャは、電気、推進、飛行管理、ナビゲーション、データリンクのための各セグメント、及びペイロードセグメントを含む。各セグメントは、ソフトウェアモジュール及びオブジェクトを含み、デバイスとのインターフェースやデバイスの制御を行う。このキテクチャは、例えば、セグメントの実行レートを管理するエグゼクティブ層、セグメント間の活動を調整するビークルコントローラ層、ユーティリティ、共通サービス、及びＯＳサポートを含む計算サポートを提供する様々な層などを含む。ソフトウェアアーキテクチャ内のソフトウェアエンティティ間の対話の指針となる規則が指定される。【選択図】図１
2010160786.tif 000002
【特許請求の範囲】
【請求項１】
複数のデバイスを備え、セグメント化され階層化されたシステムを制御するためのソフトウェアを開発する方法であって、
前記システムの複数のセグメントそれぞれに関して、統合された機能を決定するステップであって、各セグメントが、１以上の層に配置された複数のソフトウェア・エンティティを備える、ステップと、
各セグメントに関して、前記複数のデバイスのうちの１以上のデバイスを前記セグメントと関連付け、前記セグメントに関する前記複数のソフトウェア・エンティティの１以上のものを、関連付けられた前記１以上のデバイスのそれぞれに割り当てるステップと、
前記複数のセグメントのうちの各セグメントに関して、セグメント・インテグレータを決定するステップと、
前記ソフトウェアに関する１以上の実施規則を決定するステップと、
前記複数のセグメントのうちの各セグメントの前記統合された機能と、前記１以上の実施規則とに基づいて、前記システムを制御するための前記ソフトウェアを開発するステップであって、前記システムが計算デバイスを備え、前記ソフトウェアが前記計算デバイス上で実行可能である、ステップと
を備える方法。
【請求項２】
請求項１に記載の方法であって、前記システムが無人航空機（ＵＡＶ）であり、前記複数のセグメントが、電気セグメントと、推進セグメントと、飛行管理セグメントと、ナビゲーション・セグメントと、データ・リンク・セグメントと、ペイロード・セグメントとを備える、方法。
【請求項３】
請求項１に記載の方法であって、前記１以上の層が、統合層と少なくとも１つのデバイス層とを備え、前記少なくとも１つのデバイス層が、抽象デバイス層と、物理デバイス層とを備え、前記物理デバイス層の少なくとも１つのソフトウェア・エンティティが、デバイスとのインターフェース又はデバイスの制御を行う、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア・アーキテクチャの分野に関する。より詳細には、本発明は、無人航空機（ＵＡＶ）などのような、複数の定義域や機能を含むシステムに適用することができる層及びセグメントにより編成されたモジュール式ソフトウェア・アーキテクチャに関する。
【背景技術】
【０００２】
（政府ライセンス権）本発明は、米陸軍により与えられた契約第Ｗ５６ＨＺＶ−０５−Ｃ−０７２４号の下での米国政府支援を受けながら行われたものである。米国政府は、本発明における特定の権利を有することがある。
【０００３】
ＵＡＶなどのような操縦士のいない飛行機が、軍事、警察、救助、科学、及び商業の分野で使用される。ＵＡＶの１つの定義は、制御され、持続力があり、動力が供給される飛行が可能な無人デバイスである。従って、ＵＡＶの設計には、様々なサイズ、機能、及び重量の飛行機が含まれる。典型的なＵＡＶは、推進デバイス、例えばエンジンと、ナビゲーション・システムと、１以上のペイロード・センサと、場合によっては、貨物とで構成される。センサは、ＵＡＶが上空を飛行する地域に関する情報、例えば、救助用途での行方不明の徒歩旅行者に関するビデオ情報、科学やセキュリティ用途での環境状況に関するレーザ及び／又は生物学的センサからの情報、或いは軍事用途での戦場状況に関するビデオ、レーザ、生物学的センサ、及び他のセンサの組み合わせからの情報を、地上監視者に提供することができる。貨物は、ＵＡＶの任務に応じて、軍用品、食料品、医薬品、及び／又は他の物品であり得る。技術が進歩するにつれて、ＵＡＶの設計は、新規の及び／又は改良されたセンサ、ナビゲーション・システム、推進デバイスなどを統合するように変化する。
【０００４】
ＵＡＶは無人であるので、ＵＡＶに搭載された１以上のプロセッサ上で実行されるコンピュータ・ソフトウェアがＵＡＶの一部又は全てを制御する。コンピュータ・ソフトウェアは、場合によっては地上監視者に補助されて、ＵＡＶにより行われる様々な機能を制御することができる。
【発明の概要】
【０００５】
本発明の第１の実施形態は、セグメント化され階層化されたシステム（セグメント化及び階層化システム）を制御するためのソフトウェアを開発する方法を提供する。セグメント化及び階層化システムは複数のデバイスを含む。セグメント化及び階層化システムの１以上のセグメントのそれぞれに関して、統合された機能（統合機能）が決定される。各セグメントは、１以上の層に配置された１以上のソフトウェア・エンティティを含む。各セグメントに関して、複数のデバイスのうちの１以上のものがセグメントに関連付けられ、セグメントのソフトウェア・エンティティの１以上のものが、関連付けられた１以上のデバイスのそれぞれに関連付けられる。１以上のセグメントのうちの各セグメントに関して、セグメント・インテグレータが決定される。１以上の実施規則が、ソフトウェアに関して決定される。１以上のセグメントのそれぞれの統合機能と、１以上の実施規則とに基づいて、セグメント化及び階層化システムを制御するためのソフトウェアが開発される。セグメント化及び階層化システムは計算デバイスを含み、ソフトウェアは、その計算デバイス上で実行可能である。
【０００６】
本発明の第２の実施形態は航空機を提供する。航空機は、制御盤と、エンジン制御ユニット（ＥＣＵ）と、１以上の飛行制御デバイスと、１以上のナビゲーション・デバイスと、１以上の通信デバイスと、プロセッサと、データ記憶装置と、ソフトウェアとを含む。１以上の通信デバイスは、１以上の無線機及び／又は１以上のデータ・リンクを含む。ソフトウェアが、データ記憶装置に記憶され、プロセッサにより実行可能である。ソフトウェアは１以上のセグメントを含む。１以上のセグメントは、制御盤とインターフェースするように構成された電気セグメントと、ＥＣＵとインターフェースするように構成された推進セグメントと、１以上の飛行制御デバイスとインターフェースするように構成された飛行管理セグメントと、１以上のナビゲーション・センサとインターフェースするように構成されたナビゲーション・セグメントと、１以上の通信デバイスとインターフェースするように構成されたデータ・リンク・セグメントとを含む。
【０００７】
図面を参照しながら実施形態の様々な例が本明細書で説明されるが、図面中、同じ参照番号は同じエンティティを表す。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明の実施形態による例示的なＵＡＶを示す。
【図２】図２は、本発明の実施形態による、セグメント化及び階層化システムを制御するための例示的なソフトウェア・アーキテクチャを示す。
【図３】図３は、本発明の実施形態による例示的な計算デバイスのブロック図である。
【図４】図４は、本発明の実施形態による、セグメント化及び階層化システムを制御するためのソフトウェアを開発するための例示的な方法を示す流れ図である。
【発明を実施するための形態】
【０００９】
本発明は、ＵＡＶや他の航空機などの、階層化され、セグメント化されたシステムを制御するためのソフトウェアを開発するための方法を含む。ソフトウェア開発を調整するために、セグメント化及び階層化アーキテクチャ（セグメント化され階層化されたアーキテクチャ）が提供される。セグメント化及び階層化アーキテクチャは、複数のセグメントと、複数の層との両方を備える。セグメントは、各セグメントが１以上の関連するデバイスとインターフェースするように、及び／又は１以上の関連のデバイスを制御するように、編成される。例えば、推進セグメントは、１以上のエンジン制御ユニット（ＥＣＵ）、制動（ブレーキング）ユニット、及び／又は燃料コントローラを制御するために使用されることがあり、電気セグメントは、電気デバイス、例えば制御盤、電力制御スイッチ、電源モニタ、及び／又はライトとインターフェースするために使用されることがあり、ナビゲーション・セグメントは、ナビゲーション及び定位センサ（位置センサ）とインターフェースするために使用されることがある。
【００１０】
セグメント化及び階層化アーキテクチャは、「ソフトウェア・エンティティ」間の疎結合を推進する優れた設計のソフトウェア用のフレームワークを提供する。例示的なソフトウェア・エンティティは、ソフトウェア・オブジェクト、モジュール、関数、サブルーチン、コード、コンピュータ・データ、データ・オブジェクト、データベース、及び／又はデータ構造である。同様に、多くの他のソフトウェア・エンティティも想定可能である。
【００１１】
層は、階層をサポートし、階層において、ソフトウェア・エンティティは、そのエンティティの役割に基づいて或る層に配置され得る。セグメント化及び階層化アーキテクチャの層は、一般に全てのセグメントに共通の関数を備える。例えば、エグゼクティブ層は、セグメントに関する操作を実行する１以上のタスクをスケジュールすることができ、コントローラ層は、セグメント間、そして場合によっては層間の活動を調整することができ、ユーティリティ層は、全てのセグメントにより使用される関数を提供することができる。セグメント化及び階層化アーキテクチャは、様々な層及び／又はセグメントのオブジェクト間の対話を規定するための規則を指定することができる。
【００１２】
特に、セグメント化及び階層化アーキテクチャは、幾つかの関係付けられた及び進化するプロジェクト間の連続性及びベストプラクティス（最適の実践）を維持するのに適している。例えば、４つのプロジェクト間で共通のセグメント化及び階層化アーキテクチャが使用され、各プロジェクトが、前のプロジェクト（１または複数）から進化すると仮定する。共通のセグメント化及び階層化アーキテクチャで具現化される最初のプロジェクトから学んだレッスン（学習結果）は、次いで、後の３つのプロジェクトで自動的に適用される。なぜなら、それらは共通のセグメント化及び階層化アーキテクチャを使用するからである。
【００１３】
例示的なソフトウェア・アーキテクチャがＵＡＶ用に提供される。ＵＡＶソフトウェア・アーキテクチャは、推進セグメントと、電気セグメントと、ＵＡＶの飛行を制御するための飛行管理セグメントと、ナビゲーション・セグメントと、通信用のデータ・リンク・セグメントと、ペイロード・セグメントとを含む。ＵＡＶソフトウェア・アーキテクチャの層は、エグゼクティブ層と、ビークル・コントローラ層と、セグメントに特有の層と、セグメント・ユーティリティ層と、共通サービス層と、従来はオペレーティング・システムにより提供される機能を提供するボード・サポート・パッケージ／オペレーティング・システム層と、コンピュータ・ハードウェアを制御するため／コンピュータ・ハードウェアと対話するためのコンピューティング・プラットフォーム層とを含む。ＵＡＶソフトウェア・アーキテクチャは、他のセグメント化及び階層化システム、例えば、限定しない例として、有人航空機や、陸上、海上、若しくは空中で動作する他の軍用及び商用のビークルや、工場設備などにも同様に容易に適用可能である。
【００１４】
ＵＡＶソフトウェア・アーキテクチャのものと同一の階層化構造を用いる追加のセグメント又は層を容易に追加することができる。例えば、ユーザ・インターフェース・セグメントと、それに対応するユーザ・インターフェース層とを追加することができる。ユーザ・インターフェースは、ユーザ入力デバイス（例えば、操舵デバイス）及び／又はユーザ出力デバイス（例えば、ヘッドアップ・ディスプレイ、統合データ・ページ、及び／又は他のユーザ・ディスプレイ）を制御するセグメントを含むことができる。対応する層を（場合によっては、以下で図２を参照して後述されるビークル・コントローラ層の上に、又はビークル・コントローラ層の一部の代わりとして）追加することができ、必要に応じて、他のセグメントに対するユーザ・インターフェース・アクセス及び制御を可能にして、セグメント機能に対する操作者制御を提供する。追加のセグメント・オプションは、生命維持セグメントを含むことができ、これは、セグメント化及び階層化システムの操作者を守るために、気流及び温度制御デバイスなどのデバイス及びセンサを提供して制御する。別の例示的なセグメントは、有人飛行機や自動車などのユニット用の状況認識セグメントであり得、状況情報、例えば１以上のデジタル地図、該ユニット及び／又は他のユニットの現在位置情報、ユニット・タイプ（例えば、戦闘機、ＵＡＶ、トラック、自動車）、サイズ（１又は複数）、及び／又はユニット・ステータス情報（例えば、味方、不明、及び／又は敵）を表示する。更に、ユニットの環境に関する情報、例えば温度、湿度、放射線レベル、生物学的センサ情報などを表示する環境セグメントが想定可能である。同様に、多くの他のセグメント及び層が想定可能である。
【００１５】
ソフトウェア・アーキテクチャは、セグメント化及び階層化システムを作成する開発機構（１以上）において広く普及しているので、セグメント化及び階層化システム用のコードを書くソフトウェア開発者は、開発グループでの共通言語としてアーキテクチャの用語を用いることにより、より効果的に意思疎通をはかることができる。共通言語の使用は、（ａ）ソフトウェア開発努力に関する包括的な構造を提供することにより、且つ（ｂ）ソフトウェア開発者、経営者、顧客、及び第三の供給業者を含めての（これらに限定されない）ソフトウェア開発努力における利害関係者にセグメント化及び階層化システムを説明するために広く使用可能なリソースを提供することにより、各人の有効性を高める。ソフトウェア・アーキテクチャをセグメントに分割することにより、ソフトウェア開発者は各セグメントに個々に取り組むことができる。更に、共通言語の使用は、訓練活動の補助にもなる。
【００１６】
ソフトウェア・アーキテクチャが、一般的なよく知られているインターフェースを提供するので、新規の又は異なるプロジェクトでソフトウェア・エンティティ・コントローラを適合させるため、更にはセグメント及び層を再使用するために必要とされるソフトウェア開発努力の量が減少する。再使用されるソフトウェアは、開発時間及び共通言語を使用する開発者間での意思疎通時間をあまり必要としないので、ソフトウェアを再使用して効率的に意思疎通できることは開発時間を短縮する。再使用されるソフトウェアはデバッグ済みであるので、セグメント化及び階層化システムでのバグの数、従って、全体的なデバッグ努力が減り、同時に、システム全体の信頼性及び品質を高める。更に、「プラグ・アンド・プレイ」ソフトウェア・エンティティを、ソフトウェア・アーキテクチャにより定義されるインターフェースに準拠するように設計し、次いで、開発をほとんど又は全くせずに、やはりソフトウェア・アーキテクチャにより定義されるインターフェースに準拠する他のセグメント化及び階層化システムに対して使用することができる。ソフトウェア・アーキテクチャでのセグメント及び層の使用は、技術、任務、及び／又は市場が変わるときにデバイスを変更、追加、及び／又は除去することの影響を最小限にし、また、セグメント化及び階層化システムのフレームワークで定義された個々のセグメント及び／又は層に対してソフトウェア開発者が容易に取り組むことができるようにすることにより、開発時間を短縮する。従って、ソフトウェア・アーキテクチャの使用は、セグメント化及び階層化システム、並びに品質全体に関する理解及び意思疎通を高め、システム開発の時間及び費用を削減し、再使用されるソフトウェアを、同一のソフトウェア・アーキテクチャの一部又は全てを共有する新たなプロジェクトに適合させる努力を促進することができる。
【００１７】
例示的なＵＡＶ
図面を見ると、図１は、本発明の実施形態による例示的なＵＡＶ１００を示す。図１は、電気システム１１０と、推進ユニット１２０、１２２及び１２４と、飛行管理システム１３０と、ナビゲーション・システム１４０と、アンテナ１５２を有するデータ・リンク・システム１５０と、ペイロード・センサ１６２及び１６４と、本体１７０と、着陸装置１７２とを有するＵＡＶ１００を示す。
【００１８】
電気システム１１０は、ＵＡＶ１００全体にわたる電気の流れを提供して監視するための様々なデバイス及び機器、例えば、ワイヤ、ケーブル、スイッチ、ライト、電気デバイス（例えば、コンデンサ、インダクタ、ダイオード、トランジスタなど）、発光ダイオード（ＬＥＤ）、電力デバイス（例えば、発電器及び／又は電池）、電気センサ、ヒューズ、及び／又は回路遮断器を含むことができるが、これらに限定されるものではない。また、電気システム１１０は、電気システム１１０を監視して制御するための制御盤を含むこともできる。電気システム１１０は、他の電動デバイス、例えば、衝突防止ライト及び電池充電／監視回路を含むことができるが、これらに限定されるものではない。
【００１９】
推進ユニット１２０、１２２及び１２４は、ＵＡＶ１００を動かすために動力を提供することができる。推進ユニットは、１以上のエンジン、ファン、ポンプ、ロータ、ベルト、及び／又はプロペラを含むことができる。１以上のエンジン制御ユニット（ＥＣＵ）が、推進ユニット１２０、１２２及び１２４を制御することができる。例えば、ＥＣＵは、空気センサや燃料センサなどの様々なエンジン・センサから受信されるデータに基づいて、エンジンでの燃料流を制御することができる。推進ユニット１２０、１２２及び１２４は、１以上の燃料タンク、燃料タンク（１以上）から推進ユニット１２０、１２２及び１２４へ燃料を供給するための１以上の燃料ポンプ、及び／又は１以上の燃料コントローラを有することができる。また、推進ユニット１２０、１２２及び１２４は、燃料タンク（１以上）を監視するための１以上の燃料レベル・センサを含むこともできる。
【００２０】
飛行管理システム１３０は、有人飛行機で操縦士により提供される制御と同様の、ＵＡＶ１００に関する飛行計画、飛行誘導、及び飛行制御の機能を提供することができる。飛行管理システム１３０は、ＵＡＶ１００の様々な飛行制御面を操作する飛行制御アルゴリズム及び／又はサーボ（電気機械デバイス）を含むことができる。例えば、１以上のサーボが、ＵＡＶ１００の方向舵又は補助翼（１以上）を制御することができる。飛行管理システムは、代わりに又は加えて、スロットル制御機構を含むことができる。
【００２１】
ナビゲーション・システム１４０は、近くの飛行機に関するデータを含めたナビゲーション・データをＵＡＶ１００に提供することができる。ナビゲーション・システム１４０は、ＵＡＶ１００に関する定位デバイス、例えば、磁力計、ジャイロスコープ、レーザ、全地球測位システム（ＧＰＳ）受信機、高度計、慣性航法装置、対地接近センサ、及び他のナビゲーション・コンポーネントを含むことができるが、これらに限定されるものではない。定位デバイスは、ＵＡＶ１００に対する環境に関する追加のデータを提供するために、圧力センサ、温度計、及び／又は他の環境センサなどのような追加のセンサを含むことができる。
【００２２】
データ・リンク・システム１５０は、ＵＡＶ１００と他のデバイスとの間での通信を可能にすることができる。例えば、データ・リンク・システム１５０は、ＵＡＶ１００と同時に使用されている他のＵＡＶとの通信を可能にすることができる。同様に、データ・リンク・システム１５０は、１以上の地上制御デバイスとの通信を可能にすることもある。データ・リンク・システム１５０は、通信のために１以上の無線通信デバイス、例えばアンテナ１５２を使用することができる。図１に示されない代替形態では、データ・リンク・システム１５０は、１以上の有線通信デバイス、例えばイーサネット（登録商標）・ケーブル、ポート、及び／又はカードを、おそらくはＵＡＶ１００が地上に係留されているときに、使用することができる。データ・リンク・システム１５０は、１以上の取外し可能及び／又はダウンロード可能な記憶デバイス（又はそのためのポート）を含むことができる。取外し可能及び／又はダウンロード可能な記憶デバイスは、データ、例えば、遠隔測定及びセンサ・データ（例えば、ビデオ・データ、オーディオ・データ、画像、及び／又はセンサ読み取りでの収集データ）を記憶することができるが、これらに限定されるものではない。
【００２３】
ＵＡＶ１００は、ペイロード・センサ１６２及び１６４を含むペイロードを装備することができる。ペイロード・センサ１６２及び１６４は、ビデオ・センサ、例えばカメラ、レーザ・デシグネータ（laser designator）、化学センサ、生物学的センサ、煙検出器、放射線検出器、電磁波検出器、及び他のペイロード・センサを含むことができる。ＵＡＶ１００は、任務毎にペイロード・センサ１６２及び１６４を変更することができるように構成されることもできる。
【００２４】
構造の支持及び他の理由のために、ＵＡＶ１００は、本体１７０と、着陸装置１７２とを有することができる。図１に示される本体１７０及び／又は着陸装置１７２の形状は単なる例にすぎず、変えることができる。例えば、本体１７０は、従来の有人飛行機の本体で見られるものなどのような空気力学的形状を有することができる。着陸装置１７２は、制御機構、例えば着陸装置１７２を本体１７０内に引き込むことができるようにする制御機構などを、有するもの又は有さないものとすることができる。
【００２５】
例示的なソフトウェア・アーキテクチャ
図２は、本発明の実施形態による、ＵＡＶ１００などのようなセグメント化及び階層化システムを制御するための例示的なソフトウェア・アーキテクチャ２００を示す。図２は、幾つかの層を含むソフトウェア・アーキテクチャ２００を示し、これはエグゼクティブ層２１０と、ビークル・コントローラ層２２０と、統合層２８２と、物理デバイス層２８４と、セグメント・ユーティリティ層２８８と、共通サービス層２９０と、ボード・サポート・パッケージ／オペレーティング・システム層２９２と、コンピューティング・プラットフォーム層２９４とを含む。また、図２は、同様に幾つかのセグメントに分割されたソフトウェア・アーキテクチャを示し、これは電気セグメント２３０と、推進セグメント２４０と、飛行管理セグメント２５０と、ナビゲーション・セグメント２６０と、データ・リンク・セグメント２７０と、ペイロード・セグメント２８０とを含む。
【００２６】
図２は、点線を使用してセグメント間の境界を示す。幾つかの層は、セグメント間で共通であり得る。これらの層は、セグメントに特有ではなく、全てのセグメントにより共有される機能、及び／又は１以上のセグメントにわたる機能の統合を必要とする機能を含むことができる。図２は、共通層を、セグメント境界により交差されない層として示し、それらは、例えば、図２の上側のエグゼクティブ層２１０及びビークル・コントローラ層２２０、図２の下側の共通サービス層２９０、ボード・サポート・パッケージ／オペレーティング・システム層２９２、及びコンピューティング・プラットフォーム層２９４である。幾つかの層は、セグメント特有であり、また、セグメント間で共通でなくてもよい。図２は、セグメント特有の層を、セグメント境界により交差される層として示し、それらは、例えば、統合層２８２、抽象デバイス層２８４、物理デバイス層２８６、及びセグメント・ユーティリティ層２８８である。図２に示されるように、層は、下から上へと抽象レベルが高まっていく。
【００２７】
エグゼクティブ層２１０は、セグメント化及び階層化システムでのソフトウェアの実行をスケジュールすることができる。エグゼクティブ層２１０は、セグメント化及び階層化システムをパワーアップする（オンにする）際に、パワーアップ動作、例えばプロセッサの初期設定及びパワーアップ組込み試験（ＰＢＩＴ）の実施がなされることを保証することができる。パワーアップ操作が完了すると、エグゼクティブ層２１０は、次いで、システム内の「レート制御」を保証することができる。セグメント・インテグレータなどのようなタスクのレート制御は、単位時間当たりの「実行サイクル」の数又はタスクが実行される回数を示し、従ってヘルツ（Ｈｚ）単位で指定される。例えば、タスクが２０Ｈｚのレート制御を有する場合、エグゼクティブ層２１０は、タスクが毎秒２０回実行されることを保証する。同じレート制御が、実行サイクル間の最大時間量に関して指定されることもある。タスクを毎秒２０回実行するという同じ例では、レート制御は、実行サイクル間の最大時間量に関して指定されるので、５０ミリ秒となる。
【００２８】
ビークル・コントローラ層２２０は、セグメント化及び階層化システムのセグメント間でのタスクの実行を調整することができる。例えば、ビークル・コントローラ層２２０は、おそらくはデータ・リンク・セグメント２７０から受信される外部コマンドが、セグメント化及び階層化システムの様々なセグメントへディスパッチされる（送られる）ことを保証することができる。外部コマンドがディスパッチされると、次いで、各セグメントは、外部コマンドを行うためにセグメントにより必要とされるタスク（１以上）を実施する。タスク（１以上）が実施された後（又は、セグメントが、タスク（１以上）を実施することができないと決定した後）、セグメントは、結果（１以上）をビークル・コントローラ層２２０へ報告する。次いで、ビークル・コントローラ層２２０は、場合によってはデータ・リンク・セグメント２７０を使用して、外部コマンドに対する応答を送信する。
【００２９】
ビークル・コントローラ層２２０は、セグメント化及び階層化システムの状態及び／又はモードを維持することができる。特に、ビークル・コントローラ層は、システムの状態を判定するために、組込み試験（ＢＩＴ、built-in test）の実行を調整することができる。ＢＩＴは、定期的に（例えば、１時間に１回）、又は要求に応じて、又はリソース制限（例えば、使用可能なメモリ又はプロセッサ・アイドル時間）に基づいて実行することができる。状態は、セグメント化及び階層化システムの「健康状態」と呼ばれることもある。セグメント化及び階層化システムのモードは、セグメント化及び階層化システムにより実施されている又は実施される動作、例えば「ＵＡＶの着陸」、「入力待ち」、「左へ旋回」などを示す。同様に、多くの他の状態及び／又はモードを想定可能である。
【００３０】
統合層２８２は、統合オブジェクトを含むことができる。図２に示されるように、統合層２８２は、セグメント・インテグレータ及び機能インテグレータなどのような統合オブジェクトを含むことができる。各セグメントがセグメント・インテグレータを有する。例えば、ナビゲーション・セグメント・インテグレータは、セグメント化及び階層化システム用のナビゲーション・デバイス（１以上）からのデータから導出される完全なナビゲーション・ソリューションを提供することができる。
【００３１】
セグメント・インテグレータは、場合によってはセグメント・バジェット内でスレッド又はオブジェクトの実行をスケジュールすることにより、セグメント内の活動を調整することができる。セグメントに関するセグメント・バジェットは、エグゼクティブ層２１０により、セグメントに関するレート制御の一部として提供されることができ、例えば、セグメントを表す２０Ｈｚタスクは、実行時間１０ミリ秒というセグメント・バジェットを有することができる。セグメント・インテグレータは、複数のレートで実行しなければならない機能、従って、複数のタスクにより実行されることがある機能を、含むことができる。セグメント・バジェットは、加えて又は代わりに、他のリソース、例えば、メモリ、セマフォ、イベント、及び／又はハンドル、デバイス・アクセス（例えば、センサ、モニタ、制御回路、入力デバイス、及び／又は出力デバイスへのアクセス）を含むことができる。
【００３２】
所与のセグメントに関するセグメント・インテグレータは、そのセグメント内の制御、そのセグメントのステータス、及び／又はその所与のセグメントに関しての外部データへのアクセスを提供することができる。従って、セグメント・インテグレータは、セグメント・インテグレータにおいてシステム依存型の要求を集中すること、並びに所与のセグメントによりサポートされるデータ及びサービスに対するインターフェースを提供することを可能にする。好ましくは、データ・インターフェースは、セグメント化及び階層化システムの全てのセグメントに共通のレートセーフ・データ受渡し機構である。即ち、データ・インターフェースは、セグメント間でデータを渡し、エグゼクティブ層２１０により強制されるレート制御に適合する。レートセーフ・データ受渡し機構は、複数のレートでアクセスされるデータを保護する。例えば、より低いレートのタスクが、読み取りのために保護データＤへのアクセスを必要とし、より高いレートのタスクが、書込みのためにＤにアクセスすると仮定する。レートセーフ・データ受渡し機構を使用すると、より高いレートのタスクによりＤが変更される前に、より低いレートのタスクがＤを安全且つ迅速に読み取ることができるようにされる。また、機能インテグレータも、レートセーフ・データ受渡し機構を使用することができることに留意されたい。
【００３３】
セグメント・インテグレータは、場合によってはデータ・ハイディング（data hiding、データを隠す）技法を使用して、セグメント化及び階層化システムの残りの部分により所与のセグメントのソフトウェア・エンティティへの許可されたアクセス・インターフェース（authorized-access interface、許可アクセス・インターフェース）を生成及び施行することができる。所与のセグメントに関するセグメント・インテグレータは、好ましくは、所与のセグメント内の他のソフトウェア・エンティティへの完全なアクセスを有するセグメント化及び階層化システム内の唯一のソフトウェア・エンティティである。所与のセグメントへの唯一のアクセスが許可アクセス・インターフェースを介すものであることを保証することにより、所与のセグメントに対するインプリメンテーションの変更は、その変更されたインプリメンテーションが、許可アクセス・インターフェースに適合する限り、分離される。更に、所与のセグメントへの許可アクセス・インターフェースの発行が、セグメントの第三者によるインプリメンテーションを可能にする。
【００３４】
所与のセグメントのセグメント・インテグレータは、所与のセグメントに関する試験情報、並びに所与のセグメントのセンサ（１以上）及び他のデバイスに関する健康状態及び試験情報を、収集および維持することができる。試験情報は、所与のセグメントのセンサ（１以上）に関するＢＩＴのスケジュール、記録、及び結果、並びに所与のセグメント及び／又は所与のセグメントのセンサ（１以上）及び他のデバイスの性能を検証するために書かれた任意の診断又は他の試験のスケジュール、記録、及び結果を含むことができる。セグメント・インテグレータは、試験情報を解析して、センサの健康状態を判定することができる。例えば、セグメント・インテグレータは、センサに対して行われた最新のＢＩＴにセンサが不合格であった場合に、センサの健康状態が「不健康」であると判定は、センサに対して行われた最新のＢＩＴにセンサが合格した場合に、センサの健康状態が「健康」であると判定することができる。
【００３５】
セグメント・インテグレータは、所与のセグメントのセンサと他のデバイスとの間の通信を可能にすることができる。例えば、所与のセグメントが、カメラと、画像データ内の特定の特徴を決定する特徴解析デバイスとを有する場合、セグメント・インテグレータは、カメラからの画像データが解析用の特徴解析デバイスへ伝送される通信を可能にする。通信がセグメント・インテグレータを通過することを保証することにより、デバイス（１以上）を制御する及び／又はデバイス（１以上）とインターフェースするソフトウェアは、通信サポートを含む必要ないので、ソフトウェアを書くのが簡単になり、また、全ての通信がセグメント・インテグレータを介して共通のインターフェースを使用するので、エラーが起こりにくくなる。
【００３６】
所与のセグメントに関する機能インテグレータは、所与のセグメント内の「統合機能」又は導出された機能を提供することができる。従って、機能インテグレータは、機能インテグレータでセグメント間及び／又はセグメント内でのデータ・フローを調整することにより、統合機能を提供することができる。例えば、データ・リンク統合機能は、セグメント化及び階層化システムの外部のデバイスへ通信するために、幾つかの他のセグメントからデータを受信することができる。別の例として、飛行管理統合機能は、他のセグメント（１以上）からの所要のナビゲーション及び環境の情報を調整して、システムに関する飛行ガイダンス、飛行制御、及び飛行計画の機能を提供することができる。
【００３７】
各セグメントは、デバイス層を有することができる。図２に示されるように、デバイス層は、抽象デバイス層２８４と、物理デバイス層２８６とに分けられる。所与のセグメントの抽象デバイス層２８４は、所与のセグメントの１以上のデバイスへのソフトウェア・エンティティのためのインターフェースを提供する。抽象デバイス層は、「抽象」デバイスを形成するために、幾つかの物理デバイスの出力を組み合わせるオブジェクトを含むことができる。従って、抽象デバイスは、使用可能な物理デバイスにより提供されない、導出された機能を提供することができる。例えば、気圧高度計は、物理的な圧力センサ及び物理的な温度センサからのデータ出力を組み合わせて圧力高度値を計算する抽象デバイスであり得る。
【００３８】
同様に、燃料コントローラ抽象デバイスは、燃料の量の値を提供するためのオペレーション（演算）を提供することができる。燃料の量は、燃料燃焼率や燃料レベル・センサを使用して計算することができる。燃料コントローラ抽象デバイスは、エンジンへの燃料流量を制御する役割を担うことができる。
【００３９】
抽象デバイス層２８４のオブジェクトは、所与のセグメントの物理デバイス層２８６及びセグメント・ユーティリティ層２８６の内のソフトウェア・エンティティに、又は図２の抽象デバイス層２８４よりも下に示される層からのソフトウェア・エンティティ、即ち、セグメント・ユーティリティ層２８８と、共通サービス層２９０と、ボード・サポート・パッケージ／オペレーティング・システム層２９２と、コンピューティング・プラットフォーム層２９４との内部のソフトウェア・エンティティにのみ、アクセスできることがある。
【００４０】
物理デバイス層２８６は、所与のセグメントの物理デバイス毎のオブジェクト（又は他のソフトウェア・エンティティ）のグループとしてインプリメントされ得る。例えば、図２は、制御盤を有する電気セグメント２３０を物理デバイスとして示す。同様に、推進セグメント２４０の物理デバイスとして、ＥＣＵ、燃料ポンプ、及び燃料タンクがあり、他のセグメント２５０、２６０、２７０及び２８０に関しても同様である。無線機（即ち、範囲、又は特定の周波数に対する同調の改善のために交換する）、カメラ、ナビゲーション・センサ、及び／又は他の物理デバイスなどのような、物理デバイス層の物理デバイスは、特定の目的のために又は技術改良のために、交換を容易にするように設計され得る。
【００４１】
物理デバイス層２８６の各物理デバイスは、それ自体の健康情報を保持し、要求に応じてその健康情報を提供することができ、それは、任意の適用可能なＢＩＴ及び／又は他の試験の実行、進捗の追跡、及び／又は試験結果の提供を行うことを含む。抽象デバイス層２８４と同様に、物理デバイス層２８６のソフトウェア・エンティティは、所与のセグメントのセグメント・ユーティリティ層２８８のソフトウェア・エンティティに、及び図２に示される物理デバイス層２８６よりも下の層のソフトウェア・エンティティ、即ち、共通サービス層２９０と、ボード・サポート・パッケージ／オペレーティング・システム層２９２と、コンピューティング・プラットフォーム層２９４とのソフトウェア・エンティティにのみ、アクセスすべきである。
【００４２】
セグメント・ユーティリティ層２８８は、所与のセグメントに関するセグメント特有ユーティリティを含むことができる。例えば、データ・リンク・セグメント２７０は、メッセージをフォーマット、圧縮、及び／又は解凍するためのユーティリティを含むことができる。別の例として、各セグメントは、セグメント特有ユーティリティとして特有のデータ変換機能を含むことができる。例えば、緯度経度座標と内部地図座標との間の変換が、ナビゲーション・セグメント２６０のセグメント・ユーティリティ層２８８に備えられ得る。
【００４３】
共通サービス層２９０は、セグメントにわたって共有されるセグメント独立ユーティリティを含むことができる。例示的なセグメント独立ユーティリティは、距離、角度、速度、及び加速度に関する単位変換である。他のセグメント独立ユーティリティには、データ構造機能（例えば、リンクされたリスト、永続的なメモリ、バッファ、キュー、ツリーなど）と、入力／出力機能とが含まれる。セグメント化及び階層化システム内の全てのオブジェクトは、共通サービス層２９０のセグメント独立ユーティリティを使用することを求められ得る。セグメント化及び階層化システム内部の全てのオブジェクトがセグメント独立ユーティリティを使用する場合、セグメント独立ユーティリティは、システム全体にわたる共通の挙動を保証する標準となり、また、セグメント独立ユーティリティの機能に関するエラー源（従って、必要とされるデバッグの量）を減少させる。
【００４４】
セグメント化及び階層化システムは、プラットフォーム・サービス層を有することができる。図２は、ボード・サポート・パッケージ／オペレーティング・システム層２９２とコンピューティング・プラットフォーム層２９４とを含むプラットフォーム・サービス層を示す。ボード・サポート・パッケージ／オペレーティング・システム層２９２は、ボード・サポート・パッケージにより提供されるユーティリティ、又は所与の回路板及びその回路板と所与のオペレーティング・システムとの対話をサポートするために使用される低レベル・ユーティリティを含む。オペレーティング・システムは、セグメント化及び階層化システム全体にわたって共通のプロセス、スレッド、及びリソースを管理、スケジュール、及び調整するためのユーティリティを提供することができる。ボード・サポート・パッケージは、特定のハードウェア・プラットフォームに対してオペレーティング・システムを適合させることができ、従って、メモリ範囲、入力／出力アクセス・ポイント（メモリ・アドレス及び／又は割り込みベクトル）、読み出し専用メモリ（ＲＯＭ）画像、初期化及び／又はブート・パラメータ、デバイス・ドライバ、及び／又はバス情報に関しての、ソフトウェア及び／又はデータを提供することができる。従って、オペレーティング・システム・ユーティリティは、ボード・サポート・パッケージの一部又は全てを含むことができる。オペレーティング・システムは、データ構造（例えばメッセージ・キュー）、及び／又はソフトウェアの重要な領域及び／又は重要なデータを保護するために使用されることがあるロック／ロック解除機構（例えば、セマフォやブロッキング・メッセージ）などのサービスを提供することができる。
【００４５】
コンピューティング・プラットフォーム層２９４は、ユニバーサル・シリアル・バス（ＵＳＢ）、小型計算機システム・インターフェース（ＳＣＳＩ）、Ｆｉｒｅ−Ｗｉｒｅ（ＩＥＥＥ１３９４規格）ＲＳ−２３２、モデム、及び／又はイーサネット（登録商標）・デバイスなどのようなデバイスをサポートする有線通信デバイス・ドライバを含むことができる。コンピューティング・プラットフォーム層２９４は、Ｂｌｕｅｔｏｏｔｈ（商標）、ＺｉｇＢｅｅ（ＩＥＥＥ８０２．１５．４規格）、無線ワイド・エリア・ネットワーク（ＷＷＡＮ）、Ｗｉ−Ｆｉ（ＩＥＥＥ８０２．１１規格）、及び／又はＷｉ−ＭＡＸ（ＩＥＥＥ８０２．１６規格）デバイスなどのようなデバイスをサポートする無線通信デバイス・ドライバを含むことができる。
【００４６】
実施規則は、ソフトウェア・アーキテクチャ２００内のソフトウェア・エンティティ間の対話に関するガイドライン及び／又は規則を指定することができる。以下の表１は、図２のソフトウェア・アーキテクチャに関する例示的な実施規則を示す。
【００４７】
表１：  例示的な実施規則
１．  図２に示される、より高位の層のソフトウェア・エンティティは、より低位の層からのソフトウェア・エンティティを含むことができるが、その逆は成り立たない。
２．  エグゼクティブ層２１０及びビークル・コントローラ層２２０のソフトウェア・エンティティは、ソフトウェア・アーキテクチャ２００の全てのセグメントにわたって、より低位の層のソフトウェア・エンティティとインターフェースすることができる。しかし、データ及びサービスは、可能であればいつでも、セグメント・インテグレータを介してセグメントから得られるべきである。
３．  エグゼクティブ層２１０及びビークル・コントローラ層２２０は、物理デバイス層２８６の物理デバイス又は抽象デバイス層の抽象デバイスへ直接にアクセスすべきではない。
４．  統合層２８２のセグメント・インテグレータ及び機能インテグレータは、共通のレートセーフ保護データ受渡し機構を介してデータを共有すべきである。
５．  セグメントのデバイス層のソフトウェア・エンティティは、互いに又は別のセグメントのデバイスと、直接にインターフェースすべきでない。
６．  物理又は抽象デバイス「Ｄｅｖｉｃｅ１」が、同じセグメント「Ｓｅｇｍｅｎｔ１」内の別の物理又は抽象デバイス「Ｄｅｖｉｃｅ２」からの情報を必要とする場合、「Ｄｅｖｉｃｅ２」からの情報は、「Ｓｅｇｍｅｎｔ１」の機能インテグレータ又はセグメント・インテグレータを介して提供されるべきである。「Ｓｅｇｍｅｎｔ１」の抽象デバイスは、同じセグメント「Ｓｅｇｍｅｎｔ１」の１以上の物理デバイスからのデータにアクセスすることができる。
７．  セグメント「Ｓｅｇｍｅｎｔ１」のデバイス「Ｄｅｖｉｃｅ１」が、異なるセグメント「Ｓｅｇｍｅｎｔ２」内の別のデバイス「Ｄｅｖｉｃｅ２」からの情報を必要とする場合、「Ｄｅｖｉｃｅ２」からの情報は、インテグレータ層２８２を介して得なければならない。特に、「Ｓｅｇｍｅｎｔ１」のセグメント・インテグレータは、「Ｄｅｖｉｃｅ２」からの所要の情報を得るために「Ｓｅｇｍｅｎｔ２」のセグメント・インテグレータとインターフェースしなければならない。
【００４８】
同様に、ソフトウェア・アーキテクチャ２００を用いてソフトウェア・エンティティ間の対話を規定するための多くの他の実施規則が想定可能である。
【００４９】
例示的な計算デバイス
図３は、本発明の実施形態による例示的な計算デバイス３００のブロック図であり、処理ユニット３１０と、データ記憶装置３２０と、ユーザ・インターフェース３３０と、ネットワーク通信インターフェース３４０と、センサ・インターフェース３５０とを備える。計算デバイス３００は、デスクトップ・コンピュータ、ラップトップ又はノートブック・コンピュータ、個人用携帯情報端末（ＰＤＡ）、モバイル電話、埋め込みプロセッサ、コンピュータ基板（例えば、マザーボード）とすることができ、また、図４に関して以下に詳細に説明される本明細書で説明される方法４００の少なくとも一部を実現する、及び／又は本明細書で説明される任意の又は全てのソフトウェア・アーキテクチャを実現する機械言語命令を実行することができる処理ユニットを装備された任意の同様のデバイスとすることができる。
【００５０】
処理ユニット３１０は、１以上の中央処理装置、コンピュータ・プロセッサ、モバイル・プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、マイクロプロセッサ、コンピュータ・チップ、及び現在知られている又は今後開発される同様の処理ユニットを含むことができ、機械言語命を実行しデータを処理することができる。
【００５１】
データ記憶装置３２０は、１以上の記憶デバイスを備えることができる。データ記憶装置３２０は、読み出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）、取外し可能なディスクドライブ・メモリ、ハードディスク・メモリ、磁気テープ・メモリ、フラッシュ・メモリ、及び現在知られているか今後開発される同様の記憶デバイスを含むことができる。データ記憶装置３２０は、少なくとも、機械言語命令３２２とデータ構造３２４とを含むのに十分な記憶容量を備える。
【００５２】
データ記憶装置３２０に含まれる機械言語命令３２２とデータ構造３２４とは、それぞれ、処理ユニット３１０により実行可能な命令と、必要とされる任意の記憶領域とを含み、それらは、ソフトウェア・エンティティ、１以上のセグメント、及び／又は１以上のソフトウェア・アーキテクチャの層を含む１以上のソフトウェア・アーキテクチャに関して説明された、本明細書で説明される機能の幾つか又は全てを実施するのに必要とされ、且つ／又は方法４００で説明されるプロシージャの幾つか又は全てを実施するのに必要とされるものである。
【００５３】
ユーザ・インターフェース３３０は、入力ユニット３３２及び／又は出力ユニット３３４を備えることができる。入力ユニット３３２は、計算デバイス３００のユーザからユーザ入力を受信することができる。入力ユニット３３２は、計算デバイス３００のユーザからユーザ入力を受信することができる、操舵デバイス、キーボード、キーパッド、タッチ・スクリーン、コンピュータ・マウス、トラック・ボール、ジョイスティック、及び／又は現在知られている又は今後開発される他の同様のデバイスを備えることができる。
【００５４】
出力ユニット３３４は、計算デバイス３００のユーザへ出力を提供することができる。出力ユニット３３４は、計算デバイス３００のユーザにグラフィック、テキスト、及び／又は数の情報を表示することができる、可視出力（１以上）を発生するための可視出力デバイスを備えることができ、例えば、１以上の陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、発光ダイオード（ＬＥＤ）、プリンタ、ライト、及び／又は現在知られている又は今後開発される他の同様のデバイスを備えることができる。代替物として又は追加物として、出力ユニット３３４は、計算デバイス３００のユーザへ音声及び／又は可聴情報を送ることができる、可聴出力（１以上）を発生するための１以上の可聴出力デバイスを備えることができ、例えば、スピーカ、スピーカ・ジャック、オーディオ出力ポート、オーディオ出力デバイス、イヤホン、及び／又は現在知られている又は今後開発される他の同様のデバイスを備えることができる。
【００５５】
ネットワーク通信インターフェース３４０は、有線通信インターフェース及び／又は無線通信インターフェースを介してデータを送信及び受信するように構成される。データは、デジタル及び／又はアナログの技法を使用して送信及び受信され、テキスト、グラフィック、ビデオ、オーディオ、バイナリのデータ、及び／又は他のタイプのデータを含むことができる。有線通信インターフェースは、存在する場合には、データ・ネットワーク、例えば、ワイド・エリア・ネットワーク（ＷＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、例えばインターネットなどのような１以上の公衆データ・ネットワーク、１以上のプライベート・データ・ネットワーク、或いはそのようなネットワークの任意の組み合わせへの、ワイヤ、ケーブル、光ファイバ・リンク、又は同様の物理的接続、例えば、ＵＳＢ、ＳＣＳＩ、Ｆｉｒｅ−Ｗｉｒｅ、及び／又はＲＳ−２３２による接続などを備えることができる。無線通信インターフェースは、存在する場合には、データ・ネットワーク、例えば、ＷＷＡＮ、無線ＬＡＮ、１以上の公衆データ・ネットワーク（例えば、インターネット）、１以上のプライベート・データ・ネットワーク、或いは公衆及びプライベートのデータ・ネットワークの任意の組み合わせへの、エア・インターフェース、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＺｉｇＢｅｅ、無線ＷＡＮ（ＷＷＡＮ）、Ｗｉ−Ｆｉ、及び／又はＷｉＭＡＸインターフェースなどを用いることができる。幾つかの実施形態では、ネットワーク通信インターフェース３４０は、複数の通信周波数にわたってデータを送信及び／又は受信するように構成され、また、複数の通信周波数から通信周波数を選択して用いることができる。無線通信インターフェースは、加えて又は代わりに、アンテナを介してのデータ・リンクを通じて通信を受信するためのハードウェア及び／又はソフトウェアを含むことができる。
【００５６】
センサ・インターフェース３５０は、１以上のセンサとの通信を可能にすることができ、センサが計算デバイス３００へセンサ・データを提供できるようにし、且つ／又はセンサ・メンテナンスを可能にするコマンド（例えば、セットアップ・コマンド、コンフィギュレーション・パラメータ設定など）を受信できるようにする。センサ・インターフェース３５０は、有線センサ・インターフェース及び／又は無線センサ・インターフェースを含むことができる。１以上のセンサの例は、図２に示されて図２と関連して上述された物理デバイスを含むが、それらに限定されるものではない。有線センサ・インターフェース及び無線センサ・インターフェースは、それぞれ、ネットワーク通信インターフェース３４０の有線通信インターフェース及びネットワーク通信インターフェース３４０の無線通信インターフェースに関して上述した技術を用いることができる。
【００５７】
ソフトウェア開発のための例示的な方法
図４は、本発明の実施形態による、セグメント化及び階層化システムを制御するためのソフトウェアを開発するための例示的な方法４００を示す流れ図である。方法４００は、セグメント化及び階層化システムが進化するとき、技術が変化するとき、及び／又はセグメント化及び階層化システムが様々な用途に対して再コンフィギュレーションされるときに、ソフトウェアの進化を可能にするように設計されたフレームワークを提供する。
【００５８】
この流れ図での及び本明細書で提示される他の流れ図での各ブロックは、プロセス中の特定の論理関数又はステップを実施するための１以上の実行可能な命令を含むソフトウェア・エンティティ、モジュール、セグメント、層、関数、又はコンピュータ・プログラム・コードの一部を表し得る。代替の実装形態は例示的な実施形態の範囲内に含まれ、説明される実施形態の技術を適切に理解する当業者には理解されるように、機能は、関連する機能に応じて、実質的に同時や逆順をも含めての、図示される又は論じられる順序とは異なる順序で実行されることがあることを、理解すべきである。
【００５９】
方法４００は、ブロック４１０で始まる。ブロック４１０で、セグメント化及び階層化システムの複数のセグメントそれぞれに関して機能が決定される。各セグメントは、複数のソフトウェア・エンティティ、例えば、コンピュータ・ソフトウェア・オブジェクト、モジュール、関数、サブルーチン、データ・オブジェクト、データ構造、及び／又は他のソフトウェア構造を含むことができるが、それらり限られるものではない。セグメント化及び階層化システムの各セグメントのソフトウェア・エンティティを含めての、セグメント化及び階層化システムのソフトウェア・エンティティは、データ記憶装置３２０などのコンピュータ・メモリに記憶され、処理ユニット３１０などの処理装置により実行可能な１以上の機械言語命令、及び／又は１以上のデータ構造を含むことができる。ソフトウェア・エンティティは、コンピュータ可読媒体、例えば、１以上の磁気ディスク（例えば、ハード・ドライブ）、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、コンパクト・ディスク（１以上）（ＣＤ）、フラッシュ・メモリ、磁気テープ、及び／又はソフトウェア・エンティティを記憶するのに適した任意の他のコンピュータ可読媒体に記憶され得る。
【００６０】
また、セグメントは、ソフトウェア・アーキテクチャ内で機能的な役割を担うことができ、例えば、電気デバイス（例えば、制御盤）の制御及び／又は電気デバイスとのインターフェースを行う電気セグメント、推進デバイス（例えば、燃料コントローラ）の制御す及び／又は推進デバイスとのインターフェースを行う推進セグメント、ビークル（セグメント化及び階層化システムとして機能するビークル）の飛行を制御するための飛行計画、飛行ガイダンス、及び／又は飛行制御の機能を提供する飛行管理セグメント、ナビゲーション・デバイス（例えば、磁力計）の制御及び／又はナビゲーション・デバイスとのインターフェースを行うことによりナビゲーション・データを提供するナビゲーション・セグメント、無線機を介してセグメント化及び階層化システムとの通信を提供するデータ・リンク・セグメント、及びペイロード・セグメントなどがある。同様に、多くの他の機能的な役割、従って、セグメントを、想定可能である。
【００６１】
セグメント化及び階層化システムに関するソフトウェア・アーキテクチャは、層に分割され得る。例示的な層は、エグゼクティブ層、ビークル・コントローラ層、デバイス層、セグメント・ユーティリティ層、共通サービス層、及びプラットフォーム・サービス層である。幾つかの層はサブ層に分割されることがあり、例えば、デバイス層は抽象サービス層と物理サービス層とに分割される。特に、ソフトウェア・アーキテクチャのセグメントは、幾つか又は全ての層を含むことができる。
【００６２】
組み合わされて、ソフトウェア・アーキテクチャは、該セグメント以外の複数のセグメント及び／又は層の機能を用いる機能を提供することができる。例示的な機能は、発射前機能、メンテナンス機能、通信機能、発射機能、飛行機能、及び着陸操作機能である。同様に、多くの他の機能も想定可能である。
【００６３】
ブロック４２０で、０又は１以上のデバイスがセグメントと関連付けられ、複数のソフトウェア・エンティティのうちの１以上のソフトウェア・エンティティが、関連付けられた上記の０又は１以上のデバイスに割り当てられ得る。１以上のソフトウェア・エンティティが１以上のデバイスに割り当てられると、ソフトウェア・エンティティは、デバイスとのインターフェース及び／又はデバイスの制御を行うことができる。デバイスは、物理デバイス及び／又は抽象デバイスである。例えば、セグメントの抽象デバイス層及び／又は物理デバイス層内のソフトウェア・エンティティ（例えば、オブジェクト）は、制御盤、ＥＣＵ、飛行制御デバイス、ナビゲーション・センサ／デバイス、無線機、データ・リンク、及び／又はペイロード・センサなどのデバイスとのインターフェース及び／又はそれらのデバイスの制御を行うことができるが、これらに限定されるものではない。例示的なペイロード・センサは、カメラ、レーザ、化学センサ、生物学的センサ、及び放射線検出器である。同様に、ペイロード・センサを含めた多くのデバイスを想定可能である。セグメント化及び階層化システムがペイロードを装備される場合、ペイロードは、ペイロード・センサと共に又はその代わりに、実世界の物体、例えば、貨物及び／又は軍用品を含むこともあることに留意されたい。
【００６４】
ブロック４３０で、セグメント・インテグレータ（１以上）及び任意の可能な機能インテグレータ（１以上）が、複数のセグメントのうちの各セグメントに関して決定される。所与のセグメントに関するセグメント・インテグレータは、そのセグメント内の制御、そのセグメントのステータスを提供し、且つ／又はその所与のセグメントのために外部データへのアクセスを提供することができる。セグメント・インテグレータは、おそらくはデータ・ハイディング技法を使用して、所与のセグメントのソフトウェア・エンティティへの許可アクセス・インターフェースを生成及び適用することができる。所与のセグメントに関するセグメント・インテグレータは、所与のセグメント、並びに所与のセグメントに関連付けられるセンサ及び／又は他のデバイスに関する試験及び／又は健康情報を収集して維持することができる。セグメント・インテグレータは、所与のセグメントのセンサ及び／又は他のデバイスの間の通信を可能にすることができる。機能インテグレータは、機能インテグレータを用いてセグメント間及び／又はセグメント内部でのデータ・フローを調整することにより、所与のセグメントに対して統合された機能を提供することができる。
【００６５】
ブロック４４０で、１以上のセグメント・ユーティリティが各セグメントに関して識別される。例示的なユーティリティは、データ変換ユーティリティ、数学、演算、及び／又は統計ユーティリティ、デバイス・ハンドリング・ユーティリティ、セグメント特有タイミング・ユーティリティ、及び／又はセグメント内リソース割当てユーティリティ（例えば、ローカル・メモリ割当てユーティリティ）を含む。同様に、多くの他のユーティリティを想定可能である。
【００６６】
ブロック４５０で、１以上の実施規則が複数のセグメントに関して決定される。実施規則は、ソフトウェア・アーキテクチャ内のソフトウェア・エンティティ間の対話に関するガイドライン及び／又は規則を指定することができる。例えば、上の表１の実施規則を参照されたい。
【００６７】
ブロック４６０で、セグメント化及び階層化システムを制御するためのソフトウェアが開発される。ソフトウェアは、複数のセグメントの各セグメントに関する機能、セグメント・インテグレータ、及び任意の機能インテグレータと、１以上の実施規則とに基づく。セグメント化及び階層化システムは計算デバイスを含み、ソフトウェアは計算デバイス上で実行可能である。ソフトウェアは、自動的に発生されるもの及び／又はソフトウェア開発者により書かれるものである。例えば、米国マサチューセッツ州ネイティックのＴｈｅ  ＭａｔｈＷｏｒｋｓ，Ｉｎｃ．（登録商標）のＳｉｍｕｌｉｎｋ（登録商標）ソフトウェア・パッケージなどのようなソフトウェア生成ツールは、飛行管理に関する１以上のソフトウェア・エンティティを生成することができる。
【００６８】
ブロック４６０を完了した後、方法４００は終了することができる。
【００６９】
結論
本発明の例示的な実施形態を説明した。しかし、特許請求の範囲により定義される本発明の真の範囲及び精神から逸脱することなく、説明された実施形態に変形及び変更が施されることがあることを当業者は理解されよう。しかし、本明細書で詳細に説明された上記及び他の構成は、例示の目的でのみ提供されるものであり、本発明は、以下の特許請求の範囲の範囲及び精神に入る全ての変更及び改良を包含することを理解すべきである。従って、当業者は、説明したものの代わりに、他の構成及び他の要素（例えば、機械、インターフェース、関数、順序、及び関数のグループなど）を使用することもでき、幾つかの要素がまとめて省かれることもあることを、理解されたい。
【００７０】
更に、本明細書で説明された要素の多くは、ディスクリート（個別）又は分散したコンポーネントとして、又は他のコンポーネントと関連して、任意の適切な組み合わせ及び位置で、及びハードウェア、ファームウェア、及び／又はソフトウェアの任意の適切な組み合わせとして実装され得る機能エンティティである。
【図１】
2010160786.tif 000003
【図２】
2010160786.tif 000004
【図３】
2010160786.tif 000005
【図４】
2010160786.tif 000006
【外国語明細書】
2010160786000001.pdf