JP5580200B2 - 航空機搭載のシステムのオペレーション・ソフトウェアをデバッグする方法およびその方法を実施するためのデバイス - Google Patents

航空機搭載のシステムのオペレーション・ソフトウェアをデバッグする方法およびその方法を実施するためのデバイス Download PDF

Info

Publication number
JP5580200B2
JP5580200B2 JP2010524558A JP2010524558A JP5580200B2 JP 5580200 B2 JP5580200 B2 JP 5580200B2 JP 2010524558 A JP2010524558 A JP 2010524558A JP 2010524558 A JP2010524558 A JP 2010524558A JP 5580200 B2 JP5580200 B2 JP 5580200B2
Authority
JP
Japan
Prior art keywords
program
flag
error
execution
software
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010524558A
Other languages
English (en)
Other versions
JP2010539578A (ja
Inventor
ランディムビヴォロロナ,ファーマンタナンソー
フルニエ,フローレン
ルミュール,フィリップ
ブレジョン,ヴィンセント
Original Assignee
エアバス オペレーションズ (エスアーエス)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エアバス オペレーションズ (エスアーエス) filed Critical エアバス オペレーションズ (エスアーエス)
Publication of JP2010539578A publication Critical patent/JP2010539578A/ja
Application granted granted Critical
Publication of JP5580200B2 publication Critical patent/JP5580200B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、システムのオペレーションがコンピュータ内の一連のロジック命令の実行に依存する場合のシステム・オペレーションの安全性の分野に関する。
特に、本発明は、一連のロジック命令を実行しなければならないシステム、特に、航空機搭載用電子システムなど、安全性要件が高いシステムのオペレーション・ソフトウェアをデバッグする方法に関する。
この方法は、開発者が機内搭載システムのオペレーション・ソフトウェア用の一連のロジック命令内のエラーを探索して訂正できるようにする。本発明は、航空術の分野、より詳細には、機内搭載システムのオペレーション・ソフトウェアにテストを実行する分野で特に有利であるが、この分野の専用ではない。
安全性の理由で、航空機搭載用システムは、システムのオペレーションが正しいかについてのチェックを受け、そのチェック中に、前記システムは、そのようなシステムを取り付けた航空機が飛行を許可される前、または営業利用に入るときでも、営業利用が許可される前の認可要件を満たしていることが証明される必要がある。
システムの搭載前に、これらのシステムは、認可機関によって出されている要件の中でも特に整合性および安全性要件を満たしていることをチェックするために多数のテストを受ける。これらの機内搭載システムは、特に航空機用のおそらく重要なオペレーション、例えば、操縦用のオペレーションを実行することを目的とした専用コンピュータであり得る。これらのシステムは、これ以降、コンピュータと称される。
現行のシステム・アーキテクチャでは、しばしば、各コンピュータは、1つの用途または同じ性質のいくつかの用途、例えば、飛行制御用途に専用となっている。各コンピュータは、ハードウェア部とソフトウェア部を含む。ハードウェア部は、少なくとも1つの中央処理ユニット(CPU)および少なくとも1つの入出力ユニットを備え、コンピュータは、入出力ユニットを介してコンピュータ、外部周辺機器などのネットワークに接続される。
しばしば航空術の分野で実施される機内搭載システムの1つの本質的な特性は、実行される前記システムの専用機能に不要な手段の導入は極力回避するアーキテクチャ、すなわち、ソフトウェアと同じようにハードウェアに関係している。
したがって、航空術において普及している用途で一般的に見られるシステムとは反対に、本コンピュータは複雑なオペレーティング・システムを備えていない。加えて、ソフトウェアは、中央処理ユニットによって理解される言語に可能な限り近い言語で作成され、利用可能な入出力はシステム・オペレーションに必要な入出力のみ、例えば、センサまたは他の航空機要素から発生する情報、またはアクチュエータまたは他の要素に送信される情報である。
このタイプのアーキテクチャの利点は、そのようなシステムのオペレーションの方がより容易に制御されるという事実から生ずる。この利点は、一部の動作態様が制御不可のパラメータによって左右され、それとは別にアプリケーション・ソフトウェアと同じ安全性の実証が行われる複雑なオペレーティング・システムに依存しない。本システムは、実行される前記システムの機能に厳密に必要な手段のみを有するので、より単純であり、脆弱性がより小さい。
他方では、そのようなシステムの動作条件は検出することがはるかに難しい。例えば、本システムは、キーボードおよび画面などの従来のマン/マシン・インターフェースを一切備えておらず、このインターフェースによって一連の命令のオペレーションが正しいかがチェックでき、オペレータがこのオペレーションと対話できるのであるが、これを備えていないことが、ソフトウェアの開発、検証および認定フェーズ中に必要な本質的なチェックを行うことを困難にしている。
本コンピュータのソフトウェア部は、関連の用途に固有のソフトウェア・プログラムを含み、そのプログラムがコンピュータのオペレーションを確実にし、そのロジック命令が、システム・オペレーションを決定するアルゴリズムに相当する。
システム認可を得るために、システムの使用前および航空機の使用前にコンピュータ妥当性検査フェーズが実行される。
既知の方法では、妥当性検査フェーズは一般的に、コンピュータ実行プロセスの各ステップで、そのステップが、期待されるシステム・オペレーションを実行するように設定された仕様に準拠していることをチェックすることで行われる。
この仕様への準拠を検証する検証フェーズは、特にソフトウェア・プログラムに関して、最も単純なソフトウェア構成要素をチェックすることから、ターゲット・コンピュータで使用される構成要素のすべてを統合した完全ソフトウェア・プログラムをチェックするまでの連続するステップにより実行される。
第1の検証ステップにおいて、テスト可能な最も単純なソフトウェア要素が、単体テストとして知られているテストを受ける。これらのテスト中、個々に取り上げられる前記ソフトウェア要素のロジック命令、すなわち、コードが設計要件に準拠して実行されたことをチェックされる。
統合ステップとして知られる第2のステップにおいて、分離されたチェックを個別に受けた個々のソフトウェア構成要素が、中に含まれるソフトウェア構成要素どうしが対話する単体を構成するために統合される。これらの個別のソフトウェア構成要素は、そのソフトウェア構成要素が整合していること、特に前記構成要素間の機能上のインターフェースのレベルで整合していることをチェックすることを目的として統合テストを受ける。
第3のステップにおいて、ソフトウェア構成要素のすべてが、それらが設計された目標のコンピュータに統合される。次に、コンピュータに統合された構成要素のセットによって形成されるソフトウェアが仕様に準拠していること、すなわち、そのコンピュータは、期待される機能を実行すること、およびそのコンピュータのオペレーションが信頼できて、安全であることを証明するために妥当性検査テストが実行される。
ソフトウェア項目が安全であることを保証するため、および認可要件を満たすために、そのソフトウェアが受けたテストのすべてが、この妥当性検査フェーズ中にも、適切なレベルの確実性でもって、そのソフトウェアは、それが組み込まれたシステムの安全性要件に準拠していることを証明する必要がある。
妥当性検査フェーズ中にソフトウェアに実行される個別のテストは、前記ソフトウェアの誤動作(誤動作はコンピュータの正しいオペレーション、したがって航空機およびその安全性に影響を与えるおそれがある)が発生する可能性がないこと、または誤動作が発生した場合、ソフトウェアがこの状況を管理できることが保証されるようにすることができる。
いずれの場合にも、妥当性検査フェーズ中、中でも異常が観察される場合の調査オペレーションについては、そのソフトウェアが導入されているコンピュータの入出力パラメータが期待されるパラメータに適合するだけでなく、一部の内部ソフトウェア・アクションが正しいことも保証する必要があることが多い。
この場合、機内搭載用途向けの専用コンピュータの特殊なアーキテクチャのために、特定のデバイスおよび方法を実装せずにソフトウェアの動作条件を検出することは、一般的に非常に困難である。
第1の既知の方法は、ソフトウェアが導入済みの、テストされるコンピュータと関連のプラットフォームとの間に、エミュレータを使用することによりファイル配信システムを導入することで行われる。エミュレータとは、コンピュータ・プロセッサのコンピューティング・ユニットのロジック・オペレーションを関連のプラットフォーム上でシミュレートできるようにするデバイスのことである。
エミュレータが取り付けられたそのような動作モードでは、コンピュータ・プロセッサはプローブに置き換えられ、それにより、プロセッサ・エミュレーションをサポートする関連のプラットフォームとのインターフェースが作成される。
したがって、プロセッサ部を除いて、テストされるソフトウェアをコンピュータで実行すること、および関連のプラットフォームによって実行される機能によって、入出力ユニットの出力を検出することに加えて、例えば、前記入出力ユニットに対する入力シミュレーションに応答して動作条件または特定の内部ソフトウェア誤動作を検出することが可能になる。
この第1の方法は、多くの欠点がある。実際には、テストされる各タイプのコンピュータが特殊なテスト・ベッドまたは少なくとも非常に特殊なテスト・ベッド構成を必要とする。テスト・ベッドとは、特に、テストされるコンピュータをインターコネクトするための手段、コンピュータ・プロセッサ(複数可)をエミュレートするための手段、およびテスト・プログラムを実行するための手段を備えたユニットである。
各プロセッサは、エミュレーション・ソフトウェアの場合にも、プロセッサの代わりに接続されるセンサの場合と同じだけ特殊なエミュレータを必要とするので、コンピュータの定義に合わせてエミュレータの数を増やさなければならない。
さらに、エミュレータを使用して調査できることは、一般的に限定される。加えて、関連のプロセッサに固有の機械語を扱う必要があるため、開発者は、機械語プログラミングの専門家でなければならない。
さらに、エミュレータは高価な製品であり、一般的に少量が製造されるだけである。このタイプの製品の寿命は非常に短い(6カ月から2年)が、開発およびチェック手段のオペレーションの保守(規制、産業界の反応)は航空機プログラムの使用期間(20年、おそらくそれ以上)を通して必要である。したがって、陳腐化の対処に関して問題が発生し、その問題は、解決がますます困難になってきている。
したがって、エミュレータを使用するというこの解決策は、調査についてパフォーマンスが限られることに加えて、導入および保守が両方とも高価であるために、十分に適合しているようには思えない。
一般的に設計の安全性の点で機能の冗長性を確保するために異なるモデルのプロセッサが使用され、したがって、同じだけエミュレータの必要性が増すという事実によってもコストが上がる。
第2の方法は、エミュレータの問題を克服することを目指して、ホスト・プラットフォーム上で、テストされるプログラムを実行するために使用されるコンピュータのオペレーションをシミュレートすることで行われる。この場合、テストされるソフトウェアは、テスト・ベクトルを読み取るため、またはテスト結果を記録するために、ホスト・プラットフォーム上のファイルにアクセスできなければならない。
テストされるソフトウェアは、当然ながら、ホスト・プラットフォーム・ファイルへのそのようなアクセスのための機能を有していないので、テストされるソフトウェアは、これらのアクセス機能を組み込むために修正される必要がある。
情報を転送するためには、通常はシステム呼び出し命令が使用されるが、システム呼び出し命令は、シミュレートされるテスト環境によって伝送される。システム呼び出し命令は、例えば、ファイルを開くこと、ファイルを書くこと、またはファイルを読み取ることでもあり得る。システム呼び出し命令は、ホスト・プラットフォーム・オペレーティング・システムによってインターセプトされ、そのオペレーティング・システムはシステム呼び出し命令をホスト・プラットフォーム・システム呼び出しに変換する。
この第2の方法も欠点がある。実際には、ファイルの多様さは、アクセス機能の開発が極端にホスト・プラットフォームおよびそのオペレーティング・システムに依存するという具合である。しかし、ホスト・プラットフォームの改変性は、時間的(ホスト・プラットフォームの置換)と同じように空間的にも(開発チームが世界中に配置されている場合)重要であり、そのことが、この方法の実施に際して実践の難しさを生み出す。
ファイル・システムへのそのようなアクセス機能を開発するためにオペレーティング・システムの機能を修正できる専門家が必要なので、これらの難しさは一層深刻になり、したがって、テストの専門家に任せられない。
したがって、この方法は、実施するには高価でもあり、難しくもある。
さらに、この方法は、テストされるソフトウェアに関しては非常に邪魔であり、テストを実行するためにソフトウェアを修正することは、ソフトウェアのオペレーション自体に支障を来す危険性がある。
コンピュータ・ソフトウェアの妥当性検査および検証フェーズ中、テストを実行することにより、エラーが検出されることがあるが、エラーは、オペレーション・ソフトウェアの走行を停止することで、または1つまたはいくつかのテスト事例でエラー結果が生成されることで示される。したがって、開発者は、これらのエラーを訂正するために、命令コード行の中の異常またはエラーを探索しなければならない。この探索は、実行パスのポイントの連続が通常の実行とは逆の順に現れるオペレーションによって行われる。つまり、一連のコード行が逆に再追跡され、エラーは、これらのコード行の中で探索され(すなわち、すでに実行されたが、1つまたは複数のエラーを含む一連のコード行が再追跡される)、再追跡された一連のコード行が再実行される。この探索は、逆実行として知られる。
この逆実行オペレーションは、オペレーション・ソフトウェアの、命令コード行の連続で形成される実行パスの任意のポイントにおける命令コード行を開発者が理解していることを必要とする。しかし、開発者は、実行パス内のどこにそのエラーがあるかを知らない。したがって、開発者は、逆実行オペレーションが何行のコードに対して実行されねばならないかを知らない。加えて、機内搭載ソフトウェアの場合、逆実行オペレーションは、通常の実行と同じ言語、すなわち、機械語で実行される必要がある。そのため、開発者が、一連の行を再追跡し、エラーを突き止めるためにオペレーション・ソフトウェア・プログラムの走行を十分詳細に理解することは難しい。さらに、エラーまたは異常を突き止めるためにその不良チェーンはどのポイントまで再追跡されねばならないかを開発者が知ることができるようにするための、逆実行オペレーションを制御および監視する手段がない。
その複雑さを考慮すると、このエラー探索は相当な時間を要し、それは数時間から数日に渡る可能性があり、そのため、生産性および労力の点でデバッグ・フェーズのコストは相対的に高くなる。これは、現行のデバッグ・ツールが逆実行オペレーションを効率よくサポートする手段を提供しないからである。これは、時間的にn個の単位(一般的に秒数)を再追跡するか、またはn個のコンピューティング・ステップを再追跡するかに関係する。デバッグされるソフトウェアのロジックとの機能的な関連性はない。したがって、これが、機内搭載ソフトウェアの事例が一般的にそうであるような複雑なロジックを有するソフトウェア項目を含む場合、逆実行オペレーションの効率が相当に悪化するか、または完全に失われることすらある。
本発明の目的は、前述された手法の欠点を克服することである。この目的のために、本発明は、オペレーション・ソフトウェアをデバッグし、開発者が、開発者によって書かれた一連の命令内のエラーまたは異常の位置を容易に突き止められるようにする方法に関する。これを達成するために、本発明の方法は、実行パスを機能別に順序付けることにより、オペレーション・ソフトウェア・プログラムの実行オペレーションを構成することに関する。この機能別順序付けは、プログラムを機能単位に分割するような方法でプログラムの通常の実行パス内の特定の位置にフラグを配置することにより行われ、これにより、開発者は、逆実行オペレーションをどこから実行しなければならないかの位置を突き止めることができる。この順序付けオペレーションは、対話式または自動で実行できる。
より厳密には、本発明は、機内搭載システムのオペレーション・ソフトウェア・プログラムをデバッグする方法であって、以下のステップ、すなわち、
a)実行パスを隣接する機能別インターバルに分割するために前記実行パスに沿ってフラグを配置することによりプログラムにフラグを付けるステップと、
b)プログラムを通常に実行するステップと、
c)フラグの状態ベクトルを使用してプログラムの実行状態を獲得するステップと、
d)エラーが検出された場合、
d-1)そのフラグの状態ベクトルに基づいて不良機能別インターバルを探索するステップ、
d-2)この不良機能別インターバル内でプログラムを逆実行するステップ、
d-3)エラーを判定して訂正するステップ
を含むことを特徴とする方法に関する。
本発明の方法は、以下の特性の1つまたは複数を有することもできる。
− エラーは、プロセッサ例外エラーの後にプログラムが停止した時に検出される。
− 本方法は、エラーが見つかった機能別インターバルを改善するためのオペレーションを含む。
− 機能別インターバルを改善するためのオペレーションは、追加の入口および出口フラグ、および/または中間フラグを判定するステップを含む。
− 不良機能別インターバルを探索するステップは自動的に実行される。
− 不良機能別インターバルを探索するステップは、開発者の介入によって対話式に実行される。
− 本方法は、各フラグの位置、およびプログラムの実行状態に関する情報をホスト・プラットフォーム上の結果ファイルに記録するステップを含む。
本発明は、航空機搭載システムのオペレーションをシミュレートし、前述の定義による方法を実施するプロセッサを備えることを特徴とするデバイスにも関する。
本発明のデバイスは、以下の特性を有することができる。
− プロセッサは、テストおよびデバッグ・ホスト・プラットフォーム上で仮想的にシミュレートされる。
本発明は、制御ユニットにロードできて、制御ユニットにロードされて実行されると、前述の定義による方法を実施するための命令シーケンスを含む、航空機搭載システム用のオペレーション・プログラムにも関する。
本発明は、以下の説明を読み、添付の図面を精査すると、よりよく理解されるであろう。これらは、大ざっぱな指針として提示されるのであって、決して本発明の限定された指針として提示されるのではない。
本発明によるプログラムを概略的に示した図である。 本発明の方法のオペレーション図である。 機内搭載システムのオペレーション・ソフトウェアのデバッグ・フェーズにおけるテスト環境を概略的に示した図である。
オペレーション・ソフトウェアは、プログラムのセットで構成される。記述された一連の命令のセットで構成されるプログラムは、これ以降、命令チェーンと称する。本発明による方法は、機内搭載システムのオペレーション・ソフトウェア・プログラムの実行パス内の位置マーカを参照し、エラーまたは異常の位置をそれらの位置マーカについて判定する。
図1は、この方法の様々なフェーズを概略的に示している。図1に示された各フェーズは、本発明の方法の異なるステップでの、機内搭載システムのオペレーション・ソフトウェアのプログラムを表している。図1の第1のフェーズは、本発明の方法を適用する前のプログラムの例である。このプログラム、すなわち、参照番号20は、命令チェーンのセット20−1から20−nを含んでいる。
これらの命令チェーンは、現れる順、すなわち、命令20−1から命令20−nの順に実行され、それによって、プログラムの通常の実行パスが形成される。
図1の第2のフェーズはプログラム21を表しており、プログラム21は、フラグ28が配置された後のプログラム20に一致する。フラグ28は、プログラム内の特定の位置に配置された仮想マーカである。これらの位置は、個々のプログラム機能の先頭および/または末尾に一致することが好ましい。フラグ28は、例えば、プログラム機能の入口ポイントまたは出口ポイントに配置される。各プログラム機能の入口ポイントまたは出口ポイントにフラグを配置することは、機能別順序でフラグを配置すると言われる。
フラグは、データ・フローのレベルまたは制御フローのレベルでの実行パス内の任意の、他の事前に定義された位置、例えば、プログラムの不良ポイントに配置することもできる。フラグは、プログラムの実行パス内にマーカを構成する。フラグは、このように、1つまたはいくつかの異常またはエラーが検出された時にプログラムの実行パスの走行中にマーカを構成する。異常またはエラーが検出されたことは、エラーの結果、プログラムの走行の中断、または無限の実行ループによって示される。
異常またはエラーは、機能関係もあり得る。その場合には、本方法は、開発者に前記異常またはエラーを訂正するように依頼する。
異常またはエラーは、プログラムの走行の制御を失わせる性質のものもあり得る。そのようなエラーは、例えば、プロセッサの算術オーバーフローもあり得て、その結果、例えば、ポインタは、禁止されたエリアを越えて配置されることがある。この場合には、プログラムの実行は中断される。算術オーバーフローの後に続く中断は、プロセッサ例外中断と呼ばれる。
本発明で説明される実行パスの機能別順序付けは、このタイプのプロセッサ例外中断エラーを検出し、訂正できるようにしている。これを達成するために、本発明による順序付けは、プログラムの実行パスを隣接する機能別インターバルに分割する。機能は、次から次へと実行される。本発明の実施形態の1つのモードでは、フラグは各機能の先頭に配置される。各フラグは、メモリからのイメージに一致する状態ベクトルを含む。この状態ベクトルは、事前に定義された位置、すなわち、フラグが配置された位置にあるメモリの状態を示し、これにより、後刻、状態ベクトルからの情報でメモリをリセットすることができる。
プログラム走行の開始時、すべてのフラグは非活動状態である。これらのフラグのそれぞれについての状態ベクトルは中性であるか、または非活動状態である。すなわち、状態ベクトルは、いかなる情報も持たない。1つの機能が通常に実行されるたびに、次の機能の入口ポイントに配置されたフラグが活動化することで状態を変化させる。したがって、このフラグの状態ベクトルは、プログラムの実行状態を獲得する。すなわち、プログラム実行のこのレベルでシステム・メモリに記録されている情報を獲得する。
順序付けオペレーションは自動的に実行できる。すなわち、フラグは各機能別インターバルの先頭に自動的に配置される。順序付けオペレーションは対話式にも実行できる。すなわち、開発者が同じ機能内に追加フラグを配置することを選択できる。これらの追加フラグは、入口フラグ、出口フラグ、および/または中間フラグが可能である。自動または対話式順序付けの選択は、開発者自身によって行われる。対話式順序付けは、エラーの探索および訂正インターバルを改善できるようにする。すなわち、前記インターバルを短縮することができ、したがって、エラー検出プロセスが容易になる。
図1の第3のフェーズはプログラム22を表しており、プログラム22は、通常モードでの前記プログラムの実行オペレーション中のプログラム21に一致する。通常モードでのこの実行オペレーションは通常の実行と称されるが、この実行オペレーションは、第1の命令行20−1から始まる、命令ごとのプログラムの論理的走行に一致する。
図1の第4のフェーズはプログラム23を表しており、プログラム23は、プログラムの実行状態およびフラグの位置に関する情報が獲得された時のプログラム21に一致する。実際には、プログラムの通常の実行中、通常に実行された機能の末尾に配置されたフラグが活動化される。このフラグの状態ベクトルは、プログラム実行のこのレベルでのメモリの状態を獲得または記憶する。
プログラムの中断中、最後に活動化されたフラグが、プログラム中断が起きた機能を示す。このフラグの状態ベクトルが、不良機能が実行された時にプログラムが動作していた実行状態を突き止められるようにする。
情報を状態ベクトルによって獲得できるようにするために、通常の実行オペレーションを監視するツールはフラグを越えていくトラフィックを、通常に発生する順に、すなわち、プログラムの命令行の通常の実行どおりに判定する。フラグを渡り切ると、監視ツールは、最後に検出されたフラグの状態ベクトル内のメモリの状態を獲得し、この情報をデータ・メモリ4に記録する。
エラーが発生すると、開発者は、プログラム内の前記エラーを突き止めるためにプログラムの逆実行オペレーションを実行する。図1の第5のフェーズはプログラム24を表しており、プログラム24は、この逆実行オペレーション中のプログラム23に一致する。この逆実行オペレーションでは、最後に活動化されたフラグに一致する機能、すなわち、状態ベクトルが獲得された最後の機能の最初の命令行まで実行オペレーションをリセットするために、プログラムをプログラムの通常の走行と比較したときにプログラムを逆に再追跡できるようにする。
つまり、逆実行オペレーションは、プログラムの命令チェーンを再追跡して不良命令チェーンの位置を判定するためにフラグに従って実行される。したがって、逆実行オペレーションは、単一の機能別インターバル内で実行できる。この機能別インターバル内で不良チェーンまたはエラーが検出されると、開発者はこのチェーン内でエラーまたは異常を探索し、それを訂正する。
フラグのおかげで、開発者は不良命令チェーンを容易に突き止めることができる。エラーが訂正されると、開発者は、他の起こりそうなエラーを検出するために逆実行オペレーションを続行することができる。実際には、本発明の方法では、実行パスは、単一のプログラム・デバッグ・フェーズ内でいくつかのエラーまたは異常が検出および訂正できるような方法で構成されている。
上述のデバッグ・フェーズ、すなわち、エラーを探索して訂正するフェーズは、図1のプログラム25で表されている。
エラーが修正されて、開発者が次の、または前のエラーに移りたい場合、対話式フェーズが使用できる。この対話式フェーズでは、プログラム26が対話式順序付けオペレーションを含んでおり、そのおかげで、開発者は、ある1つの機能別インターバルから別の機能別インターバルへスキップできる。
図2は、本発明の方法の様々なステップを詳細に示している。図2の機能図は準備ステップ30を表しており、このステップでは、開発者によってデバッグ・フェーズが要求されているかをテスト環境制御ユニットが検出する。
開発者がデバッグ・オペレーションの実行を希望している場合、テスト環境制御ユニットは、ステップ31で、実行パスを隣接する機能別インターバルに分割するために前記実行パスに沿ってフラグを配置することにより、プログラムのフラグ付けオペレーションを実行する。各フラグは、すでに説明したように、活動化された、または非活動化された状態ベクトルを有する。フラグの状態ベクトルは、プログラムの実行状態に関する情報が獲得されている場合、「活動化されている」と称される。したがって、フラグの状態ベクトルは、そのフラグの前の機能がエラーなしで実行されると、活動化される。その反対の場合、フラグの状態ベクトルは「非活動化された」ままである。
ステップ32で、制御ユニットはプログラムの通常の実行を開始する。
ステップ33で、制御ユニットは、プログラムの実行状態を知るためにフラグの状態ベクトルに状態情報を獲得する。
ステップ34で、制御ユニットは、オペレーション・ソフトウェア・プログラムの実行に中断が起きたかを検出する。プログラムが機能することを停止した場合、エラーまたは異常が検出されている。その場合、ステップ35が適用される。中断が起きていない場合、通常の実行オペレーションが続行され、ステップ32および33が繰り返される。
ステップ35は、起きた中断はプロセッサ例外中断であるかを判定する。そうである場合には、ステップ36が適用される。そうでない場合には、ステップ37が適用される。この場合には、機能関係のエラーが検出されたため、または通常の実行オペレーションがエラーなしで完了したために、プログラムの実行オペレーションが終了したことを知らせるために開発者にメッセージが送られる。
したがって、この方法はステップ43に進み、ステップ43で、制御ユニットは、実行パスを後日に参照できるようにするためにフラグの位置をテスト結果ファイルに記録する。
ステップ44で、テスト結果ファイルが閉じられる。ステップ45は、テストの終わり、またはプログラムの実行オペレーションの終わりを示す最終ステップである。
ステップ35でプロセッサ例外が検出されると、ステップ36は、その不良チェーンが配置されている機能別インターバルを算出するために通常のパス内の最初の非活動フラグを探索する。次いで、ステップ38が適用される。ステップ38では、ステップ36で判定された機能別インターバル内のエラーの探索インターバルを改善するために、開発者は、対話式で追加の入口フラグ、出口フラグおよび/または中間フラグを埋め込むことができる。ステップ39で、データ・フローまたは制御フロー内で不良ポイントが検出される。これらの不良ポイントは、エラーを囲むインターバルをさらに改善できるようにする。これらの不良ポイントを判定後、ステップ40は、エラーを囲む不良インターバルを明示する。
ステップ38から40は、逆実行オペレーション中のエラー探索プロセスを容易にするために、エラーを囲むインターバルが短縮される、本発明の実施形態の好ましいモードを形成することに留意されたい。
どの場合にも、この方法は、制御が、非活動フラグを検出するステップ36から逆実行オペレーションのステップ41まで単純に渡されることを含むことができる。この場合には、開発者は、エラーが検出された機能の全体に逆実行オペレーションを実行しなければならない。
ステップ41で、逆実行オペレーションが開始され、開発者は、不良プログラム命令チェーンが検出された機能にまでプログラムを再追跡することができる。本発明の実施形態の1つのモードでは、逆実行オペレーションは2つの連続したフラグの間(インターバル)で実行される。これは、ほとんどの場合、不良機能の先頭および末尾に一致する。開発者に、ある1つのインターバルから別のインターバルにスキップさせないための特別な規制はない。実施形態の別のモードでは、逆実行オペレーションは、エラーを囲む改善されたインターバルに、すなわち、機能の一部分にのみ実行される。
ステップ42では、開発者は、エラーのデバッグ・オペレーションを実行する。すなわち、開発者は、不良機能別インターバル内でエラーを突き止めて、訂正する。デバッグ・ステップ42が完了すると、この方法は、プログラムが正しく実行できるかをチェックするためにステップ31から繰り返される。
制御ユニットがそれ以上のプロセッサ例外中断を検出しない場合、制御ユニットは開発者に、プログラムのデバッグ・フェーズが完了したことを知らせるメッセージを送る(ステップ37)。
本発明による方法は、ホスト・プラットフォーム上で仮想的にシミュレートされるシステムのテスト環境で実施できる。この方法は、専用のオペレーション・エミュレータを介して実際の機内搭載システムに接続されたワークステーションにインストールすることもできる。この場合には、フラグの位置および/または状態ベクトルは、開発者がアクセスできる媒体、例えば、ホスト・プラットフォーム上の結果ファイルに記録される(ステップ43)。フラグ位置がすべて記録されると、結果ファイルは閉じられ(ステップ44)、テストは完了する(ステップ45)。結果のすべてにチェックが行われる(ステップ46)。結果がすべて正しい、またはOKのとき、最終ステップ47はこれらの結果がすべてOKであることを示す。結果のすべてがOKでない場合、ステップ36から42が繰り返される。
図3は、本発明による方法を実施する、機内搭載システムのオペレーション・プログラムのテスト環境制御ユニット1の例を示している。制御ユニット1は、プロセッサ2、プログラム・メモリ3、データ・メモリ4および入出力インターフェース5を備える。プロセッサ2、プログラム・メモリ3、データ・メモリ4および入出力インターフェース5は、双方向通信バス6を介して相互に接続される。
プログラム7は、プロセッサ2によって、プログラム・メモリ3にインストールされた命令コードのチェーンを使用して実行される。プログラム7の目的は、機内搭載システムのオペレーションを操作および制御することである。プログラム7は、網羅してはいないが、中断ハンドラ8、ライブラリ9、スケジューラ10およびアプリケーションのセット11を備える。
ライブラリ9は、プログラム7によって活動化された制御機能のコレクションを収納する。中断ハンドラ8の目的は、プロセッサ2からの予期していない要求にリアルタイムで対処することだけでなく、テスト環境の多重タスクの共存を保証することである。スケジューラ10は、プロセッサ2が実行しなければならないタスクの処理において、様々な優先基準および使用可能なリソースに応じて優先順位を自動的に決定できるようにするサービス・プログラムである。
プログラム・メモリ3は、エリア12に、プログラム7の機能別順序付オペレーションを前述のように構築し、エラーまたは異常を訂正するために、検出されたエラーまたは異常の位置を示すことができるようにする命令を収納する。
プログラム・メモリ3は、エリア13に、プログラム7内のフラグ用の状態ベクトルを獲得するための命令を収納する。各活動化されたフラグの位置およびその状態ベクトルは、データ・メモリ4に記録される。
プログラム・メモリ3は、エリア14に、プログラム7の通常の実行を開始するための命令を収納する。オペレーション・ソフトウェアのプログラム7の実行は、命令ごとに順次実行され、フラグの状態ベクトルを漸次活動化する。機能内でエラーが発生すると、プログラム7の実行は停止する。エラーが見つかった機能の後にあるフラグの状態ベクトルは活動化されない。したがって、最後に活動化されたフラグの状態ベクトルはマーカを構成し、不良機能、すなわち、エラーを含む機能の位置を示す。
プログラム・メモリ3は、エリア15に、逆実行オペレーションを開始するための命令を収納する。逆実行オペレーションは、エラーが検出された場合、不良命令を含む機能にまでプログラムを後方に再追跡できるようにする。開発者は、その機能の実行オペレーションを再始動するために、最後に活動化された状態ベクトルに関連付けられたフラグに位置付けられる。したがって、開発者は、単にその不良機能に対して逆実行オペレーションを実行する。
プログラム・メモリ3は、エリア16に、フラグを介して収集された情報を使用できるようにする命令を収納する。これらの命令は、プログラム7をデバッグできるようにする。
プログラム・メモリ3は、エリア17に、開発者が機能別インターバル間をスキップできるようにする命令を収納する。つまり、エリア17の命令コードは、プログラム7が通常実行モードで実行されているか、逆実行モードで実行されているかに関係なく、開発者が、ある1つの機能別インターバルから別の機能別インターバルへスキップできるようにする。
したがって、本発明の機能別順序付けオペレーションは、逆実行オペレーションを単一の機能に限定するために不良命令チェーンを突き止める手段を提供するので、前述の情報から、このオペレーションはソフトウェアを効率よくデバッグできるようにすることが推定される。さらに、このオペレーションは、単一のデバッグ・フェーズ内でいくつかのエラーを訂正できるようにもする。
1 テスト環境制御ユニット; 3 プログラム・メモリ; 4 データ・メモリ;
5 入出力インターフェース; 6 双方向通信バス。

Claims (9)

  1. 機内搭載システムのオペレーション・ソフトウェアをデバッグする方法であって、以下の連続するステップ、すなわち、
    a)実行パスを隣接する機能別インターバルに分割するために前記実行パスに沿ってフラグを配置することによりプログラムに前記フラグを付けるステップ(31)と、
    b)前記プログラムを通常に実行するステップ(32)と、
    c)前記フラグの状態ベクトルを使用して前記プログラムの実行状態を獲得するステップ(33)と、
    d)エラーが検出された場合、続いて、
    d-1)前記フラグの状態ベクトルに基づいて不良機能別インターバルを探索するステップ(36)、
    d-2)この不良機能別インターバル内で前記プログラムを逆実行するステップ(41)、
    d-3)前記エラーを判定して訂正するステップ(42)
    を含み、
    前記フラグの状態ベクトルは、プログラムの実行開始時は非活動化されており、前記フラグの前の機能がエラーなしで実行されると活動化され、
    前記機能内で前記エラーが発生するとプログラムの実行が停止し、
    前記不良機能別インターバルを探索するステップは、前記実行パス内の非活動化されたフラグを探索することを含み、
    前記エラーはプログラムが停止した時に検出されることを特徴とする方法。
  2. 前記プログラムはプロセッサ例外エラーの後に停止し、
    前記探索された前記非活動化されたフラグは、前記プログラムの前記通常に実行する実行パスにおける前記非活動化された最初のフラグであることを特徴とする、請求項1に記載の方法。
  3. 前記エラーが見つかった前記機能別インターバルを改善するためのオペレーションを含むことを特徴とする、請求項1または2に記載の方法。
  4. 前記機能別インターバルを改善するための前記オペレーションは、追加の入口および出口フラグ、および/または中間フラグを埋め込むステップを含むことを特徴とする、請求項3に記載の方法。
  5. 前記不良機能別インターバルを探索する前記ステップは自動的に実行されることを特徴とする、請求項1から4のいずれか1項に記載の方法。
  6. 前記不良機能別インターバルを探索する前記ステップは、開発者の介入によって対話式に実行されることを特徴とする、請求項1から4のいずれか1項に記載の方法。
  7. 各フラグの位置、および前記プログラムの前記実行状態に関する情報をホスト・プラットフォーム上の結果ファイルに記録するステップを含むことを特徴とする、請求項1から6のいずれか1項に記載の方法。
  8. 航空機搭載システムのオペレーションをシミュレートし、請求項1から7のいずれか1項に記載の方法を実施するプロセッサ(2)を備えることを特徴とするデバイス。
  9. 前記プロセッサ(2)は、テストおよびデバッグ・ホスト・プラットフォーム上で仮想的にシミュレートされることを特徴とする、請求項8に記載のデバイス。
JP2010524558A 2007-09-14 2008-09-12 航空機搭載のシステムのオペレーション・ソフトウェアをデバッグする方法およびその方法を実施するためのデバイス Expired - Fee Related JP5580200B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0757608A FR2921172B1 (fr) 2007-09-14 2007-09-14 Procede de debogage d'un logiciel de fonctionnement d'un systeme embarque a bord d'un aeronef et dispositif de mise en oeuvre
FR0757608 2007-09-14
PCT/FR2008/051649 WO2009047435A2 (fr) 2007-09-14 2008-09-12 Procédé de débogage d'un logiciel de fonctionnement d'un système embarqué à bord d'un aéronef et dispositif de mise en oeuvre

Publications (2)

Publication Number Publication Date
JP2010539578A JP2010539578A (ja) 2010-12-16
JP5580200B2 true JP5580200B2 (ja) 2014-08-27

Family

ID=39247645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010524558A Expired - Fee Related JP5580200B2 (ja) 2007-09-14 2008-09-12 航空機搭載のシステムのオペレーション・ソフトウェアをデバッグする方法およびその方法を実施するためのデバイス

Country Status (8)

Country Link
US (1) US8650547B2 (ja)
EP (1) EP2188725A2 (ja)
JP (1) JP5580200B2 (ja)
BR (1) BRPI0816977A2 (ja)
CA (1) CA2697726A1 (ja)
FR (1) FR2921172B1 (ja)
RU (1) RU2454706C2 (ja)
WO (1) WO2009047435A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120192158A1 (en) * 2010-11-22 2012-07-26 Carlo Amalfitano Model Based Verification Using Forward and Reverse Traversal of Variable Time Line
FR2978264B1 (fr) * 2011-07-18 2014-06-27 Airbus Operations Sas Un procede de rechargement automatique de logiciel et un dispositif de rechargement automatique de logiciel
US8793661B1 (en) * 2012-04-27 2014-07-29 Google Inc. Programmer specified conditions for raising exceptions and handling errors detected within programming code
CN103577315B (zh) * 2012-07-30 2017-02-22 国际商业机器公司 反向调试器和反向调试方法
US9183122B2 (en) * 2012-09-14 2015-11-10 International Business Machines Corporation Automated program testing to facilitate recreation of test failure
CN106155899B (zh) * 2015-04-17 2019-02-26 比亚迪股份有限公司 多媒体程序缺陷的定位方法和系统
RU2632546C1 (ru) * 2016-06-23 2017-10-05 Публичное акционерное общество "Авиационная холдинговая компания "Сухой" Стенд комплексирования информационно-управляющих систем многофункциональных летательных аппаратов
US10482000B2 (en) 2017-04-24 2019-11-19 Microsoft Technology Licensing, Llc Machine learned decision guidance for alerts originating from monitoring systems
FR3072475B1 (fr) * 2017-10-17 2019-11-01 Thales Procede de traitement d'une erreur lors de l'execution d'une procedure avionique predeterminee, programme d'ordinateur et systeme de detection et d'alerte associe
CN108549602B (zh) * 2018-03-30 2022-03-08 深圳市江波龙电子股份有限公司 一种软件调试方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06222952A (ja) * 1993-01-27 1994-08-12 Toshiba Corp デバッグ支援装置
JP3585601B2 (ja) 1995-09-25 2004-11-04 松下電器産業株式会社 制御ソフトウェアの自動テスト装置及び方法
US5870607A (en) * 1996-09-11 1999-02-09 Brown University Research Foundation Method and apparatus for selective replay of computer programs
JPH11184728A (ja) 1997-12-25 1999-07-09 Toshiba Corp デバッグ処理方法ならびに装置及び同方法がプログラムされ記録される記録媒体
US6202204B1 (en) * 1998-03-11 2001-03-13 Intel Corporation Comprehensive redundant load elimination for architectures supporting control and data speculation
JP3068578B2 (ja) 1998-12-10 2000-07-24 日本電気アイシーマイコンシステム株式会社 インサーキットエミュレータおよび飽和演算処理方法
US6832367B1 (en) * 2000-03-06 2004-12-14 International Business Machines Corporation Method and system for recording and replaying the execution of distributed java programs
JP2002207611A (ja) 2001-01-11 2002-07-26 Mitsubishi Heavy Ind Ltd ソフトウェアワーキングベンチ
US7069544B1 (en) * 2001-04-30 2006-06-27 Mips Technologies, Inc. Dynamic selection of a compression algorithm for trace data
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
JP2004094800A (ja) 2002-09-03 2004-03-25 Toshiba Corp プログラムシミュレーション装置およびプログラムシミュレーション方法
CA2408457A1 (en) * 2002-10-17 2004-04-17 Ibm Canada Limited-Ibm Canada Limitee Collection and detection of differences of values of expressions/variables when debugging a computer process
JP2005353020A (ja) * 2004-06-08 2005-12-22 Yellow Soft:Kk コンピュータプログラムのシミュレーション方式
US7543278B2 (en) 2004-10-15 2009-06-02 Microsoft Corporation System and method for making a user interface element visible
JP2006139440A (ja) 2004-11-11 2006-06-01 Toshiba Corp エミュレータ装置およびその制御方法
US7627857B2 (en) * 2004-11-15 2009-12-01 International Business Machines Corporation System and method for visualizing exception generation
US7849450B1 (en) * 2005-01-28 2010-12-07 Intel Corporation Devices, methods and computer program products for reverse execution of a simulation
WO2006099446A2 (en) * 2005-03-11 2006-09-21 Argade Pramod V Environment for controlling the execution of computer programs
US7836430B2 (en) * 2006-07-21 2010-11-16 Apple Inc. Reversing execution of instructions in a debugger
US8176475B2 (en) * 2006-10-31 2012-05-08 Oracle America, Inc. Method and apparatus for identifying instructions associated with execution events in a data space profiler
US8104022B2 (en) * 2006-11-06 2012-01-24 International Business Machines Corporation Automated method for historical analysis of a memory state
US20080209406A1 (en) * 2007-02-27 2008-08-28 Novell, Inc. History-based call stack construction

Also Published As

Publication number Publication date
BRPI0816977A2 (pt) 2015-03-24
CA2697726A1 (fr) 2009-04-16
CN101802794A (zh) 2010-08-11
FR2921172A1 (fr) 2009-03-20
RU2454706C2 (ru) 2012-06-27
WO2009047435A3 (fr) 2010-03-18
EP2188725A2 (fr) 2010-05-26
US20110016358A1 (en) 2011-01-20
FR2921172B1 (fr) 2015-09-04
WO2009047435A2 (fr) 2009-04-16
JP2010539578A (ja) 2010-12-16
RU2010114707A (ru) 2011-10-20
US8650547B2 (en) 2014-02-11

Similar Documents

Publication Publication Date Title
JP5580200B2 (ja) 航空機搭載のシステムのオペレーション・ソフトウェアをデバッグする方法およびその方法を実施するためのデバイス
Timperley et al. Crashing simulated planes is cheap: Can simulation detect robotics bugs early?
Arcuri et al. Black-box system testing of real-time embedded systems using random and search-based testing
JP2010539576A (ja) 航空機搭載システムのオペレーション・ソフトウェアの妥当性をテストするための自動スクリプト生成の方法および同方法を実施するためのデバイス
US9128913B2 (en) Method and device for testing input/output interfaces of avionic modules of IMA type
JP2010539577A (ja) 航空機搭載のオペレーション・ソフトウェアのデバッグ・フェーズ中に扱われる情報の量を処理するための方法およびその方法を実施するためのデバイス
CN107710166A (zh) 利用符号快速错误检测的硅后验证和调试
Lam et al. When tests collide: Evaluating and coping with the impact of test dependence
da Silva et al. Special session: AutoSoC-a suite of open-source automotive SoC benchmarks
Weiss et al. Understanding and fixing complex faults in embedded cyberphysical systems
Püschel et al. Towards systematic model-based testing of self-adaptive software
Caliebe et al. Flexible integration testing of automotive ECUs by combining AUTOSAR and XCP
US9632912B1 (en) Method and system for debugging a program
TWI736564B (zh) 用於診斷執行指令串流的處理器之方法、設備、及系統
Di Bernardo et al. Agile testing of exceptional behavior
Zhou et al. Save the Bruised Striver: A Reliable Live Patching Framework for Protecting Real-World PLCs
KR20160075071A (ko) 위성 상태를 기록하는 장치 및 방법
Costa et al. ESFFI-A novel technique for the emulation of software faults in COTS components
Alanen et al. Comparing software design for testability to hardware DFT and BIST
JP2013003633A (ja) 故障再現装置、故障再現方法
Fidalgo et al. Using NEXUS compliant debuggers for real time fault injection on microprocessors
Afzal Quality assurance automation in autonomous systems
KR101137034B1 (ko) 계층적 병렬 환경에서의 분산 런타임 진단을 위한 시스템 및 방법
Linne et al. Streamlined Development Pipeline for Mavericks, ARL’s Unmanned Autonomous Vehicle (UAV) Software
US10261887B1 (en) Method and system for computerized debugging assertions

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120313

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120613

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120620

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120713

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120723

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120813

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130111

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130118

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130301

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130828

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130902

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140710

R150 Certificate of patent or registration of utility model

Ref document number: 5580200

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees