今回は、機能安全の国際規格である「IEC 61508」に対応するソフトウェア開発において、「カバレッジ計測」と「ツール認証」の必要性についてご紹介します。
IEC 61508の概要
規格策定の背景
IEC 61508は電気・電子・プログラマブル電子システムの機能安全に関する国際規格です。
1900年代後半、イタリア・セベソ事故やインド・ボパール事故などの化学プラントによる大規模な事故が増加していきました。これらの事故の原因とされる人的要因、技術要因、組織要因を防ぐための対策として、航空業界のDO-178Bを参考にして策定された機能安全規格が、IEC 61508です。
IEC 61508は1998年に第1版が、2010年に第2版が策定されました。また、IEC 61508をベースとして、自動車向けや鉄道、機械向けなどの派生規格も策定されています。
なぜ機能安全に対応するのか
機能安全の目的は、「リスクを許容可能なレベルまで下げること」です。そのための方策が機能安全規格には書かれています。また、何かあった場合の「説明責任を果たす」ために、機能安全規格を適用して「State of the Art:最高水準、最新技術」の処置を講じることが大切になります。
IEC 61508の構成
PART1~PART7で構成されています。
- PART1 :一般要求事項
- PART2 :ハードウェア要求事項
- PART3 :ソフトウェア要求事項
- PART4 :用語の定義
- PART5 :安全度水準(SIL)の決定方法
- PART6 :PART2,PART3に適用する指針
- PART7 :技術、手法の概念
PART1~3が開発に直接かかわってくるPARTです。
PART4~7がPART1~3を満たすためのガイドラインを記載しています。
以降では、PART3のソフトウェア要求事項に関する部分を紹介していきます。
ソフトウェア開発
IEC 61508のソフトウェア開発では、V字モデルでの開発を示しています。
V字モデルでは、安全要求仕様、ソフトウェアアーキテクチャ、ソフトウェアシステム設計、コーディング、モジュール試験、統合試験、妥当性確認試験というフェーズに分かれています。
ソフトウェア安全要求仕様 | 安全関連ソフトウェアの要求事項などを規定します。また、妥当性確認試験の計画を行います。 |
---|---|
ソフトウェアアーキテクチャ ソフトウェアシステム設計 |
安全関連ソフトウェアに規定された要求事項を満たすソフトウェアアーキテクチャ仕様、ソフトウェアシステム設計仕様を作成します。また統合試験の計画を行います。 |
モジュール設計 | ソフトウェアアーキテクチャ、ソフトウェアシステム設計の機能を単一の機能まで再分解しモジュール化します。それをもとにモジュール設計仕様を作成します。また、モジュール試験の計画を行います。 |
コーディング | モジュール設計仕様やコーディング規約に従って、コーディングします。 |
モジュール試験 | モジュール設計仕様、モジュール試験仕様に基づき試験を行います。各ソフトウェアモジュールが想定内の動きを実行し、想定外の動きを実行しないことを確認します。境界値解析、制御フロー解析などの技法を用いてテストします。 |
統合試験 統合試験(モジュール) |
アーキテクチャ仕様、ソフトウェアシステム設計仕様、ソフトウェア統合試験仕様に基づき試験を行います。統合された各ソフトウェアモジュールが正しく相互作用し、想定された機能を実行し、想定外の機能を実行しないことを確認します。 |
妥当性確認試験 | 安全要求仕様が満たされているか妥当性の確認を行います。 |
カバレッジ
テストケースがソースコードをどれだけ網羅できたのかを見るための指標として、カバレッジというものがあります。そのカバレッジについて機能安全規格が求める内容をご説明します。
カバレッジが “大切” な理由
カバレッジは何のために計測するのでしょうか?それは、「不要コード、到達不能コード、未検証コード」を発見するためです。
これらの要素を持ったコードが意図せず処理された場合に不具合が顕在化する可能性が高いと一般的に言われています。そのため、不要コードであれば対象部分を削除し、到達不能コード・未検証コードであれば、未通過である理由を明確にし、理由に応じてコード修正やテストケースを追加して再度テストする必要があります。
適切に対応することで、必要最低限テストされていないコードがないことを示すことができます。そのために、カバレッジを計測するのです。
IEC 61508の求めるカバレッジ
IEC 61508では、モジュール試験および統合試験において、「想定された機能を実行し、想定外の機能を実行することがないことを示さなければならない。」とあります。また、構造ベース試験についても触れており、「動的解析及び試験」の要件において以下の表のカバレッジ計測が求められています。
どのようにカバレッジを取得するか
ツールを使用せずにカバレッジ計測を行う場合は、命令や分岐ごとにprint文を挿入し、且つコードのどこが通ってどこが通っていないのかを目視で確認していくことになります。この方法では工数が大きくかかってしまいます。特に、MC/DCの計測をツールなしで行うのは、現実的ではありません。カバレッジを計測できるツールを使用することが、工数を抑えることにつながります。
弊社の動的テストツール「DT10 Automotive Edition(以降DT10AE)」を使用すればカバレッジ計測を簡単に行うことができます。ソースコードの構造を解析し、カバレッジ計測に必要なprint文のようなTP(テストポイント)を自動で挿入ができます。
下図の矢印の部分がTPになります。
TP自動挿入後にテストを実施すると、どこのコードを通ったのか確認することができ、MC/DCも含めカバレッジ率を自動で算出してくれます。また、通らなかったコードも目視で確認でき、通らなかった理由の特定を簡単に行うことができます。
ツール認証
IEC 61508に対応するソフトウェア開発において必要になるツール認証について説明します。
ツール認証の必要性
IEC 61508ではソフトウェア開発で使用するツールが問題ないことの妥当性を証明することを求めています。また、ツールの挙動や使い方、又は制約を明確に定義した仕様書、もしくは製品文書も備えていなければなりません。
ツールの妥当性確認では以下の確認を行い、結果はすべて文書化する必要があります。
- 妥当性確認の経時的記録
- 使用するツール製品マニュアルのバージョン
- 妥当性確認を行うツール機能
- 使用するツールおよび機器
- 妥当性確認業務の結果
文書化される妥当性確認結果には、ソフトウェアが妥当性確認を無事通過したか、通過しなかった理由のいずれかを明記しなければならない。 - テストケース及び、その後の解析結果
- 予想結果と実際の結果の相違点
さらに、ツールの新バージョンが出るたびに確認しなければなりません。これはツールを利用するユーザーにかなりの負担になってしまいます。
そこで、IEC 61508にはツール認証というものがあります。ツールベンダー側で妥当性の確認を実施し、国際的な認証機関のアセスメントを受けることで認証を取得します。
ツール認証を取得済みのツールを利用することで、ユーザー側でツールの妥当性確認などの認証作業を行わずにツールを利用することが出来るようになります。
DT10AEはツール認証を取得済み
弊社の動的テストツールDT10AEは、国際的な第三者認証機関であるTÜV SÜD社により、IEC 61508-3:2010のT2 / up to SIL 3としてのツール認証を取得しております。
また、IEC 61508から派生した自動車分野の安全規格であるISO 26262-8:2011のTCL3 / up to ASIL Dとしてもツール認証を取得しております。
まとめ
機能安全規格のソフトウェア開発において求められる、カバレッジ計測とツール認定は、共に手間のかかる作業です。効率的に作業するためにも、ツールの利用や、そのツールもツール認証済みの物を使用することがポイントになります。
弊社では効率的にカバレッジ計測を実施するために、どのようにDT10AEをプロジェクトに適用して運用していくのかを支援させていただく、「DiET」というサービスもご提供しておりますので、効率的にカバレッジ計測を実施したい方は、ぜひDiETをご検討ください。
機能安全対応!動的テストツールDT+FS
DT10AEの後継製品DT+FS。 豊富なカバレッジ解析機能のほか、 トレーサビリティツールとの連携で テストケースとエビデンスとのつながりを明確に。
<参考文献>
IEC 61508, Functional safety of electrical/electronic/programmable electronic safety-related systems