HOME | products | LDRA | LDRA オブジェクトコードレベルの検証

IEC61508、ISO26262、DO-178B、DO-178C
オブジェクトコードレベルの検証を支援

オブジェクトコードベリフィケーション(Object Code Verification)とは何か? 以下 DO-178Bスタンダード(6.4.4.2 Structural Coverage Analysis)から:

 

ソフトウェアがLevel A対象ではなく、コンパイラがソースコード行へ直接辿れないようなオブジェクトコードを生成しない場合は、構造化カバレッジはソースコード上で実行される。そうでない場合、そのような生成されたシーケンスの正しさを証明する追加の検証がオブジェクトコードに対して行われるべき。コンパイラが生成するオブジェクトコード内の配列境界チェックは、ソースコードに直接辿れないオブジェクトコードの例

 
要するにオブジェクトコードベリフィケーションは、コンパ イラが生成するオブジェクトコードとその基であるアプリケーションソースコードとの、コントロールフロー構造の違いに対しての懸念。
 

 そのような違いは様々な理由、例えばコンパイラによるインプリメンテーション、最適化、その他から生じる。しかしオブジェクトコードがプロセッサー上で実行されるのに対して、従来の構造化カバレッジ技術はソースコードレベルで実施される。これら2つのコントロールフロー構造の違いはテストプロセスの大きなギャップとなる。

 
DO -178Bの要求は Level-A(セーフティークリティカル)対象アプリケーションのそれら要素に対するオブジェクトコードベリフィケーションの実施を、スタンダード認証を目的とするアプリケーションの開発者によって行われること。概してこれらはアプリケーションのサブセットではあるものの、そのテストにはかなりの労力が必要となるので、相当な開発工数や費用を覚悟しなければならない。従って、コンパイラに依存しない、自動化されたプロセスの実施により、十分な余裕を持って総開発コストを軽減することが支援される。
 

LDRA による オブジェクトコードベリフィケーション

 
LDRA はオブジェクトコードベリフィケーションに対する様々な産業界からの要求増大を受けて、単体テストからシステム、統合レベルまで、ソースとオブジェクトコード両方に対する完全な構造化カバレッジ解析ソリューションを提供しています。
 
それは LDRAツールスイートの高級言語版と、追加のオブジェクトレベル(アセンブラ)版(アプリケーション実行に必要なターゲットプロセッサーごと)の組合せを活用する。代用的な例は LDRAツールスイートの C/C++とTMS320C25x Assembler 対応版の組み合わせ。しかしその他多くの高級言語/アセンブラ言語の組合せがサポートされ、以下のカバレッジメトリクスを提供:
 
Statement
Branch
Test path
Procedure/Function Call
Boolean Expression Coverage
 
- Branch Decision Condition
– Branch Condition Combination
– Modified Condition/Decision (DO-178B)*  (*言語に依存)
 

単体テストレベルのオブジェクトコードベリフィケーション

 
単体テストの自動化をオブジェクトコードベリフィケーションにも活用できるように、TBrunに対し、LDRAは他のツールベンダーに比較して、この種の解析に必要となるツールサポートに特筆すべき進化を加えました。
 

それは LDRA の単体テストのオブジェクトコードベリフィケーション機能として知られている、”Object-box Mode”。 高級言語レベルで構造化カバレッジ用のテストケースを作成し、これらをオブジェクトコードの構造化カバレッジに適用することができる。

 
この機能でキーとなるのは、TBrunによって自動生成される高度なドライバープログラム。このドライバーは最初のテスト検証からそれ以降のリグレッション解析に亘って、テストケースを定義し・実行させて・モニターするといった全てのテスト環境をカプセル化します。”Object-box Mode” で、このドライバーは高級言語のソース単体、あるいは関連するオブジェクトコードのいずれかにリンクされる。そこでユーザは一様なテストプロセスを取ることが出来て、不一致や不足を解析するための比較ができる。
 
構造化カバレッジ上の不一致や不足がオブジェクトレベルで識別されれば、そのギャップを埋める追加のテストケースを実施できるようになる。その効果は、開発早期段階で適切な対処ができることであり、検証が容易になり工数が削減できること。それはコードの品質やテストのプロセスを飛躍的に向上させることにもなる。統合やシステムレベルのテストなど後工程に大きく貢献することになり、また市場出荷後には欠陥率やメンテナンスコストを削減させるといったことにも貢献できる。
 
コードの開発中であっても、求められるオブジェクトコードベリフィケーションを高度に自動化されたコスト効率の良い手法で実施することで、LDRA ツールスイートによる洗練されたコードレビュー、デザインレビューなどの機能も同時に享受することができる。そしてそれらの結果はコードやデザイン上の欠陥の可能性を認識して修正すること、アプリケーションの品質改善を目的に開発チーム内にフィードバックされる。
 

まとめ

 
オブジェクトコードベリフィケーションは、それを要求されるソフトウェア開発プロジェクトに重要な課題であることに疑いはない。
 
しかしながら正しいツールと機能で課題の範囲は大幅に軽減され、開発担当者はそのような解析から得られる成果からコードの品質や信頼性を向上させることを享受できる。
 
LDRAによって提供されるオブジェクトコードベリフィケーション機能は、今日、市場で最も洗練された、費用効果の高いソリューションとなる。
 
 “LDRAの動的解析と高級言語ツールとの統合により、創造的(out of the box)なソリューションを LMCO と JSFプロジェクトのサブコントラクターが活用できるようになった“ - Mike Cottrill, シニアエンベッデッドソフトウエアエンジニア、 JSF SW Collaborative Environments, ロッキードマーチン